ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
22 декабря
1041631 Топик полностью
fk0, легенда (02.10.2020 10:27, просмотров: 648) ответил Kabdim на Обычно все кто мне встречался приходили к примерно тем же выводам, без необходимости внешних аргументов. Ну ладно, требование аргументировать оно рациональное и правильное.
С другими языками и совместимостью с C -- большие проблемы из-за: 

1) другой ABI (не вызвать функцию без написания прослойки или её генерации средой исполнения);

2) нет общего представления типов данных в памяти, в частности структур;

3) часто нет общих скалярных типов данных (long в C -- чему он соответствует в C#, если платформа наперёд не известна? разное представление float и нет decimal в C);

4) разное представление строк, которые нужно конвертировать туда-сюда обратно (UCS-16 и UTF-8, при том, что wchar_t -- UCS-32);

5) зачастую вообще нет возможности экспортировать описание layout'а в памяти из языка в язык и передача структур возможна только через сериализацию (не про C#).


Это далеко не просто и буднично. Типичный пример: использовать существующую библиотеку на языке C (элементарный пример -- вызвать printf из libc) для многих языков является огромной проблемой и требуется написание специальной прослойки, на что запросто тратятся недели времени. На C++ такие библиотеки подключаются за 5 минут.

[ZX]