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

Date: 2015-01-11 02:29 pm (UTC)
From: [identity profile] pavel-ladikov.livejournal.com
>Подумываю об одной новой модели, но понимаю, что на VBA она будет работать невыносимо медленно. Насколько я понимаю, программа, написанная почти на любом другом языке, компилируемом, будет работать в разы быстрее

Я находился в точно такой же ситуации и могу сказать, что Вы сильно отстали от времени. Итак:

1. Если говорить о VBA - речь идет не о "интерпретаторе", а о "гибриде", использующем прекомпиляцию в p-код при запуске программы и потом работающим с компилированным кодом в процессе исполнения.
Говорить что это медленнее, чем чистый исполняемый код - неверно. Если Вы посмотрите структуру скомпилированного файла, Вы увидите фактически ту же прекомпиляциюю, то есть какой-то простой код верхнего уровня служит как набор инструкций для вызова библиотек. Объектно-ориентированное и событийно-ориентированное программирование очень близко к интерпретации кода.

2. Собсстно язык давно "отцепили от компилятора" и скорость от языка программирования практически не зависит. Другое дело, что низкоуровневые языки позволяют выбросить "все лишнее" из библиотек, особенно обработчики исключений - и поднять скорость за счет этого. Но это не лучший способ улучшить свою программу.
Кроме того - инструментарий стал интеллектуальнее, он умеет переводить с одного языка на другой.
Лучше всего Вам переходить на платформу Visual Studio .NET, там используется единый компилятор C++, C# и VB.NET. Можно очень быстро, не думая об эффективности кода, получить работающую программу на VB.NET а если дойдет дело до превращения ее в многотиражный продукт - перекатать ее в си и оптимизировать уже в нем. И овцы целы и волки сыты. В смысле - и результат можно получить быстро - и потом довести код до идеала не спеша.

Date: 2015-01-11 02:31 pm (UTC)
From: [identity profile] kallbasser.livejournal.com
>потом идут Java и C# они хоть и медленее в два раза
любопытно, про в 2 раза вы откуда взяли?

Date: 2015-01-11 02:31 pm (UTC)
From: [identity profile] gryzchick.livejournal.com
Вы можете верить кому угодно, это не меняет очевидных фактов.

Date: 2015-01-11 02:31 pm (UTC)
From: [identity profile] amosk.livejournal.com
А факты-то где? ))

Date: 2015-01-11 02:32 pm (UTC)
From: [identity profile] guga50.livejournal.com
шарп и плюсы - два мира два шапиро.

Date: 2015-01-11 02:34 pm (UTC)
From: [identity profile] gryzchick.livejournal.com
В интерпретаторах.

Date: 2015-01-11 02:36 pm (UTC)
From: [identity profile] phlya.livejournal.com
Так речь про питон, а тут не то, вроде.

Date: 2015-01-11 02:39 pm (UTC)
From: [identity profile] lvqcl.livejournal.com
Ну, речь-то про Дельфи шла. Хотя Free Pascal, Lazarus - да, есть и бесплатны.

Date: 2015-01-11 02:40 pm (UTC)
From: [identity profile] guga50.livejournal.com
i-=++i+i++

сперва выполнится префиксный инкремент и И станет равно (И+1)
потом к нему добавится И. в результате (2И + 1)
потом выполнится постфиксный инкремент и И станет равно (2И + 2)
потом из первоначального И вычтется (2И + 2). и И станет равно (-2И - 2)
ну да, сходу промахнулся.

++i = i++
В итоге И станет (И+2)

Date: 2015-01-11 02:41 pm (UTC)
From: [identity profile] geniepro.livejournal.com
Раньше была бесплатная Turbo Delphi Explorer, но, похоже, заменили на триальную версию...

Date: 2015-01-11 02:41 pm (UTC)
From: [identity profile] amosk.livejournal.com
Плюсую сюда же.

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

Date: 2015-01-11 02:41 pm (UTC)
From: [identity profile] lvqcl.livejournal.com
С тех пор 20 лет прошло. И процессоры, и компиляторы сильно поменялись.

Date: 2015-01-11 02:42 pm (UTC)
From: [identity profile] http://users.livejournal.com/__observer/
Чтобы дать рекомендацию нужно приблизительно понять что будут делать написанные вами программы. Какие алгоритмы и структуры данных будут использоваться. При выборе языка, а точнее системы программирования, нужно смотреть не только на сам язык но и на доступные библиотеки. Они могут сильно упростить процесс написания программ.

Раз у вас программы написаны на бейсике, то в первую очередь нужно смотреть на VB.Net, язык почти такой же но при этом гораздо быстрее (он компилируется).

В самом общем случае можно порекомендовать C# или VB.Net (Visual Studio Express Edition) и Java (IDEA Community Edition).
Можно также посмотреть в сторону функциональных языков F# и Scala. Но я не знаю насколько они подойдут.
Edited Date: 2015-01-11 02:43 pm (UTC)

Date: 2015-01-11 02:42 pm (UTC)
From: [identity profile] hate-all.livejournal.com
и еще SQL добавить для быстрых обсчетов массивов данных. И вообще красота.

Date: 2015-01-11 02:42 pm (UTC)
From: [identity profile] mifromru.livejournal.com
С простой язык не далее "Hellow, word!\n" (и то, если сборкой не приходится заниматься, а это сделает IDE).
Лаконичность синтаксиса языка еще не означает, что язык простой.
У того же brainfuck весь синтаксис - 8 символов-команд, но много людей, которые пишут только на Basic, смогут написать на brainfuck хоть что-то осмысленное и оптимальное за пару дней (тот же "Hellow, word!\n")? А для профи освоить этот язык до сносного уровня - пол часа на пощупать. А в лоб плюсами, минусами и точками, он "Hellow, word!\n" за 10 минут слабает, из которых 8 уйдет на подсчет плюсов и минусов.
Тот же C при работе с массивами данных не может обойтись без указателей, а работа с ними для пришедшего из Basic "опытного дилетанта" - это не реально. Не стоит даже пытаться.
C - это язык для профессиональных программистов, и то только для решения узкого круга задач. Да, на нем можно написать что угодно. Ну так я и на ассемблере в теории могу написать что угодно (при наличии неограниченных ресурсов для написания этого чего угодно). Но только я не буду что угодно на нем писать.

Date: 2015-01-11 02:44 pm (UTC)
From: [identity profile] ateregulov.livejournal.com
Сейчас самый удобный из продвинутых - это C#, если какой-то кусок кода надо ускорить, то используется unsafe mode и скорость будет не хуже чем у C++

Date: 2015-01-11 02:44 pm (UTC)
From: [identity profile] amosk.livejournal.com
Кстати во многих случах код на бейсике наверно можно ускорить, если применять типизированные пременные для чисел, а не тип вариант который по умолчанию.

Date: 2015-01-11 02:44 pm (UTC)
From: [identity profile] lvqcl.livejournal.com
>Чем не вариант?

Варез. Может не пойти по лицензионным соображениям.

Date: 2015-01-11 02:46 pm (UTC)
From: [identity profile] agalakhov.livejournal.com
Python. Идеально подходит на роль "нового бейсика". Язык достаточно мощный, чтобы на нем можно было написать абсолютно что угодно (от сайта до операционной системы), но при этом прост.

Для математических расчетов к Python есть удобная библиотека SciPy/NumPy, математика в ней по скорости равноценна фортрану.

Date: 2015-01-11 02:47 pm (UTC)
From: [identity profile] guga50.livejournal.com
и шош там сложного в указателях? :))) понять что у переменной адрес в памяти есть? это да! Это мегасложно!!
Тем более его никто не заставляет ими пользоваться.
Edited Date: 2015-01-11 02:48 pm (UTC)

Date: 2015-01-11 02:48 pm (UTC)
From: [identity profile] ateregulov.livejournal.com
Basic и все его производные собратья уже давно протухли

Date: 2015-01-11 02:49 pm (UTC)
From: [identity profile] zlata-gl.livejournal.com
Надо же, сколько дельфушников !
Я думала - они вымерли.
Всем привет ! :-)

Date: 2015-01-11 02:51 pm (UTC)
From: [identity profile] burundutsky.livejournal.com
Подлый VB портит мозг программиста. Лучше помучиться чуть, и выйти на чудесную дорогу C/C++. Лучше - плюсы, меньше надо будет в разные тонкости вникать.

Date: 2015-01-11 02:51 pm (UTC)
From: [identity profile] guga50.livejournal.com
> Компилируемость языка не обеспечивает скорость
Зашибись! )) Интерпретатор палюбэ быстрее бгг)))

Date: 2015-01-11 02:56 pm (UTC)
From: [identity profile] agalakhov.livejournal.com
Лучше не надо Pascal.

Если расставлять языки по их РЕАЛЬНОЙ сложности (за "сложность" принимать среднее количество грубых ошибок при программировании на одну страницу кода), то расклад получается совсем иным:

Python - простейший, затем классический Pascal, C, Ruby, Java, C++, PHP, Delphi - самый сложный.

Почему так. Потому что модель управления памятью в Delphi провоцирует вполне определенный класс ошибок, связанных с неправильным удалением объектов после их создания. Точно так же система типов в PHP провоцирует совершенно определенный класс ошибок, связанных с неверным приведением типов переменных. И то, и другое абсолютно сводит на нет кажущуюся "простоту" языка. Практически все начинающие и многие "опытные" разработчики пишут на этих языках неправильно.

Классический Pascal (вариант Никлауса Вирта) от этой проблемы свободен, но доступной среды для классического Pascal не существует. Есть только Delphi. Язык C довольно прост - его трудно понять в первые дни из-за указателей, но зато там кроме указателей вообще никаких сложностей нет. C++ сложнее намного, там опять вылезают ошибки в работе с памятью (применение приемов из C к С++ недопустимо и приводит к катастрофе). Поэтому Java стоит между ними - сложнее C, но проще C++.

January 2019

S M T W T F S
  12345
6789101112
1314 1516171819
20212223242526
2728293031  

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 8th, 2026 03:49 pm
Powered by Dreamwidth Studios