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

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

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

[identity profile] exshvonder.livejournal.com 2015-01-11 11:45 am (UTC)(link)
Переучиваться не надо вообще.

http://www.freebasic.net/

https://ru.wikipedia.org/wiki/FreeBASIC
Edited 2015-01-11 11:47 (UTC)

[identity profile] firrior.livejournal.com 2015-01-11 11:46 am (UTC)(link)
"все эти медленные sql-запросы" по определению быстрее, чем запись в массивы. Одно дело оптимизация дилетанта, другое - профессионалов-оптимизаторов, писавших SQL-движок.

[identity profile] firrior.livejournal.com 2015-01-11 11:47 am (UTC)(link)
Серьёзно? Билдер? В 2015 году? Он всё ещё жив? :-0

[identity profile] http://users.livejournal.com/_hellmaus_/ 2015-01-11 11:47 am (UTC)(link)
+1, кроме того, в Python есть замечательная библиотека Biopython для работы с последовательностями.
Питон не имеет равных в читаемости кода. Если вы будете возвращаться к однажды написанной программе через год-два, то на Питоне вы быстрее всего вспомните и разберетесь, что там к чему.

[identity profile] http://users.livejournal.com/_glav_/ 2015-01-11 11:48 am (UTC)(link)
матлаб.
идёт с собственной IDE и необходимыми библиотеками для математических расчётов, а также для визуализации результатов. удобная работа с массивами и матрицами

[identity profile] muh2.livejournal.com 2015-01-11 11:48 am (UTC)(link)
Я бы посмотрел на какие-нибудь пакеты. Тут уже упоминали Математику, Матлаб, Маткад, могу еще упомянуть FlexPDE или бесплатный Elmer. Eсли задача сводится к стандартной, например, к решению дифуров в одномерных или частных производных - это вполне может быть решением.

[identity profile] bear-bull.livejournal.com 2015-01-11 11:51 am (UTC)(link)
Есть такое, конечно. Но похоже профессионалы-оптимизаторы наоптимизировали много ненужного для обычного пользователя, поэтому свои проги работают много быстрее (из собственного опыта)

[identity profile] firrior.livejournal.com 2015-01-11 11:52 am (UTC)(link)
Если таблицы с данными, то проще всего оказался... как бы не PHP+MySQL. Автор ведь с вёрсткой дело имел и вывод на веб-страницы его не смутит. А в PHP+MySQL больше всего готовых решений для оптимизации именно SQL-запросов. И красивых графических выводов - бесплатных.

Простите заранее за экзотический подход.

[identity profile] bear-bull.livejournal.com 2015-01-11 11:52 am (UTC)(link)
понятно это - поэтому и привел в пример 2 противоположных полюса

[identity profile] worldly-wise.livejournal.com 2015-01-11 11:53 am (UTC)(link)
В своё время был компилируемыйц бейсик. Поищите.

[identity profile] bear-bull.livejournal.com 2015-01-11 11:56 am (UTC)(link)
""Посоветуйте язык программирования для имитационного моделирования эволюционных процессов в популяциях"."

Будет ноль ответов. Оно вряд ли надо автору.

[identity profile] megazver.livejournal.com 2015-01-11 11:59 am (UTC)(link)
Python на сайте Codecademy.

[identity profile] grandrienko.livejournal.com 2015-01-11 12:04 pm (UTC)(link)
Я скорее не профессионал, знаю только Delphi, но хочу сказать что очень им доволен. Когда я был в аспирантуре, написал на нём множество программ для научного руководителя, и это мне очень помогло защититься. Как я понимаю, Delphi один из самых удобных языков (в смысле, сред разработки) для быстрого написания сервисной программы с большим количеством окон, кнопок, переключателей и т.д. Достаточно регулярно приходится писать какую-нибудь новую программу для мелких нужд. И он весьма быстрый, компилируемый.
Но я не смог бы достаточно хорошо освоить Delphi (имею в виду объектно-ориентированное программирование), если бы мне его не преподавал живой человек – нужно значительное умственное усилие, чтобы “въехать” в суть ООП.
В среде химиков, с которыми я общаюсь, принято писать программы на фортране, но по-моему по сравнению с Delphi это никудышный язык (по крайней мере те компиляторы, на которых мы писали).

[identity profile] logan-666.livejournal.com 2015-01-11 12:05 pm (UTC)(link)
Если предполагается хранение и обработка массивов данных, то я бы посоветовал 1С - там и массивы данных организовать и хранить просто, и процедуры обработки данных легко написать, и язык там по сути чуть измененный бейсик.

[identity profile] logan-666.livejournal.com 2015-01-11 12:09 pm (UTC)(link)
// Не знаю, жив ли еще "Дельфи"

Жив, жив. У меня на дельфях крупный проект ведется с 2001 года. Начинал на Delphi-3, сейчас уже на Delphi-XE7 перехожу.

[identity profile] phlya.livejournal.com 2015-01-11 12:14 pm (UTC)(link)
И не только последовательностями :) Там куча всего разного, и довольно активно развивается.

[identity profile] logan-666.livejournal.com 2015-01-11 12:14 pm (UTC)(link)
// “въехать” в суть ООП.

Кстати, как мне думается, биологу “въехать” в суть ООП будет очень легко. Это ведь как с ДНК - ДНК-код любого организма содержит ДНК-код его предка + что-то новое, свое, индивидуальное. Так же и в ООП - программный код любого объекта-потомка содержит код своего объекта-родителя + что новое, свое, индивидуальное.

[identity profile] iisus.livejournal.com 2015-01-11 12:26 pm (UTC)(link)
Я много языков перепробовал (начал тоже с бейсика, в школе), но С++ был просто откровением, подкупили его продуманность и синтаксическая простота. Впрочем, в последнее время перешёл на С# - это следующая ступень эволюции С++.

Для эволюционных экспериментов я бы посоветовал скачать движок Unity3D (http://unity3d.com/unity/download). Он бесплатный и предназначен для создания игр. То есть, визуализация эксперимента предельно облегчена. Особенно если модель подразумевает взаимодействия между особями в пространстве. Например, некоторые исследователи моделируют эволюцию локомоции. Организмы в таких экспериментах представляют собой нелепо дёргающиеся геометрические объекты, и эволюционирует как форма тела, так и управляющая система. Отбор происходит по критерию скорости и точности движения в сторону пищи. И вот для такого эксперимента разработка физики и системы визуализации заняла бы добрый месяц работы, если делать всё с нуля в традиционной оболочке, тогда как в Unity это можно сделать за пару дней.

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

[identity profile] livejournal.livejournal.com 2015-01-11 12:34 pm (UTC)(link)
Здравствуйте! Ваша запись попала в топ-25 популярных записей LiveJournal России (http://www.livejournal.com/?rating=ru)! Подробнее о рейтинге читайте в Справке (https://www.dreamwidth.org/support/faqbrowse?faqid=303).

[identity profile] aleksclan.livejournal.com 2015-01-11 12:35 pm (UTC)(link)
7-й Бейсик -- ни о чём (протестил давно)

[identity profile] mifromru.livejournal.com 2015-01-11 12:35 pm (UTC)(link)
>Вопрос такой: какой из этих языков мне будет быстрее и проще всего освоить?

С бейсика соскочить на другой язык программирования совсем быстро и просто не получится, если это единственный язык, который вы знаете.
По любому прийдется затратить усилия и время.

>освоить за пару-тройку дней - и вперед

Этого не выйдет, пару недель - еще куда не шло. И это лишь для того, чтобы научиться хорошо делать то же, что делали на Basic.

К тому же такой критерий, как скорость работы программы... Хотя у бейсика и есть определенные проблемы с производительностью, но переход к быстро изучаемым языкам может не дать желаемых "10 раз быстрее". Перейдя на то же Python в случае вычислительных задач этих 10 раз не получить. И да, Python не компилируемый язык.

У языков программирования разные пороги вхождения и разные возможности, разные доступные библиотеки.

Тот же C имеет довольно высокий порог вхождения, на нем очень просто делать ошибки, которые потом приходится героически вылавливать днями, неделями, месяцами, но опытный программист может в некоторых случаях для вычислений задействовать GPU (видеокарту), и по сравнению с бейсиком здесь может быть и в 1000 раз быстрее, и даже более. Но если вы решите попробовать C после бейсика, то вы просто потратите напрасно время из за этого самого порога вхождения - чтобы достичь нужного уровня (сносного) на C, программированием нужно заниматься профессионально.

Если давать рекомендацию "от балды" (а по вашей постановке задачи я, несмотря на свой более чем 20-ти летний опыт профессионального программирования, могу только так и поступить), то я бы сказал:

- R как специализированный язык для статистической обработки данных
- Java как универсальный язык программирования
- Python как язык, на который быстрее всего можно соскочить с бейсика

За пару недель сможете освоить не хуже бейсика эти языки

Но это все равно, что абстрактному человеку ответить на вопрос "какую машину мне купить?" имея на входе только информацию "чтобы коробка автомат была".

Если хотите более взвешенных рекомендаций, попробуйте описать, с какими данными вам обычно приходится работать и как эти данные обрабатываются, а так же что обычно хотите получить на выходе.

Данными на входе могут быть как гига и даже терабайтные массивы, так и небольшие векторы. У данных обычно бывает тип.

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

На выходе может быть достаточно вывода текстового результата в консоль, а может потребоваться нарисовать графиков с рюшечками.

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

[identity profile] asug.livejournal.com 2015-01-11 12:37 pm (UTC)(link)
Delphi. Простой и строгий, на нем учат (ну или учили) школьников программировать. Взять старенькую версию Delphi 7, просто подключается к Access. Хотя не знаю как будет насчет имитационного моделирования

[identity profile] aleksclan.livejournal.com 2015-01-11 12:37 pm (UTC)(link)
МАСМ
но писать ты будешь долго
(если не знаешь библиотек в винде)

[identity profile] shmel39.livejournal.com 2015-01-11 12:43 pm (UTC)(link)
Я бы тоже порекомендовал Python. С натяжкой можно назвать R и Matlab, но это боль, особенно на первых этапах.

Компилируемость не есть необходимое требование для скорости. Большинство научных задач хорошо укладываются в векторизацию (сведение операций с циклами к операциям с матрицами), поэтому будут работать достаточно быстро на любом из вышеназванных языком.

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

[identity profile] geniepro.livejournal.com 2015-01-11 12:43 pm (UTC)(link)
Если хотите максимально простой после VBA язык -- то это только VB.NET, компилируемый, по быстродействию не уступает C#, хотя и уступает C++, но в любом случае куда быстрее чем VBA.
Бесплатная среда разработки SharpDevelop: http://www.icsharpcode.net/OpenSource/SD/Download/
или Visual Studio Express: http://go.microsoft.com/?linkid=9832262
Хотя правильнее было бы начать изучать Хаскелл )) https://www.haskell.org/haskellwiki/Haskell

Page 3 of 27