Посоветуйте язык программирования
Jan. 11th, 2015 02:41 pmЯ всю жизнь программировал только на бейсике, на разных его версиях. Так получилось. Когда писал кандидатскую, набралось очень много таблиц с данными (это были морфологические признаки морских ежей), и я задолбался обсчитывать их на калькуляторе. Поэтому быстренько освоил бейсик (тогда персональные компьютеры IBM только начали появляться, и к ним прилагался язык GW-Basic). Освоил - и сразу почувствовал себя человеком. С тех пор не переучивался, сейчас пишу все свои программки на VBA в MS Access. То есть в программировании я дилетант, но опытный. Программированием пользуюсь сейчас для имитационного моделирования эволюционных процессов в популяциях. Подумываю об одной новой модели, но понимаю, что на VBA она будет работать невыносимо медленно. Насколько я понимаю, программа, написанная почти на любом другом языке, компилируемом, будет работать в разы быстрее. Вопрос такой: какой из этих языков мне будет быстрее и проще всего освоить? Времени, сил и желания преодолевать трудности и вникать в программистские проблемы - не имеется. Мне бы этот язык просто скачать (можно купить, если не слишком дорого), освоить за пару-тройку дней - и вперед. Т.е. главное, чтобы он был максимально простым в освоении для того, кто знает бейсик, без всяких интеллектуальных "понтов", но работал хотя бы раз в 10 быстрее.
no subject
Date: 2015-01-11 11:45 am (UTC)http://www.freebasic.net/
https://ru.wikipedia.org/wiki/FreeBASIC
no subject
Date: 2015-01-11 11:46 am (UTC)no subject
Date: 2015-01-11 11:47 am (UTC)no subject
Date: 2015-01-11 11:47 am (UTC)Питон не имеет равных в читаемости кода. Если вы будете возвращаться к однажды написанной программе через год-два, то на Питоне вы быстрее всего вспомните и разберетесь, что там к чему.
no subject
Date: 2015-01-11 11:48 am (UTC)идёт с собственной IDE и необходимыми библиотеками для математических расчётов, а также для визуализации результатов. удобная работа с массивами и матрицами
no subject
Date: 2015-01-11 11:48 am (UTC)no subject
Date: 2015-01-11 11:51 am (UTC)no subject
Date: 2015-01-11 11:52 am (UTC)Простите заранее за экзотический подход.
no subject
Date: 2015-01-11 11:52 am (UTC)no subject
Date: 2015-01-11 11:53 am (UTC)no subject
Date: 2015-01-11 11:56 am (UTC)Будет ноль ответов. Оно вряд ли надо автору.
no subject
Date: 2015-01-11 11:59 am (UTC)no subject
Date: 2015-01-11 12:04 pm (UTC)Но я не смог бы достаточно хорошо освоить Delphi (имею в виду объектно-ориентированное программирование), если бы мне его не преподавал живой человек – нужно значительное умственное усилие, чтобы “въехать” в суть ООП.
В среде химиков, с которыми я общаюсь, принято писать программы на фортране, но по-моему по сравнению с Delphi это никудышный язык (по крайней мере те компиляторы, на которых мы писали).
no subject
Date: 2015-01-11 12:05 pm (UTC)no subject
Date: 2015-01-11 12:09 pm (UTC)Жив, жив. У меня на дельфях крупный проект ведется с 2001 года. Начинал на Delphi-3, сейчас уже на Delphi-XE7 перехожу.
no subject
Date: 2015-01-11 12:14 pm (UTC)no subject
Date: 2015-01-11 12:14 pm (UTC)Кстати, как мне думается, биологу “въехать” в суть ООП будет очень легко. Это ведь как с ДНК - ДНК-код любого организма содержит ДНК-код его предка + что-то новое, свое, индивидуальное. Так же и в ООП - программный код любого объекта-потомка содержит код своего объекта-родителя + что новое, свое, индивидуальное.
no subject
Date: 2015-01-11 12:26 pm (UTC)Для эволюционных экспериментов я бы посоветовал скачать движок Unity3D (http://unity3d.com/unity/download). Он бесплатный и предназначен для создания игр. То есть, визуализация эксперимента предельно облегчена. Особенно если модель подразумевает взаимодействия между особями в пространстве. Например, некоторые исследователи моделируют эволюцию локомоции. Организмы в таких экспериментах представляют собой нелепо дёргающиеся геометрические объекты, и эволюционирует как форма тела, так и управляющая система. Отбор происходит по критерию скорости и точности движения в сторону пищи. И вот для такого эксперимента разработка физики и системы визуализации заняла бы добрый месяц работы, если делать всё с нуля в традиционной оболочке, тогда как в Unity это можно сделать за пару дней.
Понятно, что помимо изучения языка, некоторое время пришлось бы потратить на изучения самого движка, но думаю, это того стоит. Для человека, который занимается постановкой вычислительных эволюционных экспериментов, это бесценный инструмент.
no subject
Date: 2015-01-11 12:34 pm (UTC)no subject
Date: 2015-01-11 12:35 pm (UTC)no subject
Date: 2015-01-11 12:35 pm (UTC)С бейсика соскочить на другой язык программирования совсем быстро и просто не получится, если это единственный язык, который вы знаете.
По любому прийдется затратить усилия и время.
>освоить за пару-тройку дней - и вперед
Этого не выйдет, пару недель - еще куда не шло. И это лишь для того, чтобы научиться хорошо делать то же, что делали на Basic.
К тому же такой критерий, как скорость работы программы... Хотя у бейсика и есть определенные проблемы с производительностью, но переход к быстро изучаемым языкам может не дать желаемых "10 раз быстрее". Перейдя на то же Python в случае вычислительных задач этих 10 раз не получить. И да, Python не компилируемый язык.
У языков программирования разные пороги вхождения и разные возможности, разные доступные библиотеки.
Тот же C имеет довольно высокий порог вхождения, на нем очень просто делать ошибки, которые потом приходится героически вылавливать днями, неделями, месяцами, но опытный программист может в некоторых случаях для вычислений задействовать GPU (видеокарту), и по сравнению с бейсиком здесь может быть и в 1000 раз быстрее, и даже более. Но если вы решите попробовать C после бейсика, то вы просто потратите напрасно время из за этого самого порога вхождения - чтобы достичь нужного уровня (сносного) на C, программированием нужно заниматься профессионально.
Если давать рекомендацию "от балды" (а по вашей постановке задачи я, несмотря на свой более чем 20-ти летний опыт профессионального программирования, могу только так и поступить), то я бы сказал:
- R как специализированный язык для статистической обработки данных
- Java как универсальный язык программирования
- Python как язык, на который быстрее всего можно соскочить с бейсика
За пару недель сможете освоить не хуже бейсика эти языки
Но это все равно, что абстрактному человеку ответить на вопрос "какую машину мне купить?" имея на входе только информацию "чтобы коробка автомат была".
Если хотите более взвешенных рекомендаций, попробуйте описать, с какими данными вам обычно приходится работать и как эти данные обрабатываются, а так же что обычно хотите получить на выходе.
Данными на входе могут быть как гига и даже терабайтные массивы, так и небольшие векторы. У данных обычно бывает тип.
Обработка может представлять из себя как огромное число циклов с одними и теми же данными, так и вычисление чего-то в на основе данных из огромных таблиц.
На выходе может быть достаточно вывода текстового результата в консоль, а может потребоваться нарисовать графиков с рюшечками.
Вы можете потратить сейчас время на изучение языка, а потом понять, что для ваших задач вы ничего не выиграли по сравнению с бейсиком.
no subject
Date: 2015-01-11 12:37 pm (UTC)no subject
Date: 2015-01-11 12:37 pm (UTC)но писать ты будешь долго
(если не знаешь библиотек в винде)
no subject
Date: 2015-01-11 12:43 pm (UTC)Компилируемость не есть необходимое требование для скорости. Большинство научных задач хорошо укладываются в векторизацию (сведение операций с циклами к операциям с матрицами), поэтому будут работать достаточно быстро на любом из вышеназванных языком.
С другой стороны, прототипировать научную модель на С имеет смысл лишь из спортивного интереса: слишком много проблем насобираете по дороге.
no subject
Date: 2015-01-11 12:43 pm (UTC)Бесплатная среда разработки SharpDevelop: http://www.icsharpcode.net/OpenSource/SD/Download/
или Visual Studio Express: http://go.microsoft.com/?linkid=9832262
Хотя правильнее было бы начать изучать Хаскелл )) https://www.haskell.org/haskellwiki/Haskell