The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск PortableGL 0.98, реализации OpenGL 3 на языке Си "
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Для контроля за появлением новых сообщений - перед выходом жмите "Пометить прочитанным".
. "Выпуск PortableGL 0.98, реализации OpenGL 3 на языке Си " +/
Сообщение от Ivan_83 (ok), 08-Май-24, 07:21 
> В С то же самое, только ещё хуже: вместо классов структуры, malloc/free для этих структур в непонятных местах, после выделения памяти не забыть вызвать инициализирующую эту структуру функцию, перед уничтожением не забыть вызвать функцию-деструктор, а функции, работающие со структурами, должны принимать указатели на структуры или указатели на указатели на структуры,

Всё так.
Но при этом это всё происходит в явном виде.
Я могу взять структуру, заинитить там одно поле и пульнуть в какую то другую функцию и получить результат.
В крестах оно обязательно вызовет и конструктор и деструктор, и там будет куча неочевидного месива.
Деструкторы тоже вызываются не всегда очевидно как.
https://github.com/eranif/codelite/issues/3355
трейс вокруг LanguageServerCluster.
Там что то типа: char *path = app()->debuger()->getpath();


> а вдруг им передан нулевой указатель - надо не забыть проверить... Тот ещё гемор, в общем.

Да, обязательно, ведь как завещал МыщьХ: код наверняка будут вызывать враги и нужно проверить все!


> А если нужно наследование? А если нужны похожие структуры, в которых есть поля с одинаковыми именами, но эти структуры - не наследники друг друга, но со всеми этими структурами должна работать какая-то функция?

Не нужно, вы же сами писали :)
Но в целом примерно как в fuse сделано, типа плагинная система, где структура в которой указатели на функции обработчиков.
Если нужные похожие структуры - либо делаете копипасту либо делаете структуру у которой всё одинаковое основной и дополнительно туда подключаете указатели на различающиеся структуры и туда же можно кинуть указатели на функции для их обработки.
В целом похоже что вы высасываете задачу из пальца вместе со сложностью. В системном и прикладном софте мне такое почти не встречалось.

> Но в С всё то же самое, только хуже, потому что приходится изобретать велосипед

Разбивка на файлы это что то новое?)


> В С так же. С большими программами и сложными структурами данных в любом языке примерно та же история.

C не толкает использовать классы и всякие навороты.


> Луа - это скриптовый язык для программ и к тому же медленный, совсем не замена С++

Это вы так думаете :)
Да, это не С/С++, но при правильном использовании - в виде клея для С функций/либ, он как и питон и как и кресты будет далеко не самым узким местом.


> чтобы пользователи программы могли писать скрипты, но это редко нужно.

Он вполне годен и для бизнесслогики.
Ещё для make систем это просто киллер фича: у него зависимостей по либам нет, сам маленький, а нагородить в нём можно легко больше и проще чем с Cmake и meson.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск PortableGL 0.98, реализации OpenGL 3 на языке Си , opennews, 07-Май-24, 09:25  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру