Я думаю, что Паскаль является каноническим процедурным языком.
Я также думаю, что Лисп (как ни странно, не ML) является каноническим "мета-языком".
С одной стороны, макрос - это фрагмент программы.который изменяет структуру данных, которая представляет фрагмент программы - так что вы используете язык для настройки языка.Во-вторых, общепринятой практикой является написание интерпретаторов с самостоятельным размещением, традиционно называемых метациркуляционными оценщиками: это программы, которые программируют и запускают их.
Конечно, любой другой язык может это делать.В Python у вас есть доступ к компилятору python, а PyPy - это реализация на python.Но у Лиспа, я думаю, самая сильная традиция делать это.
Но я аутсайдер Лиспа, так что я знаю ... 'надежда-это-помогает; -)