XDE.Academy
TODO:Черновые концепции уроков
- Описать отличие нашей программы от других. Преимущественно они дают предметы автономно, изредко связывая их. Мы же в силу выбранной архитектуры изначально готовим для них обобщённую платформу. А потом заниматься собой или формированием социальных структур в школах вообще не учат. Включить на принцип гетерогенности из Technology, а на неё же может сослаться и XDE Team.
- Важная роль концепции I/O.
- Эксперимент в консоли (spaced repetition).
- Абстракция стоящая за консолью и концепция IoC.
- Замена через IoC/DI консоли на чат-бота.
- Отдельный чат сервер для образовательной когорты.
- Использовать ALPHA в качестве стенда для изучения. И через всякие lspci/lshw изучать его устройство.
TODO:Выбор экосистемы
- Rust
- Rust хорош в DSL, но macro_rules! немного многословны.
- Критикуемая система borrowing и другая специфика Rust может выглядеть натуральной, если начать с неё в самом начале.
- Cx
TODO:Потенциальная стратегия
Программное обеспечение в целом и языки программирования в частности – это в некотором смысле универсальный язык для любых областей человеческой деятельности. Музыканты и биологи, художники и работники строительной отрасли, практически не осталось специалистов, которые бы так или иначе не использовали те или иные приложения.
Возьмем в качестве точки опоры идею приложения XDE App. Это продукт, который "делает всё". Но речь здесь идёт не о абсурдной, фантастической задаче, когда нечто что делает всё и сразу. А о том, что системные архитекторы, разрабатывающие гигантские программные комплексы, называют масштабированием. Решение начинается с некоторой платформы, которая предусматривает фундамент, на котором всем остальным задачам будет намного проще выстраиваться. Это как несущая основа здания, которое может потом заполняться самыми разными офисами.
В некотором смысле такие платформы уже существуют. Для управления проектами и тестирования, для организации интерфейсов и коммуникаций, для хранения данных и их обработки. Например, СУБД (системы управления базами данных) предлагают универсальные механизмы для работы с данными, в независимости от того, описывают они музыкальное произведение или конструкцию космической ракеты.
Формирование такого фундамента в приложении XDE App – становится очень похожим на формирование основы образования. Как лучше понять другие области знаний, как их организовать, как разделить общие и специфичные детали, какие между ними зависимости, а значит в какой последовательности с ними работать. Разработка подобного универсального приложения выглядит как органичный образовательный процесс. Выстраивание форм внутри приложения и выстраивание аналогичных конструкций в нашем понимании мира практически полностью тождественны. А значит, его разработку можно сделать основой образовательного процесса.
С точки зрения интересов XDE Team и её стратегии первым идёт развитие личности. И первые же шаги в разработке данного приложения могут быть нацеленны именно на эту задачу. Особенно в рамках данной академии.
Например, есть такая техника запоминания материалов как "Spaced repetition". В быту многим известно приложение Anki, которое её реализует. Оно задаёт человеку вопрос из базы и в зависимости от правильности ответа на него определяет время, когда его задать в следующий раз. Ошибся – имеет смысл повторить через день. Уже третий раз отвечаешь правильно – можно отложить и на месяц.
Эта техника не зависит от областей знаний и с равным успехом может быть применена в любой из них. По сути, ученики начинают с получения базовых знаний из Technology и Informatics для того, чтобы их сразу применять к созданию простого модуля XDE App, реализующего кросс-дисциплинарную технику "spaced repetition", которая в свою очередь начинает помогать в закреплении полученных знаний.
На следующих этапах могут быть исследованы области управление временем, задачами. Которые также применимы к самым разным областям и аналогичным образом могут помочь студентам более эффективным образом организовывать свой же образовательный процесс. Который, напомним, мы рассматривает тоже как продукт деятельности инженера, как и в любой другой сфере их деятельности.
За этим процессом может последовать организация работы командной работы и коммуникаций (разработка XDE App – определённо потребует командной работы), модульные системы, способы взаимодействия между этими модулями и многие процессы, связанные с Technology и Informatics как дисциплинами, которые мы рассматриваем в роли базовых.
Последовательное и методичное внесение знаний в приложение будет выступать средством контроля органичности и целостности образовательного процесса, поскольку в противном случае приложение просто не может работать.
TODO:Потенциальная тактика
Как правило, образование начинается с решения примитивных задач. От простых они отличаются тем, что носят синтетический характер. Тогда как простые – это понятное решение даже для самых сложных. Опыт решения примитивных в реальной практике практически бесполезен, поэтому большинству студентов приходится переучиваться непосредственно на рабочем месте и немалая доля из полутора десятков лет инвестированных в образование становится бесполезной. Мы идём по принципу методичного выстраивания очень сложного продукта – XDE App.
TODO:Есть важные принципы (IoC, модульность, реюзинг, управление изменениями и т.п.) без которых невозможно создать мало-мальски серьёзный продукт. И есть атомарные задачи с которыми может никогда не столкнётесь. Первое учит мыслить масштабно и в процессе может задействовать алгоритмическое мышление. Второй развивает только алгоритмическое мышление.
В качестве эксперимента можно попробовать начать с .NET и BDD, в рамках концепции Executable Specifications/Specs. Во-первых, сложные приложения невозможно строить без TDD-подхода, который сам по себе может быть интересной инженерной концепцией. Во-вторых, сам BDD начинается с простых выражений на естественном языке. Дальше достаточно короткий переход к DI, за которым будут самые простые реализации, с последующим ростом до самых сложных.
Таким образом последовательность развития события могла бы выглядеть следующим образом:
- В контексте больших задач рассказать о TDD/спецификациях (Executable Specifications/Specs) и создать Specs-сборку (простое консольное приложение). Провести параллели с TDD в других областях. Были идеи касающиеся строительства и ремонта.
- Описать первую задачу для "Spaced repetition" (можно комментариями) и функцию для её тестирования.
- Вывести абстракцию с которой будет работать этот тест. Пояснить, что за ней могут прятаться самые разные реализации. Рассказать про изменения (один из главных инженерных принципов).
- Когда задачи потребует подключения дополнительных модулей (Specflow, NSubstitute, ...) можно рассказать про модули и модульность. В качестве примера привести модульность образовательного процесса, чья органичная корреляций описана в самом начале.
- Показать, как мы можем осуществить "мокинг" интерфейса до реализации.
- Выйти на хостинг и DI/IoC.
- TODO:Спланировать реализацию на примере чатбота Telegram.
- TODO:Можно попробовать показать SRP на примере "e;Spaced repetition". Он может работать для всего, что повторяется периодически. Например, физических упражнений. И рассмотреть возможность конвертации сущностей в карточки вместо их ручного создания (SSoR, реюзинг).
Альтернативный вариант может строиться на использовании VSCode + Polyglot notebooks.
- Описать первую задачу для "Spaced repetition" в виде текста в DIB/ipynnb и функцию для её тестирования.
- TODO:...
Ещё один вариант мог бы строиться на экосистеме Rust. Из сильных сторон видится:
- Тесты – базовый инструмент.
- Проще реализовывать DSL. Можно постепенно завернуть функции тестирования в макросы.
- Упрощённая модель ООП.
- Органичная модель сборки.
Rust может опираться на генеративный подход. Из Specs в продуктых для других языков и сред. Например, Swift-проект.
InBox
Интересным практическим кандидатом для исследования является идея рассматривать человеческую деятельность на примере лаборатории Application flow.