LINUX.ORG.RU

Новый язык программирования для русскоговорящих

 , , ,


3

2

Синтаксис от Хаскеля, семантика от Ракета.

факториал(сч) =
  если (сч == 1)
    1
    сч * факториал (сч - 1)

фибоначчи(сч) =
  если (сч < 3)
       1
       пусть рекурсия (н-1 1; н 2; тек-сч 3)
         если (сч == тек-сч) н $ рекурсия н (н + н-1) $ тек-сч + 1

Будет ещё конструкция надо-быстро с семантикой от Си (и использованием gcc).

Исходники: https://github.com/Kalimehtar/russian-lang

Пакет для Ракета: https://pkgd.racket-lang.org/pkgn/package/russian-lang

Документация: https://docs.racket-lang.org/russian-lang/index.html

👍👍👍

Последнее исправление: hobbit (всего исправлений: 4)
Ответ на: комментарий от Result-Code

Описание грамматики языка пока что в формате только для Racket?

Вопрос не понял. Грамматика аналогична SRFI-110 с небольшими вариациями: вместо \\ используется ;, нет <* *>, инфиксная запись всюду, где обнаружен оператор не в первой позиции. Оператор распознаётся аналогично Хаскелю (всё, что состоит только из знаков «!#$%&⋆+./<=>?@^~:*-» или внутри спецсимволов: в Хаскеле `…`, у меня ^…^). Строчный комментарий из Хаскела -- (два минуса).

Теоретически можно легко перенести на любой другой лисп (реализация SRFI-110 для Common Lisp существует).

monk 👍👍👍
() автор топика
Последнее исправление: monk (всего исправлений: 4)
Ответ на: комментарий от monk

Понял. Я просто не знаком нормально со схемкой, поэтому не понял сразу. (поверхностно по теме пробежал)

Result-Code
()
Ответ на: комментарий от hobbit

Тем не менее она вполне подходит, тем более такое использование никак не пересекается в ее использованием в строках. Нет, не отстанем!

anonymous
()
Ответ на: комментарий от anonymous

тем более такое использование никак не пересекается в ее использованием в строках

С таким же успехом можно в англоязычном языке x (икс) использовать в качестве синтаксического разделителя. Тоже никак не используется с её использованием в строках. Мне в Common Lisp невозможность использования имени t достаточно мешала.

P.S. аналог x,y,z в русскоязычных программах ч,ш,щ,ё,ь,ъ

monk 👍👍👍
() автор топика
Ответ на: комментарий от monk

Ну вот, это будет легендарный язычок. обмазывается славянством

anonymous
()
Ответ на: комментарий от Vinni_Pooh

На Эльбрусах компилится?

Не пробовал. Пока нет Эльбруса.

monk 👍👍👍
() автор топика

Не хватает заголовка вроде «ой гой-еси, не перевелись программисты на земле русской!»

Если серьезно, ЕМНИП давно была статья о том, что русскоязычным проще кодить т.к. фрагменты кода воспринимаются ими однозначно, нет конфликтов с бытовым языком. По своему опыту - мне безумно сложно было воспринимать философские тексты т.к. я постоянно путался, это у них термин или просто слово?

AntonI ☕☕☕
()

Ну и «-» как часть имени, " - " как операция конечно сложно читается.

Хотя человек не блоха, ко всему привыкнуть может.(с)

AntonI ☕☕☕
()
Ответ на: комментарий от AntonI

А была и обратная статья о том, что на родном языке кодить лучше. Например, русские программисты кодируют на 30% медленнее англоязычных и это можно приписать тому, что язык неродной (или придётся признать, что мы глупее американцев :))

Вот она:

http://compiler.su/russkij-yazyk-i-programmirovanie.php

Кроме того, есть примеры использования РЯ в программировании. Русскоязычный PL/1 отвечает, к примеру, за стыковку на МКС (расчёт баллистики) и используется для обработки фотографий, вот фрагмент кода:

http://www.вече.программирование-по-русски.рф/viewtopic.php?t=61

/*
 ИЩЕТ В ТЕКУЩЕЙ ПАПКЕ ФАЙЛЫ ISS*.TXT, ИЗВЛЕКАЕТ ИЗ НИХ:
 ИМЯ ФАЙЛА NASA PHOTO ID (СТРОКА 1),
 Lens ID (СТРОКА 17),
 Focus Mode (СТРОКА 19)
*/
EXIFTXT:PROC(ПАРАМ) MAIN;

%INCLUDE 'Z:SERVICE.DCL';

ОПС ПАРАМ ТЕКСТ(*)РД;

?DO_KONEC=ДА;
РАЗОБРАТЬ_ОДИН_ФАЙЛ(ПАРАМ);

РАЗОБРАТЬ_ОДИН_ФАЙЛ:PROC(ИМЯ);

ОПИСАНИЕ
ИМЯ       CHAR(*)VAR,
(CCC,CC1) CHAR(*)VAR,
(
FILENAME,
LENSID,
FOCUSMODE
)                  CHAR(*)VAR,
(I,J)              FIXED(31),
V720               BIT,
F_EXIF             FILE;

КОГДА НЕТ_ФАЙЛА(F_EXIF) ИДТИ НА_ВЫХОД;

ОТКРЫТЬ ФАЙЛ(F_EXIF) ДЛЯ_ВВОДА ТЕКСТОВЫЙ ПО_ИМЕНИ(ИМЯ);

КОГДА КОНЕЦ_ФАЙЛА(F_EXIF) ИДТИ НА_ВЫХОД;

PUT SKIP;
I=0;
V720 = НЕТ;
FILENAME,
LENSID,
FOCUSMODE = '';

ЦИКЛ ПОВТОРЯЯ;
   READ FILE(F_EXIF) INTO(CCC);
   I+=1;
//   ЕСЛИ I ^= 1 & I ^= 17 & I ^= 19 ТОГДА ОПЯТЬ;
   ССС=ЗАМЕНИТЬ(CCC,' ','^I');

   J=ИСКАТЬ(CCC,':');
   ЕСЛИ J=0 ТОГДА ОПЯТЬ;

   CC1=ПОДСТРОКА(CCC,1,J);
   СС1=ОЧИСТИТЬ(CC1);

   ЕСЛИ J=ДЛИНА(ССС)
      ТОГДА ССС='';
      ИНАЧЕ CCC=ПОДСТРОКА(CCC,J+1);
   ССС=ОЧИСТИТЬ(CCC);

   ЕСЛИ I = 1  & ИСКАТЬ(СС1,'ExifToolVersion') = 1 ТОГДА
      ЕСЛИ index(ССС,'7.')=1 ТОГДА V720 = ДА;

   ЕСЛИ V720
      ТОГДА
      {;
      ПРОВЕРИТЬ(2,  'FileName ' ,FILENAME);
      ПРОВЕРИТЬ(39, 'FocusMode ',FOCUSMODE);
      ПРОВЕРИТЬ(146,'LensID '   ,LENSID);
      };
      ИНАЧЕ
      {;
      ПРОВЕРИТЬ(1,  'NASA PHOTO ID:',FILENAME);
      ПРОВЕРИТЬ(17, 'Lens ID:'      ,LENSID);
      ПРОВЕРИТЬ(19, 'Focus Mode:'   ,FOCUSMODE);
      };

КОНЕЦ;

НА_ВЫХОД:
PUT EDIT(FILENAME,';',LENSID,';',FOCUSMODE)(A);
ВОЗВРАТ;

НА_СООБЩЕНИЕ: PUT SKIP LIST(ИМЯ,I,CC1,CCC);

ПРОВЕРИТЬ:PROC(I1,ОБРАЗЕЦ,КУДА);
ОПИСАНИЕ
I1             FIXED(31),
(ОБРАЗЕЦ,КУДА) CHAR(*)VAR;
 
//ЕСЛИ I ^= I1 ТОГДА ВОЗВРАТ;
ЕСЛИ ИСКАТЬ(СС1,ОБРАЗЕЦ)=1
   ТОГДА КУДА=ССС;
//   ИНАЧЕ ИДТИ НА_СООБЩЕНИЕ;

КОНЕЦ ПРОВЕРИТЬ;
КОНЕЦ РАЗОБРАТЬ_ОДИН_ФАЙЛ;

END EXIFTXT;

На языке Графит-Флокс описаны алгоритмы работы ступеней ракет, которые нас охраняют, а 1С используется очень широко.

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

den73
()
Последнее исправление: den73 (всего исправлений: 3)
Ответ на: комментарий от AntonI

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

Зато словарный запас небытового становится сравним с бытовым. Вот зачем мне как программисту знать, что такое customer, TIN, payroll, payment, …?

О общение в стиле «посмотри валуе таски обработки инвоице» тоже не ускоряет процесс разработки.

monk 👍👍👍
() автор топика
Ответ на: комментарий от den73

ПРОВЕРИТЬ(19, ‘Focus Mode:’ ,FOCUSMODE);

Это какое-то глумление над русскоязычным программированием. Страшнее только «иНЖАЛИД ДЕЖИЦЕ».

monk 👍👍👍
() автор топика
Ответ на: комментарий от monk

А со скобками разве очевидно, что action2 при еслине ?

ви таки миня траллите
очевидно если скобки разные:

если (x > 0 && x< 10) {
  действие1(); 
} иначе если (x >= 10 && x <20) {
  действие2(яТвойДомТрубаШатал);
} иначе если (x >= 20) {
  действие2(мойЛюбимыйАргументВСпоре);
} иначе { // ноль и меньше
  новый число[] пукВЛужу = {1,2};  
  число радиусРазлетаОбломковЛужа = действие3(пукВЛужу);

  если (радиусРазлетаОбломковЛужа > радиусРазлетаОбломковВентилятор) {
    сообщить ("Пукаем в лужу!");
  } иначе {
    сообщить ("Пукаем на вентилятор!");
  }
}

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

rukez
()

$
для русскоговорящих

grem 👍👍👍👍👍
()
Ответ на: комментарий от AntonI

Напротив порой однозначности этой часто нет, т.к. не раз встречал как нэйтив-спикер посчитал, что он самый умный и вводил кучу слов и сокращений, которые при общеизвестном дефиците документации в малых проектах, приводило к огромным сливам времени только на то, чтобы понять что делает ниндзя-код, т.к. название было не говорящим, поэтому имхо мне безразлично как написанно длинно или коротко, главное чтобы название переменных/функций прямо отражало их смысл-назначение и тут я тем более не против кстаии и кириллического яп, правда при условии не агульной бездумной русификации, а как результат множества решений только упрощающих разработку с прицелом под русскоязычную аудиторию, плюс это к тому же могло бы снизить планку входа для тех у кого с логикой всё впорядке, а навык запоминания «однозначных» слов, сленга и сокращений чужого языка напротив не ахти и они как результат могли делать свои разработки с прицелом опять же на носителей русского, тем более что порой замечал упоротость некоторых разработок и трендов, что продукт разрабатывается с прицелом только на русских(минимум 99,99% целевой аудитории из россии), а всякие РеАдМиПлИз.МД и комментарии в исходниках написаны на английском, т.е. русские строят барьеры для своих же - что мягко говоря странно и неразумно.

AKonia
()
Ответ на: комментарий от AKonia

Напротив порой однозначности этой часто нет

Да английский язык сам по себе страдает огромным количеством многозначных слов. Моё любимое - это oversight, которое означает одновременно «надзор» и «недосмотр», но также put и hub очень неплохи.

Помимо того, русские программисты плохо знают английский и они часто тупо пишут слова с орфографическими ошибками.

den73
()
Ответ на: комментарий от den73

Это обращение к полям какого-то файла в независящем от программиста формате, в чём проблема-то?

В имени переменной FOCUSMODE.

В результате в

НА_СООБЩЕНИЕ: PUT SKIP LIST(ИМЯ,I,CC1,CCC);

CC1 и CCC угадаешь сходу на каком языке?

monk 👍👍👍
() автор топика
Ответ на: комментарий от monk

Для СС1 и ССС есть режим выделения латиницы :)

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

Вообще А.Караваев писал, что они не сразу начали внедрять РЯ, поэтому получилось полосатенько.

den73
()
Ответ на: комментарий от monk

CC1 и CCC угадаешь сходу на каком языке?

Вариант решения, например в том, чтобы между ABCEHKMOPTX не делалось различий. И имена А(рус) и A(лат) обозначали одну и ту же переменную.

anonymous
()
Ответ на: комментарий от anonymous

между ABCEHKMOPTX

между ABCEHKMOPTX и АВСЕНКМОРТХ угадай, где какая раскладка.

anonymous
()

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

anonymous
()
Ответ на: комментарий от den73

раз вся экосистема на русском языке, то сотрудников искать проще и платить им можно меньше

Ну это киллерфича, не поспоришь. Для местных рабовладельцев и бездарных рабов-птушников. А специалистам то зачем ваша русификация? Кстати, дарю идею: узбекский ЯП. Очень перспективная тема.

anonymous
()
Ответ на: комментарий от anonymous

бездарных рабов-птушников.

А при чём тут бездарность? Выучить чужой язык - это задача, требующая затрат ресурсов. Пока русские учат английский, американцы учат написание компиляторов, ОС, приложений, манипуляцию людьми, ведение бизнеса и проч. Когда ты учишь чужой язык - ты платишь дань его носителям, которую можно посчитать и получится очень большая сумма. Единственный вариант - если ты изначально учил английский, лет с двух, и он для тебя является вторым родным.

den73
()
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от den73

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

АлгоритмФокусировки. В смысле, в русском описании формата EXIF это поле называется «алгоритм фокусировки». А остальные два используемых — «имя файла» и «код объектива».

monk 👍👍👍
() автор топика
Ответ на: комментарий от den73

Все отлажено и внедрено ещё 40 лет назад. В качестве примера - отечественные ЯП.

А по ссылке самоубийство для глаз какое-то.

anonymous
()
Ответ на: комментарий от monk

Придумать можно, но возникнет точка перевода, которая затруднит работу с кодом. Хотя можно и придумать. Я просто говорю, что придумывать необязательно. Внешние ресурсы и форматы всё равно никуда не денутся. Решение состоит не в тотальной русификации, а в способности легко управляться с двухъязычными текстами при доминировании русского, чего мы и добиваемся в ЯОС.

den73
()
Ответ на: комментарий от anonymous

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

Удобно ли будет делать в такой среде англо-русский словарь? Или хотя бы подмонтировать файлы с флешки? На флешке же никто не запрещает положить рядом файлы АВСЕ и ABCE .

den73
()
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от den73

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

anonymous
()
Ответ на: комментарий от anonymous

До 2014 года в 1С была вполне мировая зарплата.

вы потеряете вообще всех специалистов, и ракеты придется программировать 1Сникам.

пусть лучше ракеты программируют 1С-ники, чем человек, который потом уедет в США продавать секреты. Русский язык в т.ч. нужен для того, чтобы вот такие вот «обитатели глобуса» не составляли критическую массу там, где программируют ракеты. Вот в Эльбрусе комментарии на английском и я уж сомневаюсь, можно ли ставить Эльбрус на ракеты.

den73
()
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от den73

уедет в США продавать секреты.

лул. Как человек, которому 2 года назад разрешили выезд из страны, могу сказать, что секретов давно никаких нет, особенно если учесть, что у нас начальство с доступом к документам ОВ по 2 раза за год в страны наты моталось отдыхать и дачки строить. Так что довод твой такое себе …

anonymous
()
Ответ на: комментарий от den73

пусть лучше ракеты программируют 1С-ники

Ну что ж, удачи. Помолимся, чтобы они заржавели и не смогли взлететь. А то Воронеж жалко.

anonymous
()
Ответ на: комментарий от den73

англо-русский словарь

А какие проблемы? ABCEHKMOPTX <-> АВСЕНКМОРТХ и aceopcxy <-> асеорсху отображается в зависимости от того, в каком языке мы ищем слово. Если в слове присутствуют буквы из оставшегося подмножества (рус или лат), то вопрос вообще однозначно решается.

подмонтировать файлы с флешки

тут нужно адаптировать систему, а никто не говорил, что будет легко. Но кривое-косое решение тоже не выход.

anonymous
()
Ответ на: комментарий от anonymous

Насчёт узбеков. Мой коллега родом из Солнечного Узбекистана, в момент выхода Узбекистана из состава СССР работал там инженером-связистом на АТС. Местное руководство, желая избавиться от русского языка и русскоговорящих специалистов, распорядилось перевести всю техническую документацию по обслуживанию АТС на узбекский язык. Но беда в том, что в узбекском языке отсутствует необходимая терминология, информацию об этом удалось довести до начальства. Тогда начальство в мудрости своей повелело использовать недостающие термины из языка фарси. И тут очередная беда, узбекские инженеры, как оказалось, не понимают фарси...

Jameson 👍👍👍👍👍
()
Ответ на: комментарий от anonymous

отображается в зависимости от того, в каком языке мы ищем слово

Что, кстати, я делал именно для словаря. Практически. Спелчеккер для OCR документов. Пока жив.

anonymous
()
Ответ на: комментарий от anonymous

Но кривое-косое решение тоже не выход.

если ты всё ещё тот анонимус, то решение состоит в том, чтобы кириллица и латиница визуально отличались, есть много способов этого добиться, они приведены в теме, а тот, который внедрён - на самой последней картинке. К воспросу качества отрисовки, выбору шрифта и цветовой гаммы это не имеет отношения, т.е. я не понял, что такое «самоубийство для глаз». Для меня ЯОС выглядит достаточно нормально, я могу в ней работать много часов подряд.

den73
()
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от den73

чтобы кириллица и латиница визуально отличались

Это плохое решение. Не буду приводить аргументы, уверен, что их все уже много раз перечисляли. И тебе они явно не показались убедительными. (Да, отображение похожих букв тоже не идеальное решение, но всё же получше).

Для меня

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

anonymous
()
Ответ на: комментарий от anonymous

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

Сделать идентичность одинаково выглядящих букв кириллицы и латиницы - лучше, чем сделать их визуально отличимыми? Давай, приводи свои аргументы. На самом деле никто никаких аргументов в пользу твоего решения не приводил - всем понятно, что это костыль и его можно применять только от крайней нищеты (например, когда нужно влезть в 7 бит или что-то в этом роде). Я его хотел применить в одном месте в ЯОС (на экране загрузки), но пока обошлось без этого и надеюсь, что и обойдётся.

И ты его не смог защитить от элементарной проблемы с внешней файловой системой.

den73
()
Последнее исправление: den73 (всего исправлений: 2)
Ответ на: комментарий от anonymous

А, тогда да, это сильный аргумент

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

den73
()
Последнее исправление: den73 (всего исправлений: 2)
Ответ на: комментарий от den73

Сделать идентичность кириллицы и латиницы

Идентичность - это что? Я про отображение в единый алфавит при обработке имен / ключевых слов.

ABCDEFGHIJKLMNOPQRSTUVWXYZ, БГДЖЗИЙЛПУФЦЧШЩЪЫЬЭЮЯ, abcdefghijklmnopqrstuvwxyz, бвгджзийклмнптфцчшщъыьэюя

Или типа того.

И ещё греческий туда.

чем сделать их визуально отличимыми

Глаголицу введи.

На самом деле никто никаких аргументов в пользу твоего решения не приводил

Жаль.

anonymous
()
Ответ на: комментарий от den73

тогда нужно писать, что для твоих глаз.

Привет, JC Denton.

да, для киборгов наверное все нормально.

anonymous
()
Ответ на: комментарий от anonymous

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

den73
()
Ответ на: комментарий от den73

Обоснуй, чем это лучше визуальной отличимости

У тебя решение подразумевает vendor lock-in.

Мое решение подразумевает, что его можно вообще безо всякого напряжения перенести в любую среду.

Дальше развивать не надо, надеюсь, все очевидно?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.