LINUX.ORG.RU

Какой язык встроить?

 , , ,


0

1

Есть одно приложение-сервер на .NET. Собирает данные телеметрии.

Сейчас перепроектирую для оптимизации. Хочу встроить какой-нибудь скриптовый язык. Необходимость имеется. Что выбрать?

Мейнстрим сейчас lua, я так понял?

Реквестую истории успеха.

★★

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

Сейчас перепроектирую для оптимизации
скриптовый язык

Лично у меня это не укладывается в голове

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

Что конкретно не понятно? Данные с объекта идут раз в минуту. Переложить вычисления на скрипт - никакой нагрузки не будет.

ziemin ★★
() автор топика

.NET

Мейнстрим сейчас lua, я так понял?

Lua мейнстрим для Си/Си++. Что там на .NET мейнстрим - ХЗ.

tailgunner ★★★★★
()

brainfuck — имплементация простая, cache-friendly, безопасно.

nokachi
()

BASIC же.

anonymous
()

В Valve предпочитают Squirrel, например.

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

уж лучше F# на мой взгляд. Я для .net ни одного толкового лиспа не припомню.

Dark_SavanT ★★★★★
()

C# и встраивай, это очень легко.

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

Если .Net и (похоже) оффтопик

Почему же. Компиляется и запускается (в отладочном режиме) под моно, на сусе. Правда про OPC придётся забыть, скорее всего. Но я подозреваю, что не так много клиентов/серверов есть. Ещё работа с последовательным портом вызывает сомнения. Ну и геморрой с настройкой ODBC.

ziemin ★★
() автор топика

JS или Lua. Если хочется поэстетствовать, бери scheme.

Sectoid ★★★★★
()

Я бы смотрел на следующие языки и именно в таком порядке:

  1. Lua (есть опыт встраивания (правда в C++), всё легко и просто, язык понятен простому человеку);
  2. JavaScript (ну почему-то же он популярен);
  3. Tcl (при всей его замечательности, писать-то скорее всего будут не очень квалифицированные люди, слишком непривычно будет).
undet
()
Последнее исправление: undet (всего исправлений: 1)

groovy через прослойку на джаве.

crowbar
()

Мейнстрим — Lua, как было сказано. Но я по-прежнему для встраивания предпочитаю Форт :)

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

Кстати форт даже удобнее лиспа (в моих задачах). Но вот как это расписать юзеру... Документация на язык решает. Иначе мне её придётся писать.

Причём страшен не мой стиль изложения, а то, что никто её читать не будет. Опыт около 7 лет. Речь не о юзерах, а о собственной службе поддержки.

С другой стороны у популярных языков есть документация, форумы и вообще они на слуху.

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

Но вот как это расписать юзеру...

Форт, как раз, незнакомому с программированием юзеру проще расписать. На нём же легко пишется скриптовая подсистема на уровне естественного языка. Без всяких малопонятных закорючек, отступов и ограничений на ключевые слова и символы. Для простого пользователя первые (и, в общем, последние) проблемы в восприятии могут появиться только при использовании арифметики и условий/циклов (придётся понять, что такое стек и польская запись).

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

Давай ссылку на мануал (для юзеров)

Я же сказал, что юзерам нужно изучать не Форт. А тот проблемно-ориентированный язык, который ты напишешь на Форте. И тут я, как раз, ничего посоветовать не могу, поскольку даже не в курсе задачи :)

И в этом, как раз, большое отличие Форта от большинства других языков. Можно учить конкретную целевую реализацию, не заморачиваясь изучением Форта в целом.

Upd: и, да, сорри, ссылок по Форту посоветовать не могу. Я изучал его по книжкам лет за 10 до массового Интернета :) Более того, даже по названиям могу посоветовать только фундаментальные вещи, типа «Thinking Forth» (обязательно в переводе Сергея Дмитренко).

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

Мейнстрим сейчас lua, я так понял?

да ИМХО. ИМХО хороший выбор.

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

Но ведь пользоваться-то буду не я. Боюсь неосилят нотацию.

там несложно.

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

Он включает JS

подтверждаю. Иногда надо обмазываться говном. Хотя бы для того, что-бы понимать, с какими годными ЯП работаешь.

emulek
()

на хабре с месяц назад статья была, как чуваки в шарп (который в Unity3D) встроили луа.

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

Под линукс он и так работает (теоретически).

Моя мокрая мечта - свалить поддержку на службу поддержки.

С одной стороны сообщение вроде «Параметр „ДВЕРЬ“ имеет аварийное значение 01.000» как бы некрасиво.

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

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

Под линукс он и так работает

4.2 + ненужно

свалить поддержку на службу поддержки

А какой [censored] это под говном делал? Почему сразу по-человечески не делали? Мозгов не хватало?

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

А какой [censored] это под говном делал? Почему сразу по-человечески не делали? Мозгов не хватало?

Собственно я это и писал. В полях, лесах, под непрерывным артиллерийским огнёмсроками уже сданных (по бумагам) проектов. Тебе, на тёплом, уютном диванчике легко рассуждать.

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

Отвечу на твой удалённый коментарий:

УМВР, до недавнего времени. Суть такова: сервер спокойно держит 1500 объектов. Но он устроен так: одна база с данными -> один протокол -> один канал связи. Учитывая, что в реальности такая ситуация бывает редко пришлось замутить «экземпляры» сервера. А вот тут одна база и вылезла боком. В результате на (к примеру) модбас и другой протокол приходится включать по экземпляру. Итого (по сравнению с рассчётным объёктом о 10 каналах) получилось 2500+ объектов. Сервер естественно начал падать с недостатком памяти...

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

Есть же очереди сообщений. Запускаешь один "головной" сервер, который на соединения запускает новый поток и посылает "головному" сообщение в очередь. А тот по мере поступления сообщений выполняет работу с БД. Хотя, вроде как БД обычно умеют параллельный доступ с блокировкой.

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

Запускаешь один «головной» сервер, который на соединения запускает новый поток и посылает «головному» сообщение в очередь

Кому ты рассказываешь? Я (изначально) старался использовать одно соединение с БД. Для всяких MySQL, PostgreSQL и т.д. это особо не имеет значения, но сервер одной артели стоит денег.

ziemin ★★
() автор топика

питон, ну или перл, если есть яйца

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

Ты не понимаешь, а я не выбираю.

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