Посоветуйте язык программирования
Jan. 11th, 2015 02:41 pmЯ всю жизнь программировал только на бейсике, на разных его версиях. Так получилось. Когда писал кандидатскую, набралось очень много таблиц с данными (это были морфологические признаки морских ежей), и я задолбался обсчитывать их на калькуляторе. Поэтому быстренько освоил бейсик (тогда персональные компьютеры IBM только начали появляться, и к ним прилагался язык GW-Basic). Освоил - и сразу почувствовал себя человеком. С тех пор не переучивался, сейчас пишу все свои программки на VBA в MS Access. То есть в программировании я дилетант, но опытный. Программированием пользуюсь сейчас для имитационного моделирования эволюционных процессов в популяциях. Подумываю об одной новой модели, но понимаю, что на VBA она будет работать невыносимо медленно. Насколько я понимаю, программа, написанная почти на любом другом языке, компилируемом, будет работать в разы быстрее. Вопрос такой: какой из этих языков мне будет быстрее и проще всего освоить? Времени, сил и желания преодолевать трудности и вникать в программистские проблемы - не имеется. Мне бы этот язык просто скачать (можно купить, если не слишком дорого), освоить за пару-тройку дней - и вперед. Т.е. главное, чтобы он был максимально простым в освоении для того, кто знает бейсик, без всяких интеллектуальных "понтов", но работал хотя бы раз в 10 быстрее.
no subject
Date: 2015-01-11 02:29 pm (UTC)Я находился в точно такой же ситуации и могу сказать, что Вы сильно отстали от времени. Итак:
1. Если говорить о VBA - речь идет не о "интерпретаторе", а о "гибриде", использующем прекомпиляцию в p-код при запуске программы и потом работающим с компилированным кодом в процессе исполнения.
Говорить что это медленнее, чем чистый исполняемый код - неверно. Если Вы посмотрите структуру скомпилированного файла, Вы увидите фактически ту же прекомпиляциюю, то есть какой-то простой код верхнего уровня служит как набор инструкций для вызова библиотек. Объектно-ориентированное и событийно-ориентированное программирование очень близко к интерпретации кода.
2. Собсстно язык давно "отцепили от компилятора" и скорость от языка программирования практически не зависит. Другое дело, что низкоуровневые языки позволяют выбросить "все лишнее" из библиотек, особенно обработчики исключений - и поднять скорость за счет этого. Но это не лучший способ улучшить свою программу.
Кроме того - инструментарий стал интеллектуальнее, он умеет переводить с одного языка на другой.
Лучше всего Вам переходить на платформу Visual Studio .NET, там используется единый компилятор C++, C# и VB.NET. Можно очень быстро, не думая об эффективности кода, получить работающую программу на VB.NET а если дойдет дело до превращения ее в многотиражный продукт - перекатать ее в си и оптимизировать уже в нем. И овцы целы и волки сыты. В смысле - и результат можно получить быстро - и потом довести код до идеала не спеша.
no subject
Date: 2015-01-11 02:31 pm (UTC)любопытно, про в 2 раза вы откуда взяли?
no subject
Date: 2015-01-11 02:31 pm (UTC)no subject
Date: 2015-01-11 02:31 pm (UTC)no subject
Date: 2015-01-11 02:32 pm (UTC)no subject
Date: 2015-01-11 02:34 pm (UTC)no subject
Date: 2015-01-11 02:36 pm (UTC)no subject
Date: 2015-01-11 02:39 pm (UTC)no subject
Date: 2015-01-11 02:40 pm (UTC)сперва выполнится префиксный инкремент и И станет равно (И+1)
потом к нему добавится И. в результате (2И + 1)
потом выполнится постфиксный инкремент и И станет равно (2И + 2)
потом из первоначального И вычтется (2И + 2). и И станет равно (-2И - 2)
ну да, сходу промахнулся.
++i = i++
В итоге И станет (И+2)
no subject
Date: 2015-01-11 02:41 pm (UTC)no subject
Date: 2015-01-11 02:41 pm (UTC)Просто перейти на VisualBasic.Net (Visual Studio 2008 или новее).
У среды выполнения .Net код программы при запуске компилируется в машинный и работает довольно быстро (во многих случаях сравнимо с С/С++)
no subject
Date: 2015-01-11 02:41 pm (UTC)no subject
Date: 2015-01-11 02:42 pm (UTC)Раз у вас программы написаны на бейсике, то в первую очередь нужно смотреть на VB.Net, язык почти такой же но при этом гораздо быстрее (он компилируется).
В самом общем случае можно порекомендовать C# или VB.Net (Visual Studio Express Edition) и Java (IDEA Community Edition).
Можно также посмотреть в сторону функциональных языков F# и Scala. Но я не знаю насколько они подойдут.
no subject
Date: 2015-01-11 02:42 pm (UTC)no subject
Date: 2015-01-11 02:42 pm (UTC)Лаконичность синтаксиса языка еще не означает, что язык простой.
У того же brainfuck весь синтаксис - 8 символов-команд, но много людей, которые пишут только на Basic, смогут написать на brainfuck хоть что-то осмысленное и оптимальное за пару дней (тот же "Hellow, word!\n")? А для профи освоить этот язык до сносного уровня - пол часа на пощупать. А в лоб плюсами, минусами и точками, он "Hellow, word!\n" за 10 минут слабает, из которых 8 уйдет на подсчет плюсов и минусов.
Тот же C при работе с массивами данных не может обойтись без указателей, а работа с ними для пришедшего из Basic "опытного дилетанта" - это не реально. Не стоит даже пытаться.
C - это язык для профессиональных программистов, и то только для решения узкого круга задач. Да, на нем можно написать что угодно. Ну так я и на ассемблере в теории могу написать что угодно (при наличии неограниченных ресурсов для написания этого чего угодно). Но только я не буду что угодно на нем писать.
no subject
Date: 2015-01-11 02:44 pm (UTC)no subject
Date: 2015-01-11 02:44 pm (UTC)no subject
Date: 2015-01-11 02:44 pm (UTC)Варез. Может не пойти по лицензионным соображениям.
no subject
Date: 2015-01-11 02:46 pm (UTC)Для математических расчетов к Python есть удобная библиотека SciPy/NumPy, математика в ней по скорости равноценна фортрану.
no subject
Date: 2015-01-11 02:47 pm (UTC)Тем более его никто не заставляет ими пользоваться.
no subject
Date: 2015-01-11 02:48 pm (UTC)no subject
Date: 2015-01-11 02:49 pm (UTC)Я думала - они вымерли.
Всем привет ! :-)
no subject
Date: 2015-01-11 02:51 pm (UTC)no subject
Date: 2015-01-11 02:51 pm (UTC)Зашибись! )) Интерпретатор палюбэ быстрее бгг)))
no subject
Date: 2015-01-11 02:56 pm (UTC)Если расставлять языки по их РЕАЛЬНОЙ сложности (за "сложность" принимать среднее количество грубых ошибок при программировании на одну страницу кода), то расклад получается совсем иным:
Python - простейший, затем классический Pascal, C, Ruby, Java, C++, PHP, Delphi - самый сложный.
Почему так. Потому что модель управления памятью в Delphi провоцирует вполне определенный класс ошибок, связанных с неправильным удалением объектов после их создания. Точно так же система типов в PHP провоцирует совершенно определенный класс ошибок, связанных с неверным приведением типов переменных. И то, и другое абсолютно сводит на нет кажущуюся "простоту" языка. Практически все начинающие и многие "опытные" разработчики пишут на этих языках неправильно.
Классический Pascal (вариант Никлауса Вирта) от этой проблемы свободен, но доступной среды для классического Pascal не существует. Есть только Delphi. Язык C довольно прост - его трудно понять в первые дни из-за указателей, но зато там кроме указателей вообще никаких сложностей нет. C++ сложнее намного, там опять вылезают ошибки в работе с памятью (применение приемов из C к С++ недопустимо и приводит к катастрофе). Поэтому Java стоит между ними - сложнее C, но проще C++.