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

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

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

[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] amosk.livejournal.com 2015-01-11 02:41 pm (UTC)(link)
Плюсую сюда же.

Просто перейти на VisualBasic.Net (Visual Studio 2008 или новее).
У среды выполнения .Net код программы при запуске компилируется в машинный и работает довольно быстро (во многих случаях сравнимо с С/С++)

[identity profile] lvqcl.livejournal.com 2015-01-11 02:57 pm (UTC)(link)
>Если говорить о VBA - речь идет не о "интерпретаторе", а о "гибриде", использующем прекомпиляцию в p-код при запуске программы и потом работающим с компилированным кодом в процессе исполнения.

... и потом интерпретирующим P-code в процессе исполнения.

>простой код верхнего уровня служит как набор инструкций для вызова библиотек

не факт, что для "имитационного моделирования эволюционных процессов" используются какие-то библиотеки.
Edited 2015-01-11 14:57 (UTC)

[identity profile] natvalbr.livejournal.com 2015-01-11 04:15 pm (UTC)(link)
Майкрософт не стоит на месте: http://msdn.microsoft.com/en-us/vstudio/dotnetnative.aspx

[identity profile] lvqcl.livejournal.com 2015-01-11 06:30 pm (UTC)(link)
".NET Native is currently focused on Windows Store apps." ну-ну.

[identity profile] natvalbr.livejournal.com 2015-01-11 07:16 pm (UTC)(link)
таки и в Android тоже самое делают. пытаются. уже в версии 4.4.4 кажись есть, но по умолчанию, отключили.

[identity profile] lvqcl.livejournal.com 2015-01-11 07:20 pm (UTC)(link)
Так хозяин блога не для мобил пишет.

[identity profile] natvalbr.livejournal.com 2015-01-11 07:23 pm (UTC)(link)
думаете, Майкрософт не сделает это для приложений на настольные ОС?

кстати, это у МС уже давно есть: http://msdn.microsoft.com/en-us/library/6t9t5wcf.aspx

[identity profile] natvalbr.livejournal.com 2015-01-11 04:15 pm (UTC)(link)
http://macroevolution.livejournal.com/186606.html?thread=12744174#t12744174

[identity profile] natvalbr.livejournal.com 2015-01-11 04:16 pm (UTC)(link)
у Майкрософта скоро будет нативный дотНЕТ: http://msdn.microsoft.com/en-us/vstudio/dotnetnative.aspx

[identity profile] psilogic.livejournal.com 2015-01-11 08:09 pm (UTC)(link)
и века не прошло =)

[identity profile] natvalbr.livejournal.com 2015-01-11 10:24 pm (UTC)(link)
вообще-то начиная со 2й версии была возможность при установки скомпилировать дотНЕТ в нативный код
arech: (Default)

[personal profile] arech 2015-01-12 11:24 am (UTC)(link)
> Лучше всего Вам переходить на платформу Visual Studio .NET, там используется единый компилятор C++....

Не путайте, есть С++, который компилится в среду .NET (aka Managed C++), который суть синтаксическая обвязка вокруг .net (как собсно и остальные языки в него приходящее) со всеми его плюсами и минусами.

А есть полноценный, настоящий, труёвый и православный С++, компилящийся напрямую в бинарник. Скорость выполнения, мощность, гибкость и верёвка достаточной длины, чтобы выстрелить себе в ногу именно в нём.

[identity profile] pavel-ladikov.livejournal.com 2015-01-12 04:39 pm (UTC)(link)
А я и не путаю. Это тож самое что путать винду с досом.
Есть еще один из факторов быстродействия, о котором многие забывают.
Если у вас в системе сидит фреймворк, его не нужно подгружать при запуске МАЛЕНЬКОГО файлика собсстно проги. А вот если у вас все необходимое для жизни сидит в откомпилированном ехешнике - его размеры могут ужасать. Так же - как и время его загрузки с диска.
Другими словами - если вы ваяете вещь в себе, пусть даже сложную - чистый бинарник это преимущество. А если прога по жизни должна использовать чуть ли не половину ресурсов систему, ввод-вывод, графику, диски и сеть - и все это обязано быть совместимым на любом железе и любой версии софта - вот тогда пардон.