Я хотел бы написать свой собственный (игрушечный?) Веб-фреймворк для обучения. Я хочу пройти весь процесс с нуля. Я бы хотел, чтобы он обслуживался через Apache в Linux. Я ищу лучший путь к пониманию каждого шага того, что происходит при использовании веб-фреймворка. Я хотел бы использовать любой язык, который облегчает этот процесс. Какой лучший способ для меня это сделать? Под «лучшим» я подразумеваю «приводит к глубокому пониманию всего, что происходит в современной веб-среде».
Я собираюсь дать несколько ироничный ответ:
Если бы я начал это начинание, я бы начал с написания 3-5 веб-приложений без поддержки фреймворка. Выясните, что всегда одинаково, и учтите это. Рефакторинг приложений, чтобы использовать его.
Затем напишите еще несколько веб-приложений, используя ваш фреймворк. Наблюдайте за тем, что вы делаете снова и снова. Учтите это и добавьте в свою структуру. Рефакторинг приложений, чтобы убедиться, что поддержка вашей платформы работает.
Повторяйте это и продолжайте добавлять функции, пока платформа не станет настолько большой, сложной и громоздкой, что вам захочется начать все сначала. Затем начните сначала.
А если серьезно, вы не узнаете, как работают веб-фреймворки, написав фреймворк с нуля. Вы можете разрабатывать фреймворки только тогда, когда у вас есть достаточно глубокие знания в предметной области.
Если вы хотите узнать, что заставляет работать фреймворки, сделайте пару реальных проектов на разных фреймворках/языках. Посмотрите, что работает, почувствуйте, что не работает. Узнайте, на какие компромиссы в дизайне пошли разработчики фреймворка. Попробуйте rails, jsf, seaside, lift, compojure, wicket, ... что угодно.
Развлекайтесь и набирайтесь опыта.