Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

На каком языке программирования создаются языки программирования (извините за странность)?

ПрограммированиеИнформатика+1
Макс Евтишкин
  ·   · 756
Web-разработчик(Frontend/Backend). Разрабатываю и...  · 6 сент 2021
Сами по себе языки программирования не являются программами. Так что вопрос, того на каком языке создаются языки программирования - не до конца корректный.
Почему не до конца, хоть ЯП не является программой и не создаётся на каком-то конкретном языке программирования, для его работы нужна совокупность программ. И вот эти программы, в свою очередь, требуют написания. Но писать их можно на любом угодном вам языке.
Программы, которые нужны для работы Вашего ЯП, это – лексический анализатор, синтаксический анализатор и интерпретатор/компилятор.
Поэтому, на текущий момент, задача написания своего языка программирования сводится к следующим этапам:
  1. Описание грамматики/синтаксиса языка(например используя форму Бэкуса — Наура, сокрашено БНФ)
  2. Написание лексического анализатор, который будет анализировать код, написанный на вашем ЯП, и формировать из него список токенов
  3. Написание синтаксического анализатора, который будет формировать из списка токенов абстрактное синтаксическое дерево(AST)
  4. Переход от AST к абстрактному семантическому графу(ASG). По своей сути, ASG это AST с контекстом. Он содержит информацию о типах переменных, сигнатурах функций, местах использования и объявления переменных, и т.п.
  5. Последним этапом является запуск. Для этого необходим написать интерпретатор, либо компилятор языка, в зависимости от того, какого типа ЯП вы решили писать, интерпретируемый или компилируемый соответственно. Писать их можно на любом угодном Вам языке.
Однако, писать свой компилятор/интерпретатор может быть задачей очень затратной и, в некоторых ситуациях, бессмысленной. Поэтому, можно пойти по пути транспайлинга.
По своей сути, транспайлинг кода, это процесс перевода кода на одном ЯП в код на другом ЯП. То есть, перед Вами будет стоять задача компиляции программы написанной на Вашем ЯП в программу написанную, например, на C++, а затем пропуск результата через компилятор того самого C++
1 эксперт согласен
Михаил
подтверждает
29 сент 2021
Согласен
Лучший
Разработчик в Яндексе, студент ВШЭ по специальност...  · 4 сент 2021
У языков программирования есть понятия уровней. Когда-то давно люди писали программы набирая 0 и 1 на перфокартах и вставляя их в огромные компьютеры. Когда стало понятно, что это очень неудобно и очень часто приходится вбивать... Читать далее
2 эксперта согласны
Egor Voynov
подтверждает
5 сент 2021
Так же компилятор может быть написан на том же языке программирования, что и сам язык. Такой метод называется boots... Читать дальше
Увлекаюсь естественными науками и математикой...  · 4 сент 2021
Языки программирования создаются в первую очередь в голове автора концепции языка, после чего исписываются черновики идей, формируются структурные и синтаксические принципы, строится понятийный базис и, наконец, пишется... Читать далее