LINUX.ORG.RU

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

 , ,


1

1

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

факториал(сч) =
  если (сч == 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

★★★★★

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

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

Во-первых, не одинаково. Во вторых не японский ИЛИ английский а японский И английский.

Плюс учить арабский, тайский и т.п. если на этих языках тоже будут написаны «национальные» ЯП. Да, кстати, им всем тоже придется учить русский, чтобы использовать ваш ЯП. Или ты уже выучил? Нет? Вот как выучишь, тогда приходи.

P.S. Впрочем, не жалко времени, ради бога. Только по моему глубокому убеждению вы делаете злое дело. Слава богу что результат заранее известен.

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

Во-первых, не одинаково. Во вторых не японский ИЛИ английский а японский И английский.

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

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

А если я решил купить на AliExpress автополивалку для цветов, то моей проблемой было перевести инструкцию с китайского.

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

Язык 1С жив и развивается. Формулы в Excel используются на русском языке и ни один иностранец от

=ЕСЛИОШИБКА(ВПР($F$2;ДВССЫЛ("$B$"&(ПОИСКПОЗ($F$2;Table4[Customer Name];0)+2)&":$C16");2;ИСТИНА);"")

не умер.

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

Плюс учить арабский, тайский и т.п. если на этих языках тоже будут написаны «национальные» ЯП. Да, кстати, им всем тоже придется учить русский, чтобы использовать ваш ЯП. Или ты уже выучил? Нет? Вот как выучишь, тогда приходи.

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

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

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

Чтобы прочитать твое сообщение, японец будет учить русский (как два пальца, да)? Ты что, дурак?

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

Чтобы прочитать твое сообщение, японец будет учить русский (как два пальца, да)?

Бедные 1С-совцы …
Японские и китайские товарищи не смогут ни чего понять в типовых конфигурация.
«Русскую душу» может понять лишь тот у кого «русская душа».

Владимир

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

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

Фича в чем?
Китайский товарищ открывает страницу, а движок ее на лету переводит на китайский, …

PS: Нужно бы все же найти их ссылки на их новый проект.

Владимир

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

Я русскоговорящий (если кто не заметил), но вот чето писать на таком расово чистом языке не тянет нифига )))

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

Поддерживаю идею многоязычности, но без всякого фанатизма.

Владимир

anonymous ()

@monk создавай новый тред «Новый язык программирования для русскоговорящих 02».

Ты же лингвист?
Давай расширяй тематику треда …

PS: Нужно знать, что «широкие программисты» думают «на этот счет».

Владимир

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

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

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

… «дружба народов»

Да уж когда наступит, то все поймут - «Везде хорошо, где нас нет».
Мне так хочется поговорить с китайскими товарищами о борще, а им со мной о лучшем блюде из риса …

Владимир

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

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

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

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

Найди, пожалуйста, на каком. То, что выдаёт qwe.wiki, читать почти невозможно.

Нормальная однозначность получается разве что с ифкуиля, но на нём писать почти нереально.

monk ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Я русскоговорящий (если кто не заметил), но вот чето писать на таком расово чистом языке не тянет нифига )))

Ты знаешь (достаточно хорошо) английский. А есть большое количество людей, которые его не знают.

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

А то вона синтаксис хаскеля лишь бы ничего не менять на уровне всего лишь раскладки.

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

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

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

У них есть программа в смартфоне, в которую они говорят по-китайски, а она произносит по-русски. И наоборот. Так что, без проблем.

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

Чтобы прочитать твое сообщение, японец будет учить русский (как два пальца, да)?

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

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

У них есть программа в смартфоне, в которую они говорят по-китайски, а она произносит по-русски. И наоборот. Так что, без проблем.

Пробовал раз десять google перевести какое нибудь предложение с русского на английский и наоборот … ?

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

Владимир

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

Пробовал раз десять google перевести какое нибудь предложение с русского на английский и наоборот … ?

Впрочем google переводчик «более/менее».
Сильно смысл не искажает.

Владимир

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

rationale

пример кода на этом языке выглядит интересно.

а вот этот автор написал более 30 книг , и 2-3 языка программирования : среди них японский язык программирования Nadesico/Nadeshiko (работает и в браузере , вот статья в журнале про японский язык программирования), SakuraMML для написания музыки, и фортоподобный стековый, реализованный через яваскрипт temaki

язык выглядит интересно. есть конструкция ‘it’, ‘that’, лямбды, различные синтаксисы вызова функций, зачатки морфологии. то есть, можно писать код который выглядит и читается как естественный японский язык.

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

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

по той же причине мне не нравится вот это кн/кц в ершоле или тело/кн в ЯОС от den73, а вот ВСЁ в Рапире (endif, endfor,endwhile end вообще) – вполне нравится.

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

ещё падежи можно учитывать, они могут быть вполне себе значащие. например, дательный/творительный/винительный. как-то отображаются на boundary/entity/control в OOA&OOD. это тоже может пригодиться – чтобы по виду идентификатора в конкретном падеже было видно сразу назначение класса.

ну и текст в разных падежах, склонениях/спряжениях просто лучше читается. более естественно выглядит. чем все эти одинэсовые ОбработкаСобытия/Попытка/КонецПопытки.

в этом смысле алголы многоязычные с двухэтажными w-грамматиками были гибче, а в современных – это шаг назад.

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

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

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

и «чтобы прочитать твоё сообщение» – гуглтранслейт уже как-то (ну кое-как совсем) справляется. а если ещё язык знать, и понимать что написано – ну так вообще.

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

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

«каждый раз литературный перевод стихотворений невозможен» (с) какой-то известный переводчик про разницу между формальным и творческим переводом, буквально и по смыслу и по духу, форме.

и всё же они как-то это делают.

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

гуглтранслейт отжигает: китовый самолёт ( クジラ飛行机 )

Список статей о китовых самолетах

японское программирование китового самолёта давайте посчитаем с японским программированием прямо в браузере!

чятик метапрог онлайн китового самолёта

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

манга про го разработчика

гуглтранслейт отжигает о5: тыц:

Рина Тобари Босс Цуёси Цугару. Он (вроде же это она??) дружелюбный человек и любит, когда его подчиняют (а где фансервис?). Моя специальность - Муха (занавес).

У ротанга! Будете ли вы переделывать пример оформления таблицы сегодня?

Сэмпай! У меня есть кое-что, что я хочу, чтобы вы сказали мне сегодня!

Ты в середине сегодняшнего дня? ?

…. Сэмпай лижет трудности выхода на пенсию! !!

(леденящие душу подробности и срыв покровов)

итд. и т.п.

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

А, вон оно что. Вы пишете ЯП, чтобы на нем не могли писать иностранцы!

А Вы написали это сообщение по-русски, чтобы его не могли прочитать иностранцы?

Я пишу ЯП, чтобы русским было удобно на нём писать.

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

Вам бы еще русские цифры добавить, а то с арабскими у русских могут быть проблемы.

Там и есть русские.

Арабские (١٢٣٤…) не поддерживаются. Если Вам нужен язык с арабскими цифрами, используйте قلب.

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

Трава подешевела?

Скорее грибы пошли.

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

Скобочек кое-где убавить не помешало бы, да (например, в let), и добавить другие виды скобочек для наглядности — как в кложе. Вот это было бы благодатно.

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

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

Мотивация вот: https://readable.sourceforge.io/

Моя реализация отличается только тем, что вместо «\» я использую «;», не использую «<..>» и в любом выражении ищу инфиксные операторы.

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

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

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

И так переводим с помощью google фразу: «тихо шифером шурша, крыша едет неспеша» => «quietly rustling slate, the roof goes unhurriedly»

А теперь с английского на русский: «quietly rustling slate, the roof goes unhurriedly» => «тихо шуршит шифер, крыша уходит неторопливо»

Так вот уровень нынешних переводчиков

тихо шуршит шифер, крыша уходит неторопливо

Владимир

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

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

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

Поддерживаю идею многоязычности, но без всякого фанатизма.

Многоязычность в моей трактовке это не 20 компиляторов для 20 языков, а
один в котором можно на 20 языках именовать переменные и более того, даже ключевые слова.

У меня правда сделано круче.
Переменная может иметь свойства /в т.ч. алиасы … /. Догадайтесь как можно локализовать такой исходник?.
Так что «китайские товарищи» не забыты …

Владимир

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

Переменная может иметь свойства /в т.ч. алиасы … /. Догадайтесь как можно локализовать такой исходник?.

типа контекст.объект.свойство или объекту свойственно(в контексте) (творительный падёж) ???

вот правда, почему бы не вводить морфемы и словоформы. чтобы не нейтральное косноязычить АбстрактнаяФабрикаФабрикФабричныхМетодов.МенеджерПоВеникам.Зелёненькие.Электровеники а чтобы значит, через не через точку а через пробел и с падежами, и с склонениями/спряжениями? типа Электровеников $ Зелёненьких $ Прародитель — здесь видны глалолы, существительные, ..., причастия, обороты, множественные числа, роды, падежи — а они не используются ? а вот если их задействовать, передавая важную информацию о контексте использования? например, отношения какие-то, контексты, единицы знания? нечто вроде хинтов для инференса базы знаний если объектами задаётся онтология?

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

вот правда, почему бы не вводить морфемы и словоформы

Думаю, потому же, почему математические теоремы предпочитают записывать значками.

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

рассчитать зарплату используя менеджер/в за период с начала/р по конец/и (по сотруднику/д) = …

И использовать как

Иванов = получить сотрудника с фамилией Иванов
рассчитать зарплату используя менеджер-расчёта за период с 1-го января 2020 по 30 июня 2020 по Иванову

Но получаем, что все аргументы обязательно надо именовать и записывать в переменные. Как в старом бейсике. Потому что конструкция типа

рассчитать зарплату используя менеджер-расчёта за период с 1-го января 2020 по 30 июня 2020 по (получить сотрудника с фамилией Иванов)

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

рассчитать зарплату используя менеджер-расчёта за период с 1-го января 2020 по 30 июня 2020 по результату выражения "получить сотрудника с фамилией Иванов"

А в более сложном случае что-то вроде

рассчитать зарплату используя менеджер-расчёта за период с
результата выражения "получить из формы результат выражения "получить форму ввода данных" дату начала" 
по результат выражения "получить из формы результат выражения "получить форму ввода данных" дату окончания" 
по результату выражения "получить сотрудника с фамилией Иванов"

Вроде по русски, но понимается с трудом. Напоминает поптыку уравнение типа такого по телефону продиктовать.

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

результата выражения «получить из формы результат выражения «получить форму ввода данных» дату начала»

@monk сдается мне, что эти вопросы/задачи нужно решать через разработку базы знаний …

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

PS: То бишь используем любой язык программирования для которого имеется bindings к API базы знаний.

«Наметки есть» …, но полного понимания как должны быть представлены знания в базе …

Легко тебе писать, потому как круг задач для разработки схож …

ИМХО это полезней чем в WWW «ковыряться» …
Давно пора WWW

Выкрасить и выбросить

Владимир

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

В хаскелле, например с помощью выражения where можно сначала использовать функцию, а потом её определять. Применяя ту же логику, можно сделать так:

рассчитать зарплату используя менеджер-расчёта за период с начала-рабочего-месяца по конец-рабочего-месяца для сотрудника,
где
   начало-рабочего-месяца это "получить из формы результат выражения "получить форму ввода данных" дату начала" 
   конец-рабочего-месяца это "получить из формы результат выражения "получить форму ввода данных" дату окончания" 
   сотрудник это "получить сотрудника с фамилией Иванов"
ugoday ★★★★★ ()
Ответ на: комментарий от ugoday

Так всё равно ужасно. Чтобы было читабельно приходится именовать все промежуточные элементы:

рассчитать зарплату используя менеджер-расчёта за период с начала-рабочего-месяца по конец-рабочего-месяца для сотрудника,
где
   начало-рабочего-месяца = получить из формы форма-ввода дату начала 
   конец-рабочего-месяца = получить из формы форма-ввода дату окончания" 
   сотрудник = получить сотрудника с фамилией Иванов
   форма-ввода = получить форму ввода данных

От бейсика или кобола отличается только порядком операторов.

Причём если алгоритм более-менее математический, то возникает ещё и сложность с подбором имён.

Сравни Haskell:

main :: IO ()
main = mapM_ print $ queens 8
 
queens :: Int -> [[Int]]
queens n = foldM f [] [1..n]
    where
      f qs _ = [q:qs | q <- [1..n] \\ qs, q `notDiag` qs]
      q `notDiag` qs = and [abs (q - qi) /= i | (qi,i) <- qs `zip` [1..]]

И аналог на грамматически корректном:

вывести результат выражения "расстановка 8 королев" где
расстановка количества/р королев =
  свёртка функцией шаг из списка-последовательности в пустой-список
  где
    список-последовательность = список чисел от 1 до количества
    шаг из собранного-списка/р = построить список из списков с головой из обходимого-списка и хвостом собранным-списком, 
      где обходимый список = разность списка-последовательности и собранного-списка, в котором каждый элемент не диагонален собранному-списку
    элемент/и не диагонален списку/д = одновременно истинен результат выражения "список-условий из элемента и списка"
    список-условий из элемента и списка = построить список из результата выражения "элемент не на диагонали с проверяемый-элемент с номером номер-элемента" из списка-с-номерами из списка трактуемого как пара из проверяемого-элемента/р и номера-элемента/р
    список-с-номерами из списка/р = список пар из элементов списка и элементов списка-последовательности
    элемент/и не на диагонали с проверяемым-элементом/д с номером номер/и = модуль разности элемента и проверяемого элемента не равен номеру

Второе точно более читабельно?

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

Второе точно более читабельно?

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

[q:qs | q <- [1..n] \\ qs, q `notDiag` qs]

потому что мы натренировали своё восприятие под этот язык. Но точно так же кто-то и APL нормально читает

amort←{P i n←⍵ 
 mp←{P i n←⍵ ⋄ P×i+i÷((1+i)*n)-1}P i n 
 pval←{A i n←⍵ ⋄ (A÷i)×1-1÷(1+i)∘.*⌽⍳n}
 int←i×bal←pval mp i n ⋄ prin←mp-int ⋄ bal←bal-prin 
 lbl←'Period' 'PrinPay' ' IntPay' ' Balance'
 tbl←lbl⍪(⍕¨⍳n),(2⍕¨prin),(2⍕¨int),[1.5](2⍕¨bal)
tbl⍪(⊂'Total Paid'),(2⍕¨+/¨prin int),⊂2⍕0 
 } 

Чётко, понятно, без рассусоливаний на пол страницы.

ugoday ★★★★★ ()