Как делают языки программирования?

Хотелось бы узнать, как разрабатывают языки программирования? Насчет C/C++ все понятно, на Ассемблере, а другие как?Например JavaScript или особенно хотелось бы узнать про HTML, неужели на том же C/C++, ведь он ничего общего с ним не имеет
  • Вопрос задан
  • 5742 просмотра
Пригласить эксперта
Ответы на вопрос 3
begemot_sun
@begemot_sun
Программист в душе.
На С\С++ разрабатывают автомат, который читает входной поток исходного текста и генерирует абстрактное синтаксическое дерево исходного кода. Далее это проходит определенные преобразования, и на выходе будет программа для интерпретатора или программа в машинных кодах или программа для виртуальной машины (для отображения в частности HTML).

Разработка такого инструмента на C\C++ или на чем то еще не вызывает затруднений. Т.к. это все языки с полнотой по Тьюрингу. Т.е. все алгоритмы которые вы можете реализовать в рамках этих языков могут быть реализованы простейшей машиной Тьюринга.
Ответ написан
@Mintormo
Сначала язык придумывают. Решают для каких задач он нужен. Потом пишут программу-компилятор которая преобразует текст исходного языка в набор команд (машинный код процессора, байт-код виртуальной машины). Так реализованы Java, C, C++, Rust, Ассемблер. Языки могут быть и интерпретируемыми: то есть вместо программы-компилятора мы пишем программу-интерпретатор которая, в отличие от компилятора, сразу исполняет разобранную программу. Так реализованы, например, HTML и CSS. В браузер встроен интерпретатор HTML который читает код странички и рисует ее на экране. Еще есть смешанные схемы, когда исходный код разбирается интерпретатором и сразу преобразуется в машинный код процессора для увеличения скорости выполнения (JIT-компилятор). Так реализован JavaScript.
Ответ написан
Комментировать
@potan
Функциональный программист
Задача компилятора - прочитать текст на языке программирования и вывести исполняемый файл или файл с промежуточным представлением (например, текст на ассемблере), которое может быть исполнено ранее написанными программами.
Ни какой черной магии в этом нет.
Первый компилятор конечно пришлось писать на ассемблере. Но следующие уже можно писать на существующих. В том числе компилятор с некого языка можно писать на этом же языке, используя предыдущую версию компилятора.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы