дневник Яос

Только технические вопросы по ЯОС и MINOS. Терминология и прочее - в других форумах.
БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 16.04.21 21:48

Как-то теплится процесс, определился с переводом нескольких терминов в LisSyntaxTree (это один из ключевых модулей компилятора и термины
весьма фундаментальные).

https://gitlab.com/budden/ja-o-s/-/comm ... df516fe9ab

> LisSyntaxTree. Visitor - посетитель, Import - ИспользованиеМодуля, Statement - Предписание, StatementSequence - ЦепочкаПредписаний

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 17.04.21 23:49

Ещё немного попереводил. Чудные названия конечно получаются, например "ПредписаниеЕсли", "ПредписаниеВвестиВывестиЧерезПорт", "ПредписаниеПрисвоитьЗначение" (последнее - это := ).

MihalNik
Сообщения: 244
Зарегистрирован: 05.11.18 11:02

Re: дневник Яос

Сообщение MihalNik » 18.04.21 00:55

БудДен писал(а):
17.04.21 23:49
"ПредписаниеПрисвоитьЗначение" (последнее - это := ).
Звучит естественно.
БудДен писал(а):
17.04.21 23:49
"ПредписаниеВвестиВывестиЧерезПорт".
Видимо, ВвестиИлиВывести.
БудДен писал(а):
17.04.21 23:49
"ПредписаниеЕсли"
Выбивается из ряда.
употребляется при присоединении придаточного предложения, выражающего потенциально возможное условие
"ПредписаниеПроверитьУсловие"?

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 18.04.21 12:56

ПредписаниеЕсли удобно называть «Предписание „Если“». Т.е. получается два варианта именования - по открывающему ключевому слову, если оно есть, или по краткому описанию действия, если ключевого слова нет. Проблема здесь в том, что синтаксис языка не позволяет вставлять в идентификаторы знаки препинания. Поэтому идентификатор в виде словосочетания сразу уродуется. Если дальше на его основе создавать новые словосочетания, например, "ПосещаетсяПредписаниеЕсли", то получается «казнить нельзя помиловать" - можно прочитать "Посещается предписание, если".

Кроме того, просей_тип я назвал «Предписание просеять тип», потому что мне сначала попались несколько предписаний, не имеющих открывающего ключевого слова и решил называть их по действию. И только потом понял, что тут тоже возникла на ровном месте словоформа, которая будет затруднять навигацию - нельзя грепом найти синтаксическую конструкцию по открывающему слову. Тогда получается, что «:=» нужно называть «Предписание „Присвой“».

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

Пока неясно, что делать дальше.

MihalNik
Сообщения: 244
Зарегистрирован: 05.11.18 11:02

Re: дневник Яос

Сообщение MihalNik » 18.04.21 13:15

БудДен писал(а):
18.04.21 12:56
ПредписаниеЕсли удобно называть «Предписание „Если“». Т.е. получается два варианта именования - по открывающему ключевому слову, если оно есть, или по краткому описанию действия, если ключевого слова нет.
Во-первых, это нарушает целостность стиля, что ухудшает восприятие.
Во-вторых, ключевые слова могут поменяться.
В-третьих, могут поменяться даже знаки, знаки на слова, или слова на знаки.
ПредписаниеПрисвоитьЗначение или ПредписаниеПроверитьУсловие - точно описывает суть явления словами, а "ПредписаниеЕсли" - это иероглифическая сущность, порождающая ненужные зависимости, которые потянут за собой в будущее лишние усилия.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 18.04.21 14:05

Ну я над этой проблемой думал некоторое время назад. В A2 вообще приняты условные названия, например, я ломал голову над «Part», которое на 4-5 попытке превратилось в условную "веткуПредписания". А по сути она означает «Часть предписания с ветвлением, включающая условие выбора ветки и действия в этой ветке». Я не спец в лингвистике, но я бы сказал, что названия могут быть «условные», т.е. просто некие метки, не связанные по смыслу с обозначаемым, и «объясняющие», где мы не назначаем условную метку, а вместо этого расписываем смысл обозначаемого в более примитивных понятиях.

В плане «чистого кода» кажется более правильным использовать только «объясняющие» названия, чтобы любой залётный программист, если он владеет понятийным аппаратом, сразу понимал, о чём идёт речь. В математических книжках - другой экстремум, когда используются только «условные» γ, μ и δ, цели быть понятными обычно не ставится, скорее наоборот, запутать читателя. Поскольку изначальных понятий мало и выражать через них всё неудобно, в достаточно сложной предметной области условные названия неизбежны. Такая «метка», как ключевое слово, стоящее в начале предписания, выглядит естественной. Так или нет?
Последний раз редактировалось БудДен 18.04.21 14:11, всего редактировалось 1 раз.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 18.04.21 14:09

Это я к тому, что я ошибся при выборе стиля именования. Большинство предписаний можно идентифицировать по ключевому слову, с котороого они начинаются. Исключения - это «:=», «тело .. кн», «вызов процедуры», ну и ещё парочка, может быть. А именованные - это «Если», 2-3 вида циклов, 2 вида ветвления, прерывание цикла, возврат, игнорирование возврата процедуры - гораздо больше. Демократическим путём стиль именования по ключевому слову побеждает. В противном же случае придётся придумывать и помнить «объясняющее» название для всех предписаний, у которых уже есть ключевое слово - это лишнее усложнение. Согласны?

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 18.04.21 14:13

Если ключевые слова поменяются, то надо будет сделать рефакторинг. Я не сторонник того, чтобы ключевые слова менялись так же легко на уровне конечного пользователя, как шрифты или цветовая схема, хотя это расхожая идея. Не вижу в этом особой пользы. А раз так, то можно на это особо и не закладываться. Я понимаю, что моя точка зрения на это - не единственная, но если даже вдруг когда-то наборы ключевых слов будут настраиваться в ИСР для просмотра данного типа файлов, то в компиляторе всё равно будет некое фиксированное «основное» имя данного ключевого слова. Оно же будет фигурировать и в словаре настроек пользователя.

MihalNik
Сообщения: 244
Зарегистрирован: 05.11.18 11:02

Re: дневник Яос

Сообщение MihalNik » 18.04.21 14:32

БудДен писал(а):
18.04.21 14:13
Я не сторонник того, чтобы ключевые слова менялись так же легко на уровне конечного пользователя, как шрифты или цветовая схема, хотя это расхожая идея. Не вижу в этом особой пользы.
Дело в том, что Вы изначально не знаете, что устоится, а что - нет. Искуственное замедление отсрочит только применение самого языка.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 18.04.21 14:41

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

MihalNik
Сообщения: 244
Зарегистрирован: 05.11.18 11:02

Re: дневник Яос

Сообщение MihalNik » 18.04.21 15:01

БудДен писал(а):
18.04.21 14:09
Это я к тому, что я ошибся при выборе стиля именования.
Cпособ именования для спецзнаков получился естественный, а c ключевыми словами - нет.
БудДен писал(а):
18.04.21 14:09
Большинство предписаний можно идентифицировать по ключевому слову
Но эта "идентификация по ключевому слову" не будет русским языком.
БудДен писал(а):
18.04.21 14:09
Демократическим путём стиль именования по ключевому слову побеждает.
Не демократическим, а копипастным (дублированием).
БудДен писал(а):
18.04.21 14:09
придётся придумывать и помнить «объясняющее» название для всех предписаний, у которых уже есть ключевое слово - это лишнее усложнение.
В этом и есть смысл русскоязычного программирования. Это не усложнение, а облегчение, для тех, кто будет читать исходники.
Или Вам понравились идентификаторы в кишках BBCP? Так-то в русском языке 33 буквы, больше чем в греческом, или латинском.
Только кто потом такое будет читать?

MihalNik
Сообщения: 244
Зарегистрирован: 05.11.18 11:02

Re: дневник Яос

Сообщение MihalNik » 18.04.21 15:03

БудДен писал(а):
18.04.21 14:41
Не отказываться же от слова "если" только ради того, чтобы убрать это базовое название?
Слово если - в русском языке - это союз. Поток текста, где оно будет в другой роли читать утомительно.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 18.04.21 15:17

БудДен писал(а):
18.04.21 14:09
придётся придумывать и помнить «объясняющее» название для всех предписаний, у которых уже есть ключевое слово - это лишнее усложнение.
В этом и есть смысл русскоязычного программирования. Это не усложнение, а облегчение, для тех, кто будет читать исходники.
Или Вам понравились идентификаторы в кишках BBCP? Так-то в русском языке 33 буквы, больше чем в греческом, или латинском.
Только кто потом такое будет читать?
Осмелюсь стоять на своём. Объём понятийного аппарата может быть разным. Оптимум зависит от того, как читать, и от сложности предметной области. Чем сложнее предметная область, тем больше в ней понятий. Создание понятийного аппарата в целом естественно, но мы можем регулировать его: либо создавать лишние понятия, либо избегать создания понятий там, где они напрашиваются. Если мы создаём лишние понятия, то это может быть удобнее при глубоком погружении в предметную область (сможем излагать информацию более сжато и выражать более тонкие знания). Если мы воздерживаемся от создания уместных понятий, то мы облегчаем поверхностную деятельность (зайти раз в 5 лет и по мелочи поправить). Т.е. нет наилучшего для всех случаев способа представления кода.

Конкретно в случае предписания "если", допустим мы пойдём по вашему предложению и назовём его правильно, т.е. "Предписание_выполнить_один_из_вариантов_в_зависимости_от_значения_выражений". Тогда вновь пришедшему для чтения компилятора нужно будет сначала уяснить себе, что предписание "если" называется именно так, и потом всю дорогу это помнить. И то же нужно будет сделать для каждого предписания, начинающегося с ключевого слова. Это разве облегчит работу? В моём же случае начинаем с правила "предписание называется Предписание<КлючевоеСлово>, а у кого нет ключевых слов - надо искать и запоминать".

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 18.04.21 15:23

MihalNik писал(а):
18.04.21 15:03
БудДен писал(а):
18.04.21 14:41
Не отказываться же от слова "если" только ради того, чтобы убрать это базовое название?
Слово если - в русском языке - это союз. Поток текста, где оно будет в другой роли читать утомительно.
Потому я и думаю уже, как разрешить знаки препинания. Потому что ПредписаниеЕсли - это действительно выносит мозг, а вот какое-нибудь Предписание«Если» - уже в меньшей степени.

MihalNik
Сообщения: 244
Зарегистрирован: 05.11.18 11:02

Re: дневник Яос

Сообщение MihalNik » 18.04.21 17:03

БудДен писал(а):
18.04.21 15:23
ПредписаниеЕсли - это действительно выносит мозг, а вот какое-нибудь Предписание«Если» - уже в меньшей степени.
Но все равно утомительно, потому что слово использовано не по своему назначению. Читать текст с понятиями в кавычках в разы медленнее.
БудДен писал(а):
18.04.21 15:23
Потому я и думаю уже, как разрешить знаки препинания.
Не то, чтобы это была сама по себе плохая задача. Плохо использовать как затычку русского языка.
Ключевых слов - несколько десятков, и то, как понял, не все относятся к предписаниям. Что там надо назвать-то?
ВыполнитьОбусловленныеДействия, ВИномСлучаеПроверитьУсловие, СделатьВИномСлучае, ПовторятьСПроверкойУсловияОстановаВКонце, ПроверитьУсловияОкончанияЦикла, ПовторятьПокаВерноУсловие, ЗапуститьЦиклСоСчетчиком, УстановитьКонечноеЗначениеСчетчика, УстановитьШагСчетчика, ЗапуститьЦиклСМножествомВыходов, ВыйтиИзЦикла, ВыбратьЗначение (или ПроверитьЗначение), УстановитьВыбираемыеЗначения (или УстановитьДействияПриЗначениях)? Что-то еще?
Последний раз редактировалось MihalNik 18.04.21 18:28, всего редактировалось 1 раз.

MihalNik
Сообщения: 244
Зарегистрирован: 05.11.18 11:02

Re: дневник Яос

Сообщение MihalNik » 18.04.21 17:11

