Страница 4 из 5

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

Добавлено: 31.05.21 00:08
БудДен
19.64, но осталось ещё перевести порядка 70 имён в этом файле. На сегодня хватит.

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

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

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

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

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

Добавлено: 06.06.21 00:30
БудДен
21.77% (перевожу комментарии)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 02.07.21 12:21
БудДен
Ближайшие планы:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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);


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

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

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

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

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

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

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

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

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

Добавлено: 20.09.21 21:29
БудДен
Про маркдаун - понял.
Эти ключи компилятора редко используются, их необязательно сокращать.

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

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

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

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

* роботы Лего

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

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

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

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

Добавлено: 25.09.21 23:56
БудДен
Немного попереводил встроенные имена. Смирился с их ужасным видом.

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

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

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

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

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

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

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

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

Добавлено: 10.10.21 22:37
БудДен
Заменял "литеру" на "символ", а также начал переводить один из основополагающих модулей - Streams.

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

Добавлено: 15.10.21 22:41
БудДен
Продолжается перевод модуля Streams. Между тем, я уволился из прекрасного стартапа, где всё было хорошо до того момента, пока меня не попросили приостановить свой проект, чтобы он не мешал работе.

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

Добавлено: 16.10.21 23:26
БудДен
Модуль Streams вроде доперевёл, правлю ошибки по мелочи. Сделал "переход к определению" для многих (не для всех) встроенных типов и процедур - открывается как бы модуль, но на самом деле это файл справки. Поскольку после перевода встроенных процедур я многое в тексте сам перестал понимать :)

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

Добавлено: 18.10.21 15:56
БудДен
ЯОС собралась с русскоязычными потоками, индекс кирилличности достиг 26.7%. Однако нашлась ошибка в движке перевода - буду править, а потом придётся, видимо, всё повторить.

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

Добавлено: 19.10.21 23:35
БудДен
При попытке перевести ещё более фундаментальный модуль KernelLog столкнулся с местом, где двухъязычность ещё не реализована.
Пытаюсь чинить, план действий есть, слегка продвинулся по нему.

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

Добавлено: 21.10.21 20:44
MihalNik
БудДен писал(а):
15.10.21 22:41
Между тем, я уволился из прекрасного стартапа, где всё было хорошо до того момента, пока меня не попросили приостановить свой проект, чтобы он не мешал работе.
В смысле на работе отвлекал народ им или отбирал свое время?

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

Добавлено: 21.10.21 22:28
БудДен
Нет, они заявили своё недовольство, что я занимаюсь своим проектом, и даже то, что это не в рабочее время, их не убедило. Типа я буду уставать и мне не будет хватать сил на работу.

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

Добавлено: 21.10.21 22:50
БудДен
Перевёл модуль KernelLog, вот он:

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

(переведён только интерфейс)

Индекс кирилличности 28,2%, однако движок перевода не совсем работает - приходится пока что кое-что делать руками. Правлю. Данная проблема всплыла по той причине, что вызовы процедуры из этого модуля подставляются компилятором в генерируемый код особым образом, а сами процедуры при этом ищутся по имени модуля и процедуры. Ранее не было учтено, что эти случаи требуют перевода.

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

Добавлено: 23.10.21 00:47
БудДен
Вроде починил движок перевода, теперь, поскольку явных идей нет, хочу сделать что-то типа лиспового отладчика. Естественно, полностью такой же не выйдет ввиду ограничений языка и рантайма, но хотя бы инспектировать стек должно стать намного легче. А также нужно доехать до места, где лежит RPi и ещё раз, более вдумчиво, попробовать на ней оживить существующую сборку A2.

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

Добавлено: 24.10.21 00:26
БудДен
Внезапно сделал минимальный инспектор и даже интегрировал с чем-нибудь, и даже завёл встроенную процедуру для его вызова. Теперь можно остановить (почти) любую активность и изучить её стек, вставив в код вызов встроенной процедуры "Инспекция". Конечно, не хватает ещё вычисления выражений в текущем кадре стека, как в нормальных отладчиках, но это уже проект. Нужно доделать тягомотные переводы для модулей Reflection, PodrobnajaPechatq и Trace и, видимо, заниматься портированием на ARM вплотную. Неделю я уже без работы отдохнул, много отдыхать не выйдет.

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

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

Добавлено: 25.10.21 09:03
БудДен
Перевёл ещё один фундаментальный модуль, Trace. Индекс кирилличности 28.3%. Видимо, жирные куски теперь не так скоро попадутся. Потоки и логЯдра - это были очень жирные модули с массой клиентов. Так или иначе, индекс кирилличности за этот год вырос на 10%. Если и дальше продолжать в том же темпе, то через каких-нибудь 10 лет перевод ЯОС на русский язык будет завершён. Хотя понятно, что дальше будет медленнее, поскольку богатые месторождения вырабатыватся первыми, а потом порода становится более тощей. В нашем случае основные богатства уже извлечены на-гора.

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

Добавлено: 28.10.21 01:03
БудДен
Есть определённые успехи с RPi2, см. соседние темы.

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

Добавлено: 04.11.21 01:25
БудДен
Версия под RPi частично запустилось в qemu. Хотя похоже, что она падает в QEMU иначе, чем на настоящей плате, это, конечно же, плохо.

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

Добавлено: 04.11.21 15:13
БудДен
Добился идентичного поведения.

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

Добавлено: 05.11.21 21:14
БудДен
Описана работа с Raspberry Pi 2 b v 1.1 : https://gitlab.com/budden/ja-o-s/-/comm ... d611bc58a0

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

Добавлено: 06.11.21 23:05
БудДен
Запустил ЯОС на Zybo (по-прежнему без периферийных устройств).

https://gitlab.com/budden/ja-o-s/-/tree/Zybo-Z710-ЯОС-2

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

Добавлено: 08.11.21 23:50
БудДен
Тяжкую работу с железом отложил, теперь - макросы. А для них нужен интерпретатор. Занялся его оживлением, успехи пока скромные.

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

Добавлено: 10.11.21 00:40
БудДен
Начал добавлять предупреждение об опасном преобразовании между типами адресВПамяти и размерМЗ и как-то завяз в этом. Компилятор с моими изменения падает в самых неприятных местах. А уже 10-е... Видимо, надо прогнать только те файлы, которые надо, этим компилятором, найти проблемное место и откатить все эти изменения. В другой раз, когда будет больше времени и сил. Единственное, в одном месте локализовалось, что типы не преобразовались, хотя должны были. Может через это как-то удастся раскрутить цепочку того, где я что сломал.

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

Добавлено: 17.11.21 00:48
БудДен
Ну вот, по макросам, казалось бы, всё сделано, а на самом деле ещё пахать и пахать, и время заканчивается.

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

Добавлено: 20.11.21 02:20
БудДен
Макросы очередной раз почти сделаны, т.е. имеется пример, который мог бы быть реально полезным, если в нём ещё исправить какое-то количество багов... Однако всё ещё есть куча проблем.

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

Добавлено: 25.11.21 02:22
БудДен
Код почти стабилизирован после возмущений, внесённых в него макросами. В значительной степени, хотя не до конца, привёл в порядок описание языка после переименований последней пары месяцев. Заодно поправил одну ошибку в отладчике, из-за которой он падал, и сделал одно улучшение. Однако отладчик всё равно постоянно зависает и это отвратительно.

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

Добавлено: 26.11.21 23:36
БудДен
Существенно поменял отладчик, можно сказать, совершил прорыв в контролируемости того, что там происходит. Не проверял в реальном бою, но на тестовом файлике кардинальные улучшения. Теперь есть предпосылки для того, чтобы реализовать удалённую отладку. Хотя тут будет немало работы по моделированию метаданных целевой системы - ведь в настоящее время отладчик берёт модули прямо из той системы, которую мы изучаем. А если мы с Win32 будем отлаживать систему, работающую на RPi, то метаданные у этих систем будут совсем разные. Так что этот проект ещё, можно сказать, далеко впереди. Ну и соответственно нужно разделить отладчик на слои - командный интерфейс отдельно, гуй отдельно. Пока что там всё смешано.

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

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

