А насчёт "изобрести свой язык программирования"… давайте я научу вас изобретать языки программирования.
- Придумываете грамматику языка, то есть, как он будет выглядеть визуально, напечатанный.
- Придумываете семантику языка, то есть, что компьютер должен делать, дойдя до очередного элемента грамматики. На самом деле этот пункт должен быть первым, потому что языки программирования придумывают с определённой целью, для решения конкретных задач конкретным способом, но с обывательской точки зрения нужно начинать с формы, а не с содержания, поэтому я решил подстроиться.
- Пишете формальную EBNF для вашего языка. На бумажке. Например:
выражение = атом | список
атом = число | символ
число = [+-]?[\p{Number}]+
символ = [\p{Alpha}][\p{Alpha}\p{Number}].*
список = '(', выражение*, ')'
- Теперь на основании вашей грамматики на бумажке вы пишете скрипт для универсального конструктора парсеров bison. В процессе выполнения этого скрипта бизон вам делает код парсера токенов в узлы AST и заголовочный файл для токенайзера.
- Теперь на основании вашей грамматики на бумажке и заголовочного файла для токенайзера вы пишете скрипт для универсального конструктора токенайзеров flex. В процессе выполнения этого скрипта флекс вам делает код токенайзера.
- Теперь, имея токенайзер и парсер, вы дописываете код кодогенератора, который превращает узлы AST от парсера в вызовы LLVM, они будут генерировать код на промежуточном языке LLVM.
- Вуаля, вы написали фронтэнд к LLVM для вашего нового языка программирования. Компилируем его и всё, у вас есть компилятор вашего языка для всех платформ, которые поддерживают LLVM. То есть, всех.
- Публикуете статью о вашем новом языке на хабре, лоре, в соцсетях, в телеге, делаете сайт-одностраничник со ссылкой на скачивание компилятора.
- ???
- PROFIT!
Отбросив иронию в сторону, то, что я хотел сказать - это что создание языков программирования уже давно не чёрная магия, доступная только академии. Теперь это вопрос практической применимости, в 2022 году у нас уже есть готовые промышленные инструменты, документированные принципы, техники для этого. Да даже сами готовые языки программирования на любой вкус. Это уже не достижение —
LOLCODE,
Ook,
Chef,
Brainfuck,
GolfScript и десятки других эзотерических языков программирования тому доказательство.
Более того, концепция "языка программирования" распространяется не только на языки программирования общего назначения, которые будут компилироваться в машинный код. Среди паттернов проектирования есть паттерн под названием "
интерпретатор", он описан ещё в
исходной книге банды четырёх, двадцать семь лет назад, я только что перепроверил в своём экземпляре. Концепция, как и
книга, под названием
Domain-Specific Languages, предметно-зависимые языки, существует уже минимум десятилетие.
"Принципиально новое" в разработке программного обеспечения это уже давно не просто новый язык программирования.