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

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

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

[identity profile] lvqcl.livejournal.com 2015-01-11 01:21 pm (UTC)(link)
Ну и если интересен питон, то: http://stackoverflow.com/questions/81584/what-ide-to-use-for-python

холиварная тема

[identity profile] mynine.livejournal.com 2015-01-11 01:48 pm (UTC)(link)
Сам я пишу в основном на C++, язык быстрый и очень мощный. Но вам не советую, все-таки порог вхождения великоват для более-менее уверенного кодирования. А серьезное освоение требует нескольких лет.

Как упрощенный вариант C++ можно вполне использовать Java или C#. При использовании специализированных сред IDE (есть бесплатные) процесс программирования заметно упрощается - подсказки и подсветка синтаксиса и ошибок прямо в редакторе. В случае использования Java у вас будет возможность запускать программу на разных платформах вплоть до телефона или планшета под Android.

Python вполне годен, хорош с точки зрения концепции языка, но медленный.

Как вариант, можете попробовать Lua, простой (он проще всех указанных в комментариях здесь :) и мощный язык. Хотя он и скриптовый, но, емним, самый быстрый из всех. Для начала использования достаточно скачать только интерпретатор языка (размер менее мегабайта) и вперед.

[identity profile] guga50.livejournal.com 2015-01-11 01:53 pm (UTC)(link)
Платформа .net
Язык C#. Вам не надо в объектно-ориентированные дебри забуриватья (хотя именно для вашего применения это было бы ОЧЕНЬ полезно, да и вообще это совсем не сложно). Любой ОО язык можно использовать как функциональный. Даже если он жёстко насаждает ОО.

Качайте Visual Studio Express Edition. Она бесплатная.
Ставьте и вперёд.

Если нужна помощь - можете обращаться. Беззплатно ;))
Edited 2015-01-11 13:54 (UTC)

[identity profile] bougakov.livejournal.com 2015-01-11 01:54 pm (UTC)(link)
Вам тут написало просто огромное количество людей, не прочитавших вводные до конца :(

У вас есть хорошие познания в VB (а именно - VBA в Access) и мало времени и сил на переобучение.

Поэтому берите "полноценный" Visual Basic .NET - скачивайте и устанавливайте. Он бесплатен.

Между VBA и VB.net несколько изменился синтаксис языка, но путём проб и ошибок вы быстро склеите из кусков нагугленных примеров что-то работающее. Это решит вашу текущую задачу.

На будущее глядите в сторону связки Python и SciPy (для них множество примеров именно научных расчётов, библиотек) или "R" (который, скорее, замена SPSS)

[identity profile] batch2k.livejournal.com 2015-01-11 02:01 pm (UTC)(link)
Питон, однозначно питон.

[identity profile] maniacscientist.livejournal.com 2015-01-11 02:01 pm (UTC)(link)
Спец в моделировании не в курсе про AnyLogic?? Там Жаба во все поля, хочешь не хочешь а программируешь

[identity profile] drag-drop.livejournal.com 2015-01-11 02:01 pm (UTC)(link)
Никого не слушайте, хотя програмил и на си, но для начинающего только Delphi... основанный на языке pascal...
Pascal язык для обучения... писать одно удовольствие. по качеству скомпилированного кода кто просматривал код в ассеблере не уступит Турбо си, , естественно если компилить без форм, а в досовское окно. Это конечно если нужно только самому, а не для дальнейшего трудоустройства... потому как борланды проиграли войну по сертификации мелкомягким еще лет 10 назад...

Насчет синтаксиса Си была шутка что язык придуман для того чтобы остановить прогресс в СССР..
Листинг си с операторами не читаемый. нужен только для выпендрежа .пример типа i-=++i+i++; могу бред написать давно не практиковал но смысл понятен .. это конечно при объектном программировании мало уже значит но все таки читабельность основ синтаксиса для начала изучения вопрос важный.

[identity profile] pssshik.livejournal.com 2015-01-11 02:13 pm (UTC)(link)
Сколько проф комментаторов-то :)
1. Компилируемость языка не обеспечивает скорость. Вопрос в библиотеках - какой бы язык вы не использовали, библиотека для перемножения матриц или интерполирования будет быстрее.
2. Бейсики бывают компилирумые. Да, в общем-то, сейчас все компилируемые, за исключением вбскрипт.
3. Низкоуровневый язык программирования вам не нужен. Зачем вам заниматься вопросами ввода и отображения данных? Исходя из пункта один вам скорее нужны пакеты для расчетов - матлаб, математика, даже маткад.

