Код
#подборки

Must read. 5 статей о том, как создать свой язык программирования

Что Гвидо ван Россум думает о Julia и Go, какие книги о создании языков рекомендует комьюнити и 12 самых крутых фич языков программирования.

aslysun / shutterstock

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

Как вкатиться в тему?

Где читать: обсуждение на Reddit.

Зачем читать: чтобы не утонуть в море информации о том, как устроены языки, и разобраться с базовыми знаниями.

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

  1. Лексический анализ (токенизация) — процесс, который разделяет входные данные на отдельные части, то есть токены.
  2. Синтаксический анализ (парсинг) — создание дерева абстрактного синтаксиса с помощью тех самых токенов.
  3. Кодогенерация — процесс создания кода. Код обычно создаётся рекурсивно, с помощью дерева абстрактного синтаксиса.

Кроме того, дали несколько советов:

  • вникнуть в историю создания других языков (например, по «Википедии»);
  • изучить сайт с руководством по созданию языка программирования;
  • присмотреться к книге Альфреда Ахо и Джеффри Ульмана Principles of Compiler Design, в которой разобран процесс создания компилятора.

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

Что почитать по теории языков?

Где читать: обсуждение на Reddit.

Зачем читать: чтобы найти книги по теории программирования для начинающих.

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

  • «Типы в языках программирования» Бенджамина Пирса: хорошее введение в теорию, которое советуют многие. В отличие от остальных книг, она переведена на русский язык. Правда, Пирс написал её в 2002 году, поэтому она не освещает ряд актуальных тем.
  • Practical Foundations for Programming Languages («Практические основы языков программирования») Роберта Харпера. Эту книгу советуют читать уже после Пирса: в ней разобраны более подробные детали и для новичка она может быть сложновата.
  • Concepts in Programming Languages («Концепты в языках программирования») Джона Митчелла — книга рассказывает о традиционных парадигмах программирования и больше сосредоточена на практике, а не на теории.
  • Programming Languages: Application and Interpretation — книга бесплатна и доступна онлайн.

Кроме того один из комментаторов упомянул интересный сайт, на котором собрано огромное количество книг, видео и прочих материалов по самым разным темам, связанным с теорией языков программирования.

Самые классные фичи языков программирования

Где читать: в блоге The Renegade Coder.

Зачем читать: чтобы узнать об интересных фичах языков и понять, что бы вы хотели видеть в своём идеальном языке.

Джереми Грифски изучил почти 50 языков программирования и сделал список самых классных и необычных наворотов. Интересная особенность статьи — она постоянно обновляется. Пока в статье 12 пунктов, вот некоторые из них:

  • Макросы (макрокоманды) — функция метапрограммирования, которая позволяет менять язык, добавляя собственные правила в дерево абстрактного синтаксиса.
  • Лямбда-выражения — они похожи на анонимные функции, только лямбда-выражения можно использовать в качестве данных. Например, с их помощью можно сделать так, чтобы функция в качестве результата возвращала… функцию.
  • Последовательная типизация — совмещает в себе элементы статической и динамической типизаций. Она позволяет определять, когда типизация будет статической, хотя по умолчанию использует динамическую типизацию.
  • Инлайн (встроенное) тестирование — в языке Pyret, например, тестирование встроено в сам синтаксис языка, а тесты запускаются вместе с кодом. Благодаря этому вы никогда не забудете о них.

На каком языке писать свой язык программирования?

Где читать: обсуждение на Quora.

Зачем читать: чтобы получше разобраться в особенностях создания языков программирования.

Недавно на Quora появился вопрос — какой язык выбрать для того, чтобы создать свой язык программирования. Вот что ответили автору вопроса:

  1. Вопрос некорректен: сами языки программирования не пишут на других языках. Они пишутся на так называемых метаязыках, которые описывают правила и синтаксис. Пример метаязыка — БНФ (Формула Бэкуса — Наура).
  2. Зато на других языках пишут компиляторы. Для этого можно использовать любой язык общего назначения, однако чаще всего рекомендуют C, на котором написаны компиляторы Java, Python, PHP, JavaScript.

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

Интервью с создателем Python. Что он думает о других языках?

Где смотреть: запись прямого эфира на YouTube.

Зачем смотреть: чтобы узнать немного об истории создания Python, планах на будущее и отношении Гвидо ван Россума к другим языкам.

Создатель Python ещё в мае дал интервью Microsoft. Он рассказал, что думает о Rust, Go, Julia и TypeScript.

  • Rust, по его мнению, — отличный язык для своих целей. Ван Россум также отметил, что в Rust неплохо решена проблема с аллокацией памяти — в отличие от того же С++.
  • Язык Go он назвал «самым питонистым» языком общего назначения.
  • Julia, по мнению Гвидо, тоже напоминает Python — но с некоторыми отличиями. Поэтому он не советует программировать на Python и Julia в один день. Сравнивая эти два языка, Гвидо сказал, что в своей нише Julia явно выигрывает, зато сфера её применения не такая широкая.
  • TypeScript тоже получил высокую оценку мэтра. Ван Россум признался, что Python нередко вдохновляется TypeScript, хотя и отметил, что TypeScript тоже учится у Python.

Гвидо также рассказал об истории создания Python, переходе с Python 2 на 3 и о том, планируется ли выход Python 4.

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

Проверьте свой английский. Бесплатно ➞
Нескучные задания: small talk, поиск выдуманных слов — и не только. Подробный фидбэк от преподавателя + персональный план по повышению уровня.
Пройти тест
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована