CIDLib — платформа разработки на C++
Что это такое
CIDLib – это платформа для разработки на C++. Для многих разработчиков на C++ она может служить чем-то вроде продукта Qt, то есть комплексным набором инструментов и классов общего назначения для создания полнофункциональных приложений на C++. Основное отличие заключается в том, что CIDLib не основана на стандартных библиотеках C++ (подробнее об этом ниже). Кроме того, важно отметить, что CIDLib – это не просто библиотека, которую можно включить в свой код, это скорее «виртуальная операционная система», на основе которой строится кодовая база.
В CIDLib около 1100 классов (~450 000 строк кода). Вот примерный список функций, которые она предоставляет:
Переносимость
CIDLib в основном разрабатывается для Windows, но она всегда была спроектирована так, чтобы быть переносимой, поскольку это своего рода система виртуальной ОС и имеет полный уровень абстракции платформы. Поэтому всё вышеперечисленное построено исключительно с точки зрения наших собственных интерфейсов на чистом C++, что делает их высокопереносимыми. Самый низкий уровень, CIDKernel, разделён на интерфейсы плюс дополнительные драйверы платформы. В настоящее время существуют драйверы платформы для Windows и Linux.
Однако драйвер для Linux долгое время оставался неиспользованным, и я только недавно начал его восстанавливать. Я добился в этом хороших результатов, но я не специалист по Linux и мне определённо не помешала бы помощь. Я довёл дело до того, что инструмент сборки работает в Linux, и могу собрать CIDKernel и самый низкий уровень тестирования CIDKernel. Сейчас я работаю над тем, чтобы основные функции работали в Linux.
Не вся платформозависимая функциональность находится в CIDKernel. Существует несколько других библиотек, предоставляющих некоторые менее фундаментальные функции, которые, по крайней мере, в ближайшее время потребуют поддержки для каждой платформы. Они также структурированы с интерфейсом и реализациями для каждой платформы. На данный момент у них нет реализации для Linux. Блокировка ряда важных функций более высокого уровня делает библиотеку защищённых сокетов ключевой на данный момент, поскольку она блокирует ряд важных функций более высокого уровня от использования в Linux.
Код пользовательского интерфейса – это отдельная история, но было бы очень полезно, если бы базовая функциональность поддерживалась на обеих платформах. Обратите внимание, что код пользовательского интерфейса также инкапсулирован, но для обеспечения переносимости пользовательского интерфейса требуется гораздо больше.
Документация
На данный момент код в основном не документирован, за исключением самого кода. Инструкции по сборке находятся на вышеупомянутых страницах Wiki, см. раздел «Сборка». У меня есть готовый компилятор документации, который считывает содержимое XML и может выводить его в любом желаемом формате, в настоящее время HTML. Я начал работу над документацией, но её завершение займёт довольно много времени. Создание видео о технологиях, которые я разработал в рамках этого проекта. Они есть на моём личном канале Youtube по ссылке:
https://www.youtube.com/channel/UCAxCoATHgFBvqZhxFRnZsfw
Это видео, в частности, было бы хорошим началом (создание уровня абстракции платформы «Виртуальное ядро»).
https://www.youtube.com/watch?v=seXk3RbAjNU.
Оно якобы о виртуальном ядре, но также даёт хороший обзор функциональных блоков и того, как они расположены и т. д. Другие видео там также очень актуальны, хотя некоторые из них были созданы до недавних усилий по модернизации. В частности, те, что касаются перечислений, и ORB были до огромной переработки кодовой базы для использования более современного стиля перечислений класса enum. В остальном они всё ещё актуальны.
Я создал сабреддит для обсуждения и вопросов, который находится здесь:
https://www.reddit.com/r/CIDLib/
Создание
Как упоминалось выше, инструкции по сборке находятся на вики-страницах этого репозитория. Остальная документация (по мере её создания) будет в самом репозитории. Но вам нужно сначала собрать CIDLib, прежде чем вы сможете сгенерировать документацию. Поэтому инструкции по сборке должны быть отдельными.
CIDLib не сложно собрать, потому что у него есть собственная система сборки. Нет безумно сложных make-файлов или чего-то подобного. В настоящее время существует один простой make-файл для сборки самого инструмента сборки. После этого всё делается через утилиту CIDBuild. В настоящее время она настроена для Visual C++ 2019 на Windows и G++ на Linux. Но инструмент сборки использует подключаемый интерфейс инструментов и может поддерживать другие наборы инструментов.
Дайте мне знать, если у вас есть какие-либо вопросы или проблемы с инструкциями по сборке.
Платформа автоматизации CQC
CIDLib лежит в основе ещё одного моего крупного проекта под названием CQC — The Charmed Quark Controller, который представляет собой очень мощную платформу домашней автоматизации. CQC также теперь является открытым исходным кодом. Даже если вы им не пользуетесь, он может показаться вам интересным. И увидев, на что способен CQC, вы, возможно, почувствуете мощь CIDLib.
На канале Charmed Quark Youtube есть много обучающих видео по CQC:
https://www.youtube.com/user/CharmedQuarkSystems
Благодарности
Хотя CIDLib очень старается избегать использования какого-либо стороннего кода помимо ОС, он использует следующее:
— Scintilla — версия движка Scintilla упакована и используется в качестве редактора исходного кода языка CML. Вашим собственным приложениям на основе CIDLib это не понадобится, если только они не используют встроенную IDE CML. — Стандартные библиотеки JPEG — некоторые внутренности стандартных библиотек JPEG упакованы для обеспечения поддержки формата файлов JPEG.
В противном случае в Windows это просто API ОС и дополнительные SDK ОС (платформа речи, формат Windows Media и т.д.). На Linux, конечно, потребуется установка различных общих библиотек.
Предыстория
CIDLib и построенная на нём система автоматизации CQC являются результатом десятилетий работы автора, представляя около 50 человеко-лет работы вместе взятых. Самые ранние корни уходят примерно в 1992 год на OS/2 и первый компилятор C++, к которому у меня был доступ. Я начал писать класс строк, и с тех пор всё пошло под откос. Два объединённых проекта в настоящее время насчитывают около 1,1 миллиона строк кода.
Некоторые люди, видя это, сразу же начнут разглагольствовать о синдроме «изобретено не здесь», но это совсем не так. Мои личные интересы связаны с разработкой универсальных фреймворков, поэтому весь смысл этого заключался в том, чтобы сделать это. Это то, что мне нравится. И как только вы познакомитесь с C++ в контексте единой, согласованной системы, вы действительно увидите, каким он должен был стать.
Подводные камни
Конечно, в кодовой базе такого размера даже тот, кто потребляет столько кофеина, сколько я, не может вникать во все аспекты каждой подсистемы. Поэтому очевидно, что некоторые подсистемы могут быть проработаны другими людьми со специфическими интересами в этих областях. Однако, как указано в разделе целей ниже, это не должно становиться самоцелью и становиться настолько сложным, что никто не сможет его понять. Так что это даже не цель для каждой подсистемы быть взятой на...
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )