LINUX.ORG.RU

На чем сейчас модно писать научные программы?


0

3

Конечно большинство сегодня по инерции еще пишут на Фортране или Си, но ведь задачи на сегодняшний день изменились, требования уже другие. Да и логика гораздо сложнее стала.
Расчеты требуют больше удобного написания программы, чем скорость счета (не продакшен же), но скорость тоже важна.

Вот думаю, что бы можно было посоветовать молодому поколению (т.е. аспирантоте), если учить ЯП все равно какой-то придется.

★★★★★

Это не мне. А новичкам, которые почти не умеют ни один ЯП.

А задача в основном связана с работой матриц, с функциями и их обвязки сложной логикой.

Zodd ★★★★★ ()

в моё время (лет 5-10 назад) только си и плюсеги котировались

anonymous ()
Ответ на: комментарий от tn1

haskell, python etc

Есть ли какие-нибудь истории успеха?

Zodd ★★★★★ ()
Ответ на: комментарий от Zodd

Haskell же.

Он действительно простой, особенно для математиков.

tensai_cirno ★★★★★ ()

Что ТС думает о «с++» + «Специфичные библиотеки»?

pathfinder ★★★ ()
Ответ на: комментарий от Zodd

> Есть ли какие-нибудь истории успеха?
Только с bash.(хотел переписать dfm на perl, но профита не обнаружил)

tn1 ()

> На чем сейчас модно писать научные программы?

Common Lisp до сих пор моден в научной среде

Конечно большинство сегодня по инерции еще пишут на Фортране или Си, но ведь задачи на сегодняшний день изменились, требования уже другие. Да и логика гораздо сложнее стала.

для сложной логики - однозначно Common Lisp

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

большинство современных реализаций Common Lisp генерируют скорострельный машинный код

Вот думаю, что бы можно было посоветовать молодому поколению (т.е. аспирантоте), если учить ЯП все равно какой-то придется.

Common Lisp же

anonymous ()
Ответ на: комментарий от Zodd

Сейчас каждые девять из десяти бумаг по CS сопровождаются кодом на хачкеле.

tensai_cirno ★★★★★ ()
Ответ на: комментарий от fghj

matlab/octave?

Да можно посмотреть в эту сторону.

Zodd ★★★★★ ()

Связка С++ (вычислительное ядро) и питон (обвязка ядра и интерфейс пользователя). Мы и сами так пишем и студентов так учим;-)

AIv ★★★★★ ()
Ответ на: комментарий от pathfinder

Что ТС думает о «с++» + «Специфичные библиотеки»?

Я за, только он сложноват немного, ведь тот кто будет этим занимать только на бейсике работал.

Zodd ★★★★★ ()
Ответ на: комментарий от Zodd

Я за, только он сложноват немного, ведь тот кто будет этим занимать только на бейсике работал.

Тогда не стоит сильно заморачиваться со скоростью. Может действительно питон, как сказали выше?

pathfinder ★★★ ()
Ответ на: комментарий от pathfinder

Вообще трудно рассуждать обобщенно, без конкретики.

pathfinder ★★★ ()

matlab, maple
правда, проприетарщина =)

zhuravlik ★★★★ ()
Ответ на: комментарий от pathfinder

В итоге есть три варианта:

c++
matlab и т.п.
python

Это уже придется решать после прощупывания аспиранта

Zodd ★★★★★ ()

Если не надо выжимать из процессора всё до последней микросекунды, то Python + NumPy. Если надо - прототип на NumPy, потом на Си/Си++ или чем-то модном вроде numexpr

tailgunner ★★★★★ ()
Ответ на: комментарий от zhuravlik

Математику вольфрамову забыли! И этот... ексель, он тоже умеет формулки крутить и даже с размерностью;-)

На самом деле «научные программы» это очень размазано. В какой области программы то?

AIv ★★★★★ ()

на python, но есть такие кто пишут на ruby.

fang90 ★★★★★ ()

зависит от того на сколько хочется заморачиваться. Если хочется, python + си. Питон в любом случае знать стоит, есть к нему много сопутствующих модулей на си.

mashina ★★★★★ ()
Ответ на: комментарий от Zodd

А задача в основном связана с работой матриц, с функциями и их обвязки сложной логикой.

python + numpy

shty ★★★★★ ()
Ответ на: комментарий от anonymous

в моё время (лет 5-10 назад) только си и плюсеги котировались

это из какой же ты параллельной вселенной, всегда фортран был

shty ★★★★★ ()
Ответ на: комментарий от AIv

Математику вольфрамову забыли

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

Механика твердых тел.

Zodd ★★★★★ ()
Ответ на: комментарий от anonymous

> На чем сейчас модно писать научные программы?

Common Lisp до сих пор моден в научной среде

4.2, или уточняй в какой среде

shty ★★★★★ ()
Ответ на: комментарий от AIv

да, в экселе мы лабы по статистике делали, помнится. =) а математикой я так не пользовался, увы, ни разу, без нее всего хватало.

zhuravlik ★★★★ ()

Лучше все же писать на C/C++, т.к. зачастую важна не только скорость разработки, но и скорость исполнения программ.

trex6 ★★★★★ ()
Ответ на: комментарий от tensai_cirno

каждые девять из десяти бумаг по CS сопровождаются кодом на хачкеле.

O_O, гонишь. В бумагах вообще код редко попадается. Или псевдокод с описанием алгоритма или, максимум, в technical report загоняется. Да и кому нужны эти исходники в таком виде? Если очень нужно то создал аккаунт на github а в пейпре ссылку засунул и готово.

true_admin ★★★★★ ()
Ответ на: комментарий от Zodd

Деформируемых?

Тут есть много решений. Если речь идет об аналитике, то туча всяких CAS - maxima, матлаб, маткад и тд.

Если важна таки производительность и в перспективе хочется писать что то монструозное перелопачивающее большие объемы данных, то как я выше писал связка С++ и питон.

Если просто что то оценивать и производительность не очень важна, то как писал tailgunner питон + нампай и пр.

AIv ★★★★★ ()
Ответ на: комментарий от shty

> 4.2, или уточняй в какой среде

че сразу 4.2 - то? если хорошенько поискать, то гугл тренд покажет.

Вот например, только малая часть того, что сразу находится:

http://www.lispworks.com/success-stories/

anonymous ()
Ответ на: комментарий от AIv

маткад это совсем не CAD, matlab вообще не ПО для людей

mashina ★★★★★ ()

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

Расчёты требуют в первую очередь эффективного алгоритма. При этом затрады времени на кодинг этого алгоритма, пусть даже на Си, ничтожны.

melkor217 ★★★★★ ()
Ответ на: комментарий от anonymous

> 4.2, или уточняй в какой среде

че сразу 4.2 - то? если хорошенько поискать, то гугл тренд покажет.

ты сказал:

Common Lisp до сих пор моден в научной среде

это, в общем случае, неверно, ибо, я совершенно точно знаю, что, например, астрофизики в своей научной среде нифига не используют CL

shty ★★★★★ ()
Ответ на: комментарий от zhuravlik

Сидим мы как то у заказчика, ждем пока он освободится что бы поговорить о своем. А занят он с дядькой, который соловьем расхваливает последнюю математику - дескать ЯП нового поколения, и так он может и эдак и лучше его нету, а С++ полный ацтой, и все переходите значит на математику. Правда она у него (дядьки) ворованная, но если заказчик к его наработкам интерес проявит то дядька себе тут же купит лицензионную версию...

Нам так забавно было (с учетом того что мы со своим ацтойным С++ на персоналках считаем то за что мало кто на кластере берется).

AIv ★★★★★ ()
Ответ на: комментарий от shty

> это, в общем случае, неверно, ибо, я совершенно точно знаю, что, например, астрофизики в своей научной среде нифига не используют CL

Если твои «астрофизики» из ПТУ используют что-то другое, это не значит, что в мире, остальные _астрофизики_ пользуются тем же.

anonymous ()
Ответ на: комментарий от melkor217

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

Расчёты требуют в первую очередь эффективного алгоритма. При этом затрады времени на кодинг этого алгоритма, пусть даже на Си, ничтожны

4.2. Как правило чем алгоритм эффективней тем сложней его кодить. Напр наши алгоритмы самые эффективные и чудовищно сложно реализуются. Иначе все б ими уже давно пользовались...

AIv ★★★★★ ()
Ответ на: комментарий от melkor217

Расчёты требуют в первую очередь эффективного алгоритма. При этом затрады времени на кодинг этого алгоритма, пусть даже на Си, ничтожны.

Вот только подбирать/разрабатывать этот эффектный алгоритм на Си будешь очень долго.

Zodd ★★★★★ ()
Ответ на: комментарий от anonymous

> Если твои «астрофизики» из ПТУ используют что-то другое, это не значит, что в мире, остальные _астрофизики_ пользуются тем же.

Не знаю какие там в Вашем ПТУ астрофизики, но мои знакомые астрофизик их ИПМ пишут на С/C++/фортране. Никого кто на CL у нас писал бы я не знаю.

AIv ★★★★★ ()
Ответ на: комментарий от anonymous

Если твои «астрофизики» из ПТУ используют что-то другое, это не значит, что в мире, остальные _астрофизики_ пользуются тем же.

ну «моё» пту называется Max-Planck-Institut für Astrophysik, а твоё как?

shty ★★★★★ ()
Ответ на: комментарий от tensai_cirno

Haskell же.

для математиков.

Как-то так исторически сложилось, что с программированием знакомят не со стороны математики, а откуда-то со стороны полубесконечных лент, написания МТ на МТ и ассемблера. Студент учится худо-бедно применять умную математику в сишечке, и много позже узнаёт про хаскель.

Поэтому хацкель в академической среде как-то не очень. Разве что буржуины во всяких МИТах более-менее отошли от «железного» подхода. Правда, со scheme они свалили не на хаскель, а на пейтон :D

melkor217 ★★★★★ ()
Ответ на: комментарий от AIv

> 4.2. Как правило чем алгоритм эффективней тем сложней его кодить. Напр наши алгоритмы самые эффективные и чудовищно сложно реализуются. Иначе все б ими уже давно пользовались...

Очевидный фикс. Чем алгоритм _сложнее_, тем сложней его кодить.

Кстати, «наши» это какие?

melkor217 ★★★★★ ()
Ответ на: комментарий от Zodd

> Вот только подбирать/разрабатывать этот эффектный алгоритм на Си будешь очень долго.

На Си не подбирают алгоритмы, а пишут программы.

melkor217 ★★★★★ ()
Ответ на: комментарий от melkor217

LRnLA

они не сложные, они именно что _эффективные_.

AIv ★★★★★ ()
Ответ на: комментарий от Zodd

В итоге есть три варианта:

c++ matlab и т.п. python

Это уже придется решать после прощупывания аспиранта

Странные рассуждения. Уж где-где, а в науке нужно отталкиваться от конкретных задач. Очень нужна скорость - С/C++ или Фортран (исходить надо из наличия библиотек, т.к. сами языки относительно сложные), Matlab - лучший синтаксис для матриц, очень подходит, чтобы быстро склепать код и проверить идею; Maxima и подобные - для символьных вычислений. Питоном не пользовался, но не нравится по нескольким причинам:

  • Там вечно что-то меняют и ломают. В результате, кто-то пишет на Python 3.0 или 2.7, но еще жив 2.4. В результате, где-то возможны грабли.
  • Не самые лучшие пакеты для расчетов. SymPy явно уступает Maxima, для построения графиков полно куда лучших альтернатив.
  • Как скриптовый язык - на любителя.
iVS ★★★★★ ()
Ответ на: комментарий от melkor217

А что если алгоритм не совсем известен, а лишь приближенно знаешь что надо сделать. Поэтому приходится перебирать разные варианты, делать кучу расчетов, тестировать. Код сильно меняется, возникают потери времени на изменение кода в Си. Логика и четкость алгоритма становится трудно увидеть из-за большого кода и дополнительных действий (с выделением данных, организаций доп. циклов и т.д.)

Zodd ★★★★★ ()
Ответ на: комментарий от AIv

Не вижу прямой связи между сложностью и эффективностью.

melkor217 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.