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

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

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

Технологии
Александр Мануйлов
  ·   · 24,0 K
Первый
Делал модули для CMS (сайты) на PHP. Разрабатываю...  · 11 окт 2021
Для начала желательно изучить уже существующие языки программирования. Если будете знать их слабые и сильные стороны, то это поможет избежать ошибок проектирования и взять из них только всё самое лучшее.
Далее придумывается синтаксис, набор конструкций. То как выглядят циклы, функции, условие, комментарии, структуры данных и прочее. Попробуйте написать на вашем языке короткую программу и посмотреть как она выглядит, как читается. Много ли приходится набирать символов, как лучше форматировать текст, с отступами или без. Попробуйте разные варианты и сравните. Покажите другу. Важным фактором является масштабируемость. То как можно будет в дальнейшем добавлять новые фичи в синтаксис.
Когда синтаксис разработан, то можно приступать к написанию парсера. Можно взять готовые парсеры, которые генерируют текст c++ программы, исходя из правил разбора. Но я бы рекомендовал делать парсер самостоятельно, чтобы не тратить время на изучение сторонних программ и их правил. Обычно парсер формирует промежуточные данные, содержащие AST деревья, учитывающие приоритеты операций. Чтобы, например, умножение вычислялось перед сложением в выражении (a+b*c). Но этот этап можно пропустить для языка, не поддерживающего сложные выражения (или в случае транслятора в язык с идентичным приоритетом операторов). На основании промежуточных данных формируется список инструкций. Или массив списка инструкций, для ветвления через инструкцию "обратиться к элементу массива под номером n", и ленивых вычислений. В случае интерпретатора мы просто выполняем по порядку все инструкции из полученного списка (инструкции могут работать со стеком - это такой массив данных, хранящий временные значения, полученные от предыдущих инструкций). А в случае транслятора (или компилятора) экспортируем список в итоговый файл или файлы.
Важным нюансом является обработка ошибок и выдача отчёта в какой строчке скрипта что не так. Одни ошибки ловятся на этапе работы парсера (напр. пропущена запятая). Другие - на этапе проверки промежуточных данных (напр. вызов функции, которая не была определена). Бывают и run-time ошибки. Разработчик языка определяет какие ошибки являются критическими и должны приводить к остановке работы программы, а какие игнорируются и программа продолжается.
p.s. Я разрабатываю новый язык программирования ksi (уже есть рабочий прототип интерпретатора).
Я считаю что у каждого из всех свой язык. Нейрокомпьютеры могут общаться только на одном языке. Каждый человек... Читать дальше
Работа - в сфере IT. Увлечения - книги, финансы...  · 29 апр 2021  ·
id
Отличный и очень интересный вопрос. В первую очередь, наверное, нужно выявить потребность - зачем нужен новый язык. И придумать его название. Далее - нужно создать интерпретатор\компилятор языка. Для этого нужно понимать, какие... Читать далее
Заходите в Яндекс.ДзенПерейти на bit.ly/3w79GNg
По образованию Автоматизатор производств. По...  · 8 мая 2016
>>Наверное, для того чтобы понять, как они создаются, нужно узнать - почему. ^^ Там так и не было ответа как именно они создаются. Только ответ на "почему" и есть. По факту, создать язык = создать компилятор который интерпритиру... Читать далее

Можно писать не компилятор. Можно писать интерпретатор.

Первый
Наверное, для того чтобы понять, как они создаются, нужно узнать - почему. При разработке нового языка программирования люди могут преследовать разные цели. Во-первых, банально сделать жизнь программиста более легкой, а его код... Читать далее
учитель информатики  · 10 июл 2015
Создать какой-нибудь язык программирования не сложно, с этим даже справится ребёнок. Язык программирования - это набор ключевых слов и команд из которых строится алгоритм для исполнителя. Команды должны быть чёткими и недвусмысл... Читать далее

"учитель информатики" - сразу видно