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

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

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

[identity profile] alex2210.livejournal.com 2015-01-11 07:17 pm (UTC)(link)
Александр, если прочтёте это, то важно не только какой язык по скорости исполнения, но и скорость изучения.
Проще (в написании) и быстрее (в исполнении) чем обычный Си (для обычных "линейных" программ), имхо, мало что может быть.

По скорости изучения:
В 1988-м году я изучил язык Си за один уикенд (с вечера пятницы по вечер вск.) по книге Хэнкока, Кригера "Введение в программирование на языке Си".
По любой другой книге (в том числе по знаменитому "Кэрнигану") изучение заняло бы почти на порядок больше времени.

С уважением
Александр

P.S.
буду рад оказать Вам любую посильную помощь
Edited 2015-01-11 19:19 (UTC)

[identity profile] magik-ocean.livejournal.com 2015-01-11 07:25 pm (UTC)(link)
Мой голос за Python - он прост, имеет массу библиотек, и огромное научное сообщество. Тем, кто будет говорить, что он медленный не верьте, учёные для своих целей сделали его достаточно быстрым :)
Edited 2015-01-11 19:44 (UTC)

[identity profile] tarzan-pasha.livejournal.com 2015-01-11 08:05 pm (UTC)(link)
Нужно сначала будет определиться с вашими целями и предпочтеньми:
Хотите работать в вебе и создавать сайты и т.п или же хотите в офисе сидеть, писать программы внутри отдела программистов или же ездить по фирмам автоматижировать их. В зависимости от этого делать выбор. 1c довольно легко изучить. Php не сложен. Если для приложений под айфон или андроид, то объектный c++ или java.

[identity profile] iralyan.livejournal.com 2015-01-11 08:14 pm (UTC)(link)
Питон для сбора данных, НО не для обработки

R или Weta уже для статанализа, манипуляции с данными проводить можно, но вот собирать их из, скажем, интеренета, толком не получится. Еще момент - R работает в оперативной памяти, так что для больших бд (генетика, например или big data) выдаст ошибку, хотя есть решения, как это обходить, например, с помощью Hadoop. Если у вас несколько десятков тысяч наблюдений, то в R есть пакеты, которые дают фору даже безбожно дорогому SAS EM. Хотя графики в R очень простые, то есть такие, которые нужны для работы, быстро отсмотреть несколько сотен, чтобы оценить обстановку, а не для публикаций. Красоту навести можно, но легче убить себя об стену, если честно. Коммерческие пакеты, естественно, этим не страдают.

Еще Julia недавно создали, чтобы статистики получили 2 в 1. Мой муж в восторге от Julia, я только Python осваиваю на Coursera, но после R это не так сложно как кажется. Поскольку язык новый, готовых скриптов мало, в отличие от R, которым пользуются все, от маркетологов до биологов, и, соответственно, все делятся скриптами и есть куча форумов, где можно спросить "что не так с моим кодом?". Джулия очень смешная, она работает с иррациональными числами, делает операции с неприведеными дробями. В общем, выглядит очень "правильно".

Все упомянутое мной выше - free software

[identity profile] aleksclan.livejournal.com 2015-01-11 08:44 pm (UTC)(link)
ладно, на чём-таки сошлись ?
АЛГОЛ или Фортран

[identity profile] uborshizzza.livejournal.com 2015-01-11 08:50 pm (UTC)(link)
Visual Basic .NET
Тем более что мелкософты бесплатно предоставляют версию, из которой выкинуты только примочки для коллективной работы.

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

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

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

Зато - куча плюсов. Включая отличную систему отладки и массивы огромного и динамически изменяемого размера.

[identity profile] bantaputu.livejournal.com 2015-01-11 09:39 pm (UTC)(link)
Алгол-60. Лучший язык, не считая коровьего - с хреном.
lxe: (письмо с дороги)

[personal profile] lxe 2015-01-11 09:50 pm (UTC)(link)
У меня сложилось впечатление, что автор проводит на нас хитрый натурный эксперимент.

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

Для озвученных целей - однозначно Python. Только не сам по себе, а в комплекте со стеком NumPy+SciPy+Pandas, плюс библиотеки для вашего домена (возможно, BioPython)?

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

Еще посмотрите в сторону IPython Notebook. Особенно если вы этот код пишете не просто для себя, а он пойдет в какую-то статью или иную работу. На Западе быстро становится стандартом для подобного рода вещей.

[identity profile] killerofrussian.livejournal.com 2015-01-11 10:37 pm (UTC)(link)
vb.net

[identity profile] http://users.livejournal.com/_xacid_/ 2015-01-12 02:01 am (UTC)(link)
http://msdn.microsoft.com/ru-ru/library/dd233154.aspx

http://fsharp.org

[identity profile] Степанов Виталий (from livejournal.com) 2015-01-12 06:46 am (UTC)(link)
Неясно по какой причине у вас тормозит (будет тормозить на новой модели). Есть два варианта:
1. Время тратится на сложные расчеты с данными
2. Время тратится на доступ к таблицам, то есть на задачи типа - найти строку в таблице, считать из нее данные, обработать и записать в ту же строк/добавить новую.
Если второй вариант, то уход с VBA вряд ли даст вам увеличение производительности в разы.
Тут может помочь запись промежуточных результатов в память (вам это уже советовали) или оптимизация таблиц.
Если вы работали в акцессе, значит таблицы делать вы умеете и наверно строить визуальные запросы тоже. Может помочь другая стрктура таблиц или добавление ключевых полей.
(deleted comment) (Show 5 comments)

[identity profile] epoxyde.livejournal.com 2015-01-12 07:26 am (UTC)(link)
Ассемблер?

[identity profile] zlata-gl.livejournal.com 2015-01-12 07:51 am (UTC)(link)
Еще пара слов за Дельфи.
Одна особенность, про которую пока никто не упомянул.

Дельфи очень подходит для изучения "Эволюции кооперации". Не в смысле писания программ на нем, а в смысле - посмотреть сообщества в ыртырнете, и как люди себя ведут.
Дельфушники (наряду с линуксоидами) - прирожденные кооператоры. "Дельфи" так устроен, что новые компоненты с легкостью устанавливаются на "палитру" и равноправны с аборигенами. И люди с радостью дарят свои новые компонениы "по секрету всему свету".
Когда работала - почти ничего не писала сама. Шла к "полякам" (уже не помню, как назывался тот сайт) - находила ВСЕ.

Однажды мне надо было что-то состряпать на VBASIC. Посмотрела я на скромненькую палитру и стала искать - где взять и как добавить новые компоненты.
Не нашла. Обиделась.

[identity profile] am-photos.livejournal.com 2015-01-12 11:09 am (UTC)(link)
Думаю, что по аналгии легче всего пошел бы Дельфи, но он тоже не сильно быстр.
Основа быстрых языков - это С, и прочее, но с обучением тут будет швах. Пробуйте.

[identity profile] radisvaliullin.livejournal.com 2015-01-12 04:41 pm (UTC)(link)
Для статистики голосования я за Python.

А что аспирантов держать для этих целей уже не модно?

[identity profile] jr0.livejournal.com 2015-01-12 04:46 pm (UTC)(link)
Проще всего в изучении и отладке расчетов - PTC Mathcad. Есть работоспособные portable. Программа самодокументирована и даже есть возможность что-то рядом аналитически упростить. Или встроить алгоритмик в стиле бейсиков.


Есть многомерная графика, размерный анализ, статистические пакеты, связь с Excel. Численное интегрирование и пр.

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

Скорость будет зависеть от задачи и алгоритма. Боюсь, что число советов немыслимо. Но не удержался.
Edited 2015-01-12 16:50 (UTC)

[identity profile] martin-222.livejournal.com 2015-01-13 03:59 am (UTC)(link)
Может на голосование вынести какой язык мне больше подойдет для моих целей? Желательно чтобы голосовали компетентные граждане.

[identity profile] dondublon.livejournal.com 2015-01-13 04:51 am (UTC)(link)
Варианты.
1. Python + numpy, как было сказано в самом первом комментарии. Python сам по себе язык интерпретируемый и медленный, но numpy - библиотека для быстрой работы с числами, исправляет этот недостаток.
2. VB.NET. Учитывая ваш предыдущий опыт. Хотя для .NET лучше всего, конечно, C#.

[identity profile] inry-r.livejournal.com 2015-01-13 08:24 am (UTC)(link)
На самом деле, всё зависит от алгоритма. Компиляция ускоряет процесс в C раз. А правильный алгоритм может сделать из N^2 N*lnN, что при больших N лучше любого C.

Если надо работать со строками - Перл на порядок лучше васика..

Если с числами - Паскаль.

Но в любом случае, будет как в анекдоте про рай для наркоманов - кто-то уже ЭТО написал.

[identity profile] daeloce.livejournal.com 2015-01-13 09:48 am (UTC)(link)
Мнение человека с профессией программист, пишущий в том числе различные мат.модели:

В идеале для скорости это С, либо С++(но без особого ООП), с использованием расчетов на GPU, благо с появлением C++AMP от Microsoft'a это стало возможно без каких либо дополнительных интеллектуальных вложений :). Но для человека знакомого с программированием по Васику это дело не 1, и даже не двух месяцев, т.е. вам явно не подходит, хотя если найдете студента/аспиранта с достаточным знанием языка это был бы оптимальный вариант.

Если рассматривать именно ваш случай(писать будете вы, и на изучение пару дней - неделя) тогда: C#. Язык простой, особенно в области математики, хотя и графический интерфейс прикрутите без особых сложностей. Математика довольно оптимизированная, простые средства распараллеливания, плюс наглядность синтаксиса. Писать лучше всего в VisualStudio, есть экспресс версия, бесплатная и с достаточным для вас функционалом. Плюс начиная с последней версии доступна CommunityEdition, та вообще полноценная среда с ограничениями только по коммерческому использованию.

Но в целом, я бы все же рекомендовал найти человека знающего язык, пусть и со стороны, тем более я уверен тема была бы многим интересна, я бы и сам с удовольствием чего нибудь такого понаписал. :)
Edited 2015-01-13 09:52 (UTC)

[identity profile] twi1ightsparkle.livejournal.com 2015-01-14 09:08 am (UTC)(link)
не могу осилить over 600 комментариев.
при случае напишите, что выбрали - очень интересно!

[identity profile] pusk1.livejournal.com 2015-01-14 08:03 pm (UTC)(link)
Просто смена языка даст прирост порядка 20% или не даст вовсе.
Рекомендую взять в помощники толкового студента, разбирающегося в IT, проконсультироваться с профессионалами.
Другой путь - найти готовую библиотеку, которая обеспечит нужный вам функционал.
Третий путь - разобраться в параллельных вычислениях. Но это не за 3 дня.
Нужно краткое описание модели и кусок кода, если есть. Обычно сильно тормозит небольшой фрагмент программы. Причина может быть не в языке, а в обращении к базе данных, например. Часто бывает, что без смены языка получается увеличить быстродействие на 1-3 порядка. Если вы постоянно обращаетесь к данным в в MS Access при моделировании, то прирост на пару порядков легко достижим без смены языка.

[identity profile] nemo2015.livejournal.com 2015-01-14 08:37 pm (UTC)(link)
macroevolution писал "Я точно знаю, что мне нужно, и вопрос сформулировал оптимальным образом."
Тогда можно сделать вывод , что нужен был такой себе холивар на тему какой язык программирования лучше. :) Вяло текущая версия уже имеется, но буйных пока мало.

Если серьезно, то проще перейти на Visual Basic 6.0 (без А), что и советовали выше, там будет компиляция, а освоить нужно в основном среду программирования.
Есть еще такой зверь KBasic( https://ru.wikipedia.org/wiki/KBasic), 30 евро за проф версию с компилятором, есть условно-бесплатные версии.
А если еще серьезнее, то нужно понять в чем проблема низкого быстродействия.
Зачем вы используете VBA в Access? Данные хранятся в БД? Тогда очень сильно может влиять
доступ к БД, стиль обращения и формат хранения данных. А может реляционные БД не подходят для вашей задачи?
Нужна конкретика.
Об этом несколько человек пишет (например, хороший пост romikchef ). Но конкретики нет. Сколько особей в популяции, сколько параметров (генов) у особи? Особь "живет" /меняется (и это тоже надо моделировать)? Как происходит модификация генов?

Инструмент выбирают по задаче ( а ее здесь не видно), а иначе я выбираю этот млоток, потому , что у него красивая ручка или "Дайте эти пассатижи от фирмы MS, они очень модны в этом сезоне."

Page 5 of 6