LINUX.ORG.RU

Скриптовые языки в научном ПО (отговорите от Python)

 , ,


2

4

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

У меня есть всё, что нужно для вычисления. Больше практически ничего нет, входные данные в текстовом файле, до такой вот степени. Что хочется сделать? Дать возможность пользователю расширять и углублять функционал, не залезая в код; создавать сложные входные данные, анализировать выходные, не отходя от кассы, вот это всё.

Поэтому хочу добавить поддержку скриптов, например, на Perl или Python. Поскольку со скриптовыми языками не сталкивался, мне без разницы, с чего начинать. Также мне не будет сложно переписать back-end на другом языке (сейчас он на фортране, прошу прощения). Смотрю в сторону C++ или даже C — скорость критична.

Какую связку языков и тулкитов вы бы посоветовали? Графический интерфейс планируется, но очень нескоро.

Необходимое на реализацию время не имеет значения. Принимаются варианты типа «нинужно, используй MATLAB» (с аргументацией).

Не знаю, возможно, тема должна быть в Development.

UPDATE На данный момент очень сильно склоняюсь к Python, может ли кто-нибудь отговорить?



Последнее исправление: knovich (всего исправлений: 2)

Принимаются варианты типа «нинужно, используй MATLAB» (с аргументацией).

«Нинужно», до тех пор пока заказчик не сформулирует требования, а для гибкости «используй MATLAB» или R + RKWard.

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

Я сам заказчик. Но надеюсь, что моё поделие потом кому-нибудь пригодится. Потому и не хочу использовать матлаб — не верю в то, что это можно будет повторно использовать.

R не подойдёт — медленно.

knovich
() автор топика

Задача сформулирована в слишком общем виде, ответ такой же: делай свой софт в виде библиотеки (набора библиотек) с опубликованными интерфейсами. Если это Си-интерфейсы, то сделать обращение к ним из Python относительно несложно.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Ну в общем-то, я и жду ответа в общем виде и личных предвзятых мнений. Почему, например, Python, а не Perl. Какой из этих языков лучше известен товарищам учёным или понятнее им?

knovich
() автор топика
Ответ на: комментарий от knovich

сейчас он на фортране ... Смотрю в сторону C++ или даже C — скорость критична.
Я сам заказчик.

Тогда посмотри в сторону связки: Fortran <  — > C < — > Cython

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

Почему, например, Python, а не Perl. Какой из этих языков лучше известен товарищам учёным или понятнее им?

Python, естественно. Для него есть дофига научных библиотек (математических в том числе).

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

Ну мне из скриптовой математики может понадобиться в первую очередь построение графиков и рисование прочих картинок. Может, несложная арифметика. Уравнения будут решаться на C. Всё равно Python?

Как там у перла и остальных (кроме питона) с GUI?

knovich
() автор топика
Ответ на: комментарий от knovich

Ну мне из скриптовой математики

Просто для протокола: я не предлагал делать математику на чистом Python (так вообще никто не делает). Я предлагал Python именно в качестве клея для модулей твоей библиотеки.

Про Cython можешь забыть - это средство ускорения Python.

Как там у перла и остальных (кроме питона) с GUI?

Есть мнение, что Perl мертв, так что GUI на Perl я не интересовался.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от greenman

Да я нагуглил и наслышан, что питон весь такой востребованный в науке. Наверное, стоило озаглавить топик «Отговорите от питона», поскольку на данный момент не вижу ему альтернатив, а это немного смущает. Если не вижу альтернатив — значит, чего-то не знаю.

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

Я предлагал Python именно в качестве клея для модулей твоей библиотеки.

А, понял.

Есть мнение, что Perl мертв

Да вот и мне так кажется. Неужели нет альтернатив питону? Я-то не против, но просто смущает это.

knovich
() автор топика
Ответ на: комментарий от knovich

Вроде пытаются развить julia. Хотя это не скриптовый язык (?)

greenman ★★★★★
()
Последнее исправление: greenman (всего исправлений: 1)

Да бери Python + NumPy + SciPy, если нужно.

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

Не, матлаба я боюсь. Проприетарно и не stand-alone (ну или небось какую-нибудь библиотеку невероятных размеров с собой тянет). Подожду ещё птарха с R и Julia, если он придёт.

knovich
() автор топика
Ответ на: комментарий от ugoday

Хорошая идея, я думал об этом. Но всё равно Python!

knovich
() автор топика

Тяжелые расчеты кончено на фортране/Си, а python хорошо пойдет для оформления вывода - форматирование/графики/etc, благо библиотек для него навалом. Matlab - «нинужно».

Очень хороший курс по этой теме - https://www.coursera.org/course/scicomp

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

И Go, и Rust интересны, но мне кажется, что они ещё недозрелые, по сравнению с Питоном. Или я неправ?

knovich
() автор топика
Ответ на: комментарий от Medar

Спасибо, курс в самом деле хороший. Надо будет пройти, так как в институте нас особо и не учили этому.

А этот курс не превратится в тыкву, когда закончится? Там просто даты стоят, дескать, заканчивается 22 июня. Или только д/з нельзя будет сдавать, а видяшки останутся?

knovich
() автор топика

Что не так с питоном, зачем отговаривать, наука - вполне себе одна из областей его применения, ну синтаксис более-менее человекопонятный (ИМХО, конечно)

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

А этот курс не превратится в тыкву, когда закончится?

А вот не знаю, возможно и так. Вообще я хочу дамп сделать, если все получится, то можно будет найти на рутрекере.

Medar ★★★★★
()

C# - проще питона, для не умеющих программировать, ИМХО.

peregrine ★★★★★
()

Питон это хорошо, до того момента когда аффтару пакета надоедает его пилить. Если есть деньги на матлаб, бери. Он был есть и будет есть. Дергать из него нативный код очень просто, удобно глянуть данные, полноценный ну или почти repl (или как оно там зовется).

Возможно, в последних Iпитонах стало лучше, я не знаю, давно не смотрел.

ebantrop
()

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

Я сам заказчик. ... надеюсь, что моё поделие потом кому-нибудь пригодится.

Необходимое на реализацию время не имеет значения.

Ты прямо напрашиваешься на предложение написать движок на Си и к нему (скрипто)язык, совместимый с MATLAB. Если взлетит - будет отличный трактор для тех, кто погряз в матлабе.

Задача, конечно, более чем масштабная - но вдруг?

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от hobbit

Это уже целый проект для нескольких человек. Я ведь не программист. Конечно, если у меня в жизни всё сложится удачно, то так, возможно, и произойдёт. Но пока нужно на чём-то работать и чем-то доказывать, что я не верблюд. Про время на реализацию я, конечно, загнул — год, два, не больше.

(скрипто)язык, совместимый с MATLAB

Почему непременно с MATLAB?

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

Тут и помимо меня юзверей R хватает, но R не особо подходит для того, чтобы на его основе делать гибкие и расширяемые продукты, имхо. Хотя если гуй не планируется, то следующий вариант на R:

- Написать пакет для R на фортране/С++ или на самом R, если его скорости хватет. Пользователь натравливает его на данные и получает свой вожделенный выхлоп в консоли. Альтернативно, если понадобится гуй - модный нынче shiny.

ptarh ★★★★★
()

Числодробильня на тысячи ядер?

Что знаешь, на том и пиши.

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

ну в Python есть tkinter. В принципе я его использовал и для графиков, и для простеньких интерактивных игрушек.

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

и получает свой вожделенный выхлоп в консоли.

Не обязательно. Мой быдлокод генерит .pdf/.png (и запускается с .sh скрипта) в качестве выхлопа. Но как там с интерактивщиной и гуем я вообще хз.

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

Хренасе :)
Как оно по сравнению с RStudio?

В RStudio фич поболее, но с учётом интеграции с KDE, «для себя» (ибо версия 0.6) пользоваться можно.

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

Ты прямо напрашиваешься на предложение написать движок на Си и к нему (скрипто)язык, совместимый с MATLAB.

Так это же Octave, внезапно!

curufinwe ★★★★★
()

Смотрю в сторону C++

Графический интерфейс планируется, но очень нескоро

Бери Qt. Там и интерфейс и скриптинг из коробки.

или даже C

Тогда Tcl/Tk - аналогично и скриптинг и интерфейс (чуть страшноватый, но это допиливается).

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.