БудДен писал(а):
18.04.21 15:17
Конкретно в случае предписания "если", допустим мы пойдём по вашему предложению и назовём его правильно, т.е. "Предписание_выполнить_один_из_вариантов_в_зависимости_от_значения_выражений". Тогда вновь пришедшему для чтения компилятора нужно будет сначала уяснить себе, что предписание "если" называется именно так, и потом всю дорогу это помнить. И то же нужно будет сделать для каждого предписания, начинающегося с ключевого слова. Это разве облегчит работу? В моём же случае начинаем с правила "предписание называется Предписание<КлючевоеСлово>, а у кого нет ключевых слов - надо искать и запоминать".
Это зависит только от того, как именно будет названо. В Вашем же случае Вы снимаете с себя ответственность за это.
БудДен писал(а):
18.04.21 15:17
Чем сложнее предметная область, тем больше в ней понятий.
Или наоборот.
БудДен писал(а):
18.04.21 15:17
один_из_вариантов_в_зависимости_от_значения"
Это же оператор выбора CASE. Конечно, условное ветвление - частный случай. Но в Обероне-то отдельно.
БудДен писал(а):
18.04.21 15:17
стоять на своём
Но вот кому какое до этого дело?

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 18.04.21 18:51

> В Вашем же случае Вы снимаете с себя ответственность за это.

Я не снимаю ответственность, а просто использую ранее выстраданные названия повторно.

Вот здесь, я думаю, перечислены все statement -ы:

https://gitlab.com/budden/ja-o-s/-/blob ... e.Mod#L448

Я уже всё равно принял решение называть предписания по ключевым словам, но Вы можете в качестве упражнения попробовать придумать названия операторов так, чтобы было очевидно, где "If", где "case" а где "With". Ключевые слова, соответственно, "если", "просей" и "просей_тип".

> Но вот кому какое до этого дело?

Если мы приходим к консенсусу, то мы команда. Если заканчиваем на высказываниях из серии "меня не интересует ваша точка зрения" - то нет. Разница ощутимая, в общем-то.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 18.04.21 18:59

ПовторятьСПроверкойУсловияОстановаВКонце

В реальном коде тогда будет

ПосещаетсяПредписаниеПовторятьСПроверкойУсловияОстановаВКонце

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

ПосещаетсяПредписание«цикл_до»

?

MihalNik
Сообщения: 244
Зарегистрирован: 05.11.18 11:02

Re: дневник Яос

Сообщение MihalNik » 18.04.21 21:33

БудДен писал(а):
18.04.21 18:51
Если мы приходим к консенсусу, то мы команда. Если заканчиваем на высказываниях из серии "меня не интересует ваша точка зрения" - то нет. Разница ощутимая, в общем-то.
Вопрос как бы не стоит таким образом. Вы в любом случае сможете сделать так, как захотите.
Последний раз редактировалось MihalNik 18.04.21 22:03, всего редактировалось 1 раз.

MihalNik
Сообщения: 244
Зарегистрирован: 05.11.18 11:02

Re: дневник Яос

Сообщение MihalNik » 18.04.21 21:43

БудДен писал(а):
18.04.21 18:59
ПовторятьСПроверкойУсловияОстановаВКонце

В реальном коде тогда будет

ПосещаетсяПредписаниеПовторятьСПроверкойУсловияОстановаВКонце

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

ПосещаетсяПредписание«цикл_до»

?
Это зависит от контекста применения. Оторвано от него нельзя выбрать правильные названия. Но если выбрать исчерпывающее выражение, на месте будет виднее, что в нем лишнее.
"ПовторятьДоУсловия" не так уж сильно и длиньше, чем "цикл_до".
Далее, почему нужно сократить именно эту часть, а, например, не "Посещается" до "ЗаходВ" или даже просто "В"?
"ПосещаетсяПредписание" = "ВПредписание". Тогда
ПосещаетсяПредписание«цикл_до» = ВПредписаниеПовторятьДоУсловия.
Сокращать важно именно шаблоны, которые часто используются и, соответственно легко запомнить. Хотя в данном случае все слова остаются целыми. В обычных языках все это давным давно обкатано и выражено в кратких частях речи вроде союзов, предлогов, частиц и местоимений.
А в исходниках, вероятно, проблема декомпозиции и должно быть просто "ПосещаетсяПредписание".
Расширение типов вроде бы в Обероне есть.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 18.04.21 23:28

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

Вот первая попавшаяся статья про этот шаблон, посмотрите, как там сделано: https://refactoring.guru/ru/design-patterns/visitor

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

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

Подумайте ещё вот о чём: представьте себе, что делается дамп дерева разбора для отладки в виде условного XML/JSON. Неужели Вы предпочтёте видеть вот эти вот простыни из словосочетаний, а не названия открывающих ключевых слов, где они есть?
Последний раз редактировалось БудДен 18.04.21 23:38, всего редактировалось 2 раза.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 18.04.21 23:31

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

¡ - вместо восклицательного знака
¿ - вместо вопросительного
˛ - вместо запятой
ˉ - вместо тире или дефиса
и вот такие кавычки «» - они должны быть сбалансированы, но это не проверяется

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

Применять их вряд ли можно в именах модулей, но изменён основной компилятор, ИСР, подсветка синтаксиса.

Не изменён также движок перевода (не уверен, что потребуется какая-то работа, но тестов не проводилось).

MihalNik
Сообщения: 244
Зарегистрирован: 05.11.18 11:02

Re: дневник Яос

Сообщение MihalNik » 19.04.21 04:30

БудДен писал(а):
18.04.21 23:31
Ввиду того, что обнаружились трудности при формировании переводов словосочетаний, теперь в идентификаторах можно вставлять некоторые знаки препинания:

¡ - вместо восклицательного знака
¿ - вместо вопросительного
˛ - вместо запятой
ˉ - вместо тире или дефиса
и вот такие кавычки «» - они должны быть сбалансированы, но это не проверяется
Главное, что Лис заблаговременно отправлен в бан и не сможет требовать других иероглифов)

MihalNik
Сообщения: 244
Зарегистрирован: 05.11.18 11:02

Re: дневник Яос

Сообщение MihalNik » 19.04.21 04:55

БудДен писал(а):
18.04.21 23:28
Там нет проблемы декомпозиции. Там есть ровно такое ООП, и ровно та проблема, которая решается шаблоном Посетитель, и в меру моих знаний (я не знаток и не любитель ООП), он сделан правильно. В любом случае, если вдруг даже это и можно улучшить с т.з. архитектуры, то у меня нет на это ресурсов на рефакторинг всего компилятора (а используется там этот посетитель много раз, и даже я сам создавал два-три потомка этого визитора для целей перевода).

Вот первая попавшаяся статья про этот шаблон, посмотрите, как там сделано: https://refactoring.guru/ru/design-patterns/visitor
Шаблон-то не причем. В любом случае название не передает смысла, более чем "goto". A поскольку любая процедура это goto, в качестве любого префикса она бессмыслена, кроме отличения процедуры от данных. Значит, чем короче, тем лучше. Так-то можно и какую-нибудь стрелочку в имя добавить. Правда, в данном случае вообще неясно, в чем проблема, т.к. винительная форма не отличима от именительной, даже какой-нибудь недопоиск сломаться не сможет.
Но для чего именно посещается не ясно, так что название не содержит самого главного. Но это, может быть, опять же, по причине оторванности от контекста.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 19.04.21 12:28

Ну ладно, мнения разошлись, дальше некогда особо обсуждать. Коротко: в данном случае винительная не отличается, а в другом может отличаться. Шаблон посетитель - это тоже конкретный термин из ООП, я это не люблю, но он есть независимо от моей нелюбви и его тоже нужно перевести. Застолбить имя "Посещается" - и будет всегда понятно, что применён этот шаблон. Если в одном случае применения будет "В", а в другом - "Посещается", то будет ровно то, против чего Вы выступаете, когда я называю предписание "если" - отсутствие единого стиля.

Дальше - если выписать эти методы в столбки, то они плохо смотрятся, но в живом применении слово "посещается" будет мелькать не так уж и часто (см. файл). Можно потерпеть. Стрелки нужны там, где подлежащее сокращению слово встречается часто и повсеместно.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 19.04.21 23:41

Убедился, что движок перевода не ломается на знаках препинания.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 22.04.21 23:03

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 24.04.21 11:55

Начал массировано переводить типы. Ужасно!

https://gitlab.com/budden/ja-o-s/-/blob ... в0.XML#L53

Проблемы следующие: иногда долго разбираться. Например, не знаю, что такое TensorRange, да оно и не нужно мне. В итоге, качество будет как у автопереводчика. Но это ладно ещё. Другая проблема - это как писать: „тип строкового литерала“ или „тип строковых литералов“? По идее нужно во множественном числе, но мне кажется, что есть некая условность и то, что обозначается типом ставится в единственном числе.

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

MihalNik
Сообщения: 244
Зарегистрирован: 05.11.18 11:02

Re: дневник Яос

Сообщение MihalNik » 24.04.21 13:21

БудДен писал(а):
24.04.21 11:55
Начал массировано переводить типы. Ужасно!

https://gitlab.com/budden/ja-o-s/-/blob ... в0.XML#L53

Проблемы следующие: иногда долго разбираться. Например, не знаю, что такое TensorRange, да оно и не нужно мне. В итоге, качество будет как у автопереводчика. Но это ладно ещё. Другая проблема - это как писать: „тип строкового литерала“ или „тип строковых литералов“? По идее нужно во множественном числе, но мне кажется, что есть некая условность и то, что обозначается типом ставится в единственном числе.

Ещё одна проблема - это баланс между сокращениями и полными именами. ПосетиОбращКТипуМатемМассива - обращ вроде у нас везде сокращается, а вот МатемМассив надо ли сокращать или надо писать МатематичекийМассив? Ведь эти сокращения надо будет потом помнить. В общем, тягостное ощущение от всего этого.
Чтобы переводить, надо понимать предметную область иначе будет только хуже. А сокращения почти везде уже придумали до Вас.
Например, надо МатМассив, а не МатемМассив. Хотя в математике никаких массивов нет и о чем речь не ясно.
Это все ерунда, а вот что такое "посетить обращение" догадаться невозможно. Я убрал бы вовсе, оставив "КТипуЧегоТоТам".

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 06.05.21 01:11

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

https://gitlab.com/budden/ja-o-s/-/blob ... ора-лис.md

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 09.05.21 22:14

По-моему, это абсолютно прекрасно:

Код: Выделить всё

ПосетиОбращение˛ОсмысленноеКакОбрКПсевдоПеременной«результат»
- 61 литера (вроде предел 64, но это не точно)

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 11.05.21 01:45

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 13.05.21 23:29

В ходе ночной смены починил пару проблем в движке перевода, связанных с декларациями из будущего (использование раньше объявления).

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 15.05.21 01:49

Ещё попереводил - теперь после применения перевода индекс кирилличности будет 18.89% . Индекс кирилличности файла LisSyntaxTree.Mod - 67.9%. Видимо, с этим файлом дело идёт к концу. Думается, если не произойдёт форс-мажора типа атомной войны, то к концу месяца индекс кирилличности ЯОС достигнет 20%. В случае тотальной атомной войны вряд ли до конца месяца доживу.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 15.05.21 16:07

18.95 (а я уж ждал, что будет 19.0 - видимо, жирные места закончились и начались худые)

LisSyntaxTree.Mod после преобразования кириллизован на 70.6%

Заменю "использование" на "импорт", а всякие ключевые_слова_с_подчёркиванием на ключевыеСловаВ_видеШашлыка.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 16.05.21 00:26

19.08%, а файл - 75.2%

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 16.05.21 16:17

19.12%

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 17.05.21 23:09

19.14 / 76.8

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 18.05.21 22:56

Сегодня переводом кода я не занимался, зато Николай К. переделал ключевые слова в описании языка на русские и составил словарик. Ключевые слова из будущего, не соответствуют текущему состоянию языка, т.к. я решил переделать_все_такие наВотТакие. https://gitlab.com/budden/ja-o-s/-/blob ... е-языка.md

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 19.05.21 19:23

Болею, но не лежу. Посему:

общий индекс кирилличности 19.24 (с учётом ключевых слов в описании язка и новых переводов), в файле LisSyntaxTree.Mod - 78.6%

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 19.05.21 22:58

19.29% / 79.49

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 20.05.21 18:21

19.35% / 81.24% - но май уже кончается (и моё свободное время в нём уж точно кончается), а файл всё не кончается. Похоже, что не успею до конца мая его перевести.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 22.05.21 00:04

Совсем мало, но не 0: 19.37% , 83.3%

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 22.05.21 23:35

19.47% / 85.4% - и там ещё много. А конец мая приближается...

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 25.05.21 00:48

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 25.05.21 22:06

Выложил в интернет страничку, на которой можно запустить ЯОС в эмуляторе, выполняющемся прямо в веб-браузере (ссылка в соседней теме, вообще-то он очень сырой, среда разработки падает при попытке открытия - это мой косяк, сеть не видно - это проблема с драйверами), поэтому копировать ссылку сюда не буду. А также залил на semantic-dict.ru переводы от Сандро. Спасибо!

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 28.05.21 01:55

Починил словарь (регистрация через почту не работала).

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 28.05.21 12:04

19.49 / 86.3

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 30.05.21 02:29

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 30.05.21 22:51

общий индекс кирилличности после применения перевода к LisSyntaxTree был бы 19.58% , а в файле - 88.3%. Пришлось расширить кое-какие типы в компиляторе. Но до конца работы ещё далеко. Как минимум, пора синхронизировать коды "Лиса" и "Fox-а" , а также перевод ещё не завершён - осталось до конца файла 500 строк - частично там уже переведено, но ясно, что часть работы ещё впереди. Вряд ли успею доделать в мае.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 31.05.21 00:08

19.64, но осталось ещё перевести порядка 70 имён в этом файле. На сегодня хватит.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 01.06.21 01:03

Имена доперевёл, не проверял, переводится ли. В связи с проблемами между словами "родитель", "владелец" и ещё некоторыми другими перевод пока нельзя считать жизнеспособным - явно требуются решения между конфликтующими словами.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 05.06.21 22:41

Перевёл оба компилятора. Индекс кирилличности, теперь официальный, 21.75%

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 06.06.21 00:30

21.77% (перевожу комментарии)

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 07.06.21 23:57

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 08.06.21 23:15

Научил ЯОС под Win понимать кириллицу в аргументах командной строки. Это заняло несколько часов, хотя казалось бы, всего несколько строк. Наступил на все грабли, на которые мог. Но заодно написал и стёр немного кода, индекс кирилличности теперь 21.79%.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 09.06.21 23:51

Поправил поиск на форуме, проствил один хештег, поправил правила создания хештегов (теперь нужно писать #КЛЮЧидальшесловаслепленныевместе).
Предельная длина хештега - 30 символов.

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

Индекс кирилличности - 21.82%

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 11.06.21 00:08

день нельзя назвать особо продуктивным. Добавил параметры к команде поиска по файлам, но автозапуск сделал как-то неправильно - второе или третье окно поиска показывается чёрным. Частично локализовал проблему (если не запускать поиск автоматом, то ничего и не виснет). Индекс кирлличности 21.82%

MihalNik
Сообщения: 244
Зарегистрирован: 05.11.18 11:02

Re: дневник Яос

Сообщение MihalNik » 11.06.21 07:29

БудДен писал(а):
11.06.21 00:08
Индекс кирлличности
Может автоматом его уже размещать?

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 16.06.21 00:05

Может и надо автоматом, но пока недосуг. Налаживать CI - это всегда долго и муторно. Хотя автотесты следовало бы уже запускать, но для этого нужна рабочая машина под Win10 или чем-то подобным, а где такую взять?

Сегодня делал алгоритм отсюда http://вече.программирование-по-русски. ... ?f=2&t=441, попутно алгоритм уточняется. Сделал, наверное, на треть. Установил себе 1С 8 и русифицированные Access и Excel - теперь будет проще собирать переводы. Надо бы это делегировать, но кому? Например, нужно собрать имена видимых элементов (видгетов) и все термины, используемые в редакторах форм, и забить их в semantic-dict.ru

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 17.06.21 23:47

Избавился от одной из работ, теперь будет намного больше времени на ЯОС. Пишу лексер для поиска, индекс кирилличности не меряю.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 18.06.21 23:18

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 19.06.21 23:33

Один товарищ из Оберон - сообщества попробовал запустить ЯОС под Linux и оно упало. Стал чинить. Вроде починил клавиатуру, хотя полной уверенности нет. Думаю, что надо сборку под Linux починить, но пока не чинится - много наменял.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 22.06.21 19:36

Продолжал работу над лексером для поиска по файлам. Лексер в целом готов, тесты проходят. Также сделал режим нормализации лексем (выбрасывание пробелов и приведение к нижнему регистру). Теперь надо сделать самое смачное - обработку метасимвола для сопоставления словоформ и можно будет приступать непосредственно к реализации поиска в файлах. Индекс кирилличности потихоньку ползёт вверх, т.к. код пишется, и равен 21.87%

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 27.06.21 00:12

Внезапно потратил почти весь день на починку крокозябл в буфере обмена под Linux. Теперь, после ряда исправлений, ЯОС как приложение под Linux выглядит более-менее жизнеспособной. Продолжаю заниматься поиском, в простейшем виде поиск заработал, теперь нужно реализовать поиск по шаблонам (чтобы находить слово в разных формах). Индекс кирилличности 21.90%, но часть кода скопирована для ускорения отладки - возможно, что скоро снизится. А тем временем подбирается конец месяца, пора начинать подводить итоги...

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 27.06.21 23:06

Занимался поиском по словоформам. Сделал сопоставление с образцом, содержащим метасимвол, который может заменяться на ноль, одну или две любых буквы. До реализации поиска по файлам со словоформами осталось две вещи:

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 29.06.21 00:23

Сегодня времени особо не было, но смог отобразить список находок в виде колонки строчек. Явно не хватает перехода к находке - это следующее, что нужно сделать. Ещё есть проблема, что поиск работает, наверное, в 1000-10000 раз медленнее, чем в VS Code и для практического применения непригоден. Надо профилировать, искать, почему так.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 02.07.21 12:21

Ближайшие планы:

- прочитать все словари и подумать, имеет ли смысл менять соглашение об именовании идентификаторов (может быть проблема
с аббревиатурами)
- Убрать подчёркивания из ключевых слов и глобальных имён в Fox ("системно_зависимое_целое" и "цикл_пока" - две точки входа)
- Пересобрать компилятор Fox компилятором Fox (глобальные имена - общие между Lis и Fox, поэтому
здесь нам не помогает то, что у нас два компилятора)
- Убрать подчёркивания по всему тексту
- Пересобрать новым компилятором весь исходник
- Перевести всё, что переводится, на английский и обратно, убедиться в целостности и идемпотентности перевода
- перевести на английский
- отредактировать словари и изменить в них стиль именования составных слов
- перевести на русский
- доделать поиск по словоформам в новом стиле
- работать над скоростью поиска

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 02.07.21 14:12

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

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 04.07.21 00:37

Дичайший отстой, всё ещё занимаюсь поиском. Поправил ошибки и добавил в параметры возможность выбора метода поиска. Ужааасно долго!

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 07.07.21 10:01

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

https://habr.com/ru/company/mailru/blog/314014/

И парсер оказался довольно большим. Поэтому начал впиливать вот этот лисп: https://github.com/zick/Oberon2Lisp - оказалось, что в A2 есть ограниченная поддержка процедур в стиле Оберона-2. Но разница между ограниченной и работающей в данном случае состояла в том, что компилятор падал. Потратил немало времени, чтобы это поправить, но в итоге понял, что слишком сложно и не стоит требуемых усилий. Завёл ошибку и оставил это как есть: https://gitlab.com/budden/ja-o-s/-/issues/67

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 09.07.21 18:35

Лисп вроде интегрировал, он способен читать данные из строки. Как он вычисляет - не проверял, но это и не нужно. Меньше нужно интерпретаторов, а один интерпретатор в ЯОС уже есть (жаль, я не умею им пользоваться). Надо теперь, чтобы научился читать из потока и тогда можно будет передавать командам ЯОС в качестве параметров структурированные данные, ради чего, собственно, всё и затевалось.

Также поправил документацию: добавил общее оглавление описания языка, добавил непереведённую главу о средствах поддержки параллельности и написал документ о командах ЯОС и особенно о формате их аргументов. Это создаёт предпосылки для интеграции чтеца s-выражений в механизм команд.

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

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

В общем, нужно составить план заморозки проекта (или его перевода в режим сверхнизкой интенсивности).

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 10.07.21 23:50

Начал впиливать в закрытую версию ввод s-выражений, а точнее, их слегка инновационного аналога.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 13.07.21 00:29

Доделал в закрытой ветке опции в виде s-выражений. Забросил в пару мест удочку про программиста вместо себя.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 13.07.21 18:26

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 18.07.21 00:53

За последнее время ещё ряд изменений в закрытой ветке, в т.ч. переиспользование уже открытого редактора при запросе на открытие файла в ИСР, поиск по словам. Теперь нужно сделать поиск/замену во многих файлах, в т.ч. интерактивную. Задача выглядит масштабной, страшно браться. Не могу понять, как быть с закрытостью ветки. По идее проект в целом никому не нужен, а идеи, которые можно из него выдернуть украсть, уже начали появляться в коде, их уже две появилось за последний месяц. Предыдущие идеи касались исключительно русскоязычности и их наоборот хотелось раздать (правда, 1С их не взял, к примеру). А то, что появилось в последнее время - не является специфически русскоязычным. В этом случае имеет смысл развивать проект закрытым. С другой стороны, те, кто высказывал недоверие и опасения, что я закрою проект, и не помогали якобы по этой причине, получат подтверждения своих опасений. Поэтому говорю так: будете помогать делом - открою. Будете стоять и наблюдать - наблюдайте за анонсами. На самом деле не помогали не потому, что боялись закрытия, а по каким-то иным причинам (например, на свои проекты времени не хватало и много других причин). Поэтому проблемы с закрытостью не вижу пока что. С другой стороны, в закрытом формате даже предпосылки к получению добровольческой помощи исчезают. Хотя какая разница, предпосылки-не предпосылки, реальную помощь делом за последние два года задаром мне оказали только два раза.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 19.07.21 02:09

Пытаюсь добить поиск c заменой. Невзирая на имеющееся временное окно, делать ещё довольно много:

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 21.07.21 01:29

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

Теперь нужно доделать поиск и сделать замену.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 23.07.21 00:01

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 24.07.21 00:45

Продвинул Б-выражения, теперь передавать данные из списка находок в редактор. Остаётся 2-3 дня до завершения функционала поиска и замены в файлах. Т.е. похоже успеваю до выхода на новую работу закончить эту часть, и можно будет приступать к кумиризации.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 24.07.21 23:56

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

https://www.youtube.com/watch?v=iT64Z_OU3Mc

Исходники выложил в публичную ветку.

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

https://gitlab.com/budden/ja-o-s/-/blob ... ые-типы.md

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 06.08.21 23:01

В связи с наличием интересующегося, описал 4 задачи по доработке:

https://www.youtube.com/watch?v=dOEnfAezRlQ

https://www.youtube.com/watch?v=qjtFB6jwDD0

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 12.08.21 23:13

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 16.08.21 00:45

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 16.08.21 23:15

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 05.09.21 17:41

Кумиризируем потихоньку. Исходник в экспериментном виде выглядит так:

Код: Выделить всё

модуль Проба;

алг Проверка():цел32;
перем й: цел32;
нач
	нцДля й := 0 до 7 делай
		если й = 2 то
			УТВ(й = 2);
			й := й;
		иначе
			й := 100;
		всё 
	кц;
	неважно Проверка();
кон Проверка;
	
кон Проба. 

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 08.09.21 23:47

В системном меню, пункт справка/документация открывает директорию с документацией в формате markdown. Никакой поддержки формата пока нет - файлы открываются просто как текст.

Аватара пользователя
Сандро
Сообщения: 86
Зарегистрирован: 07.10.18 14:39

Re: дневник Яос

Сообщение Сандро » 13.09.21 22:48

БудДен писал(а):
08.09.21 23:47
Никакой поддержки формата пока нет - файлы открываются просто как текст.
Самый простой способ поддержки маркдоуна — здесь.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 15.09.21 00:14

Не понял. В ЯОС нет javascript, а html едва есть. В этой ситуации данный метод приемлем?

P.S. и чтобы два раза не писать, что нового в ЯОС:
  • Идёт непростая работа по переводу встроенных имён
  • В проработке уже не один, а два варианта использования ЯОС для школьников
  • Сделали "диск" ЯОС:, указывающий на корень ЯОС - пока только Win32, но цена вопроса - одна строчка в конфиге
  • Убрал ограничения в процедуре переименования символов, затеняющих более глобальные одноимённые - теперь оно должно срабатывать за один проход

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 19.09.21 14:52

Сделал в компиляторе режим --переименуйИдентификаторыПоИменам, который переименовывает идентификаторы с данным именем в другое имя (не работает для модулей). Он нужен, чтобы превратить MOD в mod и понизить регистр некоторых других встроенных функций. Прямо в лоб это сделать не получается, потому что в коде довольно много переменных с именем "mod". Описание

В отличие от него, старый решим переименования (он теперь называется --переименуйИдентификаторыПоПутям) переименовывал только конкретные идентификаторы, определяемые по пути вложенности синтаксических конструкций. Например, им можно переименовать МодульА.ОобъектБ.Поле1 в Поле2 и все его использования, и при этом не трогать Модуль1.ОбъектВ.Поле1 (т.к. к нему ведёт другой путь).

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 20.09.21 00:06

Меня тошнит от этого:

Код: Выделить всё

		DeclareTypeR(system.characterType,"CHAR","сим8",system.globalScope);
		DeclareTypeR(system.rangeType,"RANGE","отрезокЦелых",system.globalScope);
		DeclareTypeR(system.integerType,"INTEGER","системноЗависимоеЦел",system.globalScope);
		DeclareTypeR(system.longIntegerType,"LONGINTEGER","длинноеСистемноЗависимоеЦел",system.globalScope);
		DeclareTypeR(system.integerSetType,"INTEGERSET","мнвоНаБитахРазмераСистЗавЦел",system.globalScope);

		DeclareTypeR(Signed8, "SIGNED8", "цел8", system.globalScope);
		DeclareTypeR(Signed16, "SIGNED16", "цел16", system.globalScope);
		DeclareTypeR(Signed32, "SIGNED32", "цел32", system.globalScope);
		DeclareTypeR(Signed64, "SIGNED64", "цел64", system.globalScope);

		DeclareTypeR(Unsigned8, "UNSIGNED8", "бцел8", system.globalScope);
		DeclareTypeR(Unsigned16, "UNSIGNED16", "бцел16", system.globalScope);
		DeclareTypeR(Unsigned32, "UNSIGNED32", "бцел32", system.globalScope);
		DeclareTypeR(Unsigned64, "UNSIGNED64", "бцел64", system.globalScope);

		DeclareTypeR(Float32, "FLOAT32", "вещ32",system.globalScope);
		DeclareTypeR(Float64, "FLOAT64", "вещ64",system.globalScope);

		DeclareTypeR(Complex32, "COMPLEX32", "компл32", system.globalScope);
		DeclareTypeR(Complex64, "COMPLEX64", "компл64", system.globalScope);

		DeclareTypeR(system.realType,"REAL","машинноЗависимоеВещ", system.globalScope);
		DeclareTypeR(system.complexType,"COMPLEX","машинноЗависимоеКомпл", system.globalScope);
		DeclareTypeR(system.booleanType,"BOOLEAN","лог",system.globalScope);
		DeclareTypeR(system.setTypeA,"SET","мнвоНаБитахРазмеромСАдрес",system.globalScope);
		DeclareTypeR(system.anyType,"ANY","динамическиТипизированныйУкль",system.globalScope);
		DeclareTypeR(system.objectType,"OBJECT","окласс",system.globalScope);

		DeclareTypeR(Set8, "SET8", "мнвоНаБитах8", system.globalScope);
		DeclareTypeR(Set16, "SET16", "мнвоНаБитах16", system.globalScope);
		DeclareTypeR(Set32, "SET32", "мнвоНаБитах32", system.globalScope);
		DeclareTypeR(Set64, "SET64", "мнвоНаБитах64", system.globalScope);

		(* глобальные функции. Если меняешь тут, ищи в другом месте вызовы NewBuiltinIdentifier *)
		NewBuiltinR(Abs,"ABS","abs",system.globalScope,TRUE); (* prospero78/Oberon07ru. в КуМире - abs *)
		NewBuiltinR(Ash,"ASH","арифмСдвиг",system.globalScope,TRUE);
		NewBuiltinR(Cap,"CAP","ASCII_вЗаглавную", system.globalScope,TRUE);
		NewBuiltinR(Chr,"CHR","Сим8ИзКода",system.globalScope,TRUE); (* И21 - нет, Глагол - ВЗНАК, 1С - Симв, Oberon07ru = ВЛИТ *)
		NewBuiltinR(Entier,"ENTIER","округлиВниз",system.globalScope,TRUE); (* 1С - Цел, КуМир - int, Русская википедия - "пол", Excel - ОКРВНИЗ *)
		(* NewBuiltin(Entier,"FLOOR","",system.globalScope,TRUE); (* дублирует ENTIER и не входит в стандарт *) *)
		NewBuiltinR(EntierH,"ENTIERH","округлиВниз64",system.globalScope,TRUE); (* в A2 рекомендуется цел64(плавающееЗначение) *)
		NewBuiltinR(Len,"LEN","длина",system.globalScope,TRUE); (* из Глагола; переделать в псевдо-метод *)
		NewBuiltinR(Long,"LONG","устарПреобразуйКБолееШирокомуЦел",system.globalScope,TRUE);
		NewBuiltinR(Max,"MAX","max",system.globalScope,TRUE);
		NewBuiltinR(Min,"MIN","min",system.globalScope,TRUE);
		NewBuiltinR(Odd,"ODD","нечётноеЛи¿",system.globalScope,TRUE); (* Глагол *)
		NewBuiltinR(Ord,"ORD","КодСим8",system.globalScope,TRUE); (* И21 - НОМЕР, Глагол - ВЦЕЛ, Oberon07ru - НЛИТ, 1С - КодСимвола. Не забываем про перечисления! Сейчас они получаются 
			преобразованием типов! *)
		(* нигде не используется
			NewBuiltin(Ord32,"ORD32",system.globalScope,TRUE);
		   *)
		NewBuiltinR(Lsh,"LSH","логСдвиг",system.globalScope,TRUE);
		NewBuiltinR(Rot,"ROT","вращБит",system.globalScope,TRUE);

		NewBuiltinR(Ror,"ROR","вращВправоБит", system.globalScope,TRUE);
		NewBuiltin(Rol,"ROL","вращВлевоБит", system.globalScope,TRUE);
		NewBuiltinR(Shl,"SHL","логИлиАрифмСдвигВлево", system.globalScope,TRUE);
		NewBuiltinR(Shr,"SHR","логИлиАрифмСдвигВправо", system.globalScope,TRUE);

		NewBuiltinR(Incr,"INCR","увел",system.globalScope,TRUE);

		NewBuiltinR(Short,"SHORT","устарПреобразуйКБолееУзкомуЦел",system.globalScope,TRUE);
		NewBuiltin(Sum,"SUM",system.globalScope,TRUE);
		NewBuiltin(Dim,"DIM",system.globalScope,TRUE);
		NewBuiltin(Cas,"CAS",system.globalScope,TRUE);

		NewBuiltin(First,"FIRST",system.globalScope,TRUE);
		NewBuiltin(Last,"LAST",system.globalScope,TRUE);
		NewBuiltin(Step,"STEP",system.globalScope,TRUE);

		NewBuiltinR(Re,"RE","Re",system.globalScope,TRUE); (* КуМир - переделать в псевдо-метод *)
		NewBuiltinR(Im,"IM","Im",system.globalScope,TRUE);

		NewBuiltin(systemAdr,"ADDRESSOF",system.globalScope,TRUE);
		NewBuiltin(systemSize,"SIZEOF",system.globalScope,TRUE);

		(* global proper procedures *)
		NewBuiltinR(Assert,"ASSERT","утв",system.globalScope,TRUE); (* КуМир *)
		NewBuiltin(Copy,"COPY",system.globalScope,TRUE);
		NewBuiltinR(Dec,"DEC","умень",system.globalScope,TRUE);
		NewBuiltin(Excl,"EXCL",system.globalScope,TRUE);
		NewBuiltin(Halt,"HALT",system.globalScope,TRUE);
		NewBuiltinR(Inc,"INC","увел",system.globalScope,TRUE);
		NewBuiltin(Incl,"INCL",system.globalScope,TRUE);
		NewBuiltinR(New,"NEW","нов",system.globalScope,FALSE);


БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 20.09.21 00:13

Воют между собой КуМир, 1С, Excel, Глагол, школьная сборка, школьная и не школьная алгебра. При этом они все заточены совершенно под разное, и получается "коня и трепетную лань".

В КуМире все встроенные слова очень короткие, т.к. он учебный и нарочито убогий. В Обероне - ещё хуже. Встроенные идентификаторы совершенно неравномерно распределены по частоте применения, однако все они сделаны короткими, т.к. это было в те давние времена, когда памяти не хватало даже на идентификаторы. Но все уже привыкли и удлиннение вызовет протест!

Но в современной идеологии "чистого кода" слова должны быть подробными. А по моей идеологии, частые слова должны быть короткими, а редкие - подробными. Да ещё и на русском, в котором, ессно, сроду не было никаких ASH и ROT.

И кроме того, есть слова (например, "длина"), которые было бы неплохо не занимать и оставить пользователю.

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

Аватара пользователя
Сандро
Сообщения: 86
Зарегистрирован: 07.10.18 14:39

Re: дневник Яос

Сообщение Сандро » 20.09.21 14:33

БудДен писал(а):
15.09.21 00:14
В этой ситуации данный метод приемлем?
- Поспешил я... (но в будущем, авось, сгодится)))
А вот эти строки могут спокойно попасть под сокращения:
БудДен писал(а):
19.09.21 14:52
переименуйИдентификаторыПоИменам
переименуйИдентификаторыПоПутям
А если "идентуйИменами", или "идентуйПутями"... (?)
Учитывая, что идентификатор — это и есть некий "суррогат имени", то налицо - тавтология (переименуйИменаторы).
У резидента и президента - один корень идентификации; — "идент", который и идентифицирует их представительство в соответствующих кругах.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 20.09.21 21:29

Про маркдаун - понял.
Эти ключи компилятора редко используются, их необязательно сокращать.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 23.09.21 22:19

Кумиризация языка отменена. Причина - она никуда не попала. Есть спрос на две вещи:

* переходный язык от программирования блоками к текстовому, близкий к Паскалю и пригодный для работы с исполнителями

В этом случае образцом, от к-рого нужно не отстать, является Scratch, где слова в командах - полные и без сокращений, либо PascalABC, а это богатый язык, в котором сокращение до 3 букв узкого набора понятий, нужных в КуМире (очевидно, в ущерб остальным) не имеет значения. Кроме того, переход происходит не от КуМира и совместимость с КуМиром не имеет значения.

* роботы Лего

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 23.09.21 22:25

Что-то я себя сам пока не очень убедил и слегка выпал из контекста... Т.е. кумиризация отменяется не полностью, потому что циклы, "нач", "кон" и "всё" выглядят вполне разумно.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 25.09.21 23:56

Немного попереводил встроенные имена. Смирился с их ужасным видом.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 27.09.21 13:11

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 02.10.21 03:34

Правлю дичайшую багу, связанную с кешированием результатов работы компилятора и переводчика. По сути дела, на это ушла вся последняя неделя (т.е. свободное от работы время, к-рого оставалось маловато). При этом перевёл много встроенных имён (чтобы было проще её локализовать). Мне не нравится, как всё это в итоге выглядит, но "не стреляйте в пианиста". Видимо, скоро будут новые цифры по степени кирилличности.

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 02.10.21 23:55

Багу вроде поправил, но прорыв в кириллизации отменяется (или я неправильно померял). Почему-то осталось 22%. Посмотрим потом. Смиряюсь с тем, что машинно-зависимые типы останутся надолго, думаю о более коротких названиях для них. Немного поправил парсер редактора. Пока всё же не перевожу на русский, нужно, чтобы переводы ещё устоялись.

Ответить