Обзор на создание своего языка программирования

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


2025-07-13 11:30

лингвистика

Предыстория и ввод в суть дела: компьютеры (они же ЭВМ, они же Шайтан-машины) работают не только по воле Божьей, но и по воле программистской, которая выражается в текстах, которые могут понять только такие же гиги, как те, кто и написал их, тексты эти. В общем то, на чём пишут драйвера и сотни клонов майнкрафта - это те самые языки.

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

А теперь после такого ликбеза к истории. Ну... была научная группа, была лень учить другие языки программирования. В итоге для нужд научной группы был создан свой язык с блекджеком, временнцми петлями и henkamono (если хотите, могу отдельно запилить обзор на henkamono, здесь я этой темы касаться не буду). Итак, теперь можно начать, собственно, сам обзор.

Порог входа (2/4): можно уже на втором курсе факультета ИТ в непрофильном вузе фигашить собственные ASSемблеро-подобные по синтаксису (но не семантике!) интерпретаторы. Код интерпретатора писался на C++ без ООП в говно-процендурной парадигме. Почему в говно-? Потому что вышел говнокод с примесью функциональщины. Почему без ООП? Лень было городить абстракции. "Ну там всего же две-три функции..." Ага-ага... теперь там 2 тыщи строк и мне всё это shit перелопачивать и переписывать в ООП. Потом как-нибудь (значит ли это, что никогда?). Что касается оборудования, то сойдёт даже старый ноут с бесплатным open-source набором компиляторов mingw.

Заморочки (over 999/10): Пишите документацию параллельно написанию кода. Реально. Мне пришлось заново всё переделывать, так как "Ну... там документацию потом напишем! Там же всё просто!" Ага-ага... Пишите документацию сразу. Что касается остального, то тщательно отслеживайте, что вам пишет компилятор языка, на котором пишите свой язык (- Постмодернизм в действии, - скажете вы, и будете правы, но вообще-то языки программированря так и появляются). Даже если он, компилятор "родительского" языка, на котормо пишете свой, не выдал ошибок, это ещё не значит, что всё хорошо - всё перепроверяйте и тестируйте каждую новую функцию, добавленную команду и прочее.

Профессиональное развитие (10/10): решаете интересные задачи, копошитесь в ошибках и учитесь новым трюкам. Понимаете на собственном опыте, почему умными шишками из НИИ и научных отделов корпораций было принято то или иное решение. При желании можете пройти весь путь эволюции от простейшего однобитного до терабайтового. Сюда же входит и понимание того, как реализовывать математику в коде (ряды Тейлора, теорвер и матстатистика). А ещё у вас появляется большая кодовая база с шаблонами и решениями многих проблем, которая никогда лишней не будет.

Применение (10 000/10): можно крыть этой фигнёй практики, выбирая техническим заданием создание уже созданного языка. Можно выпендриваться во время проверок посещаемости, когда преподавателя нет в аудитории. - Что делаете? - спросит проверяющая. А вы ей в ответ: "У нас свой язык программирования с замыканием программы на первой и последней строчке при условии, что условие остановки не выполнилось" и показываете ей, проверяющей, инопланетный код на своём языке, который творит неведомую даже вам фигню. Ощущения и рост самомнения в такие моменты просто незабываемые.

Полезность и самостоятельность (10/10): выделено в отдельный пункт, потому что в этом и была цель. Как уже было сказано, если у вас есть свой язык, то теперь вы boss of this gym - теперь вы вольны делать всё, что возможно, потому что вы обладаете всеми знаниями о своём языке, знаете его в совершенстве. Программирование на своём языке - это режим бога, в котором от вашей воли зависит всё. Теперь вы не зависите от библиотек (можете написать всё сами), теперь вы не зависите от чьих-то решений и стандартов, потому что это ваша территория, ваше слово - закон, а вы, чёрт побери, королева (отсылка на вторую или третью, точно не помню, серию пятого сезона "Доктора Кто"). Но есть и проблема. Вот создали вы Тьюринг-полный язык, на котором можно написать программу, вычисляюшую всё, что только можно вычислить. Радости так много, что вы пьянеете, даже если не пьёте. И тут вдруг оказывается, что вы написали такую туфту, на которой даже простые числа искать невероятно сложно. Тьюринговская трясина? Да, возможно. Что же делать? ПШЗ, конечно же - продолжать шевелить задницей! Если вы прошли этот путь, то вы отбитый отморозок, разовавший IT ещё только не успев войти в айти, так что назад пути у вас нет - дорабатывайте своё детищк, потому что, возможно, именно на нём вы сможете написать именно то, что вы хотие, решить именно ту задачу, которую перед васи нкито не ставил и никогда не поставит. Ну, а ещё язык можнов курсовую пустить.

Творчество (null poniter exception/10): процесс этот творвеский и предполагает реализацию любой вашей больной идеи, родившейся в вашес разуме компьютерщика-извращенца. Язык инопланетян? Конечно! Застаить код крутиться снова и снова, возвращаясь в самое начало, пока не будет исполнен оператор остановки? Запросто! Впихнуть туда имитационную модель (M, R) системы Роберта Розена в качестве доступной программисту команды? Да, и сделать это нужно было с самого начала. Сделать операторы на японском языке? Да, и вообще на любом можно сделать. Создание своих языков программирования - это целаы вселенная, и вы ней - первооткрыватель!

Общий итог: вкатиться в эту бесполезную тему очень и очень просто, осоьенно в наш век нейросетей. Если повезёт, звёзды сойдутся, а рак свиснет на горе, ваше детище резко взлетит, став популярным. Потом какая-то корпорация выкупит у вас права на язык, и вы станете миллионером. Хотя, скорее всего, вы так и останетесь шизом из подвала, японской девочкой, общающейся с ноосферой, и которую никто не понимает. И да, если устали, остановитесь, иначе можете перегореть и забросить это дело на полгода.

Вот ссылка на репозиторий с исходниками, интерпетатором и документацией: https://github.com/Iwakawa-2173/Kikkago

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

К записи прикреплены скриншоты с кодом на этом отбитом языке (фото, где нет консоли, а только код ра плюсах - это отрывок исходника интерпретатора моего языка). Мечтаю в будущем написать компилятор какого-нибудь высокоуровнего языка с нормальным синтаксисом в этот язык. Тогда мой вот этот язык станет исполнять роль виртуальной машины, которая и будет исполнять код, получившийся в результате перевода другого кода в ее язык.

Желаю вам удачи на этом пути, если вдруг решитесь попробовать создать язык с какой-нибудь безумной фишкой, ломающей сами основания концепции программирования!


Источник: github.com

Комментарии: