Деякі додаткові думки.
Мова програмування "per se" - лише інструмент. Усі мови були розроблені для того, щоб зробити деякі конструкції легшими в побудові, ніж інші. А знання та оволодіння мовою програмування важливіше та ефективніше, ніж особливості цієї мови порівняно з іншими.
Наскільки я бачу, є два аспекти цього питання. Перший вимір - це здатність швидко досліджувати, будувати докази концепцій чи моделей, з часом маючи під рукою достатньо інструментів для вивчення того, що відбувається (наприклад, статистичні тести, графіка, засоби вимірювання тощо). Цей вид діяльності зазвичай віддають перевагу дослідникам та науковцям даних (мені завжди цікаво, що це означає, але я використовую цей термін для його вільного визначення). Вони, як правило, покладаються на відомі та перевірені інструменти, які можна використовувати для доказів або аргументів.
Другий вимір - це можливість розширювати, змінювати, вдосконалювати або навіть створювати інструменти, алгоритми чи моделі. Для цього вам потрібна відповідна мова програмування. Приблизно всі вони однакові. Якщо ви працюєте в компанії, то ви багато залежите від інфраструктури компанії, внутрішньої культури та вашого вибору значно зменшуються. Крім того, коли ви хочете реалізувати алгоритм для використання виробництва, вам доведеться довіряти реалізації. А реалізація іншою мовою, якою ви не володієте, не дуже допоможе вам.
Я схильний виступати за перший вид діяльності Р-екосистеми. У вас велике співтовариство, величезний набір інструментів, доказ того, що ці інструменти працюють як очікувалося. Також ви можете розглянути Python, Octave (назвати декілька), які є надійними кандидатами.
Для другого завдання вам слід заздалегідь подумати над тим, що ви насправді хочете. Якщо ви хочете отримати надійні інструменти для виготовлення, тоді C / C ++, Java, C # - чудові кандидати. Я вважаю Python другим громадянином цієї категорії разом зі Скалою та друзями. Я не хочу розпочати полум’яну війну, це лише моя думка. Але після більш ніж 17 років, як розробник, я, як правило, віддаю перевагу суворому договору та моїм знанням, ніж свободі робити все, що ви думаєте (як це відбувається з великою кількістю динамічних мов).
Особисто я хочу дізнатися якомога більше. Я вирішив, що мушу вибрати важкий шлях, який означає реалізувати все з нуля. Я використовую R як модель та натхнення. Він має великі скарби в бібліотеках і багато досвіду, що переганяється. Однак R як мова програмування для мене кошмар. Тому я вирішив використовувати Java, і не використовувати жодної додаткової бібліотеки. Це лише через мій досвід, і більше нічого.
Якщо у вас є час, найкраще, що ви можете зробити - це провести деякий час з усіма цими речами. Таким чином ви заробите для себе найкращу можливу відповідь, підходящу для вас. Dijkstra одного разу сказав, що інструменти впливають на те, як ви думаєте, тому бажано знати свої інструменти, перш ніж дозволити їм моделювати, як ви думаєте. Детальніше про це ви можете прочитати в його відомому документі під назвою Програматор смирень