LINUX.ORG.RU

На чём сейчас писать логику подо все платформы?

 , ,


0

1

Привет, лор!

Обдумываю один for-fun проект. Решил, что пользовательский интерфейс на десктопе, телефонах и в вебе если будет, то для каждой платформы родной-нативный. А вот базовая часть с логикой хочу, чтобы была единая. Или, по крайней мере, получалась парой телодвижений из единого исходника. В базовой части всякие алгоритмы и структуры данных типа графов, топологической сортировки, т.е. никаких нейронок, хардварного ускорения и проч. Собственно, вопрос, на чём сейчас такую логику имеет смысл писать, чтобы потом подо всё на свете собрать можно было и нативные интерфейсы сверху лепить?

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

★★★★

Сишка, в вебе компилируется в wasm/js в два клика, на мобилках идёт so библиотекой с привязками к ней если надо, на десктопе библиотекой или просто линкуется статически. По итогу у тебя один каталог с тройкой файлов кода логики и один Makefile с тройкой целей сборки . Код един и не раздроблен, вся суть во что его и как скомпилировать. Сишка компилируется, во всё, везде и всегда. В случае чего даже в эмбед микроконтроллёры пойдёт без изменений ибо это логика.

Но наверняка есть что-то под такую задачу заточенное и поэтому оно будет лучше ибо заточено. Но шаг в сторону и грабли в лоб опять де потому что заточено.

Важно, у меня такой задачи не стояло, и я вообще ничем подобным в жизни не занимался, но своё диванно экспертное мнение конструктивно презентовал =)

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 2)
Ответ на: комментарий от untitl3d

Осторожно плюсану (pun intended), при большом разбросе технологий и платформ количество вариантов неизбежно будет сокращаться к двум-трём, среди которых будет Си, кресты, и может быть, какой-нибудь развитый язык, собираемый LLVM. C этим придут и ограничения, вызванные системой типов, например, особенно в Си.

Princesska ★★★★
()

Либо использовать то, что компилируется под большинство платформ (сишечка, llvm-ir), либо то, для чего есть виртуальные машины для большинства платформ (жаба, питон).

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

C++

Преимущества C++ в синтаксическом сахаре, системе типов и стандартной библиотеке понятны. Какие есть недостатки в моём случае по сравнению с Си? Может, с компилированием под мобилки или веб, ещё что-нибудь? Микроконтроллеры не рассматриваю.

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

JavaScript

Какие преимущества у реализации на JS перед таковой на Си? Вроде, сишечка подо всё компилируется. Требований к скорости нет, но хочется понимать, что получу взамен.

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

clr. За ним здесь будущее, так как еднственное, что прошло сертификацию в астре (пока mono, но кого это колышит). А на чём начнёшь - пофиг. Ест практически всё.

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

хорошие сишники, которые писали игры, например, наверняка имели дело с LUA, который то еще говнецо и после которого JS покажество совершенством (синтаксис и концепции схожие)

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

Он не используется потому что трудно с чем-то объединять, а вот отдельная чистая логика и числодробилки делаются на нём отлично, наружу пропидываются уже просто js функции которые дёргают васм и возвращают некий результат или массивы данных.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от fluorite

тож аргумент, но я сколько гомнопроектов делал, мне нигде не нужно было. я сомневаюсь, что оно вообще какой-то прирост производительности дает, так как V8 сам умеет ускорять код, путем компиляции в байт-код как в джаве или питоне… другое дело, что js убог по причине отсутствия чего-то типа байтовых строк вместо типизированных массивов… вот какой-нибудь архиватор на васме запилить. а вот для вывода графики на канвас он не нужен. я сомневаюсь что и гуглокартам его использование дало какой-то профит

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

я все правильно понимаю. в стародавгие времена, когда XMLHttpRequest не могу файлы отправлять, multipart/form-data вручную сформировать и то было невозможным, если у тебя не текстовый файл… Или взять хотя бы проблему с кодировками: вот нужно было на серваке чтобы была Windows-1251… для общего развития сцылка… А сколько траханья то было с попытками в браузер просматривать и формировать архивы… А как пытались до канваса изображения конвертировать из одного формата в другой… Те же самые проблемы были и в Node.js… Потом там ввели Buffer… А на клиенте типизированных массивов ооооочень долго не было. WebAssembley решила именно эту проблему, а не ваши сферические в вакууме числодробилки… Сейчас и WebGL добавили тем более: можно на GPU компрессию делать. Людям, которые не писали на JS либо мало писали, не понимают этого. Они думают, что WASM должен убить этот JavaScript, который они попросту не смогли осилить в виду проф непригодности, а на самом деле тот нужен для байтотраханья

tz4678_2
()

Можно в сторону capacitor посмотреть, и писать везде на js.

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

Можно поглядеть на flutter еще. Возможно там можно будет писать все на дарте без потери производительности

OxiD ★★★★
()

Раз проект for fun напиши логику на Fortran. По крайней мере будет очень прикольно, свежо и не ординарно, и не на javascript каком-нибудь.

Технически, кроме шуток, современный фортран в этом смысле не хуже Си. Также везде компилируется, в отличие от Си более строгий язык, имеет кучу фич, включая ООП и параллельные возможности.

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

Ну 90% веба, если в сайтах счиатать это всякие лендинги, которые технически вообще не интересны, и тс думаю не их переносить будет. А интересны штуки типа фигмы, ютуба, курсеры, степика, 2гис и тд, а там работа со строками ну не самое важное. Хотя ок, все что угодно можно описать как работу со строкой, а я не знаю что ты имел в виду)

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

на ютубе вся обработка видео на сишных биндингах была… а вся питонячья логика сводилась к работе со строками (SQL, JSON) и тп. в фигме там работа с графикой через canvas, webgl и пр. те несравнимые вещи.

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

Действительно, ничего. Например вот целый репозиторий такого несложного, элементарного кода с youtube-like плеером https://github.com/videojs/video.js

Ну и работа со строками - там ее полно ;)

OxiD ★★★★
()