дневник Яос

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* роботы Лего

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ответить