Здравствуйте, ononim, Вы писали:
Pzz>>Ее нет в том смысле, что невозможно написать динамическую библиотеку на Go. Но динамические библиотеки, написанные на других языках, с сишными соглашениями о вызовах, из Go без проблем можно использовать.
O>Да даже написать вроде можно, но толку с нее мало — она не может взаимодействовать с другими библиотеками как го-шная библиотеке.
O>В плюсах нет никаких проблем дергать другие библиотеки написанные на плюсах за классы. Надо только проявлять некоторую осторожность, но для плюсовика — осторожность — норма жизни Неосторожные плюсовики, как неосторожные саперы — рано выбывают из профессии.
Хуже, что в Go два рантайма не могут ужиться в одном процессе. Технически-то динамическую библиотеку сделать можно. А потом начинается: загрузили ее из программы на C/C++, все хорошо. Загрузили две таких разных библиотеки, поперли странные глюки, причем разные на разных системах. Загрузили из программы на Go библиотеку на Go, опять беда.
Выселить рантайм в отдельную динамическую библиотеку тоже не получится, потому, что все модули, написанные на Go, должны быть скомпилированы одной и той же версией компилятора, и рантайм должен быть от него. Иначе никто ничего не гарантирует.
Ну и что до осторожности, местами видно, что Go делали не какие-то питонисты в пиджаке галстуке, а кондовые хакеры-чернокнижники с длинными немытыми волосами и в вонючем свитере (Пайк на вид не такой, но он притворяется). И если делать на Go сложные вещи, а иногда и простые, то можно нарваться.