Comments 8
Написать генератор списков сложных проектов для программистов
Сложная задача это чтобы реализации всякого разного из палок и известной субстанции работали вместе как надо. А все эти алгоритмические задачки не более чем игрушки.
От себя рекомендую попробовать написать сборщик проектов. Например, для Java аналог Maven или Gradle. Сам сейчас такое пишу в свободное время для развлечения. Много тем затрагивается, например: алгоритмы, динамическая загрузка кода (плагины), последовательность превращения строчек с кодом во что-то живое, возможность применения на реальных проектах и т.д.
Тогда, пожалуйста, порекомендуйте, что можно почитать про это.
Начните с понимания того, как работает сборщик проектов для вашего языка. Например, для Java посмотрите на Maven (https://maven.apache.org/guides/index.html) и Gradle (https://docs.gradle.org/current/userguide/userguide.html). Почитайте, как вручную скомпилировать несколько файлов с исходным кодом, запаковать в архив. Можно начать писать свой аналог с решения этой проблемы - как автоматизировать сборку артефакта с возможностью конфигурации и кастомизации. Заодно разберетесь, как работают существующие решения и чем они отличаются друг от друга
А мне понравился этот список. Задачи классные. Добавил в закладки себе. Но для меня, новичка, они пока имеют уровень "пугающий".
И мне кажется, в этот список надо добавить что-то из современного, в самый конец списка. Например, написать свою нейросеть для ограниченной области применения. Благо задача "система автозавершения текста" (Т9) и следующая задача со сжатием плавно нас подводят к этому. А вероятно, вообще все эти задачи нас плавно подводят к написанию своей нейросети. Тот же поисковик с краулер-ботами - эти знания помогут собрать информацию для обучающей выборки. Даже написание своего языка, может помочь созданию нечто такого, что будет использоваться нейросетью. В общем, подборка супер, на мой не искушённый взгляд).
Стоит упомянуть https://github.com/codecrafters-io/build-your-own-x - известную подборку материалов по воссозданию популярных технологий в учебных целях.
Сложные проекты для программистов, чтобы учиться новому