Некоторое время назад я «случайно придумал», что 80% всех веб-приложений выполняют в целом одинаковые вещи: отображение и управление деревом сайта, отображение и управление формами к структурам БД (в т.ч. простое отображение записей), рассылкой почт и т.п. То есть не то чтобы это было революционное открытие и раньше я этого не знал, просто мой мозг, к тому моменту окончательно испорченный DSL-ями, стал явно протестовать против очередного создания очередных однотипных вещей. Несмотря на все ухищрения в виде всеразличных фреймворков дело лучше концептуально не становится, просто кода чуть меньше, абстрактности в нём чуть больше. Но это полумеры.
Поделившись своими мыслями с товарищем в джаббере, выяснил, что такие мысли далеко не у меня одного, а погуглив на эту тему понял, что это в общем давно является объектом исследования разных групп, в том числе IBM (IBM Relational Blocks), Computing Laboratory в Оксфорде и т.п. Они в общем написали много статей про это дело (гуглить по Web DSL, WSL и т.п.).
Вот что пишут в статье "A Web Specific Language for Content Management Systems" товарищи Vidar Svansson и Roberto E. Lopez-Herrejon:
Our focus is on providing a language to define business domains based on concepts commonly found in a CMS, but at the model level rather than at the metamodel level. Furthermore, using WSL allows us to synthesize features and thus develop a product line.
В общем и целом, они применяют MDD (Model Driven Development), то есть на WSL описывают модели, по которым потом генерируется код, структура БД и скелет разметки. У них, конечно, в статье довольно абстарктно всё, но, имхо, сегмент CMS умрёт вот именно по этой причине. Вернее, не умрёт, а эволюционирует до неузнаваемости. То есть будут создаваться не CMS-ы, а языки их описания и это правильно, я считаю. Наример, гораздо проще будет решаться вопрос с валидацией таких решений. На уровне неформализуемых мыслей у меня есть подозрение, что можно ввести какой-нибудь обобщенный набор АДТ, с помощью которого можно будет исключительно декларативно описывать системы. Хаскелль и прочие академически строгие языки показывают, что в этом есть огромный профит. Но это всё, конечно, должно быть более-менее скрытно, то есть происходить внутри самого WSL, чтобы не грузить «промышленных программистов» заумью про вывод типов и т.д. и т.п.
Таким образом, как и во всех остальных сферах интернет-разработки, дело движеться к DSL-ям. Вообще, обилие наработок по этой тематике вселяет надежду, что вот-вот скоро-скоро будет уже какой-то практически применимый результат.
Хотелось бы это обсудить с кем-нибудь. Может есть какое сообщество? Да и публикаций побольше бы почитать, может сам что прототипное надумаю.
ЗЫ. Что характерно, бОльшая часть примеров в работах по WSL генерирует код на питоне :)