дневник Яос
Re: дневник Яос
Как-то теплится процесс, определился с переводом нескольких терминов в LisSyntaxTree (это один из ключевых модулей компилятора и термины
весьма фундаментальные).
https://gitlab.com/budden/ja-o-s/-/comm ... df516fe9ab
> LisSyntaxTree. Visitor - посетитель, Import - ИспользованиеМодуля, Statement - Предписание, StatementSequence - ЦепочкаПредписаний
весьма фундаментальные).
https://gitlab.com/budden/ja-o-s/-/comm ... df516fe9ab
> LisSyntaxTree. Visitor - посетитель, Import - ИспользованиеМодуля, Statement - Предписание, StatementSequence - ЦепочкаПредписаний
Re: дневник Яос
Ещё немного попереводил. Чудные названия конечно получаются, например "ПредписаниеЕсли", "ПредписаниеВвестиВывестиЧерезПорт", "ПредписаниеПрисвоитьЗначение" (последнее - это := ).
Re: дневник Яос
Звучит естественно.
Видимо, ВвестиИлиВывести.
Выбивается из ряда.
"ПредписаниеПроверитьУсловие"?употребляется при присоединении придаточного предложения, выражающего потенциально возможное условие
Re: дневник Яос
ПредписаниеЕсли удобно называть «Предписание „Если“». Т.е. получается два варианта именования - по открывающему ключевому слову, если оно есть, или по краткому описанию действия, если ключевого слова нет. Проблема здесь в том, что синтаксис языка не позволяет вставлять в идентификаторы знаки препинания. Поэтому идентификатор в виде словосочетания сразу уродуется. Если дальше на его основе создавать новые словосочетания, например, "ПосещаетсяПредписаниеЕсли", то получается «казнить нельзя помиловать" - можно прочитать "Посещается предписание, если".
Кроме того, просей_тип я назвал «Предписание просеять тип», потому что мне сначала попались несколько предписаний, не имеющих открывающего ключевого слова и решил называть их по действию. И только потом понял, что тут тоже возникла на ровном месте словоформа, которая будет затруднять навигацию - нельзя грепом найти синтаксическую конструкцию по открывающему слову. Тогда получается, что «:=» нужно называть «Предписание „Присвой“».
Начинает складываться впечатление, что без того, чтобы разрешить в идентификаторах пробелы и запятые, дело далеко не уйдёт и лучше 1С не получится. Но такое изменение затронет очень много частей и явно на сегодня не по силам.
Пока неясно, что делать дальше.
Кроме того, просей_тип я назвал «Предписание просеять тип», потому что мне сначала попались несколько предписаний, не имеющих открывающего ключевого слова и решил называть их по действию. И только потом понял, что тут тоже возникла на ровном месте словоформа, которая будет затруднять навигацию - нельзя грепом найти синтаксическую конструкцию по открывающему слову. Тогда получается, что «:=» нужно называть «Предписание „Присвой“».
Начинает складываться впечатление, что без того, чтобы разрешить в идентификаторах пробелы и запятые, дело далеко не уйдёт и лучше 1С не получится. Но такое изменение затронет очень много частей и явно на сегодня не по силам.
Пока неясно, что делать дальше.
Re: дневник Яос
Во-первых, это нарушает целостность стиля, что ухудшает восприятие.
Во-вторых, ключевые слова могут поменяться.
В-третьих, могут поменяться даже знаки, знаки на слова, или слова на знаки.
ПредписаниеПрисвоитьЗначение или ПредписаниеПроверитьУсловие - точно описывает суть явления словами, а "ПредписаниеЕсли" - это иероглифическая сущность, порождающая ненужные зависимости, которые потянут за собой в будущее лишние усилия.
Re: дневник Яос
Ну я над этой проблемой думал некоторое время назад. В A2 вообще приняты условные названия, например, я ломал голову над «Part», которое на 4-5 попытке превратилось в условную "веткуПредписания". А по сути она означает «Часть предписания с ветвлением, включающая условие выбора ветки и действия в этой ветке». Я не спец в лингвистике, но я бы сказал, что названия могут быть «условные», т.е. просто некие метки, не связанные по смыслу с обозначаемым, и «объясняющие», где мы не назначаем условную метку, а вместо этого расписываем смысл обозначаемого в более примитивных понятиях.
В плане «чистого кода» кажется более правильным использовать только «объясняющие» названия, чтобы любой залётный программист, если он владеет понятийным аппаратом, сразу понимал, о чём идёт речь. В математических книжках - другой экстремум, когда используются только «условные» γ, μ и δ, цели быть понятными обычно не ставится, скорее наоборот, запутать читателя. Поскольку изначальных понятий мало и выражать через них всё неудобно, в достаточно сложной предметной области условные названия неизбежны. Такая «метка», как ключевое слово, стоящее в начале предписания, выглядит естественной. Так или нет?
В плане «чистого кода» кажется более правильным использовать только «объясняющие» названия, чтобы любой залётный программист, если он владеет понятийным аппаратом, сразу понимал, о чём идёт речь. В математических книжках - другой экстремум, когда используются только «условные» γ, μ и δ, цели быть понятными обычно не ставится, скорее наоборот, запутать читателя. Поскольку изначальных понятий мало и выражать через них всё неудобно, в достаточно сложной предметной области условные названия неизбежны. Такая «метка», как ключевое слово, стоящее в начале предписания, выглядит естественной. Так или нет?
Последний раз редактировалось БудДен 18.04.21 14:11, всего редактировалось 1 раз.
Re: дневник Яос
Это я к тому, что я ошибся при выборе стиля именования. Большинство предписаний можно идентифицировать по ключевому слову, с котороого они начинаются. Исключения - это «:=», «тело .. кн», «вызов процедуры», ну и ещё парочка, может быть. А именованные - это «Если», 2-3 вида циклов, 2 вида ветвления, прерывание цикла, возврат, игнорирование возврата процедуры - гораздо больше. Демократическим путём стиль именования по ключевому слову побеждает. В противном же случае придётся придумывать и помнить «объясняющее» название для всех предписаний, у которых уже есть ключевое слово - это лишнее усложнение. Согласны?
Re: дневник Яос
Если ключевые слова поменяются, то надо будет сделать рефакторинг. Я не сторонник того, чтобы ключевые слова менялись так же легко на уровне конечного пользователя, как шрифты или цветовая схема, хотя это расхожая идея. Не вижу в этом особой пользы. А раз так, то можно на это особо и не закладываться. Я понимаю, что моя точка зрения на это - не единственная, но если даже вдруг когда-то наборы ключевых слов будут настраиваться в ИСР для просмотра данного типа файлов, то в компиляторе всё равно будет некое фиксированное «основное» имя данного ключевого слова. Оно же будет фигурировать и в словаре настроек пользователя.
Re: дневник Яос
Дело в том, что Вы изначально не знаете, что устоится, а что - нет. Искуственное замедление отсрочит только применение самого языка.
Re: дневник Яос
Ну одно дело, если имена поменяются, а другое - создавать специальную инфраструктуру, чтобы каждый мог менять. Последнее я делать не собираюсь. И, в любом случае, как я уже написал, внутри компилятора всё равно будет некое базовое название, которое у каждого пользователя меняться не будет. Чтобы понять код компилятора и даже чтобы настроить набор ключевых слов под себя, это базовое название нужно будет знать. Не отказываться же от слова "если" только ради того, чтобы убрать это базовое название?
Re: дневник Яос
Cпособ именования для спецзнаков получился естественный, а c ключевыми словами - нет.
Но эта "идентификация по ключевому слову" не будет русским языком.
Не демократическим, а копипастным (дублированием).
В этом и есть смысл русскоязычного программирования. Это не усложнение, а облегчение, для тех, кто будет читать исходники.
Или Вам понравились идентификаторы в кишках BBCP? Так-то в русском языке 33 буквы, больше чем в греческом, или латинском.
Только кто потом такое будет читать?
Re: дневник Яос
Осмелюсь стоять на своём. Объём понятийного аппарата может быть разным. Оптимум зависит от того, как читать, и от сложности предметной области. Чем сложнее предметная область, тем больше в ней понятий. Создание понятийного аппарата в целом естественно, но мы можем регулировать его: либо создавать лишние понятия, либо избегать создания понятий там, где они напрашиваются. Если мы создаём лишние понятия, то это может быть удобнее при глубоком погружении в предметную область (сможем излагать информацию более сжато и выражать более тонкие знания). Если мы воздерживаемся от создания уместных понятий, то мы облегчаем поверхностную деятельность (зайти раз в 5 лет и по мелочи поправить). Т.е. нет наилучшего для всех случаев способа представления кода.В этом и есть смысл русскоязычного программирования. Это не усложнение, а облегчение, для тех, кто будет читать исходники.
Или Вам понравились идентификаторы в кишках BBCP? Так-то в русском языке 33 буквы, больше чем в греческом, или латинском.
Только кто потом такое будет читать?
Конкретно в случае предписания "если", допустим мы пойдём по вашему предложению и назовём его правильно, т.е. "Предписание_выполнить_один_из_вариантов_в_зависимости_от_значения_выражений". Тогда вновь пришедшему для чтения компилятора нужно будет сначала уяснить себе, что предписание "если" называется именно так, и потом всю дорогу это помнить. И то же нужно будет сделать для каждого предписания, начинающегося с ключевого слова. Это разве облегчит работу? В моём же случае начинаем с правила "предписание называется Предписание<КлючевоеСлово>, а у кого нет ключевых слов - надо искать и запоминать".
Re: дневник Яос
Потому я и думаю уже, как разрешить знаки препинания. Потому что ПредписаниеЕсли - это действительно выносит мозг, а вот какое-нибудь Предписание«Если» - уже в меньшей степени.
Re: дневник Яос
Но все равно утомительно, потому что слово использовано не по своему назначению. Читать текст с понятиями в кавычках в разы медленнее.
Не то, чтобы это была сама по себе плохая задача. Плохо использовать как затычку русского языка.
Ключевых слов - несколько десятков, и то, как понял, не все относятся к предписаниям. Что там надо назвать-то?
ВыполнитьОбусловленныеДействия, ВИномСлучаеПроверитьУсловие, СделатьВИномСлучае, ПовторятьСПроверкойУсловияОстановаВКонце, ПроверитьУсловияОкончанияЦикла, ПовторятьПокаВерноУсловие, ЗапуститьЦиклСоСчетчиком, УстановитьКонечноеЗначениеСчетчика, УстановитьШагСчетчика, ЗапуститьЦиклСМножествомВыходов, ВыйтиИзЦикла, ВыбратьЗначение (или ПроверитьЗначение), УстановитьВыбираемыеЗначения (или УстановитьДействияПриЗначениях)? Что-то еще?
Последний раз редактировалось MihalNik 18.04.21 18:28, всего редактировалось 1 раз.
Re: дневник Яос
Это зависит только от того, как именно будет названо. В Вашем же случае Вы снимаете с себя ответственность за это.БудДен писал(а): ↑18.04.21 15:17Конкретно в случае предписания "если", допустим мы пойдём по вашему предложению и назовём его правильно, т.е. "Предписание_выполнить_один_из_вариантов_в_зависимости_от_значения_выражений". Тогда вновь пришедшему для чтения компилятора нужно будет сначала уяснить себе, что предписание "если" называется именно так, и потом всю дорогу это помнить. И то же нужно будет сделать для каждого предписания, начинающегося с ключевого слова. Это разве облегчит работу? В моём же случае начинаем с правила "предписание называется Предписание<КлючевоеСлово>, а у кого нет ключевых слов - надо искать и запоминать".
Или наоборот.
Это же оператор выбора CASE. Конечно, условное ветвление - частный случай. Но в Обероне-то отдельно.
Но вот кому какое до этого дело?
Re: дневник Яос
> В Вашем же случае Вы снимаете с себя ответственность за это.
Я не снимаю ответственность, а просто использую ранее выстраданные названия повторно.
Вот здесь, я думаю, перечислены все statement -ы:
https://gitlab.com/budden/ja-o-s/-/blob ... e.Mod#L448
Я уже всё равно принял решение называть предписания по ключевым словам, но Вы можете в качестве упражнения попробовать придумать названия операторов так, чтобы было очевидно, где "If", где "case" а где "With". Ключевые слова, соответственно, "если", "просей" и "просей_тип".
> Но вот кому какое до этого дело?
Если мы приходим к консенсусу, то мы команда. Если заканчиваем на высказываниях из серии "меня не интересует ваша точка зрения" - то нет. Разница ощутимая, в общем-то.
Я не снимаю ответственность, а просто использую ранее выстраданные названия повторно.
Вот здесь, я думаю, перечислены все statement -ы:
https://gitlab.com/budden/ja-o-s/-/blob ... e.Mod#L448
Я уже всё равно принял решение называть предписания по ключевым словам, но Вы можете в качестве упражнения попробовать придумать названия операторов так, чтобы было очевидно, где "If", где "case" а где "With". Ключевые слова, соответственно, "если", "просей" и "просей_тип".
> Но вот кому какое до этого дело?
Если мы приходим к консенсусу, то мы команда. Если заканчиваем на высказываниях из серии "меня не интересует ваша точка зрения" - то нет. Разница ощутимая, в общем-то.
Re: дневник Яос
ПовторятьСПроверкойУсловияОстановаВКонце
В реальном коде тогда будет
ПосещаетсяПредписаниеПовторятьСПроверкойУсловияОстановаВКонце
Это не только не особо удобочитаемо, но и может привести к превышению предельного размера идентификатора.
Неужели это лучше, чем
ПосещаетсяПредписание«цикл_до»
?
В реальном коде тогда будет
ПосещаетсяПредписаниеПовторятьСПроверкойУсловияОстановаВКонце
Это не только не особо удобочитаемо, но и может привести к превышению предельного размера идентификатора.
Неужели это лучше, чем
ПосещаетсяПредписание«цикл_до»
?
Re: дневник Яос
Вопрос как бы не стоит таким образом. Вы в любом случае сможете сделать так, как захотите.
Последний раз редактировалось MihalNik 18.04.21 22:03, всего редактировалось 1 раз.
Re: дневник Яос
Это зависит от контекста применения. Оторвано от него нельзя выбрать правильные названия. Но если выбрать исчерпывающее выражение, на месте будет виднее, что в нем лишнее.БудДен писал(а): ↑18.04.21 18:59ПовторятьСПроверкойУсловияОстановаВКонце
В реальном коде тогда будет
ПосещаетсяПредписаниеПовторятьСПроверкойУсловияОстановаВКонце
Это не только не особо удобочитаемо, но и может привести к превышению предельного размера идентификатора.
Неужели это лучше, чем
ПосещаетсяПредписание«цикл_до»
?
"ПовторятьДоУсловия" не так уж сильно и длиньше, чем "цикл_до".
Далее, почему нужно сократить именно эту часть, а, например, не "Посещается" до "ЗаходВ" или даже просто "В"?
"ПосещаетсяПредписание" = "ВПредписание". Тогда
ПосещаетсяПредписание«цикл_до» = ВПредписаниеПовторятьДоУсловия.
Сокращать важно именно шаблоны, которые часто используются и, соответственно легко запомнить. Хотя в данном случае все слова остаются целыми. В обычных языках все это давным давно обкатано и выражено в кратких частях речи вроде союзов, предлогов, частиц и местоимений.
А в исходниках, вероятно, проблема декомпозиции и должно быть просто "ПосещаетсяПредписание".
Расширение типов вроде бы в Обероне есть.
Re: дневник Яос
Там нет проблемы декомпозиции. Там есть ровно такое ООП, и ровно та проблема, которая решается шаблоном Посетитель, и в меру моих знаний (я не знаток и не любитель ООП), он сделан правильно. В любом случае, если вдруг даже это и можно улучшить с т.з. архитектуры, то у меня нет на это ресурсов на рефакторинг всего компилятора (а используется там этот посетитель много раз, и даже я сам создавал два-три потомка этого визитора для целей перевода).
Вот первая попавшаяся статья про этот шаблон, посмотрите, как там сделано: https://refactoring.guru/ru/design-patterns/visitor
Кроме того, ЗаходВ - это опять винительный падеж, от которого мы как раз и ушли, увеличив количество букв. Заменить в этом случае на ЗаходВ или просто на В без уродования языка не получится.
Т.е. Вам пока не удалось представить альтернативные места, где можно было бы что-то сократить.
Подумайте ещё вот о чём: представьте себе, что делается дамп дерева разбора для отладки в виде условного XML/JSON. Неужели Вы предпочтёте видеть вот эти вот простыни из словосочетаний, а не названия открывающих ключевых слов, где они есть?
Вот первая попавшаяся статья про этот шаблон, посмотрите, как там сделано: https://refactoring.guru/ru/design-patterns/visitor
Кроме того, ЗаходВ - это опять винительный падеж, от которого мы как раз и ушли, увеличив количество букв. Заменить в этом случае на ЗаходВ или просто на В без уродования языка не получится.
Т.е. Вам пока не удалось представить альтернативные места, где можно было бы что-то сократить.
Подумайте ещё вот о чём: представьте себе, что делается дамп дерева разбора для отладки в виде условного XML/JSON. Неужели Вы предпочтёте видеть вот эти вот простыни из словосочетаний, а не названия открывающих ключевых слов, где они есть?
Последний раз редактировалось БудДен 18.04.21 23:38, всего редактировалось 2 раза.
Re: дневник Яос
Ввиду того, что обнаружились трудности при формировании переводов словосочетаний, теперь в идентификаторах можно вставлять некоторые знаки препинания:
¡ - вместо восклицательного знака
¿ - вместо вопросительного
˛ - вместо запятой
ˉ - вместо тире или дефиса
и вот такие кавычки «» - они должны быть сбалансированы, но это не проверяется
Подчёркивание и раньше было - его можно использовать вместо пробела.
Применять их вряд ли можно в именах модулей, но изменён основной компилятор, ИСР, подсветка синтаксиса.
Не изменён также движок перевода (не уверен, что потребуется какая-то работа, но тестов не проводилось).
¡ - вместо восклицательного знака
¿ - вместо вопросительного
˛ - вместо запятой
ˉ - вместо тире или дефиса
и вот такие кавычки «» - они должны быть сбалансированы, но это не проверяется
Подчёркивание и раньше было - его можно использовать вместо пробела.
Применять их вряд ли можно в именах модулей, но изменён основной компилятор, ИСР, подсветка синтаксиса.
Не изменён также движок перевода (не уверен, что потребуется какая-то работа, но тестов не проводилось).
Re: дневник Яос
Главное, что Лис заблаговременно отправлен в бан и не сможет требовать других иероглифов)БудДен писал(а): ↑18.04.21 23:31Ввиду того, что обнаружились трудности при формировании переводов словосочетаний, теперь в идентификаторах можно вставлять некоторые знаки препинания:
¡ - вместо восклицательного знака
¿ - вместо вопросительного
˛ - вместо запятой
ˉ - вместо тире или дефиса
и вот такие кавычки «» - они должны быть сбалансированы, но это не проверяется
Re: дневник Яос
Шаблон-то не причем. В любом случае название не передает смысла, более чем "goto". A поскольку любая процедура это goto, в качестве любого префикса она бессмыслена, кроме отличения процедуры от данных. Значит, чем короче, тем лучше. Так-то можно и какую-нибудь стрелочку в имя добавить. Правда, в данном случае вообще неясно, в чем проблема, т.к. винительная форма не отличима от именительной, даже какой-нибудь недопоиск сломаться не сможет.БудДен писал(а): ↑18.04.21 23:28Там нет проблемы декомпозиции. Там есть ровно такое ООП, и ровно та проблема, которая решается шаблоном Посетитель, и в меру моих знаний (я не знаток и не любитель ООП), он сделан правильно. В любом случае, если вдруг даже это и можно улучшить с т.з. архитектуры, то у меня нет на это ресурсов на рефакторинг всего компилятора (а используется там этот посетитель много раз, и даже я сам создавал два-три потомка этого визитора для целей перевода).
Вот первая попавшаяся статья про этот шаблон, посмотрите, как там сделано: https://refactoring.guru/ru/design-patterns/visitor
Но для чего именно посещается не ясно, так что название не содержит самого главного. Но это, может быть, опять же, по причине оторванности от контекста.
Re: дневник Яос
Ну ладно, мнения разошлись, дальше некогда особо обсуждать. Коротко: в данном случае винительная не отличается, а в другом может отличаться. Шаблон посетитель - это тоже конкретный термин из ООП, я это не люблю, но он есть независимо от моей нелюбви и его тоже нужно перевести. Застолбить имя "Посещается" - и будет всегда понятно, что применён этот шаблон. Если в одном случае применения будет "В", а в другом - "Посещается", то будет ровно то, против чего Вы выступаете, когда я называю предписание "если" - отсутствие единого стиля.
Дальше - если выписать эти методы в столбки, то они плохо смотрятся, но в живом применении слово "посещается" будет мелькать не так уж и часто (см. файл). Можно потерпеть. Стрелки нужны там, где подлежащее сокращению слово встречается часто и повсеместно.
Дальше - если выписать эти методы в столбки, то они плохо смотрятся, но в живом применении слово "посещается" будет мелькать не так уж и часто (см. файл). Можно потерпеть. Стрелки нужны там, где подлежащее сокращению слово встречается часто и повсеместно.
Re: дневник Яос
Убедился, что движок перевода не ломается на знаках препинания.
Re: дневник Яос
Немного попереводил. Идёт довольно туго, времени удаётся выделять мало. Начал создавать описание процедуры придумывания перевода.
Re: дневник Яос
Начал массировано переводить типы. Ужасно!
https://gitlab.com/budden/ja-o-s/-/blob ... в0.XML#L53
Проблемы следующие: иногда долго разбираться. Например, не знаю, что такое TensorRange, да оно и не нужно мне. В итоге, качество будет как у автопереводчика. Но это ладно ещё. Другая проблема - это как писать: „тип строкового литерала“ или „тип строковых литералов“? По идее нужно во множественном числе, но мне кажется, что есть некая условность и то, что обозначается типом ставится в единственном числе.
Ещё одна проблема - это баланс между сокращениями и полными именами. ПосетиОбращКТипуМатемМассива - обращ вроде у нас везде сокращается, а вот МатемМассив надо ли сокращать или надо писать МатематичекийМассив? Ведь эти сокращения надо будет потом помнить. В общем, тягостное ощущение от всего этого.
https://gitlab.com/budden/ja-o-s/-/blob ... в0.XML#L53
Проблемы следующие: иногда долго разбираться. Например, не знаю, что такое TensorRange, да оно и не нужно мне. В итоге, качество будет как у автопереводчика. Но это ладно ещё. Другая проблема - это как писать: „тип строкового литерала“ или „тип строковых литералов“? По идее нужно во множественном числе, но мне кажется, что есть некая условность и то, что обозначается типом ставится в единственном числе.
Ещё одна проблема - это баланс между сокращениями и полными именами. ПосетиОбращКТипуМатемМассива - обращ вроде у нас везде сокращается, а вот МатемМассив надо ли сокращать или надо писать МатематичекийМассив? Ведь эти сокращения надо будет потом помнить. В общем, тягостное ощущение от всего этого.
Re: дневник Яос
Чтобы переводить, надо понимать предметную область иначе будет только хуже. А сокращения почти везде уже придумали до Вас.БудДен писал(а): ↑24.04.21 11:55Начал массировано переводить типы. Ужасно!
https://gitlab.com/budden/ja-o-s/-/blob ... в0.XML#L53
Проблемы следующие: иногда долго разбираться. Например, не знаю, что такое TensorRange, да оно и не нужно мне. В итоге, качество будет как у автопереводчика. Но это ладно ещё. Другая проблема - это как писать: „тип строкового литерала“ или „тип строковых литералов“? По идее нужно во множественном числе, но мне кажется, что есть некая условность и то, что обозначается типом ставится в единственном числе.
Ещё одна проблема - это баланс между сокращениями и полными именами. ПосетиОбращКТипуМатемМассива - обращ вроде у нас везде сокращается, а вот МатемМассив надо ли сокращать или надо писать МатематичекийМассив? Ведь эти сокращения надо будет потом помнить. В общем, тягостное ощущение от всего этого.
Например, надо МатМассив, а не МатемМассив. Хотя в математике никаких массивов нет и о чем речь не ясно.
Это все ерунда, а вот что такое "посетить обращение" догадаться невозможно. Я убрал бы вовсе, оставив "КТипуЧегоТоТам".
Re: дневник Яос
Пишу документ (в формате словаря придумывать названия слишком неудобно). Потихоньку.
https://gitlab.com/budden/ja-o-s/-/blob ... ора-лис.md
https://gitlab.com/budden/ja-o-s/-/blob ... ора-лис.md
Re: дневник Яос
По-моему, это абсолютно прекрасно:
- 61 литера (вроде предел 64, но это не точно)
Код: Выделить всё
ПосетиОбращение˛ОсмысленноеКакОбрКПсевдоПеременной«результат»
Re: дневник Яос
Вроде доделал минимальный (нет, ещё далеко не полный) перевод синт. дерева. Пришлось добавить проверок ошибок для файла переводов. Но...
в итоге оно пока не компилируется. Есть и ошибки перевода (две разных сущности перевел в одну), и проблемы с самим движком (не выводит перевод потомков из предков, хотя, возможно, эта проблема наведена первой). Пора уже давно спать. Если бы всё компилировалось, то индекс кирилличности скакнул бы сразу на процент. А если добавить такой же перевод для Fox (компилятора у нас два и их исходники почти идентичны), то сразу на два. Это новости обнадёживают, но завтра начинается рабочая неделя.
в итоге оно пока не компилируется. Есть и ошибки перевода (две разных сущности перевел в одну), и проблемы с самим движком (не выводит перевод потомков из предков, хотя, возможно, эта проблема наведена первой). Пора уже давно спать. Если бы всё компилировалось, то индекс кирилличности скакнул бы сразу на процент. А если добавить такой же перевод для Fox (компилятора у нас два и их исходники почти идентичны), то сразу на два. Это новости обнадёживают, но завтра начинается рабочая неделя.
Re: дневник Яос
В ходе ночной смены починил пару проблем в движке перевода, связанных с декларациями из будущего (использование раньше объявления).
Теперь компилируется, и последний индекс кирилличности равен 18.80% (после того, как перевод модуля синт. дерева лисокомпилятора будет применён - сейчас пока гоняю в тестовом режиме и результат не записываю). Надо сказать, что темпы роста индекса кирилличности обнадёживают, хотя нельзя не отметить, что во многом это происходит из-за удлинения многих идентификаторов.
Теперь компилируется, и последний индекс кирилличности равен 18.80% (после того, как перевод модуля синт. дерева лисокомпилятора будет применён - сейчас пока гоняю в тестовом режиме и результат не записываю). Надо сказать, что темпы роста индекса кирилличности обнадёживают, хотя нельзя не отметить, что во многом это происходит из-за удлинения многих идентификаторов.
Re: дневник Яос
Ещё попереводил - теперь после применения перевода индекс кирилличности будет 18.89% . Индекс кирилличности файла LisSyntaxTree.Mod - 67.9%. Видимо, с этим файлом дело идёт к концу. Думается, если не произойдёт форс-мажора типа атомной войны, то к концу месяца индекс кирилличности ЯОС достигнет 20%. В случае тотальной атомной войны вряд ли до конца месяца доживу.
Re: дневник Яос
18.95 (а я уж ждал, что будет 19.0 - видимо, жирные места закончились и начались худые)
LisSyntaxTree.Mod после преобразования кириллизован на 70.6%
Заменю "использование" на "импорт", а всякие ключевые_слова_с_подчёркиванием на ключевыеСловаВ_видеШашлыка.
LisSyntaxTree.Mod после преобразования кириллизован на 70.6%
Заменю "использование" на "импорт", а всякие ключевые_слова_с_подчёркиванием на ключевыеСловаВ_видеШашлыка.
Re: дневник Яос
19.08%, а файл - 75.2%
Видимо, в этом месяце доделаю этот файл и переделаю имена на шашлык, и, если останется время, займусь улучшением поиска с учётом словоформ.
Видимо, в этом месяце доделаю этот файл и переделаю имена на шашлык, и, если останется время, займусь улучшением поиска с учётом словоформ.
Re: дневник Яос
19.14 / 76.8
Re: дневник Яос
Сегодня переводом кода я не занимался, зато Николай К. переделал ключевые слова в описании языка на русские и составил словарик. Ключевые слова из будущего, не соответствуют текущему состоянию языка, т.к. я решил переделать_все_такие наВотТакие. https://gitlab.com/budden/ja-o-s/-/blob ... е-языка.md
Re: дневник Яос
Болею, но не лежу. Посему:
общий индекс кирилличности 19.24 (с учётом ключевых слов в описании язка и новых переводов), в файле LisSyntaxTree.Mod - 78.6%
общий индекс кирилличности 19.24 (с учётом ключевых слов в описании язка и новых переводов), в файле LisSyntaxTree.Mod - 78.6%
Re: дневник Яос
19.29% / 79.49
Re: дневник Яос
19.35% / 81.24% - но май уже кончается (и моё свободное время в нём уж точно кончается), а файл всё не кончается. Похоже, что не успею до конца мая его перевести.
Re: дневник Яос
Совсем мало, но не 0: 19.37% , 83.3%
Re: дневник Яос
19.47% / 85.4% - и там ещё много. А конец мая приближается...
Re: дневник Яос
Внезапно выяснилось, что эмулятор компьютера можно запускать из веб-браузера. Вероятно, скоро смогу дать url, позволяющий запустить ЯОС прямо в браузере - в одном из таких эмуляторов она заработала, правда, пока что только на локалхосте.
Re: дневник Яос
Выложил в интернет страничку, на которой можно запустить ЯОС в эмуляторе, выполняющемся прямо в веб-браузере (ссылка в соседней теме, вообще-то он очень сырой, среда разработки падает при попытке открытия - это мой косяк, сеть не видно - это проблема с драйверами), поэтому копировать ссылку сюда не буду. А также залил на semantic-dict.ru переводы от Сандро. Спасибо!
Re: дневник Яос
Починил словарь (регистрация через почту не работала).
Re: дневник Яос
19.49 / 86.3
Re: дневник Яос
По переводу не продвинулся, выложил новую версию, сделал из репозитория ссылку на эмулятор, сам эмулятор существенно улучшил (добавил консоль, справку, выкинул кучу лишнего с экрана), поменял "предисловие".
Re: дневник Яос
общий индекс кирилличности после применения перевода к LisSyntaxTree был бы 19.58% , а в файле - 88.3%. Пришлось расширить кое-какие типы в компиляторе. Но до конца работы ещё далеко. Как минимум, пора синхронизировать коды "Лиса" и "Fox-а" , а также перевод ещё не завершён - осталось до конца файла 500 строк - частично там уже переведено, но ясно, что часть работы ещё впереди. Вряд ли успею доделать в мае.
Re: дневник Яос
19.64, но осталось ещё перевести порядка 70 имён в этом файле. На сегодня хватит.
Re: дневник Яос
Имена доперевёл, не проверял, переводится ли. В связи с проблемами между словами "родитель", "владелец" и ещё некоторыми другими перевод пока нельзя считать жизнеспособным - явно требуются решения между конфликтующими словами.
Re: дневник Яос
Перевёл оба компилятора. Индекс кирилличности, теперь официальный, 21.75%
Re: дневник Яос
21.77% (перевожу комментарии)
Re: дневник Яос
Чинил переводчик, чтобы можно было преобразовать ключевые слова на более кумиро-образные.
Re: дневник Яос
Научил ЯОС под Win понимать кириллицу в аргументах командной строки. Это заняло несколько часов, хотя казалось бы, всего несколько строк. Наступил на все грабли, на которые мог. Но заодно написал и стёр немного кода, индекс кирилличности теперь 21.79%.
Re: дневник Яос
Поправил поиск на форуме, проствил один хештег, поправил правила создания хештегов (теперь нужно писать #КЛЮЧидальшесловаслепленныевместе).
Предельная длина хештега - 30 символов.
Вчерне перевёл инструмент для поиска в файлах, теперь нужно научить его "умному" поиску по словоформам (а на данный момент он вообще как-то не особо работает у меня).
Индекс кирилличности - 21.82%
Предельная длина хештега - 30 символов.
Вчерне перевёл инструмент для поиска в файлах, теперь нужно научить его "умному" поиску по словоформам (а на данный момент он вообще как-то не особо работает у меня).
Индекс кирилличности - 21.82%
Re: дневник Яос
день нельзя назвать особо продуктивным. Добавил параметры к команде поиска по файлам, но автозапуск сделал как-то неправильно - второе или третье окно поиска показывается чёрным. Частично локализовал проблему (если не запускать поиск автоматом, то ничего и не виснет). Индекс кирлличности 21.82%
Re: дневник Яос
Может и надо автоматом, но пока недосуг. Налаживать CI - это всегда долго и муторно. Хотя автотесты следовало бы уже запускать, но для этого нужна рабочая машина под Win10 или чем-то подобным, а где такую взять?
Сегодня делал алгоритм отсюда http://вече.программирование-по-русски. ... ?f=2&t=441, попутно алгоритм уточняется. Сделал, наверное, на треть. Установил себе 1С 8 и русифицированные Access и Excel - теперь будет проще собирать переводы. Надо бы это делегировать, но кому? Например, нужно собрать имена видимых элементов (видгетов) и все термины, используемые в редакторах форм, и забить их в semantic-dict.ru
Сегодня делал алгоритм отсюда http://вече.программирование-по-русски. ... ?f=2&t=441, попутно алгоритм уточняется. Сделал, наверное, на треть. Установил себе 1С 8 и русифицированные Access и Excel - теперь будет проще собирать переводы. Надо бы это делегировать, но кому? Например, нужно собрать имена видимых элементов (видгетов) и все термины, используемые в редакторах форм, и забить их в semantic-dict.ru
Re: дневник Яос
Избавился от одной из работ, теперь будет намного больше времени на ЯОС. Пишу лексер для поиска, индекс кирилличности не меряю.
Re: дневник Яос
Сегодня всё равно занимался чем-то отвлечённым, например, оставшейся работой и семейным отдыхом, поэтому почти ничего не сделал. начал чинить клавиатуру под Linux (при включённой русской раскладке она творит чудеса).
Re: дневник Яос
Один товарищ из Оберон - сообщества попробовал запустить ЯОС под Linux и оно упало. Стал чинить. Вроде починил клавиатуру, хотя полной уверенности нет. Думаю, что надо сборку под Linux починить, но пока не чинится - много наменял.
Re: дневник Яос
Продолжал работу над лексером для поиска по файлам. Лексер в целом готов, тесты проходят. Также сделал режим нормализации лексем (выбрасывание пробелов и приведение к нижнему регистру). Теперь надо сделать самое смачное - обработку метасимвола для сопоставления словоформ и можно будет приступать непосредственно к реализации поиска в файлах. Индекс кирилличности потихоньку ползёт вверх, т.к. код пишется, и равен 21.87%
Хотя вот прямо сейчас понял, что режим нормализации лексем сделал неправильно, потому что для замены он не подойдёт - только для поиска, а это неинтересно. Ну и ладно, переделаем обратно.
Хотя вот прямо сейчас понял, что режим нормализации лексем сделал неправильно, потому что для замены он не подойдёт - только для поиска, а это неинтересно. Ну и ладно, переделаем обратно.
Re: дневник Яос
Внезапно потратил почти весь день на починку крокозябл в буфере обмена под Linux. Теперь, после ряда исправлений, ЯОС как приложение под Linux выглядит более-менее жизнеспособной. Продолжаю заниматься поиском, в простейшем виде поиск заработал, теперь нужно реализовать поиск по шаблонам (чтобы находить слово в разных формах). Индекс кирилличности 21.90%, но часть кода скопирована для ускорения отладки - возможно, что скоро снизится. А тем временем подбирается конец месяца, пора начинать подводить итоги...
Re: дневник Яос
Занимался поиском по словоформам. Сделал сопоставление с образцом, содержащим метасимвол, который может заменяться на ноль, одну или две любых буквы. До реализации поиска по файлам со словоформами осталось две вещи:
- интерфейс пользователя (это относительно несложно на первый взгляд, хотя могут и грабли где-нибудь обнаружиться). Сейчас находки просто выводятся в системных журнал, а надо сделать, чтобы они показывались в виде списка в графическом окошке, и чтобы можно было скакнуть на любую из находок.
- автоматическое превращение слов в шаблоны, для этого нужно уметь отрезать окончания и заменять их метасимволами. Строго говоря, можно и без этого, но очень неудобно.
- интерфейс пользователя (это относительно несложно на первый взгляд, хотя могут и грабли где-нибудь обнаружиться). Сейчас находки просто выводятся в системных журнал, а надо сделать, чтобы они показывались в виде списка в графическом окошке, и чтобы можно было скакнуть на любую из находок.
- автоматическое превращение слов в шаблоны, для этого нужно уметь отрезать окончания и заменять их метасимволами. Строго говоря, можно и без этого, но очень неудобно.
Re: дневник Яос
Сегодня времени особо не было, но смог отобразить список находок в виде колонки строчек. Явно не хватает перехода к находке - это следующее, что нужно сделать. Ещё есть проблема, что поиск работает, наверное, в 1000-10000 раз медленнее, чем в VS Code и для практического применения непригоден. Надо профилировать, искать, почему так.
Re: дневник Яос
Ближайшие планы:
- прочитать все словари и подумать, имеет ли смысл менять соглашение об именовании идентификаторов (может быть проблема
с аббревиатурами)
- Убрать подчёркивания из ключевых слов и глобальных имён в Fox ("системно_зависимое_целое" и "цикл_пока" - две точки входа)
- Пересобрать компилятор Fox компилятором Fox (глобальные имена - общие между Lis и Fox, поэтому
здесь нам не помогает то, что у нас два компилятора)
- Убрать подчёркивания по всему тексту
- Пересобрать новым компилятором весь исходник
- Перевести всё, что переводится, на английский и обратно, убедиться в целостности и идемпотентности перевода
- перевести на английский
- отредактировать словари и изменить в них стиль именования составных слов
- перевести на русский
- доделать поиск по словоформам в новом стиле
- работать над скоростью поиска
- прочитать все словари и подумать, имеет ли смысл менять соглашение об именовании идентификаторов (может быть проблема
с аббревиатурами)
- Убрать подчёркивания из ключевых слов и глобальных имён в Fox ("системно_зависимое_целое" и "цикл_пока" - две точки входа)
- Пересобрать компилятор Fox компилятором Fox (глобальные имена - общие между Lis и Fox, поэтому
здесь нам не помогает то, что у нас два компилятора)
- Убрать подчёркивания по всему тексту
- Пересобрать новым компилятором весь исходник
- Перевести всё, что переводится, на английский и обратно, убедиться в целостности и идемпотентности перевода
- перевести на английский
- отредактировать словари и изменить в них стиль именования составных слов
- перевести на русский
- доделать поиск по словоформам в новом стиле
- работать над скоростью поиска
Re: дневник Яос
Вспомнил, что сейчас нет надёжного поиска и замены по словам, состоящим из букв кириллицы. Поэтому план меняется:
* ✓ сделать, чтобы поиск хоть как-то понимал и новый, и старый способ записи многословных идентификаторов
* реализовать замену (замена нескольких словоформ тоже должна как-то происходить, например, прямым указанием, какую словоформу на какую нужно заменять). При этом поиск должен происходить по шаблону за два прохода. На первом проходе собираются все словоформы данного идентификатора и, если пользователь не указал превращение для всех словоформ, то весь процесс падает. На втором этапе осуществляется собственно замена.
* составить список слов с учётом кумиризации
* ✓ сделать, чтобы поиск хоть как-то понимал и новый, и старый способ записи многословных идентификаторов
* реализовать замену (замена нескольких словоформ тоже должна как-то происходить, например, прямым указанием, какую словоформу на какую нужно заменять). При этом поиск должен происходить по шаблону за два прохода. На первом проходе собираются все словоформы данного идентификатора и, если пользователь не указал превращение для всех словоформ, то весь процесс падает. На втором этапе осуществляется собственно замена.
* составить список слов с учётом кумиризации
Re: дневник Яос
Дичайший отстой, всё ещё занимаюсь поиском. Поправил ошибки и добавил в параметры возможность выбора метода поиска. Ужааасно долго!
Re: дневник Яос
Тяжело работать без удобного формата представления структурированных данных. Взялся сначала за 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
https://habr.com/ru/company/mailru/blog/314014/
И парсер оказался довольно большим. Поэтому начал впиливать вот этот лисп: https://github.com/zick/Oberon2Lisp - оказалось, что в A2 есть ограниченная поддержка процедур в стиле Оберона-2. Но разница между ограниченной и работающей в данном случае состояла в том, что компилятор падал. Потратил немало времени, чтобы это поправить, но в итоге понял, что слишком сложно и не стоит требуемых усилий. Завёл ошибку и оставил это как есть: https://gitlab.com/budden/ja-o-s/-/issues/67
Re: дневник Яос
Лисп вроде интегрировал, он способен читать данные из строки. Как он вычисляет - не проверял, но это и не нужно. Меньше нужно интерпретаторов, а один интерпретатор в ЯОС уже есть (жаль, я не умею им пользоваться). Надо теперь, чтобы научился читать из потока и тогда можно будет передавать командам ЯОС в качестве параметров структурированные данные, ради чего, собственно, всё и затевалось.
Также поправил документацию: добавил общее оглавление описания языка, добавил непереведённую главу о средствах поддержки параллельности и написал документ о командах ЯОС и особенно о формате их аргументов. Это создаёт предпосылки для интеграции чтеца s-выражений в механизм команд.
Очевидно, что я не успею сделать инструмент замены по файлам, придётся радоваться тому, что есть инструмент поиска, способный, хоть и костыльно, искать слова в разных словоформах. Хотя он и кривой, но с научной точки зрения интересный результат уже получен. Такого инструмента я не видел ни в одной IDE (хотя я не такой уж знаток IDE).
До создания инструмента поиска с заменой нельзя говорить о наличии поддержки в ЯОС словоформ русского языка, а при том такие идентификаторы в ЯОС уже есть и работа с ними будет создавать неудобство.
В общем, нужно составить план заморозки проекта (или его перевода в режим сверхнизкой интенсивности).
Также поправил документацию: добавил общее оглавление описания языка, добавил непереведённую главу о средствах поддержки параллельности и написал документ о командах ЯОС и особенно о формате их аргументов. Это создаёт предпосылки для интеграции чтеца s-выражений в механизм команд.
Очевидно, что я не успею сделать инструмент замены по файлам, придётся радоваться тому, что есть инструмент поиска, способный, хоть и костыльно, искать слова в разных словоформах. Хотя он и кривой, но с научной точки зрения интересный результат уже получен. Такого инструмента я не видел ни в одной IDE (хотя я не такой уж знаток IDE).
До создания инструмента поиска с заменой нельзя говорить о наличии поддержки в ЯОС словоформ русского языка, а при том такие идентификаторы в ЯОС уже есть и работа с ними будет создавать неудобство.
В общем, нужно составить план заморозки проекта (или его перевода в режим сверхнизкой интенсивности).
Re: дневник Яос
Начал впиливать в закрытую версию ввод s-выражений, а точнее, их слегка инновационного аналога.
Re: дневник Яос
Доделал в закрытой ветке опции в виде s-выражений. Забросил в пару мест удочку про программиста вместо себя.
Re: дневник Яос
В закрытой ветке сделал кривокостыльную команду "вернись назад". Без неё ад был, теперь будет полегче. Правда, при редактировании файла история в нём съезжает. Но это всё равно лучше, чем ничего.
Re: дневник Яос
За последнее время ещё ряд изменений в закрытой ветке, в т.ч. переиспользование уже открытого редактора при запросе на открытие файла в ИСР, поиск по словам. Теперь нужно сделать поиск/замену во многих файлах, в т.ч. интерактивную. Задача выглядит масштабной, страшно браться. Не могу понять, как быть с закрытостью ветки. По идее проект в целом никому не нужен, а идеи, которые можно из него выдернуть украсть, уже начали появляться в коде, их уже две появилось за последний месяц. Предыдущие идеи касались исключительно русскоязычности и их наоборот хотелось раздать (правда, 1С их не взял, к примеру). А то, что появилось в последнее время - не является специфически русскоязычным. В этом случае имеет смысл развивать проект закрытым. С другой стороны, те, кто высказывал недоверие и опасения, что я закрою проект, и не помогали якобы по этой причине, получат подтверждения своих опасений. Поэтому говорю так: будете помогать делом - открою. Будете стоять и наблюдать - наблюдайте за анонсами. На самом деле не помогали не потому, что боялись закрытия, а по каким-то иным причинам (например, на свои проекты времени не хватало и много других причин). Поэтому проблемы с закрытостью не вижу пока что. С другой стороны, в закрытом формате даже предпосылки к получению добровольческой помощи исчезают. Хотя какая разница, предпосылки-не предпосылки, реальную помощь делом за последние два года задаром мне оказали только два раза.
Re: дневник Яос
Пытаюсь добить поиск c заменой. Невзирая на имеющееся временное окно, делать ещё довольно много:
* нужно сделать скоординированный интерфейс из двух разных окон, чтобы был список файлов с находками и открывался в редакторе в особом режиме конкретный файл. Получается вообще кривовато во многих отношениях, но работать будет можно
* обеспечить сбор всех найденных словоформ и формирование команды замены
* доделать Б-выражения, потому что они используются для ввода параметров. Переписал чтение б-выражений, чтобы никто не придрался, что я что-то украл у японца (впрочем, понятно, что и так никому дела нет).
* нужно сделать скоординированный интерфейс из двух разных окон, чтобы был список файлов с находками и открывался в редакторе в особом режиме конкретный файл. Получается вообще кривовато во многих отношениях, но работать будет можно
* обеспечить сбор всех найденных словоформ и формирование команды замены
* доделать Б-выражения, потому что они используются для ввода параметров. Переписал чтение б-выражений, чтобы никто не придрался, что я что-то украл у японца (впрочем, понятно, что и так никому дела нет).
Re: дневник Яос
Неожиданно, в этом чудовищном манипулировании окошками появился какой-то просвет и можно сказать, что поиск по файлам почти готов. Но поскольку я не умею писать UI приложения вообще, а уж на ЯОС - и подавно, то, результат, видимо, не раз ещё заставит выругаться.
Теперь нужно доделать поиск и сделать замену.
Теперь нужно доделать поиск и сделать замену.
Re: дневник Яос
Поиск и замена в файлах близится к завершению. Похоже, самое страшное позади, если, конечно, не выползут каке-то трудноуловимые баги.
Re: дневник Яос
Продвинул Б-выражения, теперь передавать данные из списка находок в редактор. Остаётся 2-3 дня до завершения функционала поиска и замены в файлах. Т.е. похоже успеваю до выхода на новую работу закончить эту часть, и можно будет приступать к кумиризации.
Re: дневник Яос
Вроде заработал поиск с заменой в файлах с учётом словоформ. Проблем и недоделок ещё вполне хватает, но можно сказать, есть "минимально жизнеспособный продукт", который можно применять для решения реальных задач.
https://www.youtube.com/watch?v=iT64Z_OU3Mc
Исходники выложил в публичную ветку.
Также пополнил документацию информацией о найденных аналогах типа Variant из Дельфи. Их нашлось немало, но все с каким-то уклоном, в итоге подобрать для моей конкретной задачи не вышло. См.
https://gitlab.com/budden/ja-o-s/-/blob ... ые-типы.md
https://www.youtube.com/watch?v=iT64Z_OU3Mc
Исходники выложил в публичную ветку.
Также пополнил документацию информацией о найденных аналогах типа Variant из Дельфи. Их нашлось немало, но все с каким-то уклоном, в итоге подобрать для моей конкретной задачи не вышло. См.
https://gitlab.com/budden/ja-o-s/-/blob ... ые-типы.md
Re: дневник Яос
В связи с наличием интересующегося, описал 4 задачи по доработке:
https://www.youtube.com/watch?v=dOEnfAezRlQ
https://www.youtube.com/watch?v=qjtFB6jwDD0
https://www.youtube.com/watch?v=dOEnfAezRlQ
https://www.youtube.com/watch?v=qjtFB6jwDD0
Re: дневник Яос
Запущен пилотный проект по привлечению фрилансеров, тенденции более-менее обнадёживающие, о результатах говорить рано. Посмотрел видео про билингвизм и мозг, существенных аргументов против билингвизма не нашёл.
Re: дневник Яос
Начал допиливать Б-выражения до чуть более законченного вида, и по ходу дела пришлось допилить уже работающий поиск в файлах - теперь можно передавать в него несколько масок для поиска - одной явно не хватает, т.к. часть модулей имеет расширение "ярм" , а большинство - "Mod".
Re: дневник Яос
Ещё немного улучшил поиск и замену по файлам - теперь там можно открыть файл не только для продолжения поиска, а и просто для работы.
Также по F1 выводится минимальная справка.
Также по F1 выводится минимальная справка.
Re: дневник Яос
Кумиризируем потихоньку. Исходник в экспериментном виде выглядит так:
Код: Выделить всё
модуль Проба;
алг Проверка():цел32;
перем й: цел32;
нач
нцДля й := 0 до 7 делай
если й = 2 то
УТВ(й = 2);
й := й;
иначе
й := 100;
всё
кц;
неважно Проверка();
кон Проверка;
кон Проба.
Re: дневник Яос
В системном меню, пункт справка/документация открывает директорию с документацией в формате markdown. Никакой поддержки формата пока нет - файлы открываются просто как текст.
Re: дневник Яос
Не понял. В ЯОС нет javascript, а html едва есть. В этой ситуации данный метод приемлем?
P.S. и чтобы два раза не писать, что нового в ЯОС:
P.S. и чтобы два раза не писать, что нового в ЯОС:
- Идёт непростая работа по переводу встроенных имён
- В проработке уже не один, а два варианта использования ЯОС для школьников
- Сделали "диск" ЯОС:, указывающий на корень ЯОС - пока только Win32, но цена вопроса - одна строчка в конфиге
- Убрал ограничения в процедуре переименования символов, затеняющих более глобальные одноимённые - теперь оно должно срабатывать за один проход
Re: дневник Яос
Сделал в компиляторе режим --переименуйИдентификаторыПоИменам, который переименовывает идентификаторы с данным именем в другое имя (не работает для модулей). Он нужен, чтобы превратить MOD в mod и понизить регистр некоторых других встроенных функций. Прямо в лоб это сделать не получается, потому что в коде довольно много переменных с именем "mod". Описание
В отличие от него, старый решим переименования (он теперь называется --переименуйИдентификаторыПоПутям) переименовывал только конкретные идентификаторы, определяемые по пути вложенности синтаксических конструкций. Например, им можно переименовать МодульА.ОобъектБ.Поле1 в Поле2 и все его использования, и при этом не трогать Модуль1.ОбъектВ.Поле1 (т.к. к нему ведёт другой путь).
Рано говорить о том, что всё теперь будет хорошо, но есть определённая надежда, что теперь удастся переименовать встроенные функции так, чтобы у них были более-менее человечные имена, и в будущем, если вдруг понадобится ввести что-то новое глобальное, будет доступен инструмент, позволяющий за одно действие устранить конфликты.
В отличие от него, старый решим переименования (он теперь называется --переименуйИдентификаторыПоПутям) переименовывал только конкретные идентификаторы, определяемые по пути вложенности синтаксических конструкций. Например, им можно переименовать МодульА.ОобъектБ.Поле1 в Поле2 и все его использования, и при этом не трогать Модуль1.ОбъектВ.Поле1 (т.к. к нему ведёт другой путь).
Рано говорить о том, что всё теперь будет хорошо, но есть определённая надежда, что теперь удастся переименовать встроенные функции так, чтобы у них были более-менее человечные имена, и в будущем, если вдруг понадобится ввести что-то новое глобальное, будет доступен инструмент, позволяющий за одно действие устранить конфликты.
Re: дневник Яос
Меня тошнит от этого:
Код: Выделить всё
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);
Re: дневник Яос
Воют между собой КуМир, 1С, Excel, Глагол, школьная сборка, школьная и не школьная алгебра. При этом они все заточены совершенно под разное, и получается "коня и трепетную лань".
В КуМире все встроенные слова очень короткие, т.к. он учебный и нарочито убогий. В Обероне - ещё хуже. Встроенные идентификаторы совершенно неравномерно распределены по частоте применения, однако все они сделаны короткими, т.к. это было в те давние времена, когда памяти не хватало даже на идентификаторы. Но все уже привыкли и удлиннение вызовет протест!
Но в современной идеологии "чистого кода" слова должны быть подробными. А по моей идеологии, частые слова должны быть короткими, а редкие - подробными. Да ещё и на русском, в котором, ессно, сроду не было никаких ASH и ROT.
И кроме того, есть слова (например, "длина"), которые было бы неплохо не занимать и оставить пользователю.
В общем, утешает только то, что теперь есть технология, позволяющая относительно безболезненно делать массовые замены.
В КуМире все встроенные слова очень короткие, т.к. он учебный и нарочито убогий. В Обероне - ещё хуже. Встроенные идентификаторы совершенно неравномерно распределены по частоте применения, однако все они сделаны короткими, т.к. это было в те давние времена, когда памяти не хватало даже на идентификаторы. Но все уже привыкли и удлиннение вызовет протест!
Но в современной идеологии "чистого кода" слова должны быть подробными. А по моей идеологии, частые слова должны быть короткими, а редкие - подробными. Да ещё и на русском, в котором, ессно, сроду не было никаких ASH и ROT.
И кроме того, есть слова (например, "длина"), которые было бы неплохо не занимать и оставить пользователю.
В общем, утешает только то, что теперь есть технология, позволяющая относительно безболезненно делать массовые замены.
Re: дневник Яос
- Поспешил я... (но в будущем, авось, сгодится)))
А вот эти строки могут спокойно попасть под сокращения:
А если "идентуйИменами", или "идентуйПутями"... (?)
Учитывая, что идентификатор — это и есть некий "суррогат имени", то налицо - тавтология (переименуйИменаторы).
У резидента и президента - один корень идентификации; — "идент", который и идентифицирует их представительство в соответствующих кругах.
Re: дневник Яос
Про маркдаун - понял.
Эти ключи компилятора редко используются, их необязательно сокращать.
Эти ключи компилятора редко используются, их необязательно сокращать.
Re: дневник Яос
Кумиризация языка отменена. Причина - она никуда не попала. Есть спрос на две вещи:
* переходный язык от программирования блоками к текстовому, близкий к Паскалю и пригодный для работы с исполнителями
В этом случае образцом, от к-рого нужно не отстать, является Scratch, где слова в командах - полные и без сокращений, либо PascalABC, а это богатый язык, в котором сокращение до 3 букв узкого набора понятий, нужных в КуМире (очевидно, в ущерб остальным) не имеет значения. Кроме того, переход происходит не от КуМира и совместимость с КуМиром не имеет значения.
* роботы Лего
В этом случае краткость отдельного набора ключевых вообще никакого значения не имеет.
Делать конкурента КуМиру нет большого смысла. Мы уже выяснили, что язык существенно другой, по удобству именно для совсем базового уровня КуМир превосходить будет дорого, т.к. там много сделано для удобства.
* переходный язык от программирования блоками к текстовому, близкий к Паскалю и пригодный для работы с исполнителями
В этом случае образцом, от к-рого нужно не отстать, является Scratch, где слова в командах - полные и без сокращений, либо PascalABC, а это богатый язык, в котором сокращение до 3 букв узкого набора понятий, нужных в КуМире (очевидно, в ущерб остальным) не имеет значения. Кроме того, переход происходит не от КуМира и совместимость с КуМиром не имеет значения.
* роботы Лего
В этом случае краткость отдельного набора ключевых вообще никакого значения не имеет.
Делать конкурента КуМиру нет большого смысла. Мы уже выяснили, что язык существенно другой, по удобству именно для совсем базового уровня КуМир превосходить будет дорого, т.к. там много сделано для удобства.
Re: дневник Яос
Что-то я себя сам пока не очень убедил и слегка выпал из контекста... Т.е. кумиризация отменяется не полностью, потому что циклы, "нач", "кон" и "всё" выглядят вполне разумно.
Re: дневник Яос
Немного попереводил встроенные имена. Смирился с их ужасным видом.
Re: дневник Яос
Вчера пытался собрать переведённый ЯОС, правлю вновь всплывшие проблемы, появившиеся из-за того, что движок перевода не всё правильно обрабатывает. Попутно немного добавлял/менял переводы.
Re: дневник Яос
Правлю дичайшую багу, связанную с кешированием результатов работы компилятора и переводчика. По сути дела, на это ушла вся последняя неделя (т.е. свободное от работы время, к-рого оставалось маловато). При этом перевёл много встроенных имён (чтобы было проще её локализовать). Мне не нравится, как всё это в итоге выглядит, но "не стреляйте в пианиста". Видимо, скоро будут новые цифры по степени кирилличности.
При этом, названия встроенных конструкций приближены к КуМиру. Обозначение конца конструкции как "кн" почему-то вызывало постоянную критику, хотя я по-прежнему считаю, что это название было лучше любого другого, и замена его на трёхбуквенные "кон" или "всё" на самом деле большая потеря в плотности текста. Но уж тут как получается.
При этом, названия встроенных конструкций приближены к КуМиру. Обозначение конца конструкции как "кн" почему-то вызывало постоянную критику, хотя я по-прежнему считаю, что это название было лучше любого другого, и замена его на трёхбуквенные "кон" или "всё" на самом деле большая потеря в плотности текста. Но уж тут как получается.
Re: дневник Яос
Багу вроде поправил, но прорыв в кириллизации отменяется (или я неправильно померял). Почему-то осталось 22%. Посмотрим потом. Смиряюсь с тем, что машинно-зависимые типы останутся надолго, думаю о более коротких названиях для них. Немного поправил парсер редактора. Пока всё же не перевожу на русский, нужно, чтобы переводы ещё устоялись.