Как создать свой язык

.

Создание языка программирования очень сложная задача, но выполнимая. Мы расскажем основные факторы при создании своего первого языка.

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

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

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

Изучение компьютера

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

Зачем вам новый язык программирования?

Заранее определитесь с предназначением языка. Существует 2 основных направления – универсальный инструмент или узкоспециализированное решение. 

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

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

Каких концепций будет придерживаться новый язык?

На этапе планирования следует ответить на ряд ключевых вопросов, они зададут направление развития:

  • интерпретация или компиляция?

    Код для компилирования будет преобразовываться в машинный, затем исполняться. При использовании интерпретатора код обрабатывается построчно. На вопрос нет правильного ответа, перед разработчиком стоит сложный выбор, в какую сторону уклон делать: функциональность, безопасность, скорость работы, удобство и т. д.;

  • типизация? Если да, то разработчику будет необходимо вручную устанавливать типы данных. В противном случае придётся описывать систему, которая будет определять типы;
  • в языке будет встроен автоматический алгоритм очистки мусора или управление отдать в руки пользователя?
  • планируемая модель языка программирования: структурное, ООП, функциональная логика. Кто знает, может вам удастся разработать что-то совсем иное;
  • как язык будет себя вести в отношении конкурентов, вставка из других языков планируется? Учитывать этот аспект важно при изначальной разработке языка;
  • планируется поддержка базового функционала языка или передать все функции на сторону фреймворков?
  • какой ожидается конечный вид архитектуры программы?

Последовательно отвечая на поставленные вопросы, в голове начнёт формировать облик детища, но появятся и другие вытекающие вопросы, требующие ответов.

Придумайте синтаксис для языка

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

При этом синтаксис может быть каким вы только сами захотите. К примеру, существует язык от отечественных разработчиков, который называется . Он имеет очень забавный синтаксис и писать программы на нем приносит лишь смех 🙂

PS: этот язык является лишь шуткой и его не стоит воспринимать как реальный язык. Посмотреть язык вы можете на их .

Назовите ваше детище

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

Как создать свой искусственный язык? С чего начать?

Сложные аббревиатуры и названия из 3 и больше слов – сложно запоминаются и быстро теряются в памяти. Имя должно быть относительно коротким и запоминающимся.

Выберите фундамент языка

Выбор языка, который будет взят за основу – это важнейший шаг. Если знаний достаточно, можно писать на ассемблере или даже машинном коде, но в современном мире лучше присмотреться к другим высокоуровневым языкам: C, , , Pascal и другие компилируемые варианты пригодные для интерпретируемых решений. В качестве достойных языков с интерпретаторами стоит присмотреться к: , , Ruby, – для компиляторов. Перечисленные пары снизят потерю скорости работы.

Лексер и парсер

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

Пугаться не стоит, так как уже есть готовые библиотеки для быстрого формирования лексеров и парсеров. Приложения упростят выполнение сложного этапа работы.

Создание основной библиотеки

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

Создание и написание тестов

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

Выпуск языка в свет

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

Больше интересных новостей

Серия видеоуроков по созданию своего языка программирования на Java без использования генераторов парсеров. По мере выхода уроков, буду обновлять статью.

Репозиторий проекта: https://github.com/aNNiMON/Own-Programming-Language-Tutorial
Плейлист на YouTube: https://www.youtube.com/playli…soWX0qTeQ9_-MFBE552C

#1. Заготовка, калькулятор

#1. Заготовка, калькулятор

#2. Вещественные числа, константы

#2. Вещественные числа, константы

#3. Оператор присвоения, переменные

#3. Оператор присвоения, переменные

#4. Строки, оператор print

#4. Строки, оператор print

#5. Логические выражения, if/else

#5. Логические выражения, if/else

#6. Улучшаем логические выражения и лексер

#6. Улучшаем логические выражения и лексер

#7. Циклы, блок операторов

#7.

Как создать искусственный язык

Циклы, блок операторов

#8. break, continue, цикл do/while

#8. break, continue, цикл do/while

#9. Функции

#9. Функции

#10. Пользовательские функции

#10. Пользовательские функции

#11. Одномерные массивы

#11. Одномерные массивы

#12. Многомерные массивы

#12. Многомерные массивы

#13. Шаблон проектирования «Посетитель» (Visitor)

#13. Шаблон проектирования «Посетитель» (Visitor)

#14. Программируем на OwnLang

#14. Программируем на OwnLang

Также прикрепляю плагин OwnLang для Netbeans. Для установки заходим в меню Tools -> Plugins -> вкладка Downloaded -> Add Plugins и выбираем nbm файл.
  com-annimon-ownlang.nbm

Как правильно:Создать искусственный язык

.

Ответ оставил Гость

Метод 1 из 2:
Используем алфавит
Править
Изображение с названием Create a Language Step 1
1
Придумайте название. Все в ваших руках! Только пусть это будет похоже на название языка!
Изображение с названием Create a Language Step 2
2
Начните с произношения. Вам выбирать, как будет звучать ваш язык. Но для того, чтобы это был не просто произвольный набор звуков, вам придется проработать систему, на которой они будут основаны.
Изображение с названием Create a Language Step 3
3
Создайте алфавит. Здесь начинается свобода творчества. Можно придумывать все, что угодно. Перед вами несколько путей:
Использовать пиктографию или символы. Во многих языках наподобие китайского для отображения устной речи используется пиктография или символы. Выбрав такой вариант, вам придется придумать произношение каждого отдельного символа. Каждый символ будет иметь собственное уникальное звучание. Хорошим примером являются числа. Это красивый, но трудоемкий способ.
Создайте алфавит или слоговую азбуку. Латиница, кириллица, хинди, греческий, японский… Создайте систему символов, которая будет представлять отдельные буквы или целые слоги, либо даже дифтонги.
Можно использовать уже существующий алфавит. Например, при использовании латинского алфавита, вам потребуется лишь придумать новые слова для обозначения понятий и предметов, а не совершенно новую фонетику.
Можно объединить разные алфавиты. Добавьте надстрочные знаки к существующим буквам (например, испанская «ñ»), чтобы получились новые буквы или звуки.
Изображение с названием Create a Language Step 4
4
Создайте словарную базу.

Это будут слова для вашего языка. Начать следует с общеупотребимых слов, а затем переходить к более редким.
Начинайте с основополагающих и часто используемых слов. Это будут местоимения, предлоги и т.д. Затем переходите к глаголам вроде «быть», «иметь», «любить», «ходить» и «делать». Не забывайте о гласных буквах, они очень важны для звучания языка.
Переходите к общим словам.

Как создать свой язык программирования: теория, инструменты и советы от практика

По мере расширения лексикона придумывайте названия для всего, что приходит вам в голову. Не забывайте о странах, частях тела, действиях и т.д. Также помните о цифрах!
При наличии сложностей всегда можно заимствовать слова из других языков. Также можно менять существующие слова. Например, мужчина на французском это homme. На испанском – hombre – почти так же, меняются лишь несколько букв и произношение.
Изображение с названием Create a Language Step 5
5
Накапливайте собственный словарь. Открывайте словарь и начинайте записывать слова и перевод. Так вы не только не забудете, что и как переводится, но и не придумаете дважды уже имеющееся слово.
Старайтесь придумывать удобопроизносимые слова – ни к чему ломать язык на каждом слове.
Изображение с названием Create a Language Step 6
6
Слова должны выглядеть естественно. Общей бедой создателей языков является злоупотребление апострофами в словах.
Изображение с названием Create a Language Step 7
7
Разработайте грамматические правила. Опишите правила составления предложений. Многое можно заимствовать из существующих языков, но для оригинальности следует добавить что-то свое.
Изображение с названием Create a Language Step 8
8
Придумайте образование множественного числа существительных. Нужно, чтобы язык давал четкое различие между «книгой» и «книгами». Во многих языках для этого просто прибавляется суффикс -s. Можно использовать не только суффиксы, но и префиксы. Можно даже прибавлять целое слово! (примеры: если книга = Skaru, то книги могут быть Neskaru, Skarune, Skaneru, Skaru Ne или Ne Skaru и т.д.)
Изображение с названием Create a Language Step 9

.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *