Как создать язык программирования: 15 шагов (с изображениями)

Оглавление:

Как создать язык программирования: 15 шагов (с изображениями)
Как создать язык программирования: 15 шагов (с изображениями)

Видео: Как создать язык программирования: 15 шагов (с изображениями)

Видео: Как создать язык программирования: 15 шагов (с изображениями)
Видео: 🔧ГЛУБОКИЙ ГАЙД КАК ПОЧИСТИТЬ КОМПЬЮТЕР ОТ ПЫЛИ, ПОШАГОВОЕ РУКОВОДСТВО ПО ЧИСТКЕ ПК 2024, Май
Anonim

Многие люди испытывают трудности или разочарование по поводу языков программирования, которые они используют каждый день. Некоторые хотят, чтобы все решалось более абстрактно, в то время как другим не нравится реализация функций, которые они хотят, чтобы они были «стандартными». Независимо от того, являетесь ли вы ИТ-специалистом или просто любителем, много раз вы можете захотеть создать новый язык программирования.

Шаги

Создание языка программирования, шаг 1
Создание языка программирования, шаг 1

Шаг 1. Ознакомьтесь с технологией

Вы не можете создать язык программирования, если не умеете пользоваться компьютером.

Создание языка программирования, шаг 2
Создание языка программирования, шаг 2

Шаг 2. Ознакомьтесь с терминологией

Авторы компиляторов часто используют незнакомую терминологию. Прочтите компиляторы, прежде чем продолжить. Обязательно знайте все, что вам нужно знать.

Создание языка программирования, шаг 3
Создание языка программирования, шаг 3

Шаг 3. Решите, какую проблему решает ваш язык

Он обращается к проблеме, специфичной для предметной области, или это язык общего назначения?

Создание языка программирования, шаг 4
Создание языка программирования, шаг 4

Шаг 4. Подумайте о семантике вашего языка и его концепциях

  • Собираетесь ли вы разрешить прямой доступ к указателю или нет?
  • Какие типы данных у вашего языка?
  • Это статический или динамический язык?
  • Какая у вас модель памяти? Собираетесь ли вы использовать сборщик мусора или ручное управление памятью? (Если вы используете сборщик мусора, приготовьтесь написать его или адаптировать существующий к вашему языку.)
  • Как собираетесь обрабатывать параллелизм? Собираетесь ли вы использовать простую модель потоков / блокировок или что-то более сложное, например, модель Линды или актора? (В настоящее время компьютеры имеют несколько ядер.)
  • Встроены ли в язык примитивные функции или все будет из библиотеки?
  • Какая парадигма или парадигмы вашего языка? Функциональный? Объектно-ориентированный? Прототип (например, JavaScript)? Аспектно-ориентированный? Ориентированный на шаблон? Или что-то совершенно новое?
  • Как ваш язык будет взаимодействовать с существующими библиотеками и языками (в основном C)? Этот момент важен, если вы создаете предметно-ориентированный язык.
  • Наконец, на некоторые ответы на эти вопросы будет дан ответ на втором шаге, и это поможет вам ответить на следующем шаге.
Создание языка программирования, шаг 5
Создание языка программирования, шаг 5

Шаг 5. Подумайте о некоторых конкретных задачах, которые кто-то хотел бы выполнять с вашим языком

Например, «они могут захотеть направить робота следовать по линии», или «они могут захотеть создать в нем относительно портативные настольные программы», или «они могут захотеть создать с его помощью веб-приложения».

Создание языка программирования, шаг 6
Создание языка программирования, шаг 6

Шаг 6. Поэкспериментируйте с идеями синтаксиса (текстом языка) для приведенных выше примеров

Будьте осторожны, чтобы ваш язык находился в контекстно-свободной языковой категории или что-то внутри нее. Ваш генератор парсеров, и вы оцените его позже

Создание языка программирования, шаг 7
Создание языка программирования, шаг 7

Шаг 7. Напишите формальную грамматику синтаксиса

Создание языка программирования, шаг 8
Создание языка программирования, шаг 8

