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 12:44 pm (UTC)(link)
К тому же:

An unlimited number of users within an organization can use Visual Studio Community for the following scenarios: in a classroom learning environment, for academic research, or for contributing to open source projects.

http://www.visualstudio.com/products/visual-studio-community-vs

[identity profile] aleksclan.livejournal.com 2015-01-11 12:47 pm (UTC)(link)
ещё раз повторяю (выше я уже сказал) :
VB NET (Бейсик 7) -- слабый, и, главное -- неудобный
из Бейсиков самый что ни на есть -- VB 6
но у него тоже есть минус -- хреново работает с мультимедиа, для этого нужен С
Edited 2015-01-11 12:48 (UTC)

[identity profile] garisson.livejournal.com 2015-01-11 12:48 pm (UTC)(link)
haskell

[identity profile] lvqcl.livejournal.com 2015-01-11 12:49 pm (UTC)(link)
Он весьма условно жив, кмк. И, боюсь, сильно небесплатен.

+1

[identity profile] freedom_of_sea.livejournal.com 2015-01-11 12:51 pm (UTC)(link)
профессиональные программисты его не любят , именно за то что он прямой наследник Бейсика, но работает быстро и осваивается просто

питон медленный

[identity profile] freedom_of_sea.livejournal.com 2015-01-11 12:52 pm (UTC)(link)
.

[identity profile] snowman-fedya.livejournal.com 2015-01-11 12:53 pm (UTC)(link)
Python. Безо всяких альтернатив.

[identity profile] aleksclan.livejournal.com 2015-01-11 12:53 pm (UTC)(link)
осторожно -- злая собака )))

[identity profile] geniepro.livejournal.com 2015-01-11 12:53 pm (UTC)(link)
> Borland C++ Builder
самый худший выбор, лишь врагу пожелаю!

[identity profile] mcmlxxxii.livejournal.com 2015-01-11 12:59 pm (UTC)(link)
говно вопрос, пешы на пхп

[identity profile] geniepro.livejournal.com 2015-01-11 01:09 pm (UTC)(link)
Что значит слабый и неудобный?
Минимум усилий для переучивания с VBA есть? Есть, значит удобный.
Скорость выполнения программ, такая же как у C#, есть? Есть, значит быстрый.
Доступ к библиотеке .NET Framework есть? Есть, значит слабым назвать довольно трудно.
Есть современные бесплатные среды разработки для него, чего не скажешь о VB 6 -- его или пиратски использовать, или неведомо как лицензию на столь древний продукт покупать...

[identity profile] vmenshov.livejournal.com 2015-01-11 01:10 pm (UTC)(link)
Одно дело - чтение с диска, совсем другое - работа с оперативной памятью.

[identity profile] vmenshov.livejournal.com 2015-01-11 01:12 pm (UTC)(link)
Мой путь остановился на C#. Это офигительнейший язык, и на бейсик он слава богу, не похож. Он наследник Дельфи. Именно создатель Дельфи разрабатывал C#.

[identity profile] a-burlaka.livejournal.com 2015-01-11 01:12 pm (UTC)(link)
О! Знакомая ситуация: "Подскажите чем заменить старый бейсик что бы не пришлось становиться профессиональным программистом". И в каждом каменте свой ответ. Как человек, уже сталкивавшийся с этой проблемой могу сказать: быстро не получится. И пока не попробуете решить конкретную программу на данном языке, а ещё лучше - десяток типичных для себя задач, оценить его вряд-ли получится.
Ну и ещё стоит подумать, какие ещё возможности кроме "просто посчитать" от языка требуются.

[identity profile] vmenshov.livejournal.com 2015-01-11 01:13 pm (UTC)(link)
А еще там был Фокал :)

[identity profile] geniepro.livejournal.com 2015-01-11 01:14 pm (UTC)(link)
Есть же бесплатная версия
stiv_sigmal: (Время не ждёт)

[personal profile] stiv_sigmal 2015-01-11 01:14 pm (UTC)(link)
1С для биолога, боюсь — это как правым ухом чесать левую пятку (инверсия намеренная).

Кто советует делфи или джаву — у C#\VB.NET несколько преимуществ. Это и бесплатная среда разработки (та, которая express), и, кмк, легче начально осваивать.
Про питон (особенно его математические-статистические библиотеки) ничего не скажу. Но раз уж говорят о них (библиотеках), лучше бы разузнать подробней.
Паскаль\фортран\прочие_перлы не советовал бы из-за старых парадигм и общего спада популярности. Хотя… Фортран славен популярностью в научных кругах, вроде бы.
php+xxSQL не советую даже не из-за заточенности на web, а потому, что узкое место будет не в вычислениях, а в базе данных, и вот там за пару дней никак не получится разобраться.

[identity profile] geniepro.livejournal.com 2015-01-11 01:15 pm (UTC)(link)
К сожалению, не подходит под условие "без всяких интеллектуальных "понтов""

[identity profile] vadim rumyantsev (from livejournal.com) 2015-01-11 01:15 pm (UTC)(link)
Компилятор – это далеко не главный фактор увеличения производительности программ. На первом месте находится выбор эффективных алгоритмов, но Вам, как человеку, далёкому от профессионального программирования, в эти вопросы соваться не имеет смысла. Разве что использовать какую-то уже готовую среду для имитационного моделирования, где интересующие Вас модели уже запрограммированы разработчиками (GPSS, Matlab, или что там ещё есть в этой области?). Если говорить о скорости выполнения одинаковых программ, то вполне возможно, что просто проапгрейдить компьютер выйдет для вас проще и дешевле, чем изучать новый язык.

Если всё же хочется освоить новый язык, я бы посоветовал C/С++, чтобы потом не переучиваться ещё раз. Благодаря разработанной базе кода, он проживёт ещё очень долго. По умолчанию всё в современных компьютерах и ОС заточено под С/С++. Но его изучение – дело никак не пары дней.

[identity profile] lvqcl.livejournal.com 2015-01-11 01:16 pm (UTC)(link)
VB6 умер лет 15 назад. VB.NET неудобен разве что для тех, кто привык к VB6 и не желает переучиваться.

[identity profile] vmenshov.livejournal.com 2015-01-11 01:16 pm (UTC)(link)
По факту - весь .Net это C#. То есть на каком бы из десятка предложенных языков под .Net не пиши, прадигма там именно сишарповская. Поэтому писать лучше сразу на нем.

Да, отмечу еще, по замороченности C# на порядок проще C++.

[identity profile] che-shr-cat.livejournal.com 2015-01-11 01:16 pm (UTC)(link)
Я довольно много занимался реализацией генетических алгоритмов (такой метод оптимизации из области эволюционных вычислений). Это не совсем то, чем занимаетесь вы, но вполне возможно что по сути будут похожие задачи. Исходя из своего опыта у меня сложилась связка: питон для прототипов и задач, в которых меня устраивает скорость, и С++ для тех мест, где надо сильно оптимизировать по скорости и питона не хватает.

В рамках текущего вопроса я за питон. Во-первых он простой для освоения и на нём можно писать быстро и понятно (экономия времени на освоение и разработку). Во-вторых, на нём можно писать довольно быстрые программы, есть много библиотек для эффективных вычислений (numpy/scipy/pandas/...). До С++ очередь может и не дойти. Скажем, весьма быстрый алгоритм BWT (который используется для картирования ридов на геном) я писал на питоне и до плюсов очередь в моём случае не дошла, мне хватило (главное ускорение было от правильной реализации алгоритма, а не от языка).

C++ хорош по части скорости, но тяжёл для освоения. Я бы забил на данном этапе. К C++ можно перейти от питона, когда будет выбран ресурс последнего. Java во многом похожа, но лично мне не нравится (вкусовщина) — код получается многословней, чем в C++, а скорость скорее меньше.

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

R, ну не знаю. Можно попробовать, но мне кажется, что питон для этого лучше и скорее всего быстрее. Хотя если нужно прям много статистики или готовых конкретных пакетов, то вариант. Если аргумент за R — это интерактивность, то со стороны питона есть IPython.

.NET и его языки (VB, C#, ...) может и хороши по-своему, но я бы не стал завязываться на эту платформу. С питоном проще, можно работать на любой системе без геморроя. В случае C# времени на освоение уйдёт вряд ли меньше, чем на Java. Про VB .NET ничего не знаю, но скорее всего главное его преимущество в данном месте — это лёгкость перехода, а во всех остальных местах (в первую очередь в скорости) будут провалы.

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

Perl в данном месте ничем не лучше питона, да ещё и фактически умирает. Ruby хорош, но в данной задаче опять же не лучше питона. Не исключаю, что интересным вариантом под определённый класс задач может быть Erlang (легко создавать независимые процессы-агенты), но вам вряд ли стоит в него ввязываться, одного его не хватит (ещё потенциально любопытный вариант — Go, но тоже не надо на данном этапе). Среди новых языков может и есть что-то хорошее, но лучше взять проверенное эволюцией :)

[identity profile] fnbpunk.livejournal.com 2015-01-11 01:17 pm (UTC)(link)
Однозначно, Python:

1) high level language: быстро и легко выучить
2) близок к бейсику
3) high performance: можно использовать low level libraries (java, C ++ и др.).
4) легко выучить и быстро работать в нем (быстрые результаты)
5) GPL - free software
6) Особенно хорошая библиотека: scipy (scientific python) и ее части (pandas: for table operations, numpy: matrix/array operations, matplotlib: graphic plotting http://www.scipy.org/ + там есть библиотеки специально для биологии).
Вы программируете в пайтоне, но, на самом деле, Fortran и С++, что сильно ускоряет расчеты.

Посредством interactive python notebooks многие исследователи делятся не только результатами и базами данных, но также кодами (experiment process), с помощью которых они достигли результатов: “ipython notebooks”: http://nbviewer.ipython.org/ - collaborative science/mutual aid :)

Прошу прощения за английский, писала со слов специалиста)

[identity profile] vmenshov.livejournal.com 2015-01-11 01:19 pm (UTC)(link)
Зато в Джаве по умолчанию этих инструментов ноль. Даже с датами и временем работать по человечески нельзя. Чего не захочешь, все надо искать и качать.

В СиШарпе по умолчанию есть все что нужно.

[identity profile] vmenshov.livejournal.com 2015-01-11 01:20 pm (UTC)(link)
Не надо мучатся с бейсиком под Net. Это си шарп, с синтаксисом от бейсика. Лучше сразу писать на сишарпе.

Page 4 of 27