Pull to refresh

Comments 32

У каждого программиста есть свой велосипед. Кто-то калькулятор пишет, кто-то мессенджер, а кто-то ЯП придумывает. Подписался, буду следить как идут дела ))

Напоржать? ))

А если не у каждого по велосипед, тут рядом человек тоже пишет ЯП NEWLANGUAGE кажется, сорри за мой Х Французский!

Не проще вам объединиться, а не городить очередной трехполуколесный полусамокат?

Очевидно же что получится с нулевым опытом всего что можно (судя по инфе в профиле)

Не проще вам объединиться

Предлагаете мне тоже ЯП начать писать? Но я не хочу ))

Начать ${newLanguage} должен любой программист, а вот закончить ${newLanguage} могут только Mozilla, Google, Microsoft.

Или Гвидо.
Мне кажется, сделать свой язык успешным — это ещё сложнее, чем сделать игру и заработать на ней. Но чуть вероятнее, чем выиграть в лотерею.
Поэтому мы будем продолжать свою недостижимую цель, т.к. возможный успех принесёт слишком уж большие ништяки — работа мечты, более приятное программирование.
(мой язык хотя бы не текстовый, кстати. Жаль, пока не могу рассказать)

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

Регулярки это и есть автоматы под капотом

да, но есть задачи, которые решаются автоматами, но не решаются регулярками

Боже, пожалуйста, нет.


Разработку нового языка программирования нужно начинать с разработки семантики. Для того, чтобы понять, какая должна быть семантика — неплохо бы иметь представление о семантике других ЯП. Только после того, как с семантикой будет ясность — стоит начинать реализацию реально нового ЯП. Синтаксис вторичен.


Если же начать реализацию с синтаксиса, почти наверняка выйдет очередная вариация на тему Алгола, и повезёт, если не слишком кривая.

И назовём его JavaScript Бабушкина ))

У каждого начинания есть своя цель. Автор пишет, что идея была давно и что пиешт он ЯП для себя. По пути разбираясь что к чему и изучая тему. О том и статья, как изучать написание ЯП практическим путём. Да, это велосипед. Автор прямо и открыто это заявляет. Без претензии на гениальность очередного ЯП — убийцы всех остальных ЯП.
Так что автору успехов в изучении темы. Очень рад, что у людей бывает время, желание и интерес. И пусть у него получится хоть Алгол. Но свой.

Если не секрет, у вас сколько своих языков на счету?

P.S. Пусть это будет вопрос ко всем прочитавшим этот комментарий.

Сейчас на работе пишу третий language server для разных языков. Это не совсем свой язык, но все базовые вещи, присущие компиляторам там реализованы (нет только компиляции и оптимизации кода).

Странный вопрос. Мне кажется большинство ответит как и я — 0.
У всех свои способы изучения увлекательного мира программирования.
Кто-то пишет свой движок для сайтов (я вот писал и не одну итерацию, начиная с нуля). Кто-то считает своим долгом написать свою реализацию игры «сапёр». И ведь пишут!
Кто-то вообще замахивается на собственную ОС. И тоже пишут.
Свой вклад в велосипедостроение делает почти каждый горячо сильно увлечённый чем-то программист.
За себя скажу, что в 2000-х годах меня интересовало куча всякой дичи и как из рога изобилия лилось всякое нужное и не очень (в основном не особо нужное никому кроме меня и это нормально). Это такой процесс обучения. Хочешь разобраться — берёшь и делаешь своё. Создать свой ЯП тогда меня не интересовало. А вот свою реализацию алгоритма LZW или даже упаковщик EXE-файлов я писать пытался. Или например свой анализатор EXE (чем скомпилирован, чем упакован). Это всё потому что меня интересовала эта область, а не потому что в этом у кого-то кроме меня была потребность. А потом случился World Wide Web. И я с головой увлёкся написанием собственных костылей в этой области, хотя можно было пользоваться готовыми. Но набивать свои шишки всегда интереснее.
Разработку нового языка программирования нужно начинать с разработки семантики.

И/Или с прочтения умных/полезных/интересных книг. :)
Джек Креншоу. Давайте создадим компилятор.pdf (В переложении на iForth)

Оригинальный материал здесь

Или хотя бы заглянуть сначала на compiler.su


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

Но ведь он еще не делает синтаксис, он делает просто парсер?

UFO just landed and posted this here

Любой язык, это в первую очередь семантика, так как типы, это всего лишь небольшая часть терминов, которыми язык оперирует. И только семантика языка определяет выразительность мыслей (исходного текста).

А, есть ли грань между «простотой» языка и необходимой и достаточной его выразительности семантики в решении тех или иных задач?

P.S. Не переизбыточны ли в чём семантически языки в целом?

Про увеличение сложности языков я даже как-то писал (Простое сложное программирование), но как измерить "выразительность семантики", мне бы самому хотелось понять. Ведь если это одна из самых главных вещей языка, то очень хотелось бы иметь инструменты для её измерения.

UFO just landed and posted this here

Выразительность мыслей — это именно система типов хотя бы просто из Карри-Говарда.

Из вики:

Соответствие Карри — Ховарда в современном представлении не ограничивается какой-то одной логикой или системой типов.

UFO just landed and posted this here

Автору можно пожелать успехов и посоветовать две вещи: поменьше листингов в статьях и познакомиться с EBNF (см. Н.Вирт Compiler's Construction), например.

Не, Книга дракона)

Она не очень особо рекомендовалась уже в 2009 году(разработчик gcc отмечал некоторые сильные моменты, но "But personally I am not going to buy this book" было заключительным предложением обзора). Очень большой напор на парсинг(она была написана во времена царствования lex/yacc, сейчас компиляторы массово перешли на лёгкий к пониманию и расширению рекурсивный спуск. Конечные автоматы - who dis?). В те времена для новичков рекомендовалась книга engineering a compiler. Сейчас прошло 10+ лет и хз что сейчас актуально, но это точно не дракон.

Мне в МЦСТ советовали Купер, Торцон Engineering a compiler и ещё N узкоспециализированных книг по реализации конкретных вещей

Возможно разработчики компилятора и не купят эту книгу, но как раз новичку очень даже пойдет. Из-за объема книги даже если выкинуть часть про yacc – полное представление о разработки компилятора можно получить.

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

Можете привести несколько примеров, где бы регулярные выражения не сработали или вы имеете ввиду, что большая строка будет очень долго ими обрабатываться?

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

Sign up to leave a comment.

Articles