Другие языки программирования и технологии
Всегда было интересно, каким образом создаются собственные языки программирования?
Поискав в интернете, нашел ответ, что это программа компилирующая другой язык программирования, но можно процесс по подробней описать. Дело в том, что не понимаю, каким образом с одного языка на другой переводится понятия переменных, функций и констант. P.S Я школота, поэтому вопросы такие глупые :)
Начни с викистатьи и основных понятий (грамматики БНФ, лексика, семантика, синтаксис)
https://en.wikipedia.org/wiki/Extended_Backus–Naur_form
Самый простой пример - ассемблер, набор мнемоник, состоящий из элементарных операций (логических, арифметических, условных)
https://en.wikipedia.org/wiki/Extended_Backus–Naur_form
Самый простой пример - ассемблер, набор мнемоник, состоящий из элементарных операций (логических, арифметических, условных)
Вирт, "Построение компиляторов" - очень маленький учебник (192 страницы небольшого формата), содержащий всё необходимое для ответа на твой вопрос.
"Книга дракона", предложенная Παν μέτρον άριστον - это, конечно, библия разработчиков компиляторов, но там 1184 страницы куда большего формата.
"Книга дракона", предложенная Παν μέτρον άριστον - это, конечно, библия разработчиков компиляторов, но там 1184 страницы куда большего формата.
ДрагонБук.
Вопрос не тупой, но простого ответа нет. Зависит от языка.
В целом, обычно путь: Разработка грамматики - разработка лексического анализатора - разработка Синтаксического анализатора и построение синтаксического дерева - оптимизация - генерация кода или интерпретация на лету. Как-то так. По каждому этапу можно написать не очень тонкий томик (уже написан - Драгонбук).
Из инструментов классика:
- lex & yacc (flex & bison) - для LALR грамматик
- antlr для LL(k) - грамматик
- ну и самописные велосипеды никто не отменял конечно. (например, boost::spirit)
Вопрос не тупой, но простого ответа нет. Зависит от языка.
В целом, обычно путь: Разработка грамматики - разработка лексического анализатора - разработка Синтаксического анализатора и построение синтаксического дерева - оптимизация - генерация кода или интерпретация на лету. Как-то так. По каждому этапу можно написать не очень тонкий томик (уже написан - Драгонбук).
Из инструментов классика:
- lex & yacc (flex & bison) - для LALR грамматик
- antlr для LL(k) - грамматик
- ну и самописные велосипеды никто не отменял конечно. (например, boost::spirit)
Перевод с одного языка в другой - это трансляция. Перевод из языка высокого уровня в язык низкого уровня - это компиляция. Т. е. ты говоришь написании компилятора.
Как писать компиляторы?
Читать книги, например: Компиляторы. Принципы, технологии и инструментарий.
А также читать стандарт того языка, к которому его пишешь, и следовать ему, это самое главное =)
Сам по себе язык программирования - это ничто иное как СИСТЕМА ОБОЗНАЧЕНИЙ для выполнения алгоритмических операций, а также минимального набора математических операций. Ещё система типов, парадигма (или несколько парадигм) и много всего другого.
Как писать компиляторы?
Читать книги, например: Компиляторы. Принципы, технологии и инструментарий.
А также читать стандарт того языка, к которому его пишешь, и следовать ему, это самое главное =)
Сам по себе язык программирования - это ничто иное как СИСТЕМА ОБОЗНАЧЕНИЙ для выполнения алгоритмических операций, а также минимального набора математических операций. Ещё система типов, парадигма (или несколько парадигм) и много всего другого.
Все начинается с двоичного кода. нулей и единиц- которые по факту диктуют наличие и отсутствие электрического сигнала с помощью транзисторов, или их аналогов. Дальше слоями идет более высокоуровневый код, который в конечном итоге выливается в конечный ЯП. На любом уровне можно написать программу, в которой выполняются свои функции и прочее - среду для выполнения абстактного выдуманного кода. - вроде бы как-то так
Ну смари. Программа - это текст, а нужно превратить это в исполняемый файл, являющийся набором двоичных машинных кодов. Например, в Винде исполняемые файлы имеют расширение .exe. Если ты откроешь в текстовом редакторе любой экзешник - ты увидишь кракозябры. Потому что это машинный код, который понимает процессор, но не понимает человек. А язык программирования - это то, что понимает человек, но не понимает компьютер.
Задача компилятора - перевести текст с языка программирования в машинный код. Он парсит (разбирает) текст программы, написанный программистом, и записывает в экзешник двоичные коды, соответствующие командам в тексте программы.
Короче, учись писать парсеры. Ну или хотя бы погугли
Задача компилятора - перевести текст с языка программирования в машинный код. Он парсит (разбирает) текст программы, написанный программистом, и записывает в экзешник двоичные коды, соответствующие командам в тексте программы.
Короче, учись писать парсеры. Ну или хотя бы погугли
Похожие вопросы
- Как создаются модули языков программирования?
- Написать собственный язык программирования
- Как создать собственный язык программирования?
- А какие языки программирования изучали в 80х и на чём вы их изучали?
- Какой язык программирования выбрать для изучения для начинающего ? (внутри)
- И снова про языки программирования ^_^ Поправьте, если я ошибаюсь где-то.
- С какого языка программирования начать?
- Какой язык программирования следует изучить в первую очередь, если в программировании вообще ничего не понимаешь?
- Виды языков программирования
- С чего начать учение программированию? С каких языков программирования лучше начинать учиться программированию?