Шаг 8. Решите, будет ли язык интерпретироваться или компилироваться

Это означает, что в интерпретируемом мире ваш пользователь обычно редактирует вашу программу в редакторе и запускает ее непосредственно в интерпретаторе; находясь в скомпилированном мире, ваш пользователь будет редактировать вашу программу, компилировать ее, сохранять где-нибудь полученный исполняемый файл и запускать его.

Создание языка программирования, шаг 9
Создание языка программирования, шаг 9

Шаг 9. Напишите интерфейсный сканер и парсер или найдите инструмент, который поможет вам в этом

Также подумайте о том, как ваш компилятор / интерпретатор будет предупреждать вашего пользователя об ошибочных программах и синтаксических ошибках

Создание языка программирования, шаг 10
Создание языка программирования, шаг 10

Шаг 10. Используйте информацию синтаксического анализатора, чтобы написать объектный код или промежуточное представление

Попросите парсер создать AST, затем создать свой объектный код из AST, используя трехадресный код или его старший брат SSA, а затем создать таблицу символов для определения ваших функций, глобальных переменных и т. Д.

Кроме того, в зависимости от вашего языка вы также можете создать таблицы виртуальных указателей или информационные таблицы для ваших классов (для поддержки отражения или RTTI)

Создание языка программирования, шаг 11
Создание языка программирования, шаг 11

Шаг 11. Напишите исполнитель или генератор кода, который все свяжет воедино

Создание языка программирования, шаг 12
Создание языка программирования, шаг 12

Шаг 12. Напишите множество тестовых программ для проверки языка

Вы хотите создавать программы, которые подчеркивают бремя вашей формальной грамматики, чтобы видеть, что ваш компилятор принимает все, что находится внутри вашего определения, и отвергает все, что находится за его пределами

Создание языка программирования, шаг 13
Создание языка программирования, шаг 13

Шаг 13. Подумайте, как пользователь будет отлаживать собственные программы

Создание языка программирования, шаг 14
Создание языка программирования, шаг 14

Шаг 14. Если ваш язык использует стандартную библиотеку, вы захотите написать ее

Вместе со сборщиком мусора или другими функциями среды выполнения, если они вам нужны.

В частности, если вы пишете компилятор, вам понадобится код, который операционная система выполнит, чтобы начать выполнение пользовательского кода (например, выделение всех глобальных переменных)

Создание языка программирования, шаг 15
Создание языка программирования, шаг 15

Шаг 15. Опубликуйте свой язык вместе со спецификацией для него и некоторыми примерами того, что вы можете на нем делать

Не забудьте задокументировать, как вы можете интегрироваться с существующими библиотеками, языками и как использовать функции времени выполнения и / или стандартную библиотеку

Видео - с помощью этой службы некоторая информация может быть передана YouTube

подсказки

  • Начните с разработки своего языка и не пишите никакого кода, пока вы не будете удовлетворены и не ответите на все (или большинство) вопросы или проблемы, связанные с вашим дизайном, поскольку легче изменить дизайн раньше, чем позже.
  • Знайте свою целевую платформу (операционную систему и библиотеки) для вашего компилятора / интерпретатора, в конце концов, вы собираетесь ее использовать и манипулировать ею.

Предупреждения

  • Подумайте, действительно ли вам нужен новый язык и что в вашем языке есть нового, чего нет в других языках (это может быть комбинация функций или одна функция).
  • Сложно писать на языках, если ты не знаешь, что делаешь. Это тоже требует большой практики.
  • Приготовьтесь потратить некоторое время на языковой дизайн, так как у вас не будет возможности изменить свой язык после того, как вы напишете компилятор и пройдете проектную точку.
  • Не пытайтесь объединить свои особенности в союз нескольких языков, например, говоря, что ваш язык будет объединением языка X, языка Y и языка Z. История показала нам, что языки, созданные таким образом, никогда не будут иметь успеха. или все будут программировать PL / 1 вместо чего-то, основанного на C.

Рекомендуемые: