Pull to refresh

Comments 242

Какова цель написания этого языка?
Пока это мне не понятно, поэтому мое мнение — развивать его не стоит.
Кстати цель — существительное. То есть «развитие языка» — это не цель.
Интерес — цель.
Настроение — цель.
Знание — тоже цель.
Какова цель написания этой статьи? Минусов огрести? Чушь какая-то.

Скорее всего — настроение.
В отличие от многих бредятин в этих ваших хабрах данная бредятина статья положительное доставляет.
Автору — пешыистчо респект!

Кстати цель — существительное. То есть «развитие языка» — это не цель.
Интерес — цель.
Настроение — цель.
Знание — тоже цель.

Слово "развитие" — тоже существительное, не?

Слово «развитие» — тоже существительное, не?

Тоже верно. Формально это так. Само слово «развитие» обозначает нематериальный объект, оно обозначает больше действие, некий процесс.
А лучше избегать процессов и сложных абстрактных определений в формулировке цели.
Например, «расширение рынка сбыта» — это плохо сформулированная цель. Ее трудно параметризировать. Да и рынок можно не только расширять, это один из методов или способов увеличения продаж.
Основная цель — простота во всём, то есть простой синтаксис языка, простая среда разработки, интерпретация проще компиляции. Если очень грубо сравнивать, то РЯП есмь нечто среднее между Паскалем и брэйнфаком. Хотя Никлаус Вирт и объявлял Паскаль простым языком, но синтаксис относительно сложный для школьника, например. Помню в 9-м классе мне преподавали Паскаль, я ничего не понял. Правда, РЯП ещё не преподавался никаким школьникам, эта статья на Хабре — первая ласточка.
Цели поменьше: возможность написания кода на русском языке, и как некое следствие: интерпретатор можно доработать так, что одну и ту же программу, выдающую один и тот же результат, можно написать и на русском, и на английском языке (чтобы утихомирить интернациональное сообщество).
Интерес: в будущем просто и наглядно запрограммировать на РЯП ЛЮБОЙ алгоритм: сжатие данных, вычисление MD5, шифрование информации, обработка двумерной графики (а потом и n-мерной).
Расширение: написание интерпретатора РЯП под DOS, на Java для сотового телефона, на Linux.
И я бы даже сказал, как бы это бредово ни звучало, что я сам ещё не могу до конца сформулировать все цели написания языка, который я придумываю. То есть эти цели будут конкретно формулироваться в процессе улучшения языка.
простая среда разработки

Любой случайно взятый редактор для txt лучше среды, которую можно быстро написать. Для нормальной работы с языком нужен консольный интерпретатор, который можно было бы запустить не открывая лишних окон.
Отсутствие возможности редактировать код в любом удобном текстовом редакторе, а потом запустить его, не закрывая редактор, — большой недостаток многих языков.

Почему не ХРЯП? (Хороший Русский Язык Программирования)

(камраду ниже: блестяще! ХРЯК-ХРЯК и в продакшн! определенно нам этого не хватало)
ХРЯК
Хороший Русский Язык Кодирования
СВИНЯРА
Совершенно Великолепный И Новый Язык Русских Алгоритмов
Как же хорошо, что он не удмуртский, например…
Хороший Универсальный Язык Кодирования ;-)

А это уже тянет на импортозамещение.

"Хороший Универсальный Язык Кодирования Хороший Универсальный Язык Кодирования для производственных систем"

Хороший Универсальный Язык Кодирования сделал мне пятничный вечер! :-DDD

Скажите спасибо автору ХРЯК'а, он меня вдохновил ;-)
Вообще, тема может быть даже денежная! Можно попробовать выбить бюджет на создание Научно-Исследовательского Института Хорошего Универсального Языка! )))

В университете у нас был курс теории языков программирования (ТЯП). Вот там-то РЯП был бы точно к месту!

Там бы подошёл Лучший Язык Программирования
Наверное, уже занято кое-какой компанией.
UFO just landed and posted this here

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


  • задачи
  • обоснования необходимости
  • примеров конструкций
  • примеров кода
  • исходников
Необходимость — в том, чтобы писать на русском языке, а не на английском. Стало быть, например, учить школьников — гораздо проще. Примеров кода приведено достаточно в архиве, и примеров конструкций. Исходники пока закрытые.
Необходимость — в том, чтобы писать на русском языке, а не на английском.

Языков с ключевыми словами на русском языке больше одного. И это не говоря о том, что можно легко сделать соответствующий форк существующего языка с латиницей.


Впрочем, школьникам все равно придется столкнуться с английским рано или поздно, так может лучше рано?


Примеров кода приведено достаточно в архиве, и примеров конструкций.

Ненене. Никаких архивов. Есть пост, из которого можно было бы брать цитаты и обсуждать их. А архив качать неизвестно откуда? Спасибо, нет.


Исходники пока закрытые.

Ну и зачем? Особенно прекрасно это сочетается с "свободно скачивайте и распространяйте".

ИМХО школьники и так достаточно рано знакомятся с английским еще до его преподавания в школе. Мне это как-то не мешало от слова совсем — запоминать сочетания букв латиницы.
Мне это как-то не мешало от слова совсем — запоминать сочетания букв латиницы.

Кстати, да. Я писал программки на бейсике (не русифицированном, не помню диалект) до того, как в школе английский начался. Какая разница, какие магические слова запоминать?

Необходимость — в том, чтобы писать на русском языке, а не на английском. Стало быть, например, учить школьников — гораздо проще.

Рекомендую поискать англоязычные исследования на эту тему.
По-моему это наоборот мешает, отделить привычные бытовые понятия от того, что слово является ключевым для компилятора. Т.е. будут относиться к компилятору как человеку. На практике это может привести к тому что вместо команды «покажи», дети будут пробовать вбивать команды «напечатай», «расскажи» и т.п.
для существующей команды «показать» можно добавить все эти аналоги: «покажи», «напечатай», «расскажи».
На данный момент есть интерпретатор РЯП, и нет компилятора.
для существующей команды «показать» можно добавить все эти аналоги: «покажи», «напечатай», «расскажи».

Все? Еще и с поправкой на знание детьми русского языка? Вам придется решать задачу NLU, причем в полном объеме.

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

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


Не научишься программировать, так хоть русский язык подтянешь.

Интерпретатор ещё и ошибки будет исправлять!

а нецензурно выражаться будет?

после того, что ему придётся компилировать, сам научится
UFO just landed and posted this here
Я уже вижу программы с кодом
здарова
зафигачь мне массив
и шоб по красоте
харе э

Не спора ради, а как пример подтверждающий комментарий выше.
Я когда учился в школе, у нас был такой "язык" — кумир робот. Можно было управлять роботом с помощью команд "влево", "вправо", "вверх" и "вниз" и т.д. Очень часто мои одноклассники писали "вбок" и не понимали что же не так в их программе.

Школьники привыкли давным давно к тому, что современный мир латинизирован, так что, разве что, пенсионеров учить гораздо проще
Когда я вижу подобные упражнения в прекрасном, мне каждый раз становится интересно, откуда у людей возникает эта неспособность строить логические цепочки сложнее двух элементов
Все нормальные языки программирования основаны на латинице и английском не потому что это заговор рептилойдов, а потому, что весь мир, объективно, читает латиницу и худо-бедно говорит на английском, так что это просто универсальнее, чем пытаться впихнуть очень локальные язык и алфавит в, объективно, довольно глобальную тему IT
На РЯП можно писать чистой латиницей, не вопрос! А потом ту же программу переписать чистой кириллицей, или просто автоматически странслировать из латиницы в кириллицу.

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

Всё-таки, пожалуй, основная цель — создать максимально простой язык программирования. Но раз уж я русский человек, то и сразу же родилась идея чтобы на этом языке программирования можно было писать на русском языке. И раз уж создавать простой ЯП, то и среда разработки должна быть максимально простой, на данный момент интерпретатор представляет собой единственный EXE-файл, который не надо устанавливать, как Phyton или Visual Studio, который относительно легковесен (18 Мб).

Мне больше всего нравится Паскаль из-за относительной простоты. И никогда не нравился Си из-за своей сложности, в том смысле, что любой алгоритм, любую программу можно написать проще на том же Паскале, не прибегая ко всяким изощренным конструкциям Си. Больше всего я программировал на Паскале и на Си. В меньшей степени — на Ассемблере, Джаве и Бейсике.

Лично я питаю надежды к РЯП, если бы я не возлагал бы никаких надежд (пусть мои надежды воспринимаются людьми как мои сугубо субъективные надежды), я бы просто не выдумал РЯП. То есть при выдумывании РЯП для меня была важна философия языка программирования, а технические вопросы — уже второй вопрос. На данный момент на РЯП можно прекрасно запрограммировать всякие математические вычисления (синус, корень числа, число ПИ и т.д.). Разумеется, раз язык интерпретируемый, то нет никакой речи о быстром выполнении кода. Но я изначально не принимал во внимание быстродействие. Так как в юности воспитался на том же аналоге ПЭВМ «Радио86-РК» — «Партнёр 01.01 ВЦ».
философия языка программирования

Так описали бы сперва её. По постулатам и следствиям, как у Аристотеля. И потом, убедившись в её внутренней непротиворечивости — писали язык.


Кстати, вы на языке микрокалькуляторов (ЯМК) программировали?

На языке микрокалькуляторов не программировал, но у меня есть наработка, чем-то напоминающая ЯМК, называется язык SoloTable. Интерпретатор можете скачать по ссылке freelance.ru/nushaman/interpretator-yazika-programmirovaniya-solotable-3554292.html
Но в SoloTable по сравнению с РЯП наоборот, программы пишутся латинскими буквами, каждая буква — это команда. Скачайте архив, запустите Сотейник, и почитайте описание языка на вкладках «Readme».

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


SoloTable

Заценил. Вообще не похоже.

создать максимально простой язык программирования

Приведите критерий "простоты". Формальный и объективный, а не "мне кажется, что так проще".

Мне больше всего нравится Паскаль из-за относительной простоты. И никогда не нравился Си из-за своей сложности, в том смысле, что любой алгоритм, любую программу можно написать проще на том же Паскале, не прибегая ко всяким изощренным конструкциям Си.

Но ведь… Си проще паскаля. В паскале дикое количество вариантов массивов, массивы, индексируемые типом-диапазоном или перечисляемым типом, или каким-нибудь short или byte, множества, строки, типы-диапазоны, цикл for в двух направлениях, каждый тип указателя нужно объявлять, 3 типа передачи аргументов в функцию, какие-то свои вещественные типы real, extended; объектный тип, отдельный синтаксис для аргументов read[ln]/write[ln], цикл repeat-until не имеет begin-end и продолжается условии false, а не при true, как while-do, etc. А в си просто указатели нормально сделаны, присваивания возвращают результат, цикл for более универсален, битовые поля иногда есть, да функции могут принимать переменное число аргументов. Скобочки не в счёт — {} не менее читаемы, чем begin end.


Возьмите лучше Python 3. Или даже C. Это хорошие, простые, распространённые языки, с ними больше шансов на успех.

То, что язык будет русским, это его недостаток, т.к. ограничивает его использование только программистами, у которых есть на клавиатуре русские буквы. Какие у языка будут преимущества перед существующими ЯП?
Очевидно же, его не смогут читать враги. Слышали байку, как американские шпионы офигевали в русских НИИ, видя вместо привычных х(икс) — щ(ща)?
конструкцию «если» можно написать как «if», начало — begin, цикл — cycle. Преимущества: простота, интерпретируемость, относительно быстрая реализация интерпретатора под любую платформу.

Закрадывается ощущение, что желание сделать русский язык в том числе возникает и из-за плохого знания английского. Цикл это таки loop, а не cycle, в данном контексте.

Переменные не надо объявлять, так как при первом обнаружении переменной в листинге программы интерпретатор автоматически создаст с таким именем переменную типа Double (вещественное число).

Дадада.


color = 'red'
print(colour)

Удачи.

Вы что, это в басурманском языке можно так ошибиться, а в русском языке слово «цвет» однозначно!

Это пока вы свет не написали. Проверочное "белый свет".

С чего бы? Должна быть объявлена переменная с типом Double.

Возможно, если написать наоборот(сначала colour, a потом color), то оно даже сработает как ожидалось. Ведь заявлена адовая фича
Имя переменной можно сокращать.
Интерпретатор сам определит, какую переменную из объявленных имели в виду.

startNuclearStrike — это устроить ядерную забастовку, или имелось ввиду launch?

это устроить ядерную забастовку
Это «ядерный удар». Именно так он в английском и пишется.

Для учебного языка — даже хорошо. Чтобы ПРОЧУВСТВОВАТЬ, чем явные объявления лучше неявных.
Я с BASIC начинал. Сперва спотыкаешься об подобную хрень, потом сам прописываешь OPTION EXPLICIT и понимаешь, зачем в языке ограничения.

На данный момент в РЯП нет типов Char и String, поэтому интуитивно нет алгоритма, в котором бы появилась необходимость задавать явно типы переменных, отличных от Double.
Ведь Double — это не только вещественное число, но и целое число! И если вы не используете строки, значит используете числа, а тип Double покрывает все нужды (если разрядность не ограничивает работу конкретного алгоритма).
Кстати, когда реализую механизм массивов, то запилю длинную арифметику.
с Double очень легко обжечься… это формат с плавающей запятой, что ведет к проблемам округления… например:
вот в таком цикле

Для Инд Тип Double=1.1 По 2 Шаг 0.1 Цикл
ВыводСтроки «Инд = „+Инд
КонецЦикла

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

лучше используйте Decimal
Double — это не только вещественное число, но и целое число!
Целые числа double представляет скажем так не очень. До степени когда 1+2 != 3, что усложняет объяснение основ программирования школьникам.

Нет, целые как раз представляет хорошо. До 2^56.

при присваивании хорошо, а вот когда целое ожидается при выполнении арифметических операций, то оно может оказаться не совсем целое…

Можете привести пример, когда операция над целыми в указанных пределах приводит к погрешности?

вы не поняли смысл моего комментария… я написал: «когда целое ОЖИДАЕТСЯ при выполнении арифметических операций»
пример на C#
for (double i = 1.1d; i <= 2d; i = i+.1d) {
Console.WriteLine(i);
}
число 2 не будет выведено в консоль, хотя ОЖИДАЕТСЯ, что оно будет выведено…

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

речь-то не о вас… однако, даже опытные папы Карло иногда на этом Double спотыкаются… не говоря о начинающих буратинах… поэтому для языка с единственным числовым типом лучше выбрать Decimal…

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


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

Ведь Double — это не только вещественное число, но и целое число! И если вы не используете строки, значит используете числа, а тип Double покрывает все нужды

И вот что бы не взять decimal, у которого нет проблем с округлениями?

Для учебного языка — даже хорошо

Это смотря чему учить.

Учебные языки нужны для того, чтобы учить с нуля. Написать прямо в код "5 CLS" и увидеть результат.
Для обучения тех, кто уже знает основные идеи, типа ветвления и циклов, чему-нибудь более-менее сложному годится уже любой популярный язык.

Учебные языки нужны для того, чтобы учить с нуля.

Чему учить-то? Какая задача?

Ознакомить учащегося с тем, что такое язык программирования, какие приёмы управления потоком выполнения он предоставляет, и как применить его к практическим задачам. Научить не бояться вносить изменения в программу, и адекватно реагировать на появление ошибок компиляции и выполнения.

Зачем? Цель этого всего какая?

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

То есть вы предлагаете считать, что программирование нужно настолько же, насколько и математика, и учить исходя из этого допущения?

Ну, до математики, конечно, далеко. Но вполне наравне с черчением.

Но вполне наравне с черчением.

Эгм. То есть нет смысла преподавать вообще.

Почему? Один час в неделю в течение одного года.

Потому что не было у меня черчения в таком объеме, и я не жалею.

У меня было. И я этому рад. Программирования, правда, было 4 часа в неделю в течение двух лет. Чему я тоже рад несказанно.

А у меня и программирования не было. В школе, в смысле.

Паскаль, тащемта, уже ушел. Интересно узнать чем же автора так не устроили существующие мейнстримовые языки и как он собирается решать эти проблемы в своем детище?
Сложно написать интерпретатор Си под систему DOS (ну или под BIOS).
А вот интерпретатор РЯП написать под DOS уже на порядок легче.
То есть DOS, Linux, Java, промышленные контроллеры — это будущие кандидаты на реализацию интерпретатора РЯП.
DOS умер, он никому не нужен (как и новый язык программирования)
DOS до сих пор работает на миллионах компьютерах, а Русский Язык Программирования нужен русскому народу.
Правильно, кстати, писать «РуССкому Народу»
Русский Язык Программирования нужен русскому народу.

А русский народ об этом знает? Или вы за него решили?

А зачем писать интерпретатор Си под DOS или BIOS, если можно скомпилировать программу на Си для выполнения под DOS (и, думаю, под BIOS тоже)?

С меня, однажды, как-то хватило Русского языка программирования в 1с (знаю, что можно переключить)…

Я понимаю, что пятница уже вовсю идёт, но не до такой же степени!

Почему же?
Если у человека как раз в тяпницу появился новый план.
Оличный свежий план.
PS. Прямые поставки от официального дилера, автор рекомендуе.

Логические операции и условные операторы таки_да, таки_нет, а_вдруг_если будут?

без операций: «а вам зачем?» и «а сколько надо?» язык будет неполноценен.

Троичная логика плачет, не спит по ночам и кусает локти :)

тогда еще и «а если найду»
Это уже больше на КЯП похоже (Кошерный Язык Программирования)

Даёшь КУЯП (кошерный универсальный язык программирования)!

UFO just landed and posted this here
И оператор безусловного перехода
«иди на ...»
не, не! Эдгар Дейкстра против оператора GOTO!
Да. Поколения Фортрана и Бэйсика сменило поколение Питона )))
Тем не менее это оператор есть и в Си и в Паскале. И если цивилизованный программист вполне может отказаться от их использования, то всякие автоматические Нечто-Паскаль трансляторы без него не обходятся

Стоп-стоп-стоп!
А как же break? Это ведь именно "иди на..." или "иди в...", в общем "катись отседова!"

а вот и код, выполняющий функционал конструкции break:
начало
какой-то код
если остаток
цикл = 0
цикл цикл

… а если это надо сделать не последней инструкцией в цикле? Все остальное снова в если заворачивать?

для кода из предыдущего моего коммента где-то в коде переменная остаток приравнивается ненулевому значению (типа произошел break), и уже в конце тела цикла происходит выход из цикла (то есть цикл прекращает переход на начало). получается, что да, всё остальное в
если
заворачивать.

… то есть каждый раз, когда надо сделать break, мы увеличиваем вложенность на уровень.


Но зачем?

все подобные заморочки или трудности вытекают из простоты языка. Язык Си сложен, поэтому на нем относительно просто писать. Язык Брейнфак прост, поэтому на нем предельно сложно писать.
Так погодите, вы таки хотите создать простой язык, или язык на котором просто писать? Ибо если первое, то ленточный автомат Тьюринга придуман давным-давно.

А зачем нужен "простой" язык, на котором сложно писать, особенно учитывая, что вы этот язык предназначали, если вам верить, для обучения?

мне просто писать на РЯП. У каждого языка существует время, за которое обучаемый может изучить предлагаемый ему язык на определенное кол-во процентов.
Например, брейнфак можно изучить на 100% за несколько часов.
РЯП можно изучить за несколько дней, Паскаль за 1 месяц, Си за 6 месяцев.
А потом предлагают человеку написать алгоритм на каждом языке. За какое время он напишет его на каждом языке?
мне просто писать на РЯП.

Это не удивительно, это же ваша разработка.


У каждого языка существует время, за которое обучаемый может изучить предлагаемый ему язык на определенное кол-во процентов.

Сравнивать в процентах бесполезно, потому что у языков разный объем функциональности. Сравнивать надо в выученном объеме функциональности.


РЯП можно изучить за несколько дней, Паскаль за 1 месяц, Си за 6 месяцев.

Я не знаю про Паскаль и Си, я знаю про C#. Заметим, я пишу на C# лет пятнадцать, и все равно не могу сказать, что знаю его на 100%, но не суть. Но я готов сказать, что изучить C# в объеме той функциональности, которую — по вашему посту — предлагает РЯП можно за то же время (а может быть и быстрее), что и РЯП.


За какое время он напишет его на каждом языке?

А понятия не имею. Но уверен, что будет заодно зависеть и от алгоритма.

Например, брейнфак можно изучить на 100% за несколько часов

Секунд.


РЯП можно изучить за несколько дней

На чтение спеки по ЯМК у меня примерно 36 часов ушло. Что, в общем, обычное время для чтения спеки. Программировать вычисления можно начинать сразу.
Правда, редактор на борту МК-161 прямо скажем, никакой.

Начал разработку русского языка программирования.

В русском языке обычно несколько иная структура предложений...

Недостаточно масштабно.


Отрекаемся от логических функций "И, ИЛИ, НЕ". Вместо них берём "НУ, МОЖЕТ, ЯХЗ".
На этой базе строим свою смехотехнику, в которой ошибка будет неотличима от штатного поведения системы. Это же спасёт нас от ревизии.
И просим 100500 олимпиардов на замещение архитектуры прошлого тысячелетия.

UFO just landed and posted this here
Вместо них берём «НУ, МОЖЕТ, ЯХЗ».

Есть такие. Даже круче. С конструкцией «а не то». :) Babbage.

Главное полностью отказаться от четкой логики, от классических true/false.

Смотрите. Вам видно, что пока они — рабы логики, а этот человек на холме пришел их освободить. (с) Я, робот.
на полученные олимпиарды построить русский квантовый компьютер, который будет регулярно отключаться и требовать взятку за повторное подключение к энергосети
Обязательно нужны «НЕНУАЧО» и «ПОФИГ И ТАК ПОЙДЕТ»
ПОФИГ И ТАК ПОЙДЕТ

ON ERROR CONTINUE

На этой базе строим свою смехотехнику

Очепятка от бога. Ну или не очепятка…

А як же ж.
† — ставится в конце программы, означает "ну, с богом..."

После такого оператора можно сразу в прод.

Если православные, то должно быть (U+2626)

☦ — ну да, так лучше.
Это уже точно в прод.
Хотя могут быть проблемы с представителями других конфессий.

И на линухе не запустится, там же демоны…
А уж про FreeBSD можно даже не заикаться.
Интересно будет произведения русских классиков скомпилировать на таком языке.
Вы не пробовали программировать на 1С?
Переменные не надо объявлять — плюсы и минусы яву со строгой типизацией данных.
Собственно ядро языка это наверное 5%. Остальную популярность ему обеспечивает наличие готовых библиотек и фреймворков.
В принципе написание своего парсера выражений или семантического разбора замечательная практика для студента. вполне тянет на тему диплома.
А вот дальше чем хобби в 99.9999% не пойдет.

Операторы нечеткой логики Авось и Небось будут к месту

потом запилю всякие перцептроны циклические и прочую нечеткую ересь.
На данный момент интерпретатор РЯП выполняется лишь в семействе операционных систем «Microsoft Windows», начиная с «Windows 7» и выше.
Планируется реализация интерпретатора под системы «Linux Debian» и «Linux Ubuntu».
Боже, а самое вкусное-то по ссылке!
Заголовок спойлера
image

Правильно ли я понимаю, что для отладки можно в тело цикла вставить оператор показать член?

Цикл цикл — 1 цикл цикл! Цикл

О боже :D. Он немного поторопился. Запости через месяц, купался бы в плюсах.
показать член Эйлера же!
И пусть интерпретатор сам догадается, что имелось в виду.
UFO just landed and posted this here
Млять!!! Только хотел именно этот стиш сюда запостить и у Вас увидел!!! НЭКАРАШО чужой мисли чэтать! :))))))
Ну, что сказать — забавно. Пожалуй я знаю ответ на вопрос «зачем», и куда развивать. Сначала ссылка: ifiction.ru Есть такая штука — интерактивная литература. Думается, на этом поприще РЯП может снискать себе известность, будучи допиленным до юзабельного состояния. Для использования в качестве языка программирования интерактивной литературы, необходимо будет реализовать в интерпретаторе РЯП функции загрузки и сохранения, поддержку графики, работу со звуком, создание элементов GUI и т.д.

А что мешает применять для этих целей другие существующие языки программирования?

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

Так это специализированный язык. Его надо отдельно разрабатывать, именно под эти задачи.


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

Просто надо именно так задачу и поставить (и, возможно, просто договориться с inform о разработке перевода). А автор этого языка уже явно сказал, что на другие задачи ориентируется.

Си и Паскаль уйдут, Питон утонет, Яву скурят!
Такие себе цели. Ну да ладно. [машет рукой]

Да нет, он в комментах про обучение школьников писал.


Мне, на самом деле, интересно, можно ли как-то скрестить (да наверняка кто-нибудь и скрестил уже) языки для interactive fiction с мощным NLU (ну там, интенты, параметры интентов, вот это всё), но это явно не к языку из поста.

Уже 5 минут пытаюсь понять: автор вбросил или серьезно?
я вбросил и, похоже, серьезно вбросил :)))
Учил в институте (КПИ, ~ 78 год) язык «АЛМИР» (https://ru.wikipedia.org/wiki/%D0%90%D0%9B%D0%9C%D0%98%D0%A0-65). Там как раз все было имено на русском.
Есть руфисицированный и украинизированный интерпретируемый диалект паскаля — Алго. С черепашками и прочими роботами, специально для школьников. Официальный сайт вроде давно умер, но найти в интернете еще можно.
Довелось как-то писать лабораторки на русскоязычной версии Смоллтока. Ужас и Адъ!
Цикл(пока, до)…

1С видел раз в жизни — такие же чувства.

Давайте тогда уж

#define коли if(
#define пущай ){
#define ежели }else if(
#define либо }else{
#define аминь }
#define покуда while(
#define твори do{
#define доколе }while(
#define буде );
#define откель for(
#define ступай goto
#define вон exit
#define

покуда а мене 10 пущай а стане а да 1 аминь
// твори а стане а без 1 доколе а поболе 0 буде

image
UFO just landed and posted this here
Русский Язык Программирования — это не значит, что слова будут склоняться как в русском языке. РЯП скорее похож на мнемоники Ассемблера. В одной строке лишь одно действие (если не считать присвоения): присвоение с операцией, или команда над переменной, или одна конструкция языка. Проще некуда ИМХО.

Согласен, что это такое российское импортозамещение «прямо в лоб», но лично мне это кажется вполне актуальным и даже конкурентоспособным в потенции.

В перспективе на доработанном РЯП можно будет написать ЛЮБОЙ алгоритм. Поэтому о самоизоляции не может быть и речи. Наоборот, будет происходить последовательное улучшение языка.
число mod цикл2

Товарищ автор. Я категорически настаиваю, что ВЕСЬ код должен набираться в одной раскладке.
Ещё, рекомендую подумать, что Вы будете делать со знаками <>.

А зачем Хорошему Универсальному Языку Кодирования эти знаки? Так и писать: "больше" или "меньше".

Я могу сделать русский аналог команды mod — модуль.
На данный момент нет операторов < (меньше) и > (больше), и согласно текущей философии РЯП они не планируются, так как условие реализовано в виде кода:
если [переменная]
[следующая строка]
что значит:
если значение [переменная] больше или равно единице, то выполнить [следующая строка], иначе проигнорировать [следующая строка].

Долой неравенство! Все переменные — равны!

Русский Язык Программирования — Русскому Народу!
Т.е. вы предлагаете запретить Японцам, например писать на РЯП? Или это призыв бить японцев за то, что пишут на непонятной тарабарщине?
запретить Японцам, например писать на РЯП

Под страхом РЯВ :)

если значение [переменная] больше или равно единице, то выполнить [следующая строка]

А если равно 0.5? А почему?


А, главное, зачем так сделано? Почему не работать с логическими значениями?

Можно логические значения и не вводить. Как в BASIC — 0 / не 0. А логические операции в качестве True возвращают целое число, все биты которого подняты.


В принципе, если язык предназначен для расчётов, то я бы ввёл соглашение об именовании, чтобы по структуре имени можно было определить тип переменной. По первой букве, как в Фортране, или по суффиксу как в Бейсике. Правда, в отличие от Бейсика я бы сделал суффикс частью имени.

Неявные логические операции — это сложно. Особенно когда у вас логическая операция возвращает снова число. С которым можно сделать арифметическую операцию зачем-то.

Искренне не понимаю, что в этом сложного. При таком соглашении логические операции становятся тождественными побитовым.


Другое дело, что для этого нужен целый тип данных. В бэйсике, например логические операции работали с Int16 (наименьший тогдашний тип). И True, соответственно было равно -1.

Искренне не понимаю, что в этом сложного

Зависит от того, кому вы преподаете. Объяснить начинающему, особенно ребенку, смысл фразы если 5, то — сложно. Что значит "если пять"?

Ну, нам в школе объясняли так:
"Оператор IF выполняет действие после THEN в том случае, если выражение после IF не равно 0".
И закрепляли несколькими примерами.
Далее, рассказывали про операции сравнения, результатом которых может являться "True" или "False", причём False=0, а True=-1.
Такой нюанс, что -1 в дополнительном коде это шестнадцать единичек — на начальной стадии не нужно.

"Оператор IF выполняет действие после THEN в том случае, если выражение после IF не равно 0".

Понимаете, это объяснение магических слов. "Оператор IF". А я говорю о коде, который читается как текст: "если пять больше двух, то". В котором не надо запоминать магические слова.

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

Чудес не бывает. Ключевые слова всё равно будут магическими, даже если они омонимичны со словами естественного языка.

А в чем тут чудеса-то? Если запись похожа на текст, ее можно читать. Никаких чудес.

Если запись похожа на текст, ее можно читать.

Вот только слова значат не совсем то, что в текстах на естественном языке. Вроде похоже, а вроде не совсем.

Вот только слова значат не совсем то, что в текстах на естественном языке.

Да нет, вполне то. "Если" значит "если".


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

Текст на естественном языке почти всегда многозначен

А код — однозначен. И об этом нужно помнить.


небольшие отличия легко скрадываются

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

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

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

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

… поэтому чем меньше когнитивный зазор, тем лучше для изучения.

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


С другой стороны, из-за сходства языков программирования с английским языком — бывает трудно гуглить англоязычные материалы по языкам программирования. Гугл путает ключевые слова языка со словами в тексте. Я всё проклял, пока нашёл, что за беда у uglify с оператором with.

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

Отнюдь. Это более-менее стандартное поведение для ряда языков программирования.

От того, что оно стандартное, оно лучше не становится.

Не такое уж и стандартное. Все более менее известные языки либо трактуют 0 как false и не 0 как true, либо трактуют все кроме false и null как true. В каких конкретно языках значение меньше 0 трактуется как false?

Не трактовка <0 как true, а команда условного перехода не по произвольному логическому выражению значению, а по захардкоженному сравнению переменной с нулём.
В языке микрокалькуляторов (МК-61) были четыре разных команды условного перехода для x=0, x!=0, x>=0, x<0.

в РЯП задумано, что переменная цикла в теле цикла постоянно уменьшается, и как только значение этой переменной достигнет нуля или станет меньше нуля, то в строке «цикл [переменная]» произойдёт выход из цикла.

… и все это вместо того, чтобы сделать явное сравнение?

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

Я же не говорю, что это необычно. Я говорю, что это неудобно для языка общего назначения, и тем более — для языка для обучения.


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

явное сравнение, просто оно является частью оператора перехода

У автора по сути то же самое, только он плохо сформулировал что делает команда.

Знаете, если в языке можно (ненамеренно) "плохо сформулировать", что делает команда если, с этим языком что-то не так.

что-то не так

Даже не что-то, а конкретно: плохо выбранное имя команды.

Как это разглядеть обратно?! Мои глаза… Такого вброса давно не было. Хотя на первое апреля самое то!

Новый язык должен быть с какой-то убийственной фичей, сладким синтаксисом или даже новой концепцией.


Делать что-то "такое себе" на Pascal не круто, даже для учебного пособия.


Как вариант возьмите Python и переведите конструкции на русский + плагин для подсветки кода. Дёшево и сердито, может получить распространение в школах на волне импортозамещения ;)

Видимо автор хотел самопиара и в какой-то степени это ему удалось…
Мне нравится, что пиар продолжается, несмотря на то, что меня отхабрили :)
Как говорил Дали: «Главное, чтобы про меня говорили. Пускай плохо, но пускай говорят»…
отхабрили

Рано страдаете. ±5 баллов — обычные колебания кармы в процессе хабражизни.

Кто-то никак не хочет отлипнуть от английского языка
ЛИнверт

Да, кто-то никак не хочет.

Вот код для вычисления простых чисел

Первый же вопрос к этому коду: начало чего?

начало — это конструкция языка, с которой начинается тело цикла.

И зачем нужен дизайн языка в котором возникает такой вопрос? Почему нельзя написать начало цикла или просто цикл?

  • ностальгируя
    А ведь кто-то в школе начинал с Русского Алгоритмического Языка… (на самом деле, не я, т.к. по причинам, например, разным начал с бейсика).

ЗЫ. Стукни мне в башку что-нибудь подобное под высоким давлением, публикацию бы начал с минимальной уже реализованной грамматики, из которой код генерировался бы тем же flex-ом, а не со скомпилированной программы.

> Необходимость — в том, чтобы писать на русском языке, а не на английском. Стало быть, например, учить школьников — гораздо проще.

Хм. А почему тогда «остаток0 = число mod цикл2», а не «остаток0 = число остаток цикл2»? А также, почему «and (битовое И), xor (битовое исключающее ИЛИ), or (битовое ИЛИ)» — это всё ещё на английском?

Ну и дополнительный вопрос: с первых классов, думаю, учеников учат, что по-русски целая часть от дробной отделяется запятой. Будет ли русский язык программирования следовать русским нормам? Иначе, особо учитывая уже существующие or/xor/and/mod какая-то химера выходит.
3) Кто-то никак не хочет отлипнуть от английского языка.
Наверное, и шпрехает только на английском, используя слова типа стартап, коммит, заклозь, лайфхак, гамбургер, свитшот.

А как гамбургер будет на русском? «Жирный и богатый холестерином богомерзкий каравай»?
UFO just landed and posted this here
Неа:
Бутерброд с котлетой
image

И булка с котлетой тоже не подходит:
Булочка с котлетой
image
UFO just landed and posted this here
Это ваше видение, а я вот частенько делаю закрытые бутервроты, типа сандвич, но из булочек.

В принципе, неплохая замена слову гамбургер, но длинновато получилось.
Есть такой полузабытый Д.Р.А.К.О.Н. с шампуром и отличной логикой ;)
Ершол?
как учебный — вполне нормально. Хотя в практике не использовал, просто заставлял писать нечто подобное просто «на русском», а потом ученики кодили это уже на бэйсике.
Хотя была бы тогда реализация КуМира под рукой — наверняка применил бы.

Так не бывает. Люди, которые занимаются разработкой — общаются текстом. А "кино" — это не документ.

А мне задумка понравилась, детей можно алгоритмам обучать на примере кода, а не только на бумаге и без знания английского.
Sign up to leave a comment.

Articles