Чи мали ви досвід створення власної мови програмування?

Існує безліч різноманітних мов програмування на будь-який смак, але можна створити й власну, яка буде задовольняти всі потреби.

На просторах інтернету користувач поділився історією, як він створив мову програмування під назвою Bolt і детально описав цей процес в серії, що складається з 11 дописів. Там ви знайдете інформацію від написання парсера, до додавання успадкування та перевизначення методів

Навіщо взагалі створювати мову програмування? Автор поділився своєю думкою й щодо цього:

  1. Це весело
  2. Це круто мати власну мову програмування
  3. Це хороший side-проєкт

А ви мали досвід створення власної мови програмування? Або, можливо, хотіли б це зробити?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Якщо у мові програмування, яку ви використовуєте, є підтримка pattern matching в якійсь формі (як от в OCaml, який використовує автор допису, Haxe, або у сучасному C#), писати компілятори досить весело та приємно.

Якщо ж з практичної точки зору, варто дивитись, які є альтернативи, та які плюси/мінуси. Наприклад,

  • Одного разу я писав МП для місцевого університету, що нагадувала спрощений асемблер з підтримкою масивів та реєстрів довільного розміру. Здається, її досі використовують в курсі з поясненням роботи мікрокоду на процесорах.
  • Я написав скриптову МП для кількох ігор (Nuclear Throne, Rivals of Aether, Forager) на GameMaker, що майже ідентична МП самого GameMaker. Це досить спростило використання системи кінцевим користувачем (якщо ви використовували GM, потрібно лише подивитись API з описом функцій/ресурсів цієї гри), але значно програє у швидкості виконання системам з just-in-time компіляцією.
  • Іноді мають місце компілятори («транспілятори») з однієї МП в іншу (будуємо абстрактне синтаксичне дерево, замінюємо несумісні структури, друкуємо в синтаксис іншої мови), але досить важко зробити такі речі дійсно універсальними.

Я колись в минулому житті написав інтерпритатор спеціалізованої мови переписуючих правил [termware] (і захистив диссертацію). Цікаво що років через 10 після того як випустив, виявив, що він досі використовується у деяких проектах... А взагалі якщо є час — ціукаве заняття...

Так, написати інтерпретатор за вихідні — розвага у студентські часи. Потім було парочку проектів, де цей досвід став у нагоді.

У цілому досить важко провести межу, бо будь який власний текстовий формат з можливостю щось заскриптувати може розглядатися як мова програмування. Але знання LEX + YACC чи аналогів досить специфічні.

Так. Це мій проект VPASM (мова, компілятор, та віртуальна машина), який використовується у моєму комерційному продукті для запобігання стоврення кейгену.

Зараз вже стільки мов на будь який смак тож проблема не в мові ( синтаксисі) а в тому який компілятор, рантайм та інше. А головне наскільки спроможна буде ця мова «злетіти» щоб заручитися підтримкою хочаб невеличкого комюніті що її буде рухати дали.

А головне наскільки спроможна буде ця мова «злетіти»

А навіщо? По-перше, мова може бути прив’язано до конкретного проекту, бути локальною. По-друге, в принципі, якщо ставити за ціль писати лише код, який злетить, то це означає не писати нічого взагалі.

Зараз вже стільки мов на будь який смак

Це ж не означає, що не може виникати нових ідей, які буде цікаво спробувати.

усі або майже усі ідеї вже реалізовані у LISP
якщо довпродоби фукнкціональні мови то у Erlang є або все або майже все
нащо ще одну мову будувати яка нікому не цікава крім її автора?

нащо ще одну мову будувати яка нікому не цікава крім її автора?

Якщо це цікаво автору, чому й ні? Плюс можуть бути дослідницькі проекти.

усі або майже усі ідеї вже реалізовані у LISP

Кількість мов, які полу створені після LISP натякає на зворотнє

якщо довпродоби фукнкціональні мови то у Erlang є або все або майже все

Як на мене немає нічого. Це дуже альтернативна точка зору, взяти одну мову та сказати, що усе інше непотрію.

Так. В КПІ на 3му курсі була курсова розробити граматику нової мови (та запрограмувати компілятор )

Це була мова, схожа на той час на С++. Я так розумію, на її основі був розроблений C# (схоже, наші напрацювання професура продала в США)

1. Так. Колись кодив таке.
2. Й досі хочу. Немає фінансових важливостей.
Взагалі на думці декілька. Безмежні можливості дарує Java.Robot.createScreenCapture
Коли розпізнаєш квадратик 16 на 16 пікселів — то ось тобі й натяк на те що відбувається на екрані користувача. Якщо у таймлайн розпізнаеш декілька квадратиків (тобто один за одним на протязі певного часу) отримаєш спостереження за процесом. Якщо Java.robot.leftMouseClick (targetPoint) отримаєш керування процесом.
А другий — це графічна мова для створення моїх візерунків. Там збільшення, зменшення, поворот, відзеркалення, нахіл, генерація згідно правил і таке інше...
На жаль, зараз немає фінансових можливостей щоб спокійно працювати над всім тим, над чим би я хотів працювати.

Підписатись на коментарі