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

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

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

[identity profile] phlya.livejournal.com 2015-01-11 10:45 am (UTC)(link)
Вот про скорость тут сложно сказать, но про осваиваемость это однозначно Python. Если одновременно освоить numpy и/или Pandas (библиотеки для расчетов, первая более низкоуровневая с array'ами, вторая - более высокоуровневая, более в стиле R), то скорость будет очень хорошая (говорят, в оптимальный условиях почти как С). И одновременно язык интерпретируемый, то есть в этом будет Вам знакомо.
Дополнительный плюс - великолепная библиотека для графиков и диаграмм matplotlib, и надстройки над ней вроде seaborn.
Ну, и я не знаю, как устроены Ваши модели, но scipy может пригодиться с кучей научных функций.
Edited 2015-01-11 10:47 (UTC)

[identity profile] bear-bull.livejournal.com 2015-01-11 10:47 am (UTC)(link)
Тут уж либо простенький язык - тогда за тебя все будет делать комп - и медленно естественно, либо - все делать самому на каком-нить С++ - тогда может получиться быстро.
Как вариант - VB под тем же Access, но не использовать все эти медленные sql-запросы, а занести все данные в массивы и самому с ними работать. Мне кажется, так будет быстрее.
Edited 2015-01-11 10:48 (UTC)

[identity profile] orrine.livejournal.com 2015-01-11 10:50 am (UTC)(link)
У Майкрософт в Visual Studio можно писать на нескольких языках - Visual Basic, C#, компилится одинаково. Вам не придется переучиваться.

[identity profile] ahiin.livejournal.com 2015-01-11 10:52 am (UTC)(link)
C#.
Легко начать, отличная бесплатная IDE и считать будет быстро.
Я на нем программный пакет для кандидатской писал.

[identity profile] shilliennv.livejournal.com 2015-01-11 10:52 am (UTC)(link)
А разве не было у вас уже такого поста (или я вас с кем-то похожим путаю).

Думаю, тут стоит пойти таким простым путем: язык программирования взять любой, например, вспоминая свои первые опыты с языками, по возрастанию сложности я бы их расставила так: php, pascal/Delphi, java, C/C++, python. php исключаем из-за его специфической ориентированности, из остальных можно выбирать. Второй шаг для простого пути - найти человека, который на пальцах объяснил основы и применение именно в ваших задачах.

Я бы остановила выбор именно на Pascal/Delphi из-за удобного визуального интерфейса среды и отличной системы помощи и всплывающих подсказок.

Если немного уточните, какого рода задачи вы решаете, смогу более предметно описать.

[identity profile] aksuramax2.livejournal.com 2015-01-11 10:53 am (UTC)(link)
Я тоже "опытный дилетант".
Посоветовать ничего не могу, но у меня наивный вопрос - а разве сейчас нет именно компиляторов Бейсика?
В свое время я пользовался Бейсиком на примитивном советском БК-0010-01 - так там был как раз компилятор Бейсика, причем очень скоростной.

[identity profile] psilogic.livejournal.com 2015-01-11 10:56 am (UTC)(link)
если быстрее, то годятся только компилируемые, а их не так много - паскаль, си, си++, фортран, с некоторой натяжкой - java

поскольку вы - человек умнейший, то справитесь с любым языком, и я бы рекомендовал потратить чуть больше времени, освоив C, C++ или C#, зато потом не иметь проблем.

среда разработки - официально бесплатная Microsoft Visual Studio Express 2013

освоить за 2-3 дня - вполне реально для вас и для тех задач, которые вы назвали: массивы, таблицы - это третья-четвертая лабораторная у студентов, изучающих Си. если с выводом графиков - уже сложнее, но не сильно, если возьмете уже готовый пример такой программы и замените в ней только непосредственно математическую/алгоритм рисования

[identity profile] stepan kuzmin (from livejournal.com) 2015-01-11 10:59 am (UTC)(link)
+1 за пистон, простой как три рубля. Также для этих задач могу порекомендовать Octave, Mathcad и Wolfram Mathematica, это конечно не ЯП как таковые, но к вашим задачам могут подойти.

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

[identity profile] ripe-berry.livejournal.com 2015-01-11 11:02 am (UTC)(link)
Муж рекомендует язык R.
http://r-statistics.livejournal.com/
http://www.bioconductor.org/

[identity profile] victor-chapaev.livejournal.com 2015-01-11 11:08 am (UTC)(link)
Я бы посоветовал С++ в виде Borland C++ Builder. Хороший, на мой взгляд, баланс визуального программирования (как в Delphi), универсальность С++ и огромный набор компонентов для автоматизации работы

[identity profile] al-zatv.livejournal.com 2015-01-11 11:09 am (UTC)(link)
присоединюсь к варианту "Visual Basic.Net" . он как раз компилируется (почти) и будет работать быстрее VBA.
бесплатная версия вроде бы здесь http://www.visualstudio.com/ru-ru/products/visual-studio-express-vs.aspx , под именем "Express 2013 для Windows Desktop"

Но,возможно,у Вас тормозит не бейсик, а доступ к данным в таблицах Access. тогда такой переход не поможет, надо будет программу малость переделывать.

[identity profile] gineer.livejournal.com 2015-01-11 11:10 am (UTC)(link)
Если вопрос именно в быстроте/простоте освоения

то наверное как тут и предлагали попробовать Визуал Бэйсик но уже не встроеный, а тот что отдельный -- Визуал Студия качается бесплатно.
возможно с раширением в сторону С# -- модель можно скомилировать на нем отдельной сборкой, а потом встраивать и использовать из ВБ

[identity profile] rav-erev.livejournal.com 2015-01-11 11:14 am (UTC)(link)
Если Вы привыкли к Бейсику, то не стоит отвыкать и переучиваться. Microsoft Visual Basic .NET, прилагаемый к текущему Visual Studio Express edition. Можно скачать то ли бесплатно, то ли за символическую плату около 1 доллара. Дает полный доступ к могучей библиотеке дот-нета и вообще, если не лезть сильно глубоко, не хуже того же C#.

[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] bik-top.livejournal.com 2015-01-11 11:17 am (UTC)(link)
Можно скачать бесплатно Visual Studio Community 2013 with Update 4 (http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx)

Это интегрированная среда разработки (IDE) под Windows, с которой поставляются компиляторы нескольких языков: C#, F#, VB.NET, C++.

F# неплох, но куда менее популярен, чем C#; по C# информации в интернете больше. C++ не позволит быстро начать без спотыканий. На VB.NET не писал; возможно, он покажется более знакомым человеку с опытом VBA.
lxe: (письмо с дороги)

[personal profile] lxe 2015-01-11 11:20 am (UTC)(link)
Java

[identity profile] avnik.livejournal.com 2015-01-11 11:21 am (UTC)(link)
python

[identity profile] dark-barker.livejournal.com 2015-01-11 11:21 am (UTC)(link)
При данных заданных условиях я бы тоже советовал Python. При всём вышесказанном это очень популярный язык общего назначения. Теоретически можно поискать более "подходящий", но он будет гораздо более экзотический, что тоже не самое последнее дело.

[identity profile] golosptic.livejournal.com 2015-01-11 11:23 am (UTC)(link)
Вопрос такой: какой из этих языков мне будет быстрее и проще всего освоить?
Если у Вас в голове BASIC - то Вам прямая дорога к освоению Fortran.

Да простят меня прочие высокоумные комментаторы.

Но, конечно, Visual Basic Net сначала рассотреть - вдруг его хватит?
arech: (Default)

[personal profile] arech 2015-01-11 11:23 am (UTC)(link)
Под задачу "имитационного моделирования эволюционных процессов в популяциях" нужен язык, позволяющий хорошо параллелить решение.

Для реализации промышленного решения это скорее всего С++, но для исследователя это жуткий хардкор и скорее всего потеря времени.

Я думаю, что надо смотреть на питон + одну из его обвязок, позволяющую параллелить вычисления на GPU. Питон очень простой и понятный язык (и по нему много хороших видеокурсов), а GPU даст ускорения в расчётах вплоть до сотен раз относительно обычных процессоров. Все попадающиеся мне в последнее время работы по расчёту, например, всяких хитрых нейронных сетей (глубоких, рекурсивных, или прочих всяких хитрых) изобретаются именно на питоне с обсчётом на GPU.
Эволюционные модели, насколько я знаю, не блещут запредельным матаном, поэтому скорее всего так же хорошо и безпроблемно лягут на GPU (правда, there is no silver bullet и надо будет разобраться со спецификой GPU, но это не сложно).

[identity profile] rsokolov.livejournal.com 2015-01-11 11:24 am (UTC)(link)
C#

[identity profile] zaikinpv.livejournal.com 2015-01-11 11:24 am (UTC)(link)
Если просто быстрее чем VB то однозначно python. Возможно даже готовый модуль найдется. Плюс, если задача реально "долгая" то тут в любом языке без оптимизации не обойтись. Очень интересно, что считают эволюционные биологи - могу помочь переписать код на python, проверим насколько подходит. :)

[identity profile] stzozo.livejournal.com 2015-01-11 11:28 am (UTC)(link)
Я признаю только Си.
Это универсальный язык.
Вся прочая туча языков только сковывает ход мысли.

Page 1 of 6