macroevolution: (anomalocaris)
macroevolution ([personal profile] macroevolution) wrote2015-01-11 02:41 pm

Посоветуйте язык программирования

Я всю жизнь программировал только на бейсике, на разных его версиях.  Так получилось. Когда писал кандидатскую, набралось очень много таблиц с данными (это были морфологические признаки морских ежей), и я задолбался обсчитывать их на калькуляторе. Поэтому быстренько освоил бейсик (тогда персональные компьютеры IBM только начали появляться, и к ним прилагался язык GW-Basic). Освоил - и сразу почувствовал себя человеком. С тех пор не переучивался, сейчас пишу все свои программки на VBA в MS Access. То есть в программировании я дилетант, но опытный. Программированием пользуюсь сейчас для имитационного моделирования эволюционных процессов в популяциях. Подумываю об одной новой модели, но понимаю, что на VBA она будет работать невыносимо медленно. Насколько я понимаю, программа, написанная почти на любом другом языке, компилируемом, будет работать в разы быстрее. Вопрос такой: какой из этих языков мне будет быстрее и проще всего освоить? Времени, сил и желания преодолевать трудности и вникать в программистские проблемы - не имеется. Мне бы этот язык просто скачать (можно купить, если не слишком дорого), освоить за пару-тройку дней - и вперед. Т.е. главное, чтобы он был максимально простым в освоении для того, кто знает бейсик, без всяких интеллектуальных "понтов", но работал хотя бы раз в 10 быстрее.

[identity profile] nextstage.livejournal.com 2015-01-11 11:14 am (UTC)(link)
Если хочется кодить ручками, то большая часть научного мира сидит на питоне (правда среди дата сайенсеров также популярен R), на нем просто начать писать, обратно на другие языки после него люди переходят редко, будучи развращенными комфортом. Пара тройка дней чтобы начать вполне реалистично.

Особенность питона в том, что это язык-интерфейс, для которого существует огромное количество специализированных библиотек и инструментов или, наоборот, он используется внутри различных продуктов.

Вот компактный курс питона для ученых:
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/
В освоении более чем прост, неплохая производительность, но он коммерческий и дорогой.

[identity profile] phlya.livejournal.com 2015-01-11 11:24 am (UTC)(link)
Раз уж так подробно про ускорение питона, то numexpr нельзя не упомянуть, иногда заметно ускоряет.

[identity profile] int19h.livejournal.com 2015-01-11 10:01 pm (UTC)(link)
Есть еще Numba от Continuum (которые пилят Anaconda) - по сути JIT-компилятор отдельных числовых функций, работающий поверх обычного CPython (а не заменяющий его целиком, как PyPy). Отлично работает. Плюс за денюжку у них есть более навороченная версия, которая умеет еще считать на GPU.

[identity profile] phlya.livejournal.com 2015-01-11 10:04 pm (UTC)(link)
А вот это спасибо, не знал!