Как вам такая архитектура?
|
|
afq | Дата: Понедельник, 01 Июля 2019, 23:26 | Сообщение # 1 |
Разработчик
Сейчас нет на сайте
| Я недавно создал такую программульку, которая подключает библиотеки, столько, сколько есть. github, здесь создаются программа и две библиотеки. Например есть сишный движок. Код программиста выполнен в формате библиотеки, то есть есть функция init и функция рендер, в которые нужно вписать логику. При компиляции это будет компилироваться в библиотеки. Если проект будет очень большим, то библиотек будет ну очень много. Вроде бы упрощает кодирование, но когда много библиотек это нормально?
|
|
| |
drcrack | Дата: Понедельник, 01 Июля 2019, 23:44 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| кому и зачем это может понадобиться, хотя бы в теории?
|
|
| |
afq | Дата: Понедельник, 01 Июля 2019, 23:49 | Сообщение # 3 |
Разработчик
Сейчас нет на сайте
| drcrack, сам код я написал для martuk, чтобы он посмотрел как на си пишется код. Я хотел написать нечто подобное. Я иногда обдумываю как создать код например для движка на c++ и си. И вот пример такой, например есть несколько уровней, пишешь свои файлы ( которые станут либами ), и в коде добавляешь вот такой код, он будет отвечать за то, на каком уровне будут какие либы загружены.
Код add_level ( 0, "main_menu" );
В коде, пример который я привёл, ну который на github, там библиотеки загружаются все, которые есть в папке. В движке же надо будет загружать те, которые принадлежат уровню.
|
|
| |
drcrack | Дата: Вторник, 02 Июля 2019, 00:03 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| нет, я говорю о каком-нибудь реальном кейсе использования людям которые пишут движки оно не нужно, они сами все сделают с нуля и лучше людям которые движки просто используют оно еще меньше нужно, т.к. все есть в движке
|
|
| |
Xakep | Дата: Вторник, 02 Июля 2019, 06:21 | Сообщение # 5 |
めちゃくちゃちゃ
Сейчас нет на сайте
| странная идея, зачем делать динамическую линковку? слинковать все файлы находящиеся в папке можно и через обычный makefile или cmake, какой в этом смысл?
|
|
| |
afq | Дата: Вторник, 02 Июля 2019, 13:23 | Сообщение # 6 |
Разработчик
Сейчас нет на сайте
| Xakep, допустим у меня есть такая структура
Код struct cycle { lib_init *linit; lib_run *lrender; lib *lso; int size; } *cycle;
В коде она инициализируется. И потом выглядит вот так. Заметь, в цикле рендер уже идёт отрисовка.
Код // init for ( int i = 0; i < cycle->size; i++ ) { cycle->linit[i](); } // render while ( 1 ) { for ( int i = 0; i < cycle->size; i++ ) { cycle->lrender[i](); } }
в цикле while выполняются все подключенные либы в простом цикле, то есть мне в код ничего вносить не надо, ничего генерировать не надо. Только этот код и сколько угодно либ.
|
|
| |
Xakep | Дата: Вторник, 02 Июля 2019, 14:15 | Сообщение # 7 |
めちゃくちゃちゃ
Сейчас нет на сайте
| Так а какой смысл так делать, какую проблему это решает? Единственное где я вижу пользу от подобного - это если у тебя время компиляции слишком большое, но и то спорно, если архитектура выстроена нормальн + если использовать тот же cmake или/и ninja, то не весь код будет компилироваться, а только тот, в который были внесены изменения (на практике не совсем так конечно, потому-что этот код может трогать и другие файлы и они тоже будут комплироваться).
|
|
| |
afq | Дата: Вторник, 02 Июля 2019, 16:45 | Сообщение # 8 |
Разработчик
Сейчас нет на сайте
| Xakep, такое наверное подходит только для подключения плагинов к программе.
|
|
| |
Xakep | Дата: Вторник, 02 Июля 2019, 18:59 | Сообщение # 9 |
めちゃくちゃちゃ
Сейчас нет на сайте
| Да, плагины это хороший юзкейс.
|
|
| |