Давно меня посещает мысль о «принципиально новой концепции» языка программирования. Интересно насколько нова моя идея и что о ней подумает ЛОР. Я пока не бегу писать компилятор и объявлять его убийцей всех существующих сейчас языков, просто хочу обсудить теоретическую концепцию.
Итак, строго говоря компилятор этого языка не является таковым, это интерпретатор мощного макроязыка. Помимо циклов, ветвлений, подпрограмм, работы с переменными, этот интерпретатор имеет одну важную команду - вывод одного байта в выходной файл.
Для начала делается набор макросов для генерации кодов команд для целевого процессора. Типа такого (знающие ассемблер поймут):
macro mov dest, src {
db 0x..., ...
}
macro add dest, src {
...
}
macro sub dest, src {
...
}
Затем пишутся макросы для реализации уже высокоуровневых команд - ветвлений, циклов и т. д., которые в свою очередь для генерации кода обращаются к предыдущим, низкоуровневым макросам.
И таким образом строится набор библиотек макросов в том числе для работы с ООП и т. д.
Обычный программист просто подключает нужные наборы макросов (набор инструкций целевого процессора, набор высокоуровневых конструкций, соответствующий его стилю программирования и т. д.) и пишет программу как на любом обычном языке (просто каждое ключевое слово на самом деле является вызовом макроса генерации кода).
Что же получается в итоге? Не больше, не меньше - универсальный язык программирования. Во-первых, программист может программировать на любом уровне абстракции - от ассемблерных команд до классов и интерфейсов. Причём в случае необходимости смешивать всё это в одном исходнике (например, при разработке драйверов или ядра ОС, да, я понимаю, что злоупотреблять этим нельзя, иначе исходник станет непортабельным и нечитабельным, но мой язык не для быдлокодеров). Во-вторых, в рамках этого языка (при должном качестве макроязыка) будет возможно эмуляция синтаксиса любого существующего сейчас языка.
Так что не считая падения производительности (но собирать то программу надо 1 раз), этот компилятор будет способен заменить все существующие, предоставив дополнительные плюшки.