Добавлено: 29.11.21 00:17
БудДен
Вроде сделал, чтобы в распечатке стека и в отладчике показывался "сам" объект для методов объектов. Беэ этого было изрядно неудобно.
Изменения, внесённые в компилятор, явно за пределами моего понимания. Система этим компилятором дважды пересобралась и работает, но кто знает, какие грабли ещё ждут впереди...

Отладчик проверен в бою, периодически что-то происходит нехорошее, но в целом более-менее работоспособен.

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

Добавлено: 15.12.21 02:38
БудДен
По Alt-Enter открывается "меню окна", подобно тому, как работает Alt-пробел в Windows. Дальше можно нажать 4 (на левую половину экрана), 5 (на ввесь экран) или 6 (на правую). Наверное, для полноты картины нужно все новые окна сразу ставить на левую половину экрана, а там дальше пользователь уже пусть сам размещает. И, конечно, в это меню нужно ещё несколько вариантов, но там получились ужасные повторы кода, и кроме того, меню будет слишком длинным. Не знаю, как быть пока что. Но уже большой шаг вперёд - я мечтал о возможности делать окно на полэкрана с самого начала проекта и вот наконец-то. Посмотрим, какие подводные камни всплывут...

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

Добавлено: 16.12.21 01:02
БудДен
Движемся в направлении симв32

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

Добавлено: 18.12.21 22:53
БудДен
Всё ещё недоехали. Казалось бы, успех вот он, но в самом конце, как это часто бывает, возникает последовательность ошибок всё возрастающей сложности. Надеюсь, не бесконечная. Во всяком случае, починил под это дело отладчик - он теперь работает лучше, чем когда либо, поскольку исправлена ошибка в логике работы с точками останова. Хотя падает всё равно с хорошей частотой. Также улучшена отладочная печать узлов синт.дерева. Ошибки в компиляторе постепенно правлю, хотя сейчас нашёл весьма странный кусок кода из старого (A2-шного) - теперь надо посмотреть, что он означает.

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

Добавлено: 22.12.21 01:33
БудДен
Начал внедрять симв32 в модуль Texts - уже не уверен, что стоило начинать. Нужно перешагнуть пропасть с тысячами изменений в более чем 10 модулях. Достаточно одной ошибки - и система просто не заработает. Сегодня, наверное, уже изменений 500 сделал и неизвестно сколько ещё впереди.

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

Добавлено: 27.12.21 23:27
БудДен
Сделал встроенную процедуру пПиши, которая выводит в любом месте любой указатель на запись вместе с полями. Раньше такая процедура была в модуле "к", неудобство состояло в том, что нужно было подключать/отключать этот модуль и сигнатура исследуемого модуля менялась. Теперь необходимость в подключении модуля "к" отпала.

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

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

модуль Proba;

(* Proba.Дей ~ *)
использует Strings, StringsUCS32;

тип з = окласс
	перем пп : цел32;
	вв : Strings.String кон з;

проц Дей*;
нач
	перем Строка8 := Strings.NewString("2") : Strings.String;
	Строка8 := Строка8 + 2;

	перем Строка := StringsUCS32.NewString(Лит32("2")) : StringsUCS32.String;
	Строка := Строка + 2;
	копируйСтрокуДо0(Строка^,Строка^);
	
	перем эз : з;
	
	нов(эз);
	эз.пп := 4;
	эз.вв := Strings.NewString("Куку");
	
	пПиши(эз,Строка^);
	кон Дей;
	
кон Proba.

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

Добавлено: 15.01.22 14:26
БудДен
Стоило починить парсер среды, чтобы он понимал макросы, исчез с экрана красный цвет и настроение сразу улучшилось. Возникло ощущение, что я победил макросы, хотя ещё час назад было такое полууныние. Может и красный экран со стектрейсом нужно сделать другого цвета? А то как его вижу, сразу противно. Никогда, честно сказать, не думал, что цветовая гамма на меня как-то влияет.

А может быть, дело в другом, не знаю.

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

Добавлено: 19.01.22 01:41
БудДен
Вроде доделал метапроцедуры в минимально пригодном для показа виде. Не лучший час для принятия решений, но похоже, что надо теперь попереводить, хотя бы уж до конца месяца. А то перевод совсем просел.

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

Добавлено: 23.01.22 23:44
БудДен
Начал делать команду, показывающую перевод имени, на котором стоит курсор в ИСР. Не придумал, как интегрировать - можно сделать по-разному,
а также неплохо бы к этой команде ещё прилепить показ всех (пере)определений данного метода по иерархии с возможностью перехода к любому из них (то, что раньше не знал, как сделать, вроде так получается сделать). Соответственно, самое простое здесь - это выводить в лог ядра в виде команд.

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

Добавлено: 27.01.22 00:09
БудДен
Немного попереводил.

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

Добавлено: 28.01.22 16:10
БудДен
Перевёл (не полностью) модуль Builtins - самый первый по порядку модуль.
Правда, он мало используется.

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

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

Добавлено: 31.01.22 00:54
БудДен
Начал переводить модуль Machine. Улучшил работу веб-браузера (всё ещё только http).

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

Добавлено: 03.02.22 00:28
БудДен
Кое-как доделал переводы модуля Machine/ЭВМ для версии Windows, открыл версию для BIOS32, а там, оказывается, есть ещё объём работы...

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

Добавлено: 04.02.22 20:55
БудДен
Написал письмо в МЦСТ, где предлагаю им взять меня на работу и дать мне 10 человек подчинённых. Ха-ха.
Перевод модуля ЭВМ/Machine упёрся в то, что переводчик не заходит внутрь машинного кода, соответственно, после перевода всё ломается.

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

Добавлено: 08.02.22 16:51
БудДен
С грехом на 9/10 перевёл модуль Machine - скорее можно сказать "показал присутствие", чем "перевёл". Хотя если посмотреть на использование в модуле Heaps - то вроде всё выглядит переведённым. Проблема с этим модулем была в двух вещах:

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

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

Добавлено: 08.02.22 20:56
БудДен
Реализовал "тернарное если", если3(условие, выражениеПриИстине, выражениеПриЛжи) - пока только для одного компилятора и только в англоязычной ветке.

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

Добавлено: 24.02.22 01:54
БудДен
Починил загрузку с LiveCD.

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

Добавлено: 10.03.22 22:13
БудДен
Начал переводить модуль UCS32

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

Добавлено: 12.03.22 01:00
БудДен
Продолжил.

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

Добавлено: 16.03.22 01:09
БудДен
Вроде доделал UCS2 = Ю16, начал String = Строки8.
Клонировал проект на git.org.ru и отправил последние изменения туда.

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

Добавлено: 25.03.22 01:44
БудДен
Перевёл 4 модуля, индекс кирилличности - 30.43%

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

Добавлено: 04.04.22 23:41
БудДен
Дочитал код загрузки кооп.версии и выделил все куски, написанные на ассемблере.

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

Добавлено: 06.04.22 00:10
БудДен
Продолжаю чтение загрузки Zynq. Что-то там много всего...

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

Добавлено: 11.04.22 23:57
БудДен
Похоже, что зависаем в ReadMemoryLayout, хотя казалось бы, где там зависать?
Надо сделать именованные процедуры Breakpoint1, BreakpointN и по ним размечать трассу с целью
поиска, где зависли. Ы?

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

Добавлено: 21.04.22 01:36
БудДен
По RPi ещё с тех пор продвинулся, теперь падаем на утверждении где-то в чтении памяти (уже не помню, но надеюсь, что где-то записано).

Сегодня перешёл в другую ветку и сделал, чтобы подробная печать работала на 64-разрядах, в сборках Linux64 и Win64.
См. https://tvoygit.ru/budden/ja-o-s/src/br ... ная-печать

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

Добавлено: 22.04.22 12:23
БудДен
Выложил новую сборку под Линукс.

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

Добавлено: 15.06.22 19:30
БудДен
На форуме можно подсвечивать код на языке ЯОС, с помощью кнопочке "JAOS". Вот так:

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

модуль ааа;
проц бб(); (* комментарий *)
(* вложенный
  (* комментарий *) *)
нач
  возврат 4 кон бб;

кон ааа.

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

Добавлено: 07.08.22 12:03
БудДен
Пытаюсь запустить переводчик всего под линуксом, и он спонтанно зависает. Место, где зависает, всегда одно и то же. Но плохо это всё выглядит, т.к. он зависает через значительное время.