Новогодние скидки до 45% на обучение digital-профессиям.

Блог

11 шагов к созданию языка программирования

Возможность стать в один ряд с Гвидо ван Россумом и Джеймсом Гослингом.
03 апреля 20183 минуты4790

Мотивы создания нового языка программирования всегда очень разные: кто-то делает это от скуки, кто-то с целью преодоления существующих барьеров, кто-то для собственного удобства. Вы тоже можете попробовать создать собственный язык, руководствуясь следующими 11 пунктами. Кто знает, возможно, вы станете заметной личностью в мире программирования?

Изучите устройство компьютера

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

Изучите терминологию

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

Определитесь с назначением языка

Сразу решите, будет ли ваш язык иметь узкую специализацию или ваша цель – универсальный инструмент, который окажется востребован в любой области IT. Оцените объём работы, которой вам предстоит проделать, поставьте цели, которых вы хотите достичь. Ну и самое главное – определитесь: вы хотите покорить мир или просто попробовать для себя что-то новое?

Очертите основные концепции

Есть ряд вопросов, на которые необходимо ответить:

  • Компиляция или интерпретация? Компилируемый код целиком собирается в машинный, после чего исполняется. Интерпретируемый код разбирается и выполняется построчно. Здесь, как и во всех дальнейших вопросах, нет однозначно правильного ответа, вам предстоит выбирать между удобством, функциональностью, безопасностью, производительностью и прочими аспектами.
  • Статическая или динамическая типизация? В первом случае пользователь должен самостоятельно задавать типы данных, во втором – вам придётся описать систему для определения типов.
  • Будет ли язык содержать автоматический сборщик мусора или ручное управление памятью?
  • Какую вы планируете использовать модель программирования: ООП, логическое функциональное, структурное? А может, вы собираетесь изобрести что-то принципиально новое?
  • Будет ли ваш язык поддерживать вставки из других языков программирования?
  • Содержит ли язык базовые функции или все возможности будут поддерживаться из внешних библиотек?
  • Как будет выглядеть архитектура программы?

Эти вопросы помогут сформировать облик будущего языка и породят ряд новых базисных вопросов, на которые тоже придётся дать ответы.

Поэкспериментируйте с синтаксисом

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

Дайте название языку

Время перейти к самому простому – подобрать название. Большинство разработчиков не вкладывает глубокий смысл в это действие, давая языку простое, легко запоминаемое имя. Советуем и вам придерживаться этого посыла. Мудрёные аббревиатуры или многословные названия, с одной стороны, не привлекают пользователей, с другой - быстро вылетают из памяти.

Выберите язык для языка

Новый язык надо на чём-то написать. Суровые гики могут использовать язык ассемблера или машинные коды, но в XXI веке куда больше смысла ориентироваться на высокоуровневые языки: Pascal, C, C++, Swift (компилируемые языки) для интерпретируемого варианта; Java, JavaScript, Python, Ruby (интерпретируемые языки) — для компилируемого. Такие пары обеспечат минимальные потери в производительности.   

Поработайте над лексером и парсером

Лексер – инструмент, отвечающий за лексический анализ, разбиения кода на составные единицы, называемые токенами. Парсер, отвечающий за синтаксический анализ, организует иерархию из токенов, определяя порядок их взаимодействия. Графически это можно представить следующим образом:

Не спешите хвататься за голову, для создания лексеров и парсеров есть специальные библиотеки и приложения, которые снимут эту достаточно сложную часть работы.

Создайте стандартную библиотеку

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

Напишите уйму тестов

Создать язык – не так сложно, как заставить его нормально работать. Определить работоспособность всех механизмов языка вам помогут специальные тесты, очерчивающие границы «можно» и «нельзя» и не вызывающие при этом исключительных ситуаций, которые поставят возможности языка в тупик.

Опубликуйте язык

Когда язык будет готов – не смейте прятать его в стол. Даже если мировое господство – не ваша цель, публикация поможет собрать отзывы, найти единомышленников для дальнейших усовершенствований языка. Ну и в конце концов, этим вы сделаете личный вклад в программирование.

языки программирования
Нашли ошибку в тексте? Напишите нам.
Спасибо,
что читаете наш блог!
Posts popup