macroevolution (
macroevolution) wrote2015-01-11 02:41 pm
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Посоветуйте язык программирования
Я всю жизнь программировал только на бейсике, на разных его версиях. Так получилось. Когда писал кандидатскую, набралось очень много таблиц с данными (это были морфологические признаки морских ежей), и я задолбался обсчитывать их на калькуляторе. Поэтому быстренько освоил бейсик (тогда персональные компьютеры IBM только начали появляться, и к ним прилагался язык GW-Basic). Освоил - и сразу почувствовал себя человеком. С тех пор не переучивался, сейчас пишу все свои программки на VBA в MS Access. То есть в программировании я дилетант, но опытный. Программированием пользуюсь сейчас для имитационного моделирования эволюционных процессов в популяциях. Подумываю об одной новой модели, но понимаю, что на VBA она будет работать невыносимо медленно. Насколько я понимаю, программа, написанная почти на любом другом языке, компилируемом, будет работать в разы быстрее. Вопрос такой: какой из этих языков мне будет быстрее и проще всего освоить? Времени, сил и желания преодолевать трудности и вникать в программистские проблемы - не имеется. Мне бы этот язык просто скачать (можно купить, если не слишком дорого), освоить за пару-тройку дней - и вперед. Т.е. главное, чтобы он был максимально простым в освоении для того, кто знает бейсик, без всяких интеллектуальных "понтов", но работал хотя бы раз в 10 быстрее.
no subject
Для реализации промышленного решения это скорее всего С++, но для исследователя это жуткий хардкор и скорее всего потеря времени.
Я думаю, что надо смотреть на питон + одну из его обвязок, позволяющую параллелить вычисления на GPU. Питон очень простой и понятный язык (и по нему много хороших видеокурсов), а GPU даст ускорения в расчётах вплоть до сотен раз относительно обычных процессоров. Все попадающиеся мне в последнее время работы по расчёту, например, всяких хитрых нейронных сетей (глубоких, рекурсивных, или прочих всяких хитрых) изобретаются именно на питоне с обсчётом на GPU.
Эволюционные модели, насколько я знаю, не блещут запредельным матаном, поэтому скорее всего так же хорошо и безпроблемно лягут на GPU (правда, there is no silver bullet и надо будет разобраться со спецификой GPU, но это не сложно).
no subject
(На линуксе с Nvidia+Optimus...)
no subject
Сам всё откладываю эту тему, но матлаба совсем перестало хватать и собираюсь пощупать её в ближайшем будущем...
no subject
Ну и читать код, который в примерах с CUDA идёт.
no subject
no subject
no subject
http://docs.continuum.io/numbapro/
no subject
no subject
no subject
2) с/с++ при всей моей нежной любви к данному запросу подходят плохо: слишком сложны и опасны для новичка, не желающего морочиться, и вообще слишком медленны в разработке и рефакторинге кода. Для исследователя важно как можно быстрее нарисовать минимальный прототип proof of concept, доказывающий идею, и иметь возможность как можно дешевле этот прототип менять и переделывать. А для этого нужны более выразительные, а значит высокоуровневые языки (где одной строкой кода можно сказать больше) - питон в этом смысле очень хорош.
3) с фортраном не знаком. В той области, которой я интересуюсь (алгоритмы искусственного интеллекта) я об использовании фортрана не слыхал. Да и вообще мало о нём слыхал; есть впечатление, что он если не умер, то потихоньку умирает...(может ошибаюсь тут)
4) питон очень прост в освоении и хотя сам не быстр, но есть ряд "ускорителей" под специфические задачи; алгоритмы легко параллелятся на GPU без особых доработок.
5) питон чрезвычайно активно используется научным сообществом, под него сделано огромное количество математических и прочих библиотек. Знание питона скорее всего позволит как легче читать чужие работы, так и делиться своими.
6) если потребуется что-то ускорить - всегда можно конкретно эту часть алгоритма переписать на с/с++ (попросить толкового студента перевести питоновый алго на с/с++) и получить максимум производительности (если студент и правда толковый)))
Как-то так...