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
Особенность питона в том, что это язык-интерфейс, для которого существует огромное количество специализированных библиотек и инструментов или, наоборот, он используется внутри различных продуктов.
Вот компактный курс питона для ученых:
http://nbviewer.ipython.org/gist/rpmuller/5920182
Вот одна из библиотек для дискретной симуляции :
https://simpy.readthedocs.org/en/latest/
Производительность питона сама по себе не очень большая, но numpy позволяет делать вычисления быстрее, со скоростью близкой к нативному коду.
Если этого мало, то дальше надо либо писать все или узкие места на C/C++, у которых большой порог вхождения, либо, что мне кажется более здоровой идеей, брать питонячью обертку над OpenCL
https://pypi.python.org/pypi/pyopencl
http://documen.tician.de/pyopencl/#tutorials
OpenCL позволяет выполнять параллельные вычисления используя все возможности компьютера, включая видеокарты с тысячами ядер. Но распределенные вычисления сами по себе не самая простая тема, распределение задач и аггрегация результатов вычислений, множество нюансов управления памятью, локами и т.п. Пока, наверное, просто понимать что так можно и это очень быстро.
Также есть mathworks simulink, я в нем работал достаточно давно, уже тогда это был весьма годный и удобный пакет
http://www.mathworks.com/products/simulink/
В освоении более чем прост, неплохая производительность, но он коммерческий и дорогой.
no subject
no subject
no subject