[identity profile] http://users.livejournal.com/__const__/ 2015-01-11 02:15 pm (UTC)(link)
Не читал ещё комментариев, потому вполне могу повториться.
Наиболее адекватное для заявленных целей, на мой взгляд, это Fortran или Python в форме SciPy
Первый прост как табуретка и по умолчанию быстр для вычислений. Второй чуть посложнее, но сочетает преимущества интерпретатора со скоростью компилированных библиотек и имеет массу встроенных вкусняшек типа Matplotlib.

[identity profile] amosk.livejournal.com 2015-01-11 02:16 pm (UTC)(link)
Я считаю что лучше оставить бейсик.
Потому что из языков, которые быстрее него, простых в изучении нет.

Скорость же программы зависит в основном не от языка, а от алгоритма.

Я до сих не могу забыть, как в институте у нас была курсовая по моделированию траектории движения частиц в э-магнитном поле, и модель, написанная на QuickBasic работала мгновенно, а на С++ вычислялась несколько минут, хотя должно быть наоборот. Просто подгруппа С++-ников была криворука ))

[identity profile] jusup0v.livejournal.com 2015-01-11 02:18 pm (UTC)(link)
Старый добрый Delphi - для венды прекрасный . Верен ему уже 20 лет. Delphi - замечательная платформа.

[identity profile] kallbasser.livejournal.com 2015-01-11 02:20 pm (UTC)(link)
Наверное, буду оригинален, но мой совет - GPSS
Это специализированный язык для имитационного моделирования. Делал на нем лабы, когда учился. У меня вызывал легкое отвращение, но это потому что я не знал предметной области и в то время несильно хотелось ломать мозг после традиционных языков (по принципу сдал-забыл).
Из языков более широких пожалуй могу посоветовать C# ну или Java если нужна кроссплатформенность. VB.net категорически не советую, там с VBA общего меньше чем различий. Если уж переучиваться то лучше на C# сразу (да и по мне он проще vb.net).

[identity profile] techwork.livejournal.com 2015-01-11 02:26 pm (UTC)(link)
Самый быстрый в скорости работы C++ потом идут Java и C# они хоть и медленее в два раза но их код в 5 раз более лакончный чем C++ и для разработки требуется в три раза меньше времени именно поэтому в современной коммерческой разработке C++ не очень популярен. Для ваших задач не Руби не Питон не подойдут. Да они в два раза лаконичней джаваподобных, и в полтора раза быстрее в разработке НО очень медленны в исполнении. На некоторых задачах просто катастрофически.
Экзотов типа хаскела или го тоже не советую - там нет ничего ради чего бы стоило.
Фреймворки же под C++ Java C# есть под любые задачи и даже в большем количестве чем под остальные языки.
Однако для научных задач никто ничего лучше C++ не придумал.

[identity profile] pavel-ladikov.livejournal.com 2015-01-11 02:29 pm (UTC)(link)
>Подумываю об одной новой модели, но понимаю, что на VBA она будет работать невыносимо медленно. Насколько я понимаю, программа, написанная почти на любом другом языке, компилируемом, будет работать в разы быстрее

Я находился в точно такой же ситуации и могу сказать, что Вы сильно отстали от времени. Итак:

1. Если говорить о VBA - речь идет не о "интерпретаторе", а о "гибриде", использующем прекомпиляцию в p-код при запуске программы и потом работающим с компилированным кодом в процессе исполнения.
Говорить что это медленнее, чем чистый исполняемый код - неверно. Если Вы посмотрите структуру скомпилированного файла, Вы увидите фактически ту же прекомпиляциюю, то есть какой-то простой код верхнего уровня служит как набор инструкций для вызова библиотек. Объектно-ориентированное и событийно-ориентированное программирование очень близко к интерпретации кода.

2. Собсстно язык давно "отцепили от компилятора" и скорость от языка программирования практически не зависит. Другое дело, что низкоуровневые языки позволяют выбросить "все лишнее" из библиотек, особенно обработчики исключений - и поднять скорость за счет этого. Но это не лучший способ улучшить свою программу.
Кроме того - инструментарий стал интеллектуальнее, он умеет переводить с одного языка на другой.
Лучше всего Вам переходить на платформу Visual Studio .NET, там используется единый компилятор C++, C# и VB.NET. Можно очень быстро, не думая об эффективности кода, получить работающую программу на VB.NET а если дойдет дело до превращения ее в многотиражный продукт - перекатать ее в си и оптимизировать уже в нем. И овцы целы и волки сыты. В смысле - и результат можно получить быстро - и потом довести код до идеала не спеша.

[identity profile] http://users.livejournal.com/__observer/ 2015-01-11 02:42 pm (UTC)(link)
Чтобы дать рекомендацию нужно приблизительно понять что будут делать написанные вами программы. Какие алгоритмы и структуры данных будут использоваться. При выборе языка, а точнее системы программирования, нужно смотреть не только на сам язык но и на доступные библиотеки. Они могут сильно упростить процесс написания программ.

Раз у вас программы написаны на бейсике, то в первую очередь нужно смотреть на VB.Net, язык почти такой же но при этом гораздо быстрее (он компилируется).

В самом общем случае можно порекомендовать C# или VB.Net (Visual Studio Express Edition) и Java (IDEA Community Edition).
Можно также посмотреть в сторону функциональных языков F# и Scala. Но я не знаю насколько они подойдут.
Edited 2015-01-11 14:43 (UTC)

[identity profile] ateregulov.livejournal.com 2015-01-11 02:44 pm (UTC)(link)
Сейчас самый удобный из продвинутых - это C#, если какой-то кусок кода надо ускорить, то используется unsafe mode и скорость будет не хуже чем у C++

[identity profile] amosk.livejournal.com 2015-01-11 02:44 pm (UTC)(link)
Кстати во многих случах код на бейсике наверно можно ускорить, если применять типизированные пременные для чисел, а не тип вариант который по умолчанию.

[identity profile] agalakhov.livejournal.com 2015-01-11 02:46 pm (UTC)(link)
Python. Идеально подходит на роль "нового бейсика". Язык достаточно мощный, чтобы на нем можно было написать абсолютно что угодно (от сайта до операционной системы), но при этом прост.

Для математических расчетов к Python есть удобная библиотека SciPy/NumPy, математика в ней по скорости равноценна фортрану.

[identity profile] ateregulov.livejournal.com 2015-01-11 02:48 pm (UTC)(link)
Basic и все его производные собратья уже давно протухли

[identity profile] zlata-gl.livejournal.com 2015-01-11 02:49 pm (UTC)(link)
Надо же, сколько дельфушников !
Я думала - они вымерли.
Всем привет ! :-)

[identity profile] burundutsky.livejournal.com 2015-01-11 02:51 pm (UTC)(link)
Подлый VB портит мозг программиста. Лучше помучиться чуть, и выйти на чудесную дорогу C/C++. Лучше - плюсы, меньше надо будет в разные тонкости вникать.

[identity profile] igor sidorov (from livejournal.com) 2015-01-11 02:57 pm (UTC)(link)
У пайтона есть много неочевидных особенностей. Можно попробовать Ruby. Также, если нужны именно расчёты, то хорошим выбором будет Matlab.

[identity profile] dmzlj.livejournal.com 2015-01-11 02:59 pm (UTC)(link)
Сложные большие вещи на простых тупых языках делать тяжело.
Edited 2015-01-11 15:07 (UTC)

[identity profile] toshick.livejournal.com 2015-01-11 03:12 pm (UTC)(link)
1) поскольку Вы не делаете тиражируемую программу, быстродействие для Вас на самом деле менее важно, чем скорость освоения, написания и переписывания. Т.е. если Ваша программа будет работать сутки, это все равно эффективнее, чем если Вы будете месяц учиться и напишете программу, которая отработает за 1 минуту.

2) основные потери времени в VBA Excel или Access происходят не из-за неэффективности интерпретатора, а из-за неэффективного хранения данных. Попробуйте сначала освоить работу с данными в памяти, а не в ячейках XL или таблицах Access, хотя бы в классических массивах, и это очень сильно ускорит работу программы.

3) Если Вам надо работать с большими объемами данных, которые Вы храните в базе Access, то Вам совершенно однозначно не надо ни на что переходить. Затраты на работу с базой данных все равно таковы, что вся экономия на их фоне потеряется. Попробуйте в первую очередь оптимизировать именно работу с данными, ни в коем случае не храните промежуточные результаты в таблицах базы данных, если, конечно, они не нужны для отладки.

[identity profile] maz-d.livejournal.com 2015-01-11 03:21 pm (UTC)(link)
Ну питон простой в освоении, он правда интерпретируемый, но компилировать тоже можно при желании =)

Page 3 of 6