дневник Яос

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

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

Сообщение БудДен » 08.12.20 02:00

Немного ещё продвинулся по движку перевода, теперь засел в FoxArrayBase - файл огромный и куча ошибок высыпалась. Также немного улучшил удобство - теперь на третьей строке файла можно вписать команду, которая будет в редакторе выполняться по сочетанию клавиш CTRL-SHIFT-J, или, говоря по-нанему, Су-Врег-О.

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

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

Сообщение БудДен » 10.12.20 03:21

FoxArrayBase, кажется, победил. Повысил степень автоматизации теста - теперь перевод туда и обратно запускается "одной кнопкой".

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

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

Сообщение БудДен » 11.12.20 03:35

Ещё одну ошибку в переводчике поправил.

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

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

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

Ещё что-то поправил, прожевал порядка 700 файлов. Поставлю остаток и пойду спать. Заодно замеряю индекс кириллизации при переходе на русские ключевые слова. На данный момент он 0.89%, т.е. в исходниках ЯОС из всех букв примерно 1% русских.

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

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

Сообщение БудДен » 12.12.20 19:34

Переводятся на русские ключевые слова, модификаторы и встроенные типы все файлы, составляющие сборки для Win32 и Linux64. На процесс перевода на английский и обратно обратно уходит 44 минуты, индекс кирилличности в русском переводе - порядка 13%, из примеров хорошо переведённого файла можно привести файл ЗагрузиПереводыЭлементовКода.Mod с индексом кирилличности 73%. Так хорошо получилось по той причине, что файл изначально писался мной и там сразу применены русские идентификаторы.

Запись в журнале изменений кода https://gitlab.com/budden/ja-o-s/-/comm ... c214f46380

Однако говорить о полном успехе и возможности перехода на русские ключевые слова рано: карточка на ARM до сих пор на таможне. Без тестов не хочется делать такое серьёзное изменение, как замена ключевых слов. Даже из доступных четырёх сборок, поддержка которых планируется и которые можно тестировать, пока что переведены только две. Так что пока до перехода на русские ключевые слова ещё есть чем заняться.

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

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

Сообщение БудДен » 12.12.20 20:26

Вот как выглядит модуль ЗагрузиПереводыЭлементовКода в русской версии.

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

модуль ЗагрузиПереводыЭлементовКода;
	использует KernelLog, Strings, Files, Streams, XML, XMLScanner, XMLParser, XMLObjects, ПереводыЭлементовКода;
конст
	ИмяФайлаПереводов = "ПереводыЭлементовКода.XML";
	Trace* = ложь;
тип
	
	СостояниеДелаРазбора = набор (* передавать по VAR *)
		имяФайла : ряд 256 из литера8;
		будущиеМодули : ПереводыЭлементовКода.Модуль;
		гдея : Streams.Position кн;
	
перем
	hasErrors: булево;
	
	проц РазбериПереводыЭлементовКода(перем сдр : СостояниеДелаРазбора; doc: XML.Document) : булево;
	перем
		enum: XMLObjects.Enumerator;
		p: динамически_типизированный_укль;
		у(*узел*): XML.Element;
		s: XML.String;
	тело
		если (doc = НУЛЬ) то возврат ложь кн;
		(* First we just count the number of hot keys defined *)
		у := doc.GetRoot();
		enum := у.GetContents();
		цикл_пока enum.HasMoreElements() делай
			p := enum.GetNext();
			если (p суть XML.Element) то
				у := p(XML.Element);
				сдр.гдея := у.GetPos();
				s := у.GetName();
				если ((s # НУЛЬ) и (s^ = "Module")) то
					если ~РазбериМодуль(сдр, у) то
						возврат ложь кн
				иначе
					ОшибкаСмысла(сдр, Strings.NewString("Ожидался элемент Module, а попался иной элемент"));
					возврат ложь кн
			аесли (p суть XML.Comment) то
				(* ничего не делаем *)
			иначе 
				ОшибкаСмысла(сдр, Strings.NewString("Ожидался элемент Module, а попался вообще не элемент"));
				возврат ложь кн кн;
		ПереводыЭлементовКода.модули := сдр.будущиеМодули;
		возврат правда кн РазбериПереводыЭлементовКода;

	(* ПрочитайОбязательныйСтроковыйАтрибут возвращает успех или неудачу *)
	проц ПрочитайОбязательныйСтроковыйАтрибут(перем сдр: СостояниеДелаРазбора; у: XML.Element; 
		имяАтрибута : ряд из литера8; перем приёмник: Strings.String) : булево;
		перем врем: Strings.String;
	тело
		врем := у.GetAttributeValue(имяАтрибута);
		если (врем = НУЛЬ) или (врем^ = "") то
			ОшибкаСмысла(сдр, Strings.NewString("атрибтут «") + имяАтрибута + "» должен быть задан непустой строкой");
			возврат ложь кн;
		приёмник := врем;
		возврат правда кн ПрочитайОбязательныйСтроковыйАтрибут;


	(* ПрочитайНеобязательныйСтроковыйАтрибут возвращает успех или неудачу *)
	проц ПрочитайНеобязательныйСтроковыйАтрибут(перем сдр: СостояниеДелаРазбора; у: XML.Element; 
		конст имяАтрибута : ряд из литера8; конст умолч: ряд из литера8; перем приёмник: Strings.String) : булево;
		перем врем: Strings.String;
	тело
		врем := у.GetAttributeValue(имяАтрибута);
		если (врем = НУЛЬ) или (врем^ = "") то
			врем := Strings.NewString(умолч) кн;
		приёмник := врем;
		возврат правда кн ПрочитайНеобязательныйСтроковыйАтрибут;


	проц РазбериЧлены(перем сдр: СостояниеДелаРазбора; хозяин : XML.Element; перем приёмник: ПереводыЭлементовКода.ИменованнаяОбластьВидимости): булево;
	перем
		обход: XMLObjects.Enumerator;
		элт: динамически_типизированный_укль;
		у(*узел*): XML.Element;
		врем : ПереводыЭлементовКода.ИменованнаяОбластьВидимости;
		s: XML.String;
	тело
		приёмник := НУЛЬ;
		обход := хозяин.GetContents();
		цикл_пока обход.HasMoreElements() делай
			элт := обход.GetNext();
			если (элт суть XML.Element) то
				у := элт(XML.Element);
				сдр.гдея := у.GetPos();
				s := у.GetName();
				если ((s # НУЛЬ) и (s^ = "Scope")) то
					если ~РазбериИменованнуюОбластьВидимости(сдр, у, врем) то
						возврат ложь кн;
					врем.следующий := приёмник;
					приёмник := врем кн кн кн; 
		возврат правда кн РазбериЧлены;
		

	проц РазбериИменованнуюОбластьВидимости(перем сдр: СостояниеДелаРазбора; у : XML.Element; перем приёмник: ПереводыЭлементовКода.ИменованнаяОбластьВидимости) : булево;
	перем
		ов: ПереводыЭлементовКода.ИменованнаяОбластьВидимости; russianExists : XML.String; 
	тело
		приёмник := НУЛЬ;
		нов(ов);
		если ~ПрочитайОбязательныйСтроковыйАтрибут(сдр, у, "en", ов.en) то возврат ложь кн;
		если ~ПрочитайНеобязательныйСтроковыйАтрибут(сдр, у, "ru", "", ов.ru) то возврат ложь кн;
		если ов.ru^ = "" то ов.ru := ов.en кн;
		если ~ПрочитайНеобязательныйСтроковыйАтрибут(сдр, у, "rx", "1", russianExists) то возврат ложь кн;
		(* также для справки есть атрибут ee = ExportEd, но он нужен только человеку *)
		если russianExists^ = "1" то
			ов.russianExists := 1
		аесли russianExists^ = "0" то
			ов.russianExists := 0
		иначе
			KernelLog.String("russianExists^ = «");
			KernelLog.String(russianExists^);
			KernelLog.String("»"); KernelLog.Ln;
			ОшибкаСмысла(сдр, Strings.NewString("russianExists должно быть 0 или 1"));
			возврат ложь кн;
		если ~РазбериЧлены(сдр,у, ов.члены) то
			возврат ложь кн;
		приёмник := ов;
		возврат правда кн РазбериИменованнуюОбластьВидимости;



	проц РазбериМодуль(перем сдр: СостояниеДелаРазбора; у : XML.Element) : булево;
	перем
		м: ПереводыЭлементовКода.Модуль; russianExists : XML.String; 
	тело
		нов(м);
		если ~ПрочитайОбязательныйСтроковыйАтрибут(сдр, у, "en", м.en) то возврат ложь кн;
		если ~ПрочитайОбязательныйСтроковыйАтрибут(сдр, у, "ru", м.ru) то возврат ложь кн;
		если ~ПрочитайНеобязательныйСтроковыйАтрибут(сдр, у, "rx", "1", russianExists) то возврат ложь кн;
		если russianExists^ = "1" то
			м.russianExists := 1
		аесли russianExists^ = "0" то
			м.russianExists := 0
		иначе
			KernelLog.String("rx^ = «");
			KernelLog.String(russianExists^);
			KernelLog.String("»"); KernelLog.Ln;
			ОшибкаСмысла(сдр, Strings.NewString("rx должно быть 0 или 1"));
			возврат ложь кн;
		если ~(РазбериПопулярныеПсевдонимы(сдр,м,у) и РазбериКонстанты(сдр,м,у)) то
			возврат ложь кн;
		если ~РазбериЧлены(сдр, у, м.члены) то
			возврат ложь кн;
		м.следующий := сдр.будущиеМодули;
		сдр.будущиеМодули := м; возврат правда кн РазбериМодуль;
			
	проц РазбериПопулярныеПсевдонимы(перем сдр: СостояниеДелаРазбора; м: ПереводыЭлементовКода.Модуль; у : XML.Element):булево;
	перем бегунок: XMLObjects.Enumerator; пуб(*подузелбестиповый*) : динамически_типизированный_укль; пу(*подузел*) : XML.Element;
		тег : XML.String; 
	тело
		бегунок := у.GetContents();
		цикл_пока бегунок.HasMoreElements() делай
			пуб := бегунок.GetNext();
			если пуб суть XML.Content то
				сдр.гдея := пуб(XML.Content).GetPos() кн;
			если пуб суть XML.Element то
				пу := пуб(XML.Element);
				тег := пу.GetName();
				если ((тег # НУЛЬ) и (тег^ = "PopularAlias")) то
					если ~РазбериПопулярныйПсевдоним(сдр, м, пу) то 
						возврат ложь кн кн
			аесли пуб суть XML.Content то (* пропускаем *)
			иначе
				ОшибкаСмысла(сдр, Strings.NewString("ожидался элемент, а попалось неведомо что"));
				возврат ложь кн кн;
		возврат правда кн РазбериПопулярныеПсевдонимы;
		
	проц РазбериПопулярныйПсевдоним(перем сдр: СостояниеДелаРазбора; м: ПереводыЭлементовКода.Модуль; у: XML.Element):булево;
	перем пп : ПереводыЭлементовКода.ПопулярныйПсевдоним; en, ru : XML.String; успех : булево;
	тело
		если ~ПрочитайОбязательныйСтроковыйАтрибут(сдр, у, "en", en) то возврат ложь кн;
		если ~ПрочитайОбязательныйСтроковыйАтрибут(сдр, у, "ru", ru) то возврат ложь кн;
		успех := ПроверьНовизнуПопулярногоПсевдонима(сдр, м, en, ru);
		если успех то
			нов(пп);
			пп.en := en; пп.ru := ru;
			пп.следующий := м.популярныеПсевдонимы;
			м.популярныеПсевдонимы := пп кн;
		возврат успех кн РазбериПопулярныйПсевдоним;
		
	проц ПроверьНовизнуПопулярногоПсевдонима(перем сдр: СостояниеДелаРазбора; м: ПереводыЭлементовКода.Модуль; 
		en, ru : XML.String):булево;
	перем пп: ПереводыЭлементовКода.ПопулярныйПсевдоним;
	тело
	пп := м.популярныеПсевдонимы;
	цикл_пока пп # НУЛЬ делай
		если пп.en^ = en^ то
			ОшибкаСмысла(сдр, Strings.NewString("Неуникальное английское имя")); возврат ложь
		аесли 
			пп.ru^ = ru^ то
			ОшибкаСмысла(сдр, Strings.NewString("Неуникальное русское имя")); возврат ложь кн;
		пп := пп.следующий кн;
	возврат правда кн ПроверьНовизнуПопулярногоПсевдонима;

	проц РазбериКонстанты(перем сдр: СостояниеДелаРазбора; м: ПереводыЭлементовКода.Модуль; у : XML.Element):булево;
	тело возврат правда кн РазбериКонстанты;
	
	
	(* Ошибка для парсера XML *)
	проц ОшибкаДляПарсераXML(pos, line, row: Streams.Position; конст msg: ряд из литера8);
	тело
		KernelLog.String("ПереводыЭлементовКода: позиция");
		KernelLog.Int(pos, 5);
		KernelLog.String(", стр ");
		KernelLog.Int(line, 5);
		KernelLog.String(" кол ");
		KernelLog.Int(row, 5);
		KernelLog.String(" - ");
		KernelLog.String(msg);
		KernelLog.Ln();
		hasErrors := правда
	кн ОшибкаДляПарсераXML;
	
	
	проц ОшибкаСмысла(перем сдр : СостояниеДелаРазбора; msg: Strings.String);
	тело
		KernelLog.String("ПереводыЭлементовКода: файл ");
		KernelLog.String(сдр.имяФайла);
		KernelLog.String(", позиция ");
		KernelLog.Int(сдр.гдея, 5);
		KernelLog.String(": ");
		KernelLog.String(msg^);
		KernelLog.Ln();
		HALT(45345); (* не можем позволить себе загрузить ЯОС с битым файлом переводов *)
	кн ОшибкаСмысла;

	проц Read(перем сдр: СостояниеДелаРазбора) : булево;
	перем
		f: Files.File;
		scanner: XMLScanner.Scanner;
		parser: XMLParser.Parser;
		reader: Files.Reader;
		doc: XML.Document;
		успех : булево;
	тело
		hasErrors := ложь;
		f := Files.Old(сдр.имяФайла);
		если (f # НУЛЬ) то
			нов(reader, f, 0);
			нов(scanner, reader);
			scanner.reportError := ОшибкаДляПарсераXML;
			нов(parser, scanner);
			parser.reportError := ОшибкаДляПарсераXML;
			doc := parser.Parse();
			если hasErrors то
				ОшибкаСмысла(сдр,Strings.NewString("есть ошибки XML."));
			иначе
				успех := РазбериПереводыЭлементовКода(сдр, doc);
				если успех то (* иначе ошибку должны были вывести раньше *)
					ПереводыЭлементовКода.модули := сдр.будущиеМодули;
					KernelLog.String("ПереводыЭлементовКода: файл ");
					KernelLog.String(сдр.имяФайла);
					KernelLog.String(" успешно загружен.");
					KernelLog.Ln кн кн		
		иначе
			ОшибкаСмысла(сдр,Strings.NewString("файл не найден.")) кн;
		возврат успех кн Read;

	проц ИзФайла*;
	перем 
		сдр : СостояниеДелаРазбора;
	тело
		сдр.имяФайла := ИмяФайлаПереводов;
		неважно Read(сдр) кн ИзФайла;
		
кн ЗагрузиПереводыЭлементовКода.ИзФайла ~

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

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

Сообщение БудДен » 13.12.20 03:13

Переводятся туда и обратно 4 конфигурации, индекс кирилличности - 14,7% (опять же, это ещё не на гитлабе, нужно ещё что-то сделать с ARM-ом, который, мало того, что не чем запустить, так он ещё похоже и не собирается). Вот чем хорош индекс кирилличности, что он хорошо растёт от такой простой вещи, как перевод ключевых слов и прочей подобной муры. Раз за день он вырос на полтора процента, может возникнуть иллюзия, что через пару месяцев перевод будет закончен. Но, конечно же, скоро он расти перестанет. Тогда будем мерять как-нибудь по-другому, чтобы росло быстро :) Ловкость рук и никакого обмана :)

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

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

Сообщение БудДен » 15.12.20 00:43

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

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

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

Сообщение БудДен » 15.12.20 17:38

Починил собирамость под ARM. Теперь собирается 9 сборок (сборок было больше, но часть я выкинул). 9 сборок собираются примерно 21 минуту. Запускать под ARM по-прежнему непонятно как, но тут уж ясно, что разбираться долго придётся. Качаю всякие эмуляторы - вроде они появились в последнее время, хотя преисполнен пессимизма. Напрашивается оптимизация процесса перевода, т.к >90% исходников не зависят от препроцессора и их достаточно перевести один раз. Что делать - понятно, осталось сделать.

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

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

Сообщение БудДен » 16.12.20 01:02

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

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

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

Сообщение БудДен » 17.12.20 13:37

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

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

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

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

Сообщение БудДен » 18.12.20 01:12

Пытался внедрить директивы {перекрыта}, но они не вставляются в неактивные блоки препроцессора, поэтому слияние конфигураций ломается. Видимо, придётся часть этой работы проделать вручную, поставив сборку с минимальным числом пакетов. Также, наверное, надо включить предупреждение об отсутствии модификатора {перекрыта/override} независимо от языка и проблема всплывёт как можно раньше.

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

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

Сообщение БудДен » 18.12.20 22:09

Впервые выложил исходники с переведёнными ключевыми словами. Заодно добавил модификатор {перекрыта} для унаследованных процедур.
Где-то тут можно смотреть:

https://gitlab.com/budden/ja-o-s/-/blob ... Kernel.Mod

Индекс кирилличности в этой ветке (пока она не основная) - 15.6%

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

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

Сообщение БудДен » 19.12.20 00:57

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

https://gitlab.com/budden/ja-o-s/-/blob ... canner.Mod - индекс кирилличности 32%.

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

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

Сообщение БудДен » 20.12.20 01:36

Исправил сегодня 2-3 ошибки, слил две ветки разработки, из двух аналогов Release.Mod и СборщикВыпускаЯОС.Mod оставил только русскоязычный. Мостики за нами постепенно подгорают...

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

Индекс кирилличности в русскоязычной ветке - 15.92%. Поскольку уже очевидно, что за обычный день он будет, как правило, расти менее, чем на 0.1%, буду его писать с точностью до 0.01%.

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

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

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

Сообщение MihalNik » 20.12.20 15:20

БудДен писал(а):
20.12.20 01:36
ключевые слова я уже перевёл
Отлично. Т.е. можно переводить любой идентификатор? А со встроенными функциями проблем не будет или их нет в A2?

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

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

Сообщение БудДен » 20.12.20 18:33

Встроенные функции не осилил пока - переведены только ключевые слова и модификаторы (такие, как UNTRACED, EXCLUSIVE и проч). Насчёт переводить любой идентификатор пока рано говорить, т.к. в движке пока всплывают проблемы на каждом новом переводе. Пока я его пропустил через 3 файла и вносил много правок.

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

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

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

Сегодня уже времени было немного - последний день отпуска. Починил пошаговый отладчик (теперь он вроде работает не хуже прежнего, хотя раньше он тоже работал плохо, но хоть как-то). Немного ещё попереводил (и немного даже порефакторил), индекс кирилличности поднялся до 15.93%, но на самом деле вряд ли это честная единичка - скорее всего это ближе к неточности округления. 0,01% в день - до 100% дойдём примерно за 85/0.01 = 8500 дней = 23 года. Ну, есть чем занять остаток дней и что передать потомкам (это смотря сколько Бог отведёт). Обновил главную страницу репозитория. Залил кириллические ключевые слова в главную ветку - ломающие совместимость изменения происходят каждый день и, видимо, идти вперёд по бразильской системе уже проще, чем назад.

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

Приехала Raspberry Pi, но нет адаптера для карточки, нет мыши и клавиатуры, поэтому проверить даже линукс не представляется пока что возможным. Мне не очень нравится ситуация с UART - под Linux его нужно как-то конфигурировать. В общем, немного покопаюсь с этой малиной, но особо ложиться костьми не буду. Zybo прошла таможню, где теперь она шатается - то неведомо. Желания копаться с ней нет вообще.

В целом можно уже подвести итоги года - план почти выполнен, вот он:

http://plana.mybb.ru/viewtopic.php?id=1286

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

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

Сообщение БудДен » 24.12.20 23:14

Слегка пришёл в себя после неудачи с запуском Raspberry Pi (см. тему http://вече.программирование-по-русски. ... ?f=5&t=329 ), особо времени нет из-за работы, но часок вечером всё же уделил переводу.

В движке пока крупные дыры - около 20 мест пришлось доделывать руками (возможно, что я это сделал и криво - в крайнем случае можно будет отступить, переделать и слить новый и старый результат; просто переделать нельзя, т.к. перевёл много комментариев и строковых литералов, естественно, руками без всякого движка). Теперь места с проблемами зафиксированы в виде коммита 06f1c1654 . Индекс кирилличности 15.94%. Думаю установить норму роста индекса кирилличности в 0.01% в неделю - так вся работа будет закончена за 10000 недель = 161 год. Думается, с такой нормой я достаточно ясно покажу, что данная работа не подлежит тому, чтобы быть сделанной одним лицом, но для народа или государства такая задача вполне посильна. Наверное, можно поставить норму и больше, но я не планирую заниматься одним только переводом. Как минимум, придётся править баги в движке перевода и в самой ЯОС, а также писать приложение, к-рое я замыслил. И всё это в сумме называется "хобби-проект", на который особо много времени уделить не выйдет. Поэтому завершить перевод за 161 год - вполне нормальный темп. Этот темп достаточен, чтобы процедура не вылетала из головы и не нужно было каждый раз её заново изучать.

Норма по переводу на эту неделю выполнена.

Аватара пользователя
Лис [Вежливый]
Сообщения: 561
Зарегистрирован: 08.10.18 13:32

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

Сообщение Лис [Вежливый] » 25.12.20 05:38

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

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

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

Сообщение БудДен » 25.12.20 13:02

Ну, я думаю, что мультимедиа-приложение я всё же осилю. А перевод 100% текста - нет. Не все проекты делаются за жизнь одного человека, иногда нужно хотя бы начать. Русификация медицины длилась примерно 150 лет. Можно посмотреть вообще на развитие любой отрасли - там всегда всё веками делается. Ну не получается у меня сделать так, чтобы моя работа стала ответом на актуальные вызовы. Значит, от этого придётся отступиться. А что мне предлагается, голову об стену разбить?

Аватара пользователя
Лис [Вежливый]
Сообщения: 561
Зарегистрирован: 08.10.18 13:32

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

Сообщение Лис [Вежливый] » 25.12.20 21:50

что мне предлагается, голову об стену разбить?
Нет, сменить специальность с программиста на специальность публичного политика. У них, очевидно, тоже есть цели, которые можно достигать, и показатели, которые можно замерять, исчислять. Оба эти вида деятельности хоббийные, поэтому нет разницы каким из них заниматься. В то же время у "политического" пути есть потенциальный мультипликативный эффект, и этот путь не ведёт в тупик. Никто в коде чужом копаться не будет, останутся только общие идеи. А идеи лучше всего распространять текстами и перформансами (выступать на конференциях, российских аналогах TED, например).

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

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

Сообщение БудДен » 27.12.20 13:50

Программист из меня, смею надеяться, получился неплохой, а публичный политик? Скорее всего - никакой. Да и публичный политик что делает? Только болтает. Даже через 160 лет у него может ничего не получиться, если его не услышат. А тот, кто занимается непосредственным созиданием, может "писать в стол". Это хуже, чем иметь тиражи, но лучше, чем совсем ничего.

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

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

Сообщение БудДен » 28.12.20 19:35

Боюсь, не уложиться мне в 161 год. Только сел, а уже индекс кириллизации 15,96%. При том, что успел починить ошибку в движке перевода, сверить старую и новую версию и исправить конфликты.

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

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

Сообщение БудДен » 29.12.20 16:31

15,97% . Я подумал, что в индекс кирилличности нужно включить и документы, которых было написано вовсе не так уж и мало. Так что придётся начать всё заново. И главное, составить красивый график, как оно растёт.

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

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

Сообщение БудДен » 29.12.20 16:45

Добавил документы - сразу стало 16.64%.

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

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

Сообщение БудДен » 30.12.20 00:24

Попереводил СборщикВыпускаЯОС - стало 16.68% - наверное, в общей сложности часа два.

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

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

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

Вероятно, что если дальше так пойдёт, то норму можно удесятерять. Но какая разница, 161 год или 16 лет? С трудом представляю, что я ещё 16 лет так буду сидеть и каждый день что-то переводить. В общем-то меня оба срока не устраивают. Так что не буду ничего удесятерять, просто, видимо, буду делать в этой работе перерывы на что-то другое.

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

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

Сообщение БудДен » 31.12.20 14:31

16.69% . Всплыл вопрос про именование контейнеров: https://www.linux.org.ru/forum/development/16082380
Последний раз редактировалось БудДен 01.01.21 22:56, всего редактировалось 1 раз.

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

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

Сообщение БудДен » 01.01.21 22:55

С Новым годом!

16.71%

Никак не могу закончить всего лишь один файл на 3000 строк, отвечающий за сборку системы. У него индекс кирилличности сейчас 49.3% . Порогом, когда становится осмысленным применение Яроклавы, является 50%, но в данном случае я хочу перевести язык описания конфигураций ЯОС на русские ключевые слова, так что придётся, видимо, зайти за эти 50%. Плюс к тому, в начале файла большой комментарий с описанием команд, который тоже надо перевести. Вопрос зацепится, скорее всего, и за ввод кириллицы из "чёрной консоли". А может быть, и нет.

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

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

Сообщение БудДен » 02.01.21 14:57

16.72%

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

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

Сообщение БудДен » 03.01.21 23:46

Слегка подобрал сопли. Надо работать вдолгую - значит будем работать вдолгую. Надо привлекать народ - значит будем привлекать народ.

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

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

В связи с этим немного попереводил модуль консольного ввода-вывода. В модуле Shell.Mod достигнута КМК рекордная степень кирилличности в 61%, вот он:

https://gitlab.com/budden/ja-o-s/-/blob ... /Shell.Mod

Нашёл таблицу для перевода управляющих символов ASCII, http://вече.программирование-по-русски. ... ?f=6&t=343

Дописал несколько строчек в веб-словарь - теперь в нём 103 ячейки.

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

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

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

Сообщение БудДен » 04.01.21 15:40

В Shell.mod индекс кирилличности достиг 82%. Поскольку он использует другие модули, которые ещё не переведены, это на данный момент предел возможного. Хотя вот вижу ещё несколько комментариев, которые не переведены - и тогда 86.7%

Общий индекс кирилличности - 16.79%

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

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

Сообщение БудДен » 05.01.21 00:38

Заработала кириллица в командной оболочке, в т.ч. в "чёрной консоли" под Windows. Т.е. глюки ещё остались, но во всяком случае, удалось
выполнить команду в кириллице через чёрную консоль. Индекс кирилличности 16.80% (я ожидал, что он упадёт, т.к .при внедрении UCS32 в Shell.Mod пришло много латиницы; впрочем, в самом Shell.Mod индекс кирилличности упал до 81%).

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

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

Сообщение БудДен » 05.01.21 23:43

Теперь похоже, что и вправду заработала. Ещё вчера сделал двухъязычными некоторые команды консоли:

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

>справка
--- Справка ---
сокращ/alias: Покажи список сокращённых команд
сокращ/alias 'имя'='команда': Создаё новую сокращённую команду
сокращ/alias 'имя': Удали команду
загрсокращ/loadalias имяФайла: Загрузи сокращения команд из файла
рекурс/batch: запусти оболочку рекурсивно
очисэкр/clear: очисть экран
версия/version: покажи версию
справка/help: покажи эту справку
выход/exit: заверши выполнение оболочки
Индекс кирилличности 16.81% (немного перевёл комментариев, плюс кое-что дописал, код сегодня не переводил).
Зато теперь не работает консоль в графике (WMShell.Open)

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

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

Сообщение БудДен » 06.01.21 23:46

Похоже, что слегка подправил ошибку при выводе из потока в объект "Текст", которая возникает, если литера ФПЮ-8 (UTF-8) оказалась на границе буферов. Всё равно WMShell пока не полностью работает - нельзя вводить кириллицу.

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

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

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

Сообщение БудДен » 07.01.21 23:46

Кириллица в WMShell, похоже, вводится как положено. Индекс кирилличности - 16.83%, на этот раз за счёт создания нового документа.

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

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

Сообщение БудДен » 09.01.21 00:28

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

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

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

Сообщение БудДен » 09.01.21 16:39

16.86% + пара мелочей в ИСР.

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

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

Сообщение БудДен » 09.01.21 22:42

16.87%. План на январь был 0.04%, а получилось 0.16%. Поскольку план перевыполнен в 4 раза, переключаюсь на что-нибудь иное до конца января. Видимо, нужно будет посмотреть, как пойдёт дело в рабочие дни, когда свободного времени будет меньше... Хотя нет. Квантом перевода является модуль. Поскольку СборщикВыпускаЯОС.Mod недопереведён, нужно продолжать. Ещё далеко...

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

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

Сообщение БудДен » 10.01.21 23:04

16.94% - всё ещё продолжаю перевод системы сборки. Уже хорошо ощущаются последствия разрывов по времени - есть случаи, когда одно и то же переведено по-разному. Блин, а тут фигня ещё и в том, что XML файлы тоже включены. А если убрать? Тогда 17.08%. Ладно, убирать не будем.

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

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

Сообщение БудДен » 12.01.21 00:16

16.97% - называется, сел на полчасика, а просидел все два.

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

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

Сообщение БудДен » 14.01.21 21:42

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

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

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

Сообщение БудДен » 15.01.21 22:05

17.03%

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

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

Сообщение БудДен » 16.01.21 14:40

17.05% . Похоже, что норму можно увеличить. Увеличу до 0.05% в неделю. Тогда за год будет 2.6%, перевод ядра и компилятора с учётом дублирования кода завершится за 7 лет, перевод всей системы - за 40. Огромный успех!
Последний раз редактировалось БудДен 16.01.21 15:02, всего редактировалось 1 раз.

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

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

Сообщение БудДен » 16.01.21 14:57

В общем, секрет успеха здесь в том, чтобы перевести данный проект в категорию "вязания шарфа на спицах" - долгое и занудное дело, однако с видимым прогрессом. Не распыляться на болтовню, метания и стрельбу из рогатки по журавлям в облаках. Мне кажется, что пока что это более-менее удаётся. А дальше ждать, пока Бог заметит и пошлёт вспоможение. Ясно, что данный проект бесполезен для решения насущных проблем безопасности, стоящих перед страной - опоздали так уж опоздали. Если завтра на нас гибридно нападут с применением киберсредств и обычных вооружений, то нас уничтожат, и я бессилен здесь чему-либо помочь. И без меня есть куча людей, которые об этом говорят, а многие что-то и делают. А русификацией ИТ в такой форме не занимается никто. Поэтому надо сосредоточиться на возможном и на стратегически нужном, а как мы будем выживать сегодня и завтра - "те, кто против тех, кто против нас, сделают это без нас", ну или остаётся ещё рабочее время. Или ещё подумать о целеполагании.

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

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

Сообщение БудДен » 16.01.21 23:10

17.07%, индекс кирилличности файла https://gitlab.com/budden/ja-o-s/-/blob ... скаЯОС.Mod - 81%, все имена которые можно было перевести, там переведены, но работа над ним ещё не закончена.

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

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

Сообщение БудДен » 17.01.21 15:42

17.08%

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

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

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

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

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

LisCompiler.Compile --perevediNaRusskijj --klastqPerevodyV="C:/ob/jaos/perevod/p/a/ru" -p=Win32 
    Options.Mod ~
а

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

LisCompiler.Compile --переведиНаРусский --кластьПереводыВ="C:/ob/jaos/perevod/p/a/ru" -p=Win32 
    Options.Mod ~
Там, как обычно, оказалось прибито гвоздями ASCII, начал править, запутался, в итоге начал править низкоуровневый модуль, чтобы он мог делать Peek для юникодных литер, при том, что поток - UTF8. Опять час ночи, а дело не сделано. Т.е. Peek вроде работают, но русских букв в командах не получится уже.

Но при этом успел и попереводить, индекс кирилличности 17.10%

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

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

Сообщение БудДен » 20.01.21 00:58

Занимался внедрением поддержки альтернативных русскоязычных имён опций в движок "команд". Казалось бы, должно работать, но на практике есть ошибки "борщикВыпускаЯОС", т.е. может пропускать первую букву параметра. Индекс кирилличности не изменился.

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

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

Сообщение БудДен » 22.01.21 20:16

Настали суровые трудовые будни, темп снизился. Вроде реализовал опции в кириллице, частично их внедрил (теперь возможно два имени опции, не считая однобуквенного), но явно, что там есть баги, причём неприятные - не работает переход к месту ошибки. Индекс кирилличности 17.12% (резкое замедление)

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

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

Сообщение БудДен » 23.01.21 23:39

Часть времени на неделе и всю субботу убил на ошибку в потоках. Но зато теперь заработали опции на русском языке (но это неточно). Индекс кирилличности 17.13%

P.S. перевёл описание файла конфигураций, и стало 17.15%. В прошлое воскресенье было 17.08%, значит, план на неделю (пере)выполнен.

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

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

Сообщение БудДен » 26.01.21 22:53

Будни всё суровее и суровее. Начал переводить опции компилятора - 17.17%

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

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

Сообщение БудДен » 29.01.21 22:39

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

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

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

Сообщение БудДен » 30.01.21 15:46

Ещё попереводил в поезде, сегодня пересобрал - получилось аж 17.24%. На этом завершаем работу января (план перевыполнен в несколько раз) и начинаем подводить итоги.

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

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

Сообщение БудДен » 30.01.21 18:37

Для завершения месяца понадобилось перенести перевод из лисокомпилятора в фоксокомпилятор - и стало 17.32% . Усилия, вложенные в перевод компилятора, удваиваются, т.к. есть две очень близких копии компилятора.

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

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

Сообщение БудДен » 03.02.21 00:21

Занимаюсь поиском затенений одноимённых символов. Есть частичный успех (при затенении выдаётся предупреждение, хотя почему-то не одно, а два). Индекс кирилличности не изменился.

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

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

Сообщение БудДен » 04.02.21 00:18

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

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

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

Сообщение БудДен » 07.02.21 01:18

Пережил атаку зомби на ЛОРе. Исправил хорошую ошибку в модуле отладочной печати, из-за которой ОС молча падала (ошибочный размер в Heaps.Mod). Занимаюсь разбиением единого файла ПереводыЭлементовКода.XML на помодульные - похоже, что почти готово. После этого нужно будет пробовать сделать рефакторинг "переименуй идентификатор".

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

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

Сообщение БудДен » 13.02.21 12:54

Словарь переводов разбит на отдельные файлы. Технология перевода упрощена для случая, когда нет директив условной компиляции. Занимаюсь рефакторингом "переименуй идентификатор". Есть примерный план прототипа.

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

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

Сообщение БудДен » 14.02.21 14:33

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

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

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

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

Сделал переименование затеняющих идентификаторов для одного файла. К сожалению, даже в компиляторе затенения встречаются где-то в 5-6 файлах. Вероятно, стоило бы сделать внешний цикл, который будет убирать затенения сразу для многих файлов. Хотя можно и потерпеть и делать по одному "вручную".

Теперь остаток февраля буду заниматься улучшением инструментов. Наиболее назревшая вещь - расширение функционала "перехода к определению".

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

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

Сообщение БудДен » 18.02.21 22:43

Теперь Alt-F7 умеет переходить к файлу, процедуре, смещению в процедуре и смещению в файле.
Есть недоделки - не умеет переходить к процедуре по переведённому имени (ну и ладно).

Зато понял, что рефакторинг "переименуй идентификатор" недоделан - он не меняет словарь переводов. Просто забыл,
что надо это сделать, в итоге словарь для одного модуля разломан. Или не для одного.

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

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

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

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

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

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

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

Сообщение БудДен » 23.02.21 23:58

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

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

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

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

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

Павиа
Сообщения: 136
Зарегистрирован: 23.05.19 21:28

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

Сообщение Павиа » 25.02.21 09:45

Комментарии тоже надо переводить.

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

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

Сообщение БудДен » 25.02.21 17:18

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

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

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

Сообщение БудДен » 27.02.21 01:54

Запустилась zybo, но не A2, а Linux. См. соотв. тему.

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

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

Сообщение БудДен » 28.02.21 23:58

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

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

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

Сообщение БудДен » 03.03.21 20:43

Запустилась A2 на Zybo Z7-10. Тема:

http://вече.программирование-по-русски. ... ?f=5&t=389

Наиболее подробное описание результата:

https://forum.oberoncore.ru/viewtopic.p ... 60#p113960

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

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

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

Сообщение БудДен » 06.03.21 01:32

Занимаюсь растенением затеняющих идентификаторов в компиляторе. Возни довольно много. Индекс кирилличности 0.1747% . На условное начало месяца было 0.1748%, ретроградное движение... Странно это...

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

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

Сообщение БудДен » 06.03.21 22:34

Опять растенение, коэффициент кирилличности даже нет смысла мерять сегодня.

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

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

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

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

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

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

Сообщение БудДен » 08.03.21 23:21

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

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

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

Сообщение БудДен » 10.03.21 00:22

Сел под вечер ,думаю, сейчас быстро набросаю таблицу всех переводов, чтобы заполнять её при формировании словаря под новый модуль. Оберон, конечно, не лисп. На лиспе сделал бы за 15 минут, а тут все 2 часа ушли. В итоге получилось вот это:

http://вече.программирование-по-русски. ... =395#p2581

Ну и код получился довольно игривый:

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

	проц Заполни();
	перем член1 : ПЭК.ИменованнаяОбластьВидимости;
	тело
		нов(таблица_прецедентов,1000);
		член1 := ПЭК.модули;
		цикл
			если член1 = НУЛЬ то прерви_цикл кн;
			просей_тип член1:
			| ПЭК.Перевод делай
				ЗаполниВнутр(член1) кн;
			член1 := член1.следующий кн кн Заполни;

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

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

Сообщение БудДен » 10.03.21 00:27

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

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

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

Сообщение БудДен » 10.03.21 14:01

Проект ЯОС приостанавливается на неопределённый срок ввиду открывшихся перспектив на рынке труда. Переходим на проект словаря. Теперь он будет на Clojure. Начинаем с https://github.com/taylorlapeyre/clojure-web-app

Чтобы не забыть - остановился на том, что начал делать вставку "прецедентов" в генератор словаря. Т.е. при создании словаря для нового модуля нужно сначала поискать, как это слово переводилось, и вставить эти варианты как-то так: en="blabla" ru="?блабла,бла-бла,болтовня"

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

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

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

Сообщение БудДен » 13.03.21 16:14

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

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

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

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

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

Сообщение БудДен » 10.04.21 00:15

Перерыв почти в месяц... Однако урвал сегодня буквально считанные минуты, чтобы добавить несколько переводов. Индекс кирилличности пока не посчитать, т.к. не запускал перевод (он на заготовке не запустится).

БудДен
Сообщения: 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
ПовторятьСПроверкойУсловияОстановаВКонце

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

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

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

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

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

Ответить