LINUX.ORG.RU

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

 , ,


2

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

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

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

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

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

ТекущееЗначение, ПредыдущееЗначение, НомерЭлемента,

Удобнее набирать без сдвига регистра: текущее-значение. Хотя, это уже каждый выбирает себе сам. Язык не заставляет. Регистр в именах учитывается.

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

многие пишут, что лиспы нечитаемы из-за их огромного количества.

никто не мешает совмещать скобки с форматированием, [s]ваш кэп (с) [/s] это делает любая ide
скобки и нормальные указания если/иначе:

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

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

rukez ()

н (н + н-1)

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

dsxl ()

Кстати, долой полумеры

если (сч == 1)если сч равен одному

если (сч < 3)если сч меньше трёх

если (сч <= 2)если сч не больше двух

ну и т.д.

anonymous ()

Если-то, тема не поцанская. Когда-тогда – да. И склонения и спряжения. И символы с аглицкой раскладки убери. Пётр I, приехав в Англию, пошёл в кабак и устроил там чад кутежа. У них до сих пор пердак горит.

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

Если-то, тема не поцанская. Когда-тогда – да.

Чем лучше-то?

И склонения и спряжения.

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

Пётр I, приехав в Англию, пошёл в кабак и устроил там чад кутежа. У них до сих пор пердак горит.

Тут и так чад кутежа. Что-то русские ключевые слова в языке для многих триггером срабатывают. А мне всего лишь нужно было упрощение для написания конструкций типа:

(define-for-syntax (оператор! оп приоритет [ассоциативность 'лево])
  (hash-set! приоритеты оп (cons приоритет ассоциативность)))

Выложил, вдруг кому-то ещё польза будет.

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

вторая строчка после если без скобок это продолжение попадания или уже еслине

А со скобками

(if (> x 0)
    (action1)
    (action2))

разве очевидно, что action2 при еслине ? Если для неграмотных, то обязательно надо слово «иначе» в синтаксис втыкать. Хотя и для упрощения чтения может пойдёт, надо подумать.

или «а вот тут таб вставлен или тут реально пробелов дофига и подподподфункция какая-то?» и т.п.

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

if (x > 0)
!  action1 arg1
!  action2 arg2
monk ★★★★★ ()

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

А теперь переделай это в «для русскопечатающих» (ЙЦУКЕН).

«;» тоже дольше набирается, чем в QWERTY, т.к. надо еще SHIFT держать.

В ЙЦУКЕН вообще таких кнопок меньше. Только -=\ и ., ну и на NumPad’e /*-+.

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

Накидайте примеров ЯП для немецкоговорящих

do
do class
do class if.

do
do class
do class if.

do!
do class!
do class if
do class if!
do class if inline
do class if inline
do class if inline!
bool this delete define!

this do int break sizeof public
try if struct for auto static
while!
while!
grem ★★★★★ ()
Ответ на: комментарий от boowai

«;» тоже дольше набирается, чем в QWERTY, т.к. надо еще SHIFT держать.

Некоторые вообще ВерблюжьиМногослованыеИдентификаторы пишут. И Shift им не мешает.

И если очень надо, то верхний цифровой ряд легко перепрограммируется в <@#$>^&`[] без Shift-а И на NumLock’овской к /* добавить с Shift-ом ~|

monk ★★★★★ ()

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

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

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

если это отсылка к школьной программе, то в русских школах используют латинскую n

Внезапная зрада! Русификаторам стоит продумать вариант полного запрета вражеского алфавита в программах. А то школьники понапишут им иксов всяких на радость шпиёнам.

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

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

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

Больше всего доставляет даже не русский язык (который для программирования подходит как корове седло)

Английский подходит не лучше. Объективно хорошо подошёл бы китайский (из-за короткой записи) или ифкуиль (из-за однозначности трактовки).

каждый фрик делает свой ЯП

Не совсем свой. У den73 Oberon, у меня Racket. А «своих DSL» под каждую задачу в любом лиспе вагон.

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

Есть же 1с?

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

  2. У него достаточно ограниченный язык. Например, значением переменной не может быть функция.

  3. У 1с нет возможности запускать функции из внешних библиотек.

  4. Производительность.

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

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

Язык без знаков <>[]{}`~’$#@: сделать можно, но он будет многословным как Кобол и, как следствие, трудночитаемым.

Проще разово сменить раскладку или добавить комбинации в IDE.

monk ★★★★★ ()