Комментарии 25
1с++
Так эта, для полного счастья добавьте падежи
ѣжѣли провѣрятичегоглаголют молчаливо еси ложъ тогдауж прѣрвати спасихоспади1
Почему именно Сиъ? Большинство ныне используемых языков, начиная с Лиспа по хронологии и с Питона по распространённости, из коробки позволяют использовать идентификаторы на кириллице. Только это мало кому нужно.
Пафоса дофига. Гугл утверждает, что gcc давно считает, что исходники в UTF-8, и поддерживает другие кодировки, а значит юникод поддерживает без проблем. Добавляем в лексер синонимы для ключевых слов, и вроде всего делов, даже парсер трогать не надо.
А оно сейчас вообще надо ? Когда с развитием вайбкодинга, ИИ и GPT программировать возможно стало вообще на любом человеческом и не человеческом языке без знания языка программирования даже !
Код потом читать надо, а на русском кому-то это удобнее
Ну, во первых надо учитывать - делать такие проекты - одно удовольствие (сам знаю опыт создания интерпретаторов и прочего),
во вторых - сам автор сказал что "Если не мы создаем - мы не понимаем" - а в случае вайб-кодинга создаем не мы а ИИ,
в третьих - ИИшный код часто бажный.
Умная мысль пыталась настичь автора на строке "бразильские программисты не написали бразильский язык программирования", но он оказался быстрее, не додумав окончание "хотя у них тоже латиница".
Ответ лежит на поверхности - проблема "нативных языков" не в чармапе. И даже не в нераспространенности языка - сколько в мире носителей китайского и хинди, но никто не пишет код на них. Проблема в формализованности и лаконичности.
Английский структурирован так, что на нём удобно описывать логические структуры, он остаётся человекочитаемым в условиях строгой формализации и оптимизации синтаксиса и не расходится в разговорном и кодирующем использовании. define boolean translateYPosition звучит так, как это сказал бы человек в разговорной речи. РасширяемыйВыводОперацияЗапустить - не звучит. Программисты тоже люди, и язык пишется для того, чтобы его читал человек. Русский, с его падежами, склонениями и произвольным порядком слов, соответствует этому требованию хуже, чем практически что угодно. Поэтому никогда и ни в каком мире всякие йоптаскрипты не станут ничем большим, чем просто прикол и мемчик.
Создатели Lua, конечно, ограничились португальским названием, оставив все ключевые слова английскими, но есть и такая штука (вроде ершовского РАЯ/КуМира) https://portugol.dev/ (через VPN, либо поищите portugol в google play).
А что до естественности звучания, forth соответствует разве что языку на котором Йода разговаривает (а также тюркским языкам и обратному порядку слов широко применяемому в немецком) и язык переживает не лучшие свои времена, но это всяко не йотаскрипт. И кстати немецкая форт-школа и вправду выделяется на общем фоне, если к примеру взглянуть на исходники mecrisp-stellaris, оптимизирующего 32-разрядного нативного компилятора форта для ARM-микроконтроллеров, то там вы легко найдёте и немецкоязычные комментарии, и, кое где, немецкоязычные идентификаторы. А поскольку в форте ключевых слов зашитых в компилятор нет, на нём вообще можно на любом языке программировать.
Если так рассуждать, то скоро всё программирование будет на китайском – китайский ещё более синтаксически формальный язык, чем английский. Но пока что идеям китайского языка последовал только APL.
Я думаю, что дело всё-таки больше в традиции, поскольку во второй половине 20 века программирование больше всего развивалось в США. А так, например, лично я начинал обучаться с русской версии Лого и помню русский Кобол (и даже видел русских программистов, программировавших немецкий компьютер на немецком Коболе). Особых проблем с этим не было, хотя, конечно, флективный русский синтаксис менее удобен для формального языка, чем английский.
Сейчас я элементы DSL пишу на русском, а сами управляющие конструкции на английском. Это связано с необходимостью в противном случае запоминать перевод огромного объёма специальной русской терминологии из предметной области на английский язык. Кто-нибудь сможет сходу перевести на английский слово "заштырка"?
Собственно, граница между русскими элементами оконного интерфейса и русским интерфейсным слоем DSL весьма условна.
идеям китайского языка последовал только APL
Ну вообще-то шутка про китайский Бейсик это просто из за использования символов непонятных для простых смертных (китайский), и использовании оператора перехода на вычисленный номер строки вместо нормальных управляющих конструкций в первых версиях языка (Бейсик, кто помнит какими-то когда-то был).
А так APL просто развитие математической записи.
На самом деле в грамматике тоже есть общее. Для китайского языка характерна позиционная запись "параметров" (дополнений при глаголе) и расширение их списка дополнительными "ключевыми словами" (модальными глаголами). Да и вообще сам императивный стиль высказываний, где глагол является основой предложения, зачастую лишённого подлежащего, характерен именно для китайского языка.
В математической записи чаще всего используются скобки для параметров функции, от чего APL далёк.
У нас 1С-ники полжизни так пишут и ничего, живут как-то. Глаз режет только первые два дня, потом вообще не замечаешь этот винегрет из букв)
Пафоса нагнали, а на деле проект вообще игрушечный, за пару вечеров выполнимый. Lexer -> AST стадия любого компилятора (а в особенности C) это самая лёгкая и крошечная его часть. На моем опыте обычно 2% от компилятора, в gcc ещё меньше. По сути форкнув реализацию, которую "было бы проще переписать" мы потеряли десятилетия оптимизаций gcc или Clang. Ну и кому этот винегрет нужен, как экспериментальный исследовательский проект? Ну, забавно наверно. В продакшене боже упаси использовать.
Вообще я с некоторым умилением смотрю как люди не могу справиться с английским, но раз хочется, пускай балуются. Где-то истина уже была произнесена в статье, вспомнив, что авторы известных языков из разных стран почему-то остановились на английском. Только вот забыли подумать а почему же так происходит
Сибиряк — это полноценный компилируемый язык программирования, являющийся русскоязычным аналогом Go (Golang). Абсолютно всё в языке написано по-русски: ключевые слова, встроенные функции, типы данных, операторы управления потоком.
https://github.com/Giocatory/Russian-Programming-Language
Yoptava — это первый в мире язык программирования на русском языке, транслируемый в Java с помощью Runtime компилятора. Yoptava позволяет выбрать определённую лексику для программирования, например:
ruptava — классический язык программирования Java на русском языке
belptava — классический язык программирования Java на белорусском языке
goptava — язык программирования Java для гопников и реальных пацанов, основанный на YoptaScript
leptava — язык программирования Java использующий старославянскую лексику
Ерунда полная. Сделать препроцессор, который превращает такой 'русский си" в обычный - не требует изменения компилятора. А вот эта часть статьи вообще написана иишницей;
Тут не получится просто взять и заменить «if» на «если» в исходниках компилятора. Потому что компилятор — это не текст. Это сложная система, состоящая из множества взаимосвязанных компонентов: лексер, парсер, препроцессор, генератор кода, оптимизатор, линкер. Каждый из этих компонентов ожидает определённые токены, определённые ключевые слова, определённую грамматику. И чтобы изменить язык, который понимает компилятор, нужно изменить все эти компоненты. А чтобы изменить их — нужно понять, как они работают.
Если все дело в синонимах, то зачем изобретать новый компилятор? И писать его на этом своем синонимичном Си?
Достаточно сделать скрипт (хоть в среде текстового процессора/редактора), который сначала делает поиск/замена для ключевых слов, потом однозначную латинизацию идентификаторов.
Теперь можно идти компилировать любым компилятором.
Тут не получится просто взять и заменить «if» на «если» в исходниках компилятора. Потому что компилятор — это не текст.
o_O
не вопрос пресловутого «импортозамещения», на которое у всех негатив
Не совсем ясен посыл автора в данной статье и смысл идеи создавать компилятор, если "даже бразильцы не создали бразильский ЯП".
Во-первых, импортозамещение ни у кого из здравомыслящих людей не вызывает никакого негатива. США и в прошлом веке, и в нынешнем регулярно объявляют импортозамещение. Но, против них почти не ведутся информационные войны, потому нарративов, заразивших людей без критического мышления, что бойкот российской стали, бензина или автомобилей и потребительской электроники из Японии — это плохо, вы не услышите. У таких только в России плохо иметь национальных производителей, у всех других — хорошо. (Кстати, сейчас они набегут. ;-)
Во-вторых, использование русского языка в ключевых словах или идентификаторах никак не облегчает программирование. Я люблю русский язык, Россию и нашу науку с производством. Я неплохо знаю английский. Однако, ни я, ни сам англичанин не читаем код, как некий рассказ на упрощённом английском.
Все ключевые слова на английском в коде воспринимаются целиком, без перевода, как единый иероглиф, структурирующий математическое логическое выражение. Идентификаторы латинскими буквами тоже не сильно мешают, как не мешают латинские буквы в переменных и названиях функций на уроках математики с третьего класса в российских школах.
Т. е. код не столько рассказ на английском, сколько математическое выражение.
Четвероклассник, не знающий английского, за неск. дней запоминает значение ключевых слов языка Си. Ему английский не понадобится для постижения алгоритмов и программирования первых игр. Потому, и для облегчения вхождения в процесс кодирования замена латинских символов в ключевых словах на кириллические не требуется.
Так даже удобнее!!! Например, когда англичанин слышит слово принтер или принт, ему приходится скрипеть мозгами и буквально восстанавливать семантику (смысл, значение) слова из контекста, т. к. в его родном языке это может означать кучу вещей: человека с такой профессией, станок, устройство, рисунок/отпечаток, действие по печати и пр.
В русском языке слово принтер — однозначно. Это пример грамотного и полезного заимствования иностранного слова, в отличие множества других. Оно добавляет новый отдельный легко произносимый термин для обозначения периферийного устройства для получения твердой копии документа в виде одного короткого слова. Сравните с новым жаргоном, не добавляющим новых инструментов по выражению мысли. Эти мусорные заимствования действуют как синонимы, а-ля этот проект автора: клининг — уборка, шоппинг — покупки, лайфхак — совет, вайб, чил и пр. мусор, что любят вставлять в русскую речь люди, не знающие английского, но думающие, что так они выглядят, как завсегдатаи тусовок по всему миру, 3 раза в неделю.
Итог: «За изобретение ставлю пять, а по предмету — неуд», «Операция "Ы"».
Как хобби-проект — автор молодец: изучает компиляторы и развивается, практического применения для пользы дела не имеется.
P. S.: Подискутировать не смогу, т. к. за поддержку российских технологий сразу приходят группой знакомые специальные учётки из одной соседней, богатой, свободной и независимой страны и срезают карму, а местный сайт устроен так, что тогда нельзя писать комментарии в ответ в течение суток. Да, и среди молодых ИТшников не принято "почему-то" хвалить родные технологии. )) Почему, мы все знаем. Работа была проделана колоссальная... ;-)
А Вы знакомы с РуСи Андрея Николаевича Терехова (https://github.com/andrey-terekhov/RuC)? Он год назад умер, и проект был заброшен. Но тем не менее - теперь имеется два одноимённых проекта. Такие вещи надо выяснять заранее, чтобы не было дублирования.
В весенне-летний период русскоязычная языковая тема активно обсуждалась в семинарах и чатах "Ворчалок о программировании" (телега, макс, сайты). Материалов, если интересно обсуждение именно лексики и использования разных слов, падежей и т.д., можно обнаружить на сайтах:

Программисты на Руси программируют на Си. RUSI: Концепт билингвального компилятора