macroevolution (
macroevolution) wrote2015-01-11 02:41 pm
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Посоветуйте язык программирования
Я всю жизнь программировал только на бейсике, на разных его версиях. Так получилось. Когда писал кандидатскую, набралось очень много таблиц с данными (это были морфологические признаки морских ежей), и я задолбался обсчитывать их на калькуляторе. Поэтому быстренько освоил бейсик (тогда персональные компьютеры IBM только начали появляться, и к ним прилагался язык GW-Basic). Освоил - и сразу почувствовал себя человеком. С тех пор не переучивался, сейчас пишу все свои программки на VBA в MS Access. То есть в программировании я дилетант, но опытный. Программированием пользуюсь сейчас для имитационного моделирования эволюционных процессов в популяциях. Подумываю об одной новой модели, но понимаю, что на VBA она будет работать невыносимо медленно. Насколько я понимаю, программа, написанная почти на любом другом языке, компилируемом, будет работать в разы быстрее. Вопрос такой: какой из этих языков мне будет быстрее и проще всего освоить? Времени, сил и желания преодолевать трудности и вникать в программистские проблемы - не имеется. Мне бы этот язык просто скачать (можно купить, если не слишком дорого), освоить за пару-тройку дней - и вперед. Т.е. главное, чтобы он был максимально простым в освоении для того, кто знает бейсик, без всяких интеллектуальных "понтов", но работал хотя бы раз в 10 быстрее.
no subject
Я находился в точно такой же ситуации и могу сказать, что Вы сильно отстали от времени. Итак:
1. Если говорить о VBA - речь идет не о "интерпретаторе", а о "гибриде", использующем прекомпиляцию в p-код при запуске программы и потом работающим с компилированным кодом в процессе исполнения.
Говорить что это медленнее, чем чистый исполняемый код - неверно. Если Вы посмотрите структуру скомпилированного файла, Вы увидите фактически ту же прекомпиляциюю, то есть какой-то простой код верхнего уровня служит как набор инструкций для вызова библиотек. Объектно-ориентированное и событийно-ориентированное программирование очень близко к интерпретации кода.
2. Собсстно язык давно "отцепили от компилятора" и скорость от языка программирования практически не зависит. Другое дело, что низкоуровневые языки позволяют выбросить "все лишнее" из библиотек, особенно обработчики исключений - и поднять скорость за счет этого. Но это не лучший способ улучшить свою программу.
Кроме того - инструментарий стал интеллектуальнее, он умеет переводить с одного языка на другой.
Лучше всего Вам переходить на платформу Visual Studio .NET, там используется единый компилятор C++, C# и VB.NET. Можно очень быстро, не думая об эффективности кода, получить работающую программу на VB.NET а если дойдет дело до превращения ее в многотиражный продукт - перекатать ее в си и оптимизировать уже в нем. И овцы целы и волки сыты. В смысле - и результат можно получить быстро - и потом довести код до идеала не спеша.
no subject
Просто перейти на VisualBasic.Net (Visual Studio 2008 или новее).
У среды выполнения .Net код программы при запуске компилируется в машинный и работает довольно быстро (во многих случаях сравнимо с С/С++)
no subject
... и потом интерпретирующим P-code в процессе исполнения.
>простой код верхнего уровня служит как набор инструкций для вызова библиотек
не факт, что для "имитационного моделирования эволюционных процессов" используются какие-то библиотеки.
no subject
no subject
no subject
no subject
no subject
кстати, это у МС уже давно есть: http://msdn.microsoft.com/en-us/library/6t9t5wcf.aspx
no subject
no subject
no subject
no subject
no subject
Не путайте, есть С++, который компилится в среду .NET (aka Managed C++), который суть синтаксическая обвязка вокруг .net (как собсно и остальные языки в него приходящее) со всеми его плюсами и минусами.
А есть полноценный, настоящий, труёвый и православный С++, компилящийся напрямую в бинарник. Скорость выполнения, мощность, гибкость и верёвка достаточной длины, чтобы выстрелить себе в ногу именно в нём.
no subject
Есть еще один из факторов быстродействия, о котором многие забывают.
Если у вас в системе сидит фреймворк, его не нужно подгружать при запуске МАЛЕНЬКОГО файлика собсстно проги. А вот если у вас все необходимое для жизни сидит в откомпилированном ехешнике - его размеры могут ужасать. Так же - как и время его загрузки с диска.
Другими словами - если вы ваяете вещь в себе, пусть даже сложную - чистый бинарник это преимущество. А если прога по жизни должна использовать чуть ли не половину ресурсов систему, ввод-вывод, графику, диски и сеть - и все это обязано быть совместимым на любом железе и любой версии софта - вот тогда пардон.