LINUX.ORG.RU

Язык программирования 1 теперь работает на Эльбрусе

 , , , ,


4

2

Также реализовано формирование имён функций доступа к полям структуры по правилам русского языка.

$ uname -a
Linux alatyr 5.4.0-3.19-e1cp #1 Wed Mar 9 16:53:28 MSK 2022 e2k E1C+ MBE1C-PC GNU/Linux
$ cat тест.1
#!1

структура человек
  ; имя
    отчество #:изменяемое
  #:суффикс -человека

иван = человек "Иван" "Иванович"
отчество-человека иван := "Петрович"
отчество-человека иван
$ racket/bin/racket тест.1
"Петрович"

Пока сборка есть только для Эльбрус Линукс на Эльбрус-1С+ (система команд e2k-8c). Для остальных можно воспользоваться скриптом для сборки.

Язык 1 - функциональный язык программирования на основе русского языка. Синтаксис унаследован от Haskell, семантика от Racket.

Предыдущее обсуждение на ЛОРе

>>> Описание языка

★★★★★

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

EDG

Угу, уже нашёл, успел отредактировать свой предыдущий камент.

C-Extensions

Была у меня такая мысль, но не сразу утряслась: где расширения GCC, а где парсер. Но если он эти расширения хавает, тогда в целом понятно. Сенькс.

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

Понял.

pr849
()
Последнее исправление: pr849 (всего исправлений: 2)
Ответ на: комментарий от no-such-file

Оказалось что «литературность» чистого кода вполне достаточная, народ привык.

Достаточная? Нет. Просто всем лень описывать одно и то же дважды, а потом ещё следить чтобы описания не расходились.

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

Чтобы были понятны пропорции:

«Компилятор lcc написан на языке C, актуальная рабочая версия, и представляет из себя более 2,76 млн. строк кода, 0,74 млн. строк кода из которых принадлежат начальной фазе компиляции (frontend) от фирмы edg» ссылка

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

всем лень описывать одно и то же дважды

Достаточная? Нет

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

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

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

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

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

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

Язык 1 - функциональный язык программирования на основе русского языка.

Лучше бы назвали язЫк «Ы», «чтоб никто не догадался».

есть только для Эльбрус

«ЫЭ» – лингвокапец для англоязычных погромистов.

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

Лучше бы назвали язЫк «Ы», «чтоб никто не догадался».

Я бы назвал его по-русски, но имя языка в Racket ограничено [0-9a-z+-_]*.

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

О, очередной Хѣръ подвезли. С падежными СУФФИКСАМИ ггг.

thesis ★★★★★
()
Ответ на: комментарий от no-such-file

Достаточность для чего? Для понимания компом — да, один раз написать сам код достаточно. Для понимания того, кто этот код потом будет читать — не факт.

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

Там нет замыканий и сборщика мусора. Без них некомфортно.

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

Путаешь тёплое с мягким. А именно информацию и форму подачи.

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

Но вот когда речь идёт о конкретном языке программирования - здесь уже довольно большое значение имеет именно форма. Один и тот же алгоритм на разных языках может выглядеть очень по разному. Если ты русскоязычный и собираешься изучать язык программирования, то, что в случае с англоязычным, что в случае с кирилличиским ЯП тебе надо совершенно одинаково изучать весьма специфичный синтаксис и семантику каждого конкретного языка. Даже кириллические ЯП могут по структуре, семантике и всему прочему очень и очень сильно отличаться друг от друга. И тут уже языкового барьера, по сути, нет. Что конструкция «если… тогда… иначе…», что «при условии… выполнить… не_выполнено…» - одни и те же строго определённые и совершенно невзаимозаменяемые «магические» наборы, которые надо учить отдельно от разговорного языка, что совершенно не отличается от изучения условных «if… then… else».. И вот тут уже важно - на каким именно языком (программирования) ты владеешь. Только вот латиница есть у большинства мира в локалях и клавиатурах, и любой индус тебе напишет «if… then… else» а с кириллицей надо отдельно так нехило заморачиваться, на что подавляющее большинсиво мира благополучно забьёт болт, что и обеспечивает разницу в количестве специалистов и работодателей.

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

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

Про программирование на естественных языках имею дополнить: неоднократно видел как ругают SQL за то, что его создатели пытались сделать его похожим на естественный английский, и получилась хрень. Хотя конкретная претензия помнится только одна: FROM после SELECT, а надо перед: сначала вводим алиасы таблиц, а потом уже ссылаемся на них. В общем, буря в стакане; кому надо – нарисуйте себе внутренний DSL с каким хотите синтаксисом. Но тем не менее.

Мораль: не надо путать тёплое с мягким языки для людей с языками для машин.

Про нейронки, которые понимают человеческий язык и переводят его в код, я тоже скептичен: написать i++ куда быстрее, чем выговорить, не говоря уже про что-то сложное. Хотя кто его знает, может в каких-то отдельных сценариях и сработает.

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

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

Вот конкретный пример: 1С. Я его изучал в кириллической версии. Но потом обслуживал в том числе конфигурацию Hotel, целиком написанную на английском диалекте 1С. Так как семантика идентична, а синтаксис соответствует слово-в-слово (с точностью до перевода), то потребовалось минут 15, чтобы сориентироваться.

То есть если знаешь, например, 1, то перейти на Racket не составит труда. А учить сразу Racket сложнее, потому что для некоторых слов даже перевод по словарю не помогает, приходится учить как магические заклинания.

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

Если писать под заказ в РФ, то здесь русский знают все, а английский достаточно небольшая доля заказчиков. Если же писать под заказ за рубеж, то проигрываешь любому, для кого английский native уже на этапе обсуждения ТЗ.

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

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

Библиотеки решаются через перевод интерфейса библиотек и возможность использования чужих библиотек. В 1 можно полностью использовать все библиотеки Racket (например, в структура.1 именно так реализована структура) и через Racket FFI можно использовать сишные библиотеки. А через надо-быстро можно будет использовать и библиотеки Си++.

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

Достаточность для чего

Для всего.

Для понимания того, кто этот код потом будет читать — не факт

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

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

Если я правильно помню презентацию от МЦСТ, то LLVM использовать можно - у них в планах был какой-то специальный режим lcc, который на вход принимает биткод LLVM и докомпилирует его до Эльбрусовского бинарника.

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

Да. Там получается, что из LLVM делается что-то вроде Си и дальше компилируется.

monk ★★★★★
() автор топика
Ответ на: комментарий от no-such-file

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

Вот именно. И именно это приходится писать на естественном языке в комментариях и документации к коду. Потому что из самого кода это ничуть не очевидно.

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

Как вы на своём Ракете вводите лямбду?

отобразить
  функция (а) $ а + 1
  список-чисел
monk ★★★★★
() автор топика
Ответ на: комментарий от monk

А замыкание можно так:

генератор(а)() =
  а := а + 1
  а

а1 = генератор 5
а2 = генератор 10

a1()  -- возвращает 6
a1()  -- возвращает 7
a2()  -- возвращает 11
monk ★★★★★
() автор топика
Ответ на: комментарий от najlus

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

Не всегда, лексикографическая сортировка зависит от языка.

quickquest ★★★★★
()

Название у языка годное. А вот в синтаксисе буквы зря стали использовать :))) Без букв — гораздо лучше.

А вообще, пусть будет, конечно. Но Лиспы я не очень хорошо понимаю. Надо сделать язык 0 на основе ML, вот точно будет зачётное поделие!

Vudod ★★★★★
()

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

Vudod ★★★★★
()

на глаз как-то не воспринимается название совсем - 1

kto_tama ★★★★★
()
Ответ на: комментарий от no-such-file

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

Ещё как играет. Например, когда речь идёт о крайне неочевидном коде, а не просто json туда-сюда конвертнуть.

Собственно, я часто пишу как раз в формате literate programming, чтобы когда я свой код читаю через полгода, не забыть что я вообще делал. Использую Literate Haskell и Org mode для не-Haskell.

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

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

Дык а здесь в чём отличие? Тебе точно так же надо выучивать, что вместо слова «класс» надо писать именно «структура», а не, скажем, «шаблон» какой-нибудь, да ещё отдельно разбираться в том, какие суффиксы поддерживают каждый из классов, а какие нет, что некисло так перегружает язык.

Если же писать под заказ за рубеж, то проигрываешь любому, для кого английский native уже на этапе обсуждения ТЗ.

Что не мешает прорве людей спокойно работать за рубежом (особенно сейчас). Но тут опять же ты путаешь знание естественного языка и языка программирования. Да, тебе может быть тяжелее обсуждать ТЗ, но ты можешь при этом вытягивать в плане алгоритмов/опыта/знания самого ЯП вне зависимости от знания языка разговорного.

Библиотеки решаются через перевод интерфейса библиотек и возможность использования чужих библиотек. В 1 можно полностью использовать все библиотеки Racket (например, в структура.1 именно так реализована структура) и через Racket FFI можно использовать сишные библиотеки. А через надо-быстро можно будет использовать и библиотеки Си++.

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

Да, есть 1С, но даже там, ЕМНИП, всё же добавили «английский» вариант написания даже при том, что сама система крайне локальноспецифична.

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

Если писать под заказ в РФ, то здесь русский знают все, а английский достаточно небольшая доля заказчиков.

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

hateyoufeel ★★★★★
()

Опять замена скобок отступами и пробелами… Откуда вы такие берётесь, идиоты-питонисты?

Вот честно, вас и ваши «языки программирования» надо уничтожать, книги по ним сжигать и не давать учить…

Дети визуальных редакторов. Сколько идиотизма в этом невидимом форматировании. Мало нам редакторов Word, вы хотите это и в программирование привнести.

Harzah2
()
Последнее исправление: Harzah2 (всего исправлений: 1)

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

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

На естественном языке это вот так:

как нибудь через хитрую жопу

сделать зашибись
DumLemming ★★☆
()
Ответ на: комментарий от One

Все эти народы были изнасилованы наглосаксами, потому и не думают о своём языке. Почему-то им хватило одного раза

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

Шутка за триста про тяжёлые наркотики.

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

[Узок их круг и страшно далеки они от народа](картинка-с-жирафом.жпг)

В 2003-2012 жил в доме, во дворе которого парковалась машина. На заднем стекле машины красовалось «1C-программист» и ниже телефон.

Да, это ограниченный рынок, и, вероятно, данного гражданина не пытаются хантить индийцы из Тьюринга. Что не мешало (не знаю, как сейчас на том рынке дела) ему и его собратьям по ремеслу окормлять десяток-другой ИП, ООО и прочих субъектов малого и среднего бизнеса и через это получать свой кусок масла на хлеб. Не очень большой, скорее всего, но, видимо, достаточный для того, чтобы продолжать этим заниматься.

И при чём тут, простите, тоталитаризм? Мысля подобным образом Вы в каждом электрике гонца из <неназываемо> видеть будете.

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

При этом на одном 1С продаётся больше продуктов, чем на всех остальных ЯП в РФ вместе взятых.

ну, нет, конечно.

Стартовая страница Яндекса продаётся точно не хуже всех инсталляций 1C. Да и всякие телеприставки с видеорегистраторами.

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

Думается, Вы тянете политоту на технический форум.

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

Если же писать под заказ за рубеж, то проигрываешь любому, для кого английский native уже на этапе обсуждения ТЗ.

Крайне спорное утверждение. Случалось в прошлом веке, во времена бума доткомов, переделывать код за англоязычными программистами, предположительно индийцами. А сравнительно недавно довелось плотно поработать с кодом китайских коллег и комментариями на китайском к нему. Не сказал бы, что код индийцев был сильно понятнее :-)

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

Без букв — гораздо лучше.

welcome to Brainfuck!

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

На самом деле если автор сделает простенький интерпретатор/компилятор

Это уже есть.

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

Вот уже работающий пример: шаблонизатор.

пристойную математическую библиотеку

Будет перенесено вот это: https://docs.racket-lang.org/math/

графопостроитель и интерфейс к Tk

Будет своё, но переносимое Lin/Win/Mac. Выглядеть будет примерно так:

#!1
используется
  графический-интерфейс
  графики

окно = новое главное-окно% 
  заголовок "График"
  ширина 400
  высота 250
редактор = новый текст%
поле = новое поле-редактора% 
  родитель окно
  редактор редактор 

с-параметрами
  ;
    ширина-графика 150
    высота-графика 150
  для-объекта редактор
    вставить $ график $ график-функции синус (- пи) пи
    вставить $ график $ график-функции квадратичная -2 2

окно {показать истина}
monk ★★★★★
() автор топика
Ответ на: комментарий от One

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

На немецком http://www.fiber-space.de/EasyExtend/doc/teuton/teuton.htm

schön = Wahr
häßlich = Falsch

für bäh in [schön, häßlich]:
    drucke bäh

def sovielwiemöglich():
    "gib"
    zurück "was mir gehört"

На испанском https://lexico.mobi/t/Instrucciones-Lexico.html

tarea{
   /*Cálculo del perímetro de una circunferencia*/
   los objetos radio, longitud_del_perímetro son Cantidades
   entre radio
   copie 2*3.14*radio en longitud_del_perímetro
   muestre "El perímetro mide ", longitud_del_perímetro
}

На итальянском я тоже не видел.

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

Тебе точно так же надо выучивать, что вместо слова «класс» надо писать именно «структура»

Классы там тоже есть.

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

Суффиксы используются единожды при создании функций доступа к полям структуры. Причём для структуры это всегда родительный падеж её имени. И намного проще запомнить, что «длина-строки возвращаю длину строки, а длина-массива возвращает длину массива, чем string-length возвращаю длину строки, а vector-length возвращает длину массива».

Да, тебе может быть тяжелее обсуждать ТЗ, но ты можешь при этом вытягивать в плане алгоритмов/опыта/знания самого ЯП вне зависимости от знания языка разговорного.

Именно так. То есть если есть ты и Джон, то либо ты должен быть заметно круче этого Джона в плане алгоритмов/опыта/знания самого ЯП, либо будут работать не с тобой, а с Джоном.

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

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

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

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

Да, есть 1С, но даже там, ЕМНИП, всё же добавили «английский» вариант написания даже при том, что сама система крайне локальноспецифична.

Там английский для экспортных конфигураций: https://1c-dn.com/

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

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

А это уже синдром утёнка. Код на 1С для многих тоже неприемлем (говорят «русский текст у меня как код вообще не воспринимается»).

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

Опять замена скобок отступами и пробелами… Откуда вы такие берётесь, идиоты-питонисты?

В моём случае всё добровольно.

#!1
структура человек (имя (отчество #:изменяемое)) #:суффикс -человека
иван = человек "Иван" "Иванович"
отчество-человека иван := "Петрович"
отчество-человека иван

скомпилируется не хуже.

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

лучше бы примером кода было вычисление факториала хотя бы

факториал н =
  н < 2 ? 1
    н * факториал(н - 1)
monk ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.