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

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

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

[identity profile] stalker-sid.livejournal.com 2015-01-11 03:22 pm (UTC)(link)
бейсик охуенен
а вообще не имеет значения
если есть определенный склад мышления, то любой язык - раз плюнуть

[identity profile] photo pro (from livejournal.com) 2015-01-11 03:27 pm (UTC)(link)
Я бы посоветовал бы перл или питон.
А кстати на каком основании и почему вы утверждаете что нужно обязательно использовать некий сверхбыстрый язык программирование.
Может не в языке дело а в неоптимальном обращении с данными и можно в сотни раз ускорить работу совсем иным спосбом?

[identity profile] orel41.livejournal.com 2015-01-11 03:27 pm (UTC)(link)
Если у Вас случайно окажется matlab )) то это самое оно. Язык простой, научных библиотек много , в том числе и реализаций "генетических" алгоритмов.

[identity profile] 00000019.livejournal.com 2015-01-11 03:31 pm (UTC)(link)
Если чистая математика, и 2-3 дня на переход, то фортран. Математические библиотеки на все случаи жизни еще 40 лет назад написали. Поскольку используется исключительно для математических расчетов есть очень разогнанные версии, есть версии оптимизированные под многопроцессорные системы. Хотя не бесплатно конечно.
Если не нравится, то С++ . По скорости соизмерим с Java. Cреда отладки и всякие визуальные библиотеки от MS вам будет все-таки привычнее чем Java и др.

Если хотите быть в тренде - то Phyton. Но по производительности он на порядок ниже чем Fortran, С++, Java.

[identity profile] anshdo.livejournal.com 2015-01-11 03:32 pm (UTC)(link)
VB.net
Осваивать вам будет легко, потому, что это ведь тоже Бейсик ;-)
А по быстродействию благодаря JIT-компиляции почти не уступает языкам, компилируемым в нативный код.

[identity profile] petrazmus.livejournal.com 2015-01-11 03:42 pm (UTC)(link)
Самый логичный и понятный Паскаль и вероятно то что из него получилось -Delphi. Паскаль и делался для понимания сути языка программирования. Самый перспективный и могучий конечно С и его семейство. Но судя по Вашему тексту Вам скорее надо алгоритмы совершенствовать.

[identity profile] provocateur-b.livejournal.com 2015-01-11 03:43 pm (UTC)(link)
В современных браузерах быстро работает javascript, но придется еще изучать немного html и css. зато легкий доступ к визуализации через canvas и просто миллион разных библиотек для графиков.

[identity profile] ruinternet.livejournal.com 2015-01-11 03:46 pm (UTC)(link)
Чудесные комменты. Все поделились своим любимым языком программирования, чо :) Даже до 1С дошли.
Вопрос автору: что конкретно тормозит в аксессе? Отсюда и пляшем. Может у Вас половина данных на формах лежит. А может - таблицы по 1Е+98798 строк. А может, просто индексы не выставлены. А может, Вы сам придумывает то, что уже в готовых библиотеках есть, и может - есть и для того же вба, и может - придумываете не сильно оптимально.
Кстати, опять же вопрос к тому, что такое "невыносимо медленно" + интересно что с железом. Возможно, вместо того, чтобы убить кучу времени на пробы и ошибки с непривычным всем (от интерфейса до синтаксиса), имеет смысл разогнать комп и плюнуть на Великую Оптимизацию Кода. А то может у Вас там тормоза в основном от обращения к диску и +10% скорости от компиляции, допустим, Вы может и проклянете, убив пару месяцев на привыкание к тому, что там Вам сейчас насоветуют.

[identity profile] stealth-nsk.livejournal.com 2015-01-11 03:46 pm (UTC)(link)
Сразу скажу, все комментарии не читал, скорее всего повторяюсь :)

Сам язык не обязан быть изначально компилируемым. Многие нтерпретаторы компилируют и оптимизируют многократно выполняемый код (это называется Just-in-Time compilation, JIT).

Один из самых простых в изучении языков - Python и к нему есть интерпретатор с JIT-компиляцией, PyPy - http://pypy.org/ но он оптимизирован не так хорошо, как другие решения.

Мне кажется оптимальное решение - это использование JavaScript в браузере Chrome. Там используется V8 - один из лучших интерпретаторов с JIT-компиляцией, при этом JavaScript - достаточно простой язык и по нему есть много учебников.

[identity profile] juncus.livejournal.com 2015-01-11 03:55 pm (UTC)(link)
Освоение за пару дней и работать раз в 10 быстрее - это старый шестой бейсик или другие компилируемые бейсики от менее известных фирм. Вам тут уже бесплатный бейсик советовали. Если чуток помедленнее и поновее, то VB.NET. Всякие руби-питоны за пару-тройку дней не освоите и в скорости не добавите. Если нужна именно производительность, то сразу смотреть в сторону С (возможно с плюсами), но там не за пару дней.

[identity profile] anton-yu-b.livejournal.com 2015-01-11 03:56 pm (UTC)(link)
Простую во входе, но достаточно мощную систему алгебраических вычислений. Типа Maplesoft. Все в комплекте, что советовали про Python. Но сшито более бесшовно, всегда можно задачу на ходу одним движением перевести к смежной, что угодно провизуализировать и протрассировать. Да, интерпретируема. Но это мне помешало один раз на совсем уж ненормальных размерах для своей природной области данных. И то - не стал отказываться: из нее есть шлюз в матлаб, в котором составлением лишь одной пользовательской ф-ии посчиталось все нужное.

P.S. важный момент - интерактивная на всех уровнях, бесподобно структурированнная справка. Без знания PC и английского, мне хватило этой справки за несколько ночных часов сделать курсовую с первого включения программы ночью у товарища - не было тогда у нас сильно PC. Сейчас, конечно, программа стала мощнее, но так, что если лишь искать этой мощности - базовая простота вроде вполне жива.

Думаю, что за полу/денек - другой занятий Вы бы сделали свой выбор.
Edited 2015-01-11 16:07 (UTC)

[identity profile] nlubchenko.livejournal.com 2015-01-11 04:09 pm (UTC)(link)
Попытался прочитать комментарии. Где-то в конце первой или начале второй страницы верно писали, что раз у вас моделирование популяций, то нужно, наверное, параллелить. Дальше, так как задачи относительно простые, то, наверное, надо смотреть или в сторону видеокарт, или в сторону OpenMP. Видеокарты осваивать будет долго и ненужно, поэтому их отбрасываем.
Поэтому остается OpenMP, и в качестве языка или С, или фортран.
ext_605364: geg MOPO4 (geg_MOPO4)

[identity profile] gegmopo4.livejournal.com 2015-01-11 04:20 pm (UTC)(link)
А что за модель, можно узнать?

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

Разве что… Есть такой молодой язык программирования Julia (http://julialang.org/). Порог вхождения и уровень языка сравнимы с Python, сообщество и количество библиотек значительно меньше, но язык быстрый, поэтому выигрыш получите сразу. Если найдётся свободный денёк — попробуйте.

[identity profile] kotomord82.livejournal.com 2015-01-11 04:26 pm (UTC)(link)
Невыносимо - это насколько невыносимо? (Какие именно "разы" Вам нужны?)
Есть вариант "писать на чем привыкли, а запустить на мощной машине где-нибудь в облаках" - выигрыш в скорости за счет железа.

[identity profile] Сергей Перовский (from livejournal.com) 2015-01-11 04:36 pm (UTC)(link)
За свою жизнь я освоил языков 20. И в 2-3 дня не верю.
Дело в том, что (кролики это не только ценный мех) язык это не только синтаксис, но и словарь.
Запомнить принципы и конструкции языка можно быстро. А найти в библиотеках нужные процедуры и научиться ими пользоваться - дело не быстрое. Больше всего ушло у меня времени на понимания того, как искать нужные функции в безбрежных библиотека С#.
Имитационное моделирование - искусство специфическое. Оно само породило несколько языков программирования.
Уже упоминавшийся в комментариях GPSS был первой попыткой. Потом выяснилось, что в нем удается моделировать только системы массового обслуживания, для которых существуют аналитические решения. Поддержка авторами была прекращена, но 30 лет спустя кто-то реализовал GPSS для персоналок. Печально, но им пользуются.
Первым серьезным успехом была SIMULA-67. Видимо, впервые был реализован объектный подход. На 20 лет раньше, чем он получил широкое распространение. Потому, что остальные задачи программирования дошли до очередного порога сложности позже, а имитационное моделирование по сути имеет смысл только для сложных систем.
Отсюда вывод: для того, чтобы в разумные сроки реализовать имитационную модель, необходимо понять суть ООП и освоить язык, поддерживающий эту парадигму. Я реализовывал механизм событийного имитационного моделирования на Дельфи. Сегодня, пожалуй, выбрал бы Яву. Но от мышления в последовательности команд придется отказаться в любом случае.
И еще. Может быть скорости не хватает из-за неправильного подхода к моделированию, а не из-за языка? Довольно частая ошибка - использование тактовой модели вместо событийной. При наличии большого количества процессов с принципиально разными характерными временами, "пустой" расход вычислительных ресурсов огромен.

[identity profile] guga50.livejournal.com 2015-01-11 04:42 pm (UTC)(link)
ALGOL короче.
НУИЧТО??? Зато вы будете такой один!!

[identity profile] dmut78.livejournal.com 2015-01-11 04:45 pm (UTC)(link)
Смена языка позволит вам ускориться максимум в 2 раза.
что бы ускориться в 10 раз - нужно пересматривать организацию входных данных и алгоритмы.

насчет языка с низким порогом вхождения я поддержу уже прозвучавшие советы - python, C#

вы напиши постановку задачи и покажите ваше решение - я уверен, вам сразу подскажут как сделать быстрее даже на том же бейсике.

[identity profile] kaban-v-woke.livejournal.com 2015-01-11 04:58 pm (UTC)(link)
Matlab + Simulink
http://matlab.ru/products/simulink
Edited 2015-01-11 17:03 (UTC)

[identity profile] filosof-a.livejournal.com 2015-01-11 04:58 pm (UTC)(link)
Я посоветовал бы компилятор PowerBasic https://ru.wikipedia.org/wiki/PowerBASIC , если еще никто не предложил.
Не нужно переучиваться, все как в обычном Basic. Работает столь же быстро как паскаль или СИ. Проверялось на тестовых программах. Работает под DOS, а потому любая винда, как минимум до 7, ему не мешают и ничего не нужно инсталлировать.
Мой знакомый еще с начала 90-х как сел на этот язык тоже с моделированием и не хочет переучиваться. Его все устраивает.




Edited 2015-01-11 16:59 (UTC)

[identity profile] lordn.livejournal.com 2015-01-11 05:15 pm (UTC)(link)
матлаб или маткад

[identity profile] kaban-v-woke.livejournal.com 2015-01-11 05:29 pm (UTC)(link)
Также можете попробовать Delphi+ADO
Кстати, а вы знаете sql, если работаете с таблицами в access? Возможно причина ваших тормозов - работа с таблицами без скл.

[identity profile] orastosk.livejournal.com 2015-01-11 05:36 pm (UTC)(link)
Присоединяюсь ко всем, кто за python.
Сам программирую в основном на Java/SQL/Javascript, раньше писал еще на C/C++. Иногда перехожу на Python, когда за полдня-день надо решить отдельно стоящую задачу и отдать проект другим людям. Идет легко, даже после долгого перерыва :)

[identity profile] combinator30.livejournal.com 2015-01-11 05:59 pm (UTC)(link)
Если реально важна скорость вычислений, то для имитационного моделирования я бы посоветовал С/С++. В своё время, зная до этого только Бэйсик, я освоил азы, вполне достаточные для написания программ имитационного моделирования средней сложности где-то за неделю. Потом эту библиотеку можно будет вызывать хоть из Бэйсика, хоть из Питона, хоть из Джавы.

[identity profile] yelenay.livejournal.com 2015-01-11 06:53 pm (UTC)(link)
Если данные держать в sql server express, то и access будет быстрее работать, особенно если обработку данных писать внутри sql server в stored procedures. Также хорош vb.net, он прост и у него достаточно много готовых библиотек с объектами, как от Microsoft, так и от независимых фирм.

[identity profile] ilfn.livejournal.com 2015-01-11 07:02 pm (UTC)(link)
Лабвью. LabVIEW от национальных инструментов. Графический язык. Для массивов самое то - писать ничего не надо.

Page 4 of 6