LINUX.ORG.RU

Совета трэд

 , , ,


0

2

Добрый день, LOR!

Появился интересный проект, сейчас подбираю язык для реализации: посоветуйте, исходя из функционала:

  • модульная система программы (все функциональные возможности должны быть реализованы в виде модулей);
  • основная функция: несложные расчеты по достаточно заковыристым алгоритмам;
  • кроссплатформенность, безпроблемный запуск под оффтопиком (он целевая платформа);
  • рисование графиков 2d;
  • сохранение результатов в .doc/.docx/.rtf (.odt не рассматривается);
  • хранение результатов в переносимой БД (типа SQLite, Firebird или в чем-то другом).

В чем выбор (что я рассматриваю как вариант написания):

  • tcl+tk+sqlite+canvas
  • c#+mono+sqlite
  • racket+racetgui+самописная БД на nosql
  • python3+qt+sqlite

Какой-вариант лучше/быстрее (примерно одинаково знаю все варианты)? Или есть более простой вариант? (по большому счету нужна таблица с возможностью забить и сохранить формулу) С++ не предлагать, против моей религии. Java не знаю, знаю только базово Clojure (да и то для web'a).

Если это расчеты, может стоит потестить математику? В Tcl она не быстрая например (я знаю про {}).

А еще R кстати есть.

c# просто по идеологическим причинам не понятно зачем нужен. Ну и опять же - завтра тебе понадобится перетащить это на онтопик и чо ты будешь делать с с#? Писать не кроссплатформенные приложения в 21 веке не только моветон, но и не дальновидность.

Всё IMHO.

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

сохранение результатов в .doc/.docx/.rtf

Я бы сначала нашел такую библиотеку и от нее бы уже выбирал язык.

tcl может паковать so|dll внуть единственого исполняемого бинарника. И в смысле размеров он будет самым маленьким.

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

SBCL можеть быть и быстрее racket-а если скорость важна.

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

А где там про размер? Я еще раз напомню про медленную математику в Tcl (хотя не знаю как с этим в python). С другой стороны, если надо писать какие-то произвольные формулы и их интерпретировать, то видится Tcl весьма удобным для этих целей, с его отношением со строками.

Но главную мысль поддержу - «Я бы сначала нашел такую билиотеку и от нее бы уже выбирал язык.» IRL так и приходится чаще...

Suntechnic ★★★★★
()

Если выбирать между Tcl и Python, для простого GUI или DSL я по возможности взял бы Tcl/Tk, а для чего-то более серьезного Python + PySide или matplotlib, особенно для этих пунктов:

  • модульная система программы;
  • несложные расчеты по достаточно заковыристым алгоритмам;
  • рисование графиков 2d;
  • хранение результатов в переносимой БД.

Python более современный и более строгий язык, чем Tcl. Python и Qt это мейнстрим, так что для них больше всего готовых решений и документации.

Если выбирать между Python и Mono, то я бы смотрел по библиотекам для расчетов. Не знаю, есть ли в Mono аналоги numpy, scipy, etc.

PS. The homogenization of scientific computing, or why Python is steadily eating other languages’ lunch.

gv
()

.odt не рассматривается

А что так упорото? Его же ворд открывать умеет.

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

Говно, анальное рабство, тормоза.

говно у тебя на аватарке, а это годные, подходящие для решения задачи ТС-а инструменты

Virtuos86 ★★★★★
()

По большому счету не имеет значения на чем писать. Py3 + Qt хорошее решение, но если для тебя не имеет значения вес софтины.

Если целевая платформа - оффтопик, то пиши на шарпе. Только надо заранее заложить возможность портирования. Вынеси всю логику в отдельный солюшн, а гуй для каждой платформы отдельно. Будет выглядеть нативно и считать быстро. Но это в том случае если гуи кода не много.

northicewind
()

Python. Есть всякие полезные модули типа numpy, scipy, matplotlib и прочих. Самый оптимальный выбор. Привязка к Qt тоже считаю полезной.

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

Racket:

  • модульная система программы — есть
  • несложные расчеты по достаточно заковыристым алгоритмам — математика на уровне, ФВП часто позволяет алгоритм сильно упростить.
  • кроссплатформенность, безпроблемный запуск под оффтопиком — есть
  • рисование графиков 2d — модуль Plot
  • сохранение результатов в .doc/.docx/.rtf — прекрасно работает COM/OLE.
  • хранение результатов в переносимой БД — модуль умеет SQLite, PostgreSQL и ещё несколько.

Tcl страшный, Питон тормозной, C# слабо переносимый и многословный

monk ★★★★★
()

В чем выбор (что я рассматриваю как вариант написания):

tcl+tk+sqlite+canvas ; c#+mono+sqlite ; racket+racetgui+самописная БД на nosql ; python3+qt+sqlite

фейк о том что «язык реализации подбирают под задачу» на марше. IRL задачи делают на хорошо знакомой технологии. А новое смотрят/изучают на перспективу. Стартовать новый проект на новой-же для вас технике - заведомо угробить начинание

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

А что порекомендуете тогда? Данные инструменты я по крайней мере знаю. Другое учить - не те деньги и не те сроки

silver-bullet-bfg ★★
() автор топика
Ответ на: комментарий от northicewind

По большому счету не имеет значения на чем писать

Согласен, можно хоть на FASM все захерачить. Но тут нюанс - надо сделать быстро и с возможностью потом самому же поддерживать это. Как уже писал - деньги тут не те, чтобы что-то новое учить ради проекта (так заделал бы на Pharo c его не стандарным и красивым UI). Поэтому надо: а) что знаю; б) что лучше подходит; в) где будет меньше костылей.

Но это в том случае если гуи кода не много.

Тут его скорее и будет много. Надо не сложные расчетные алгоритмы сделать красивее таблицы Excel и старой под Win95 программы.

silver-bullet-bfg ★★
() автор топика
Ответ на: комментарий от monk

Вот это интересно. А GUI как сейчас? Раньше не брал для пользователького ПО из-за этого. А вот COM/OLE - хотелось бы этого избежать и юзать через либу. Не встречали чего-то подобного?

silver-bullet-bfg ★★
() автор топика
Ответ на: комментарий от MKuznetsov

фейк о том что «язык реализации подбирают под задачу» на марше.

Не согласен. Особенно если я знаю все приведенные варианты примерно на одном уровне.

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

Так я выше и перечислил то, что знаю.

silver-bullet-bfg ★★
() автор топика
Ответ на: комментарий от monk

Кстати, а для Racket сейчас «рисовалки интерфесов» нет (не хочется все виджеты руками прописывать, лучше логике это время посвятить)

silver-bullet-bfg ★★
() автор топика
Ответ на: комментарий от silver-bullet-bfg

Кстати, а для Racket сейчас «рисовалки интерфесов» нет

А для чего-то кроме Qt|mono она изкаробочно есть?

не хочется все виджеты руками прописывать

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

antares0 ★★★★
()
Последнее исправление: antares0 (всего исправлений: 1)
Ответ на: комментарий от silver-bullet-bfg

Тогда бери python3. Правда надо аккуратнее со всякими либами. Не все они безболезненно переносят упаковку в бинарник для дистрибьюции. В качестве морды или pyQt или kivy.

Для Mono есть xwt чтоб гуй не переписывать. Он пока немного сыроват, но в общем работает нормально. Юзал его для нескольких проектов.

northicewind
()
Ответ на: комментарий от antares0

tcl может паковать so|dll внуть единственого исполняемого бинарника. И в смысле размеров он будет самым маленьким.

Вот это прикольно.

Кстати с PyQt у кого нибудь получалось такое? Обычно там всегда нужны dll отдельно, особенно те которые рендерят картинки (svg, png, jpeg)

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

Кстати с PyQt у кого нибудь получалось такое?

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

antares0 ★★★★
()
Ответ на: комментарий от silver-bullet-bfg

А GUI как сейчас?

Мне хватает. С учётом требований по переносимости — всё есть. На крайний случай можно вытащить указатель и дописать чего не хватает (правда в трёх вариантах).

Кстати, а для Racket сейчас «рисовалки интерфесов» нет

Есть mred-designer : https://github.com/Metaxal/MrEd-Designer/wiki

А вот COM/OLE - хотелось бы этого избежать и юзать через либу. Не встречали чего-то подобного?

Там больше PDF любят... Есть родной zip/unzip и xml. Этого достаточно, чтобы записать docx :-)

Ну или можно через FFI дёргать любую dll/so, которая умеет писать то, что надо и является переносимой на целевые платформы.

monk ★★★★★
()

Если винда - целевая платформа, то зачем отметать шарпея?

Градус фанатизма зашкаливает

Я бы выбирал между шарпом и питоном, хотя душой за тикль

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

Если винда - целевая платформа, то зачем отметать шарпея?

Многословный очень. А то можно и C++ вспомнить или Java. Но то, что на python/racket/tcl занимает 2 строки на C#/C++/Java как правило 20.

C# рулит только если есть готовая библиотека для .Net (аналогично Java со своими библиотеками). Или если очень большая команда разработчиков. Писать что-то на них с нуля в одиночку, по-моему, требует очень много лишних усилий.

Если брать только Windows, то уж лучше что-то типа JScript.NET — есть доступ к библиотекам .Net, но нет синтаксической перегруженности. Или даже VB.Net, если аллергии на бейсик нету.

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

C# не многословен. При первом взгляде он похож на java но это разные языки. Linq и большой выбор сахара позволяют писать очень компактный и функциональный код.

northicewind
()

забудь про варианты 1 и 3

поразмышляй еще на тему варианта java + sqlite

из 2 и 4 - .net будет пошустрее, чем пыхтон, но если очень хочется именно его, то посмотри в сторону iron python или jython

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

некротехнологии и маргинальщина, кто это саппортить будет? ТС?

+ у них гуй - полное УГ

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