Size: a a a

Programming Offtop

2020 October 25

VP

Vladimir Petrakovich in Programming Offtop
Ilmir
Андроидовцам нужен, вернее тем из них, кто из железа хочет выжать всё.
Ты так пишешь, будто на андроиде jvm и им светит панама
источник

AK

Anton Korotkikh in Programming Offtop
Vladimir Petrakovich
А он кому-то нужен? Всё-таки трудно представить либу на JVM в приложении на нативном языке.
я думал о таком, например, нативный модуль на жабе (ибо норм либы только там для многих решений) для ноды. но потом как-то забили болт и начали пилить микросервисы да ipc по сокетам
источник

I

Ilmir in Programming Offtop
Alexander Nozik
по-моему в случае натива - это экзотика.
Это экзотика и неслыханное вообще в языках программирования. Сколько языков могут этим похвастаться? Я знаю три: Котлин, С++, Раку (интероп с пятым перлом у них хорошо сделан).
источник

AN

Alexander Nozik in Programming Offtop
Ilmir
Это экзотика и неслыханное вообще в языках программирования. Сколько языков могут этим похвастаться? Я знаю три: Котлин, С++, Раку (интероп с пятым перлом у них хорошо сделан).
Питон.
источник

VP

Vladimir Petrakovich in Programming Offtop
Anton Korotkikh
я думал о таком, например, нативный модуль на жабе (ибо норм либы только там для многих решений) для ноды. но потом как-то забили болт и начали пилить микросервисы да ipc по сокетам
Вот да, на бэке проблема решается микросервисами
источник

AN

Alexander Nozik in Programming Offtop
Ilmir
Это экзотика и неслыханное вообще в языках программирования. Сколько языков могут этим похвастаться? Я знаю три: Котлин, С++, Раку (интероп с пятым перлом у них хорошо сделан).
А С++ и интероп в одном предложении - это смешно. Он умеет довольно легко в С API. Все.
источник

I

Ilmir in Programming Offtop
Alexander Nozik
Питон.
Как ты питоновских код с сишный отдашь? Идеальный - значит в обе стороны без сторонних тулов.
источник

I

Ilmir in Programming Offtop
Alexander Nozik
А С++ и интероп в одном предложении - это смешно. Он умеет довольно легко в С API. Все.
s/API/ABI/
источник

AN

Alexander Nozik in Programming Offtop
Ilmir
Как ты питоновских код с сишный отдашь? Идеальный - значит в обе стороны без сторонних тулов.
Ну так работает, всем очень нравится. Он не оптимален по перформансу, но питон весь такой.
источник

AN

Alexander Nozik in Programming Offtop
Ilmir
s/API/ABI/
Не важно. Он спроектирован так, что там интероп в принципе кошмарный.
источник

AK

Anton Korotkikh in Programming Offtop
Ilmir
s/API/ABI/
источник

I

Ilmir in Programming Offtop
Alexander Nozik
А С++ и интероп в одном предложении - это смешно. Он умеет довольно легко в С API. Все.
Так больше и не нужно ему. Идеальный интероп с С был одной их целей при проектировании и всё ещё остаётся.
источник

AN

Alexander Nozik in Programming Offtop
Ilmir
Так больше и не нужно ему. Идеальный интероп с С был одной их целей при проектировании и всё ещё остаётся.
Ну так у тебя интероп с С есть везде. В питоне - просто включаешь хеадер и все. В Java JNA.
источник

I

Ilmir in Programming Offtop
У Ди была попытка интеропиться с плюсами с обе стороны. Вернее с сабсетом. Ну что сказать A for effort, C for usability.
источник

I

Ilmir in Programming Offtop
Alexander Nozik
Ну так у тебя интероп с С есть везде. В питоне - просто включаешь хеадер и все. В Java JNA.
ОК. А сколько шагов-то нужно сделать, чтобы собрать модуль. Меняем джава код - перегенерируем хедеры. Меняем нативный код - в случае JNA ничего делать к счастью не надо. И да, выбрав тормозной JNA, который даёт удобство за счёт перформанса и построен поверх JNI, и ЕМНИП при запуске строит таблицу переходов и каждый вызов проходит через эту таблицу, ты немного слукавил. Ну ладно, один дополнительный шаг - генерация хедеров.
В случае Раста нам ещё надо перегенерировать Растовые обёртки над сишным кодом. В итоге - два шага.
Сравним теперь с интеропом С <-> C++. Меняем код, запускаем компиляцию, всё магическим образом работает. Не надо ничего перегенерировать.
источник

AN

Alexander Nozik in Programming Offtop
Ilmir
ОК. А сколько шагов-то нужно сделать, чтобы собрать модуль. Меняем джава код - перегенерируем хедеры. Меняем нативный код - в случае JNA ничего делать к счастью не надо. И да, выбрав тормозной JNA, который даёт удобство за счёт перформанса и построен поверх JNI, и ЕМНИП при запуске строит таблицу переходов и каждый вызов проходит через эту таблицу, ты немного слукавил. Ну ладно, один дополнительный шаг - генерация хедеров.
В случае Раста нам ещё надо перегенерировать Растовые обёртки над сишным кодом. В итоге - два шага.
Сравним теперь с интеропом С <-> C++. Меняем код, запускаем компиляцию, всё магическим образом работает. Не надо ничего перегенерировать.
А сколько тебе действий надо в С++ если ты обе стороны меняешь? Учитывая, что помодульная компиляция вообще мнимая величина.
источник

AN

Alexander Nozik in Programming Offtop
И нет, магическим образом оно не работает. Если у тебя сломалось ABI, то все упадет в рантайме
источник

I

Ilmir in Programming Offtop
Alexander Nozik
А сколько тебе действий надо в С++ если ты обе стороны меняешь? Учитывая, что помодульная компиляция вообще мнимая величина.
Ровно три -
.c -> .o
.cpp -> .o
.o -> bin
источник

AN

Alexander Nozik in Programming Offtop
Я могу и в расте и жаве не регенерировать обертки и надеяться на то, что ABI не поменялось
источник

I

Ilmir in Programming Offtop
Alexander Nozik
И нет, магическим образом оно не работает. Если у тебя сломалось ABI, то все упадет в рантайме
Как оно упадёт в рантайме, если при сборке мне линкер скажет, что не может найти нужный символ.
источник