Хочу начать как @pervognsen, процитируя Фейнмена:
"Что я не могу создать - я не понимаю".
xplatform
- это проект, который состоит из серии мини-проектов, которые в свою очередь формируют один большой проект. Каждый такой мини-проект я снимаю отдельным видео на своем youtube канале.
Описание под проектом bitwise, Пьера Вогнсена, идеально подходит под то, что я делаю тут. В программировании меня мотивирует не изобретение чего-то нового, что само по себе круто, а разбор уже того, что имеется. Я считаю что на данный момент в IT сфере много крутых проектов, с которыми можно разбираться годами, и что создание чего-то нового происходит из понимания того, что старое работает не так как надо, что само по себе подразумевает твое приняте того, что ты знаешь как работает старое. Возможно я утрирую, но это мое виденье.
В проекте xplatform
мы будем писать с нуля различные модули, которые интересны мне и вам. Если у вас есть пожелания по тому, чтобы вы хотели увидеть в формате видео-туториала на youtube, то пишите под последние видео ваши комментарии с темами, которые хотите видеть. На данный момент, сделано 6 модулей:
- Serialization
- Deserialization
- Networking module
- Blockchain(p2p)
- Event System(кроссплатформенно, с glfw + win32)
- Fullstack Web App(PostgreSQL, Next.js, Node.js(express), Youtube/Github API integrations, Cloud deployment)
Следующие темы будут варьироваться и меняться в зависимости от вашего желания их увидеть, и от моего - их делать, а предыдущие будут расширяться и дополняться
- Renderer(Raytracer/Rasterizer)
- Compression(LZ, Huffman)
- Custom Data Structures(Dynamic Array, Hashtable, Static Array, Tree)
- Custom library for heavily used data structores(STL-like)
- Thread pool
- Exception handling
- Allocators(На канале есть часовое видео по разработке malloc, но оно сюда не вписывается, так как слишком абстрактно)
- ECS
- Interpreter(И вообще, весь тул-чейн, который я бы хотел вам показать. Дебагер, профайлер, Статический анализатор... Скриптовой язык хотя бы для эллементарных задач)
- Build System(Где будет использоваться наш интерпретатор)
- Logging System
- Test Framework
- Utils(Различного рода вспомогательные утилиты, вроде
Cat
илиdumpbin
)
Не смотря на то что я планирую написать все эти вещи с нуля, мы для примера, будем пользоваться готовыми, чтобы понимать что они из себя представляют, и для того чтобы показать вам какие-то техники и правила software engineering, о которых я узнал за свое время тут. Например, premake/cmake
как билд-ситемы, eliot/spdlog
как логинг, готовые arena
и другие кастомыне алгокаторы, Lua/Python
или другие языки для скриптинга, Google Test
для тестов и так далее.
Расписание:
Я планирую делать 1 подобный модуль в месяц, с возомжными перерывами на другие видосы. От вашей активности под роликами будет в целом зависеть жизнь этой серии, но я в любом случае планирую закончить хотя бы часть модулей, чтобы вам было с чем работать для обучения.
Требования
Я постараюсь объяснять все, что я делаю в роликах на столько, на сколько могу, учитывая все, начиная от времени, вплоть до лени. Вам требуются понимание основы программирования на любом языке, и так же основа Computer Science, т.е общее представление о том, что это и из чего состоит. Это для того, чтобы мы могли разговаривать на одном языке. Вы можете задавать свои вопросы в комментариях под видео на youtube, у модулей, которые вас интересуют. Я постараюсь отвечать как минимум на большую часть технических вопросов.
Для людей же, кому интересно разбираться во всем этом на более глубоком уровне, напрямую со мной, то связь тут. Там я вам расскажу о возможностях. В скором времени эти возможности появятся в открытом доступе на boosty, но пока я не представляю всей картины целиком, поэтому уточняйте все моменты в ЛС сюда.