OberonCore
https://forum.oberoncore.ru/

Юникодные идентификаторы
https://forum.oberoncore.ru/viewtopic.php?f=3&t=5814
Страница 1 из 2

Автор:  Иван Денисов [ Четверг, 21 Июль, 2016 10:26 ]
Заголовок сообщения:  Юникодные идентификаторы

Обращаю внимание на свежую сборку Блэкбокса, в которой были исправлены пара огрех, проявляющихся при работе с юникодными идентификаторами.
http://blackboxframework.org/unstable/m ... c1.581.zip
http://blackboxframework.org/unstable/m ... -setup.exe

Хотя юникодные названия констант, переменных, модулей и процедур поддерживались давно, переход на процедуры из контекстного меню происходил некорректно. Этот досадный недочет теперь исправлен.

Поддержка юникодных обозначений позволяет программировать на кириллице как в школьной сборке 1.5.

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

Небольшой пример ниже.
Код:
MODULE ПередачаПример;
   
   IMPORT Log, Dialog, StdCmds, ПередачаПоследовательная;
   
   VAR
      соединение: ПередачаПоследовательная.Соединение;
      списокПортов*: Dialog.List;
   
   PROCEDURE ПробныйСтарт*(порт, скорость: INTEGER);
   BEGIN
      ПередачаПоследовательная.отладка := TRUE;
      NEW(соединение);
      соединение.Связаться(порт, скорость)
   END ПробныйСтарт;
   
   PROCEDURE Отправить*;
   BEGIN
      IF соединение.ПроверитьПорт("ECHOWHO ") THEN
         Log.String("Отправка прошла"); Log.Ln
      ELSE
         Log.String("Порт не годится"); Log.Ln
      END;
   END Отправить;
   
   PROCEDURE Отключить*;
   BEGIN
      соединение.Отключить
   END Отключить;
   
   PROCEDURE ВыбратьПорт*;
   BEGIN
      ПередачаПоследовательная.СписокПортов(списокПортов);
      Dialog.UpdateList(списокПортов);
      StdCmds.OpenToolDialog("Передача/Rsrc/ВыборПорта", "Выбор порта")
   END ВыбратьПорт;
   
END ПередачаПример.

Автор:  kemiisto [ Четверг, 21 Июль, 2016 11:40 ]
Заголовок сообщения:  Re: Юникодные идентификаторы

Это хорошо, что "пилите" юникодизацию.

Иван Денисов писал(а):
дополнительный уровень абстракции, отделяя вызовы ваших модулей в коде от вызовов модулей каркаса

Хм... А смысл какой в таком отделении?

Автор:  adva [ Четверг, 21 Июль, 2016 12:04 ]
Заголовок сообщения:  Re: Юникодные идентификаторы

Иван Денисов писал(а):
Небольшой пример ниже.

Вот в 1с сильно напрягает переключение клавы (особенно где одно слово можно так написать), уж или все на англицком или на русском.

Автор:  prospero78 [ Четверг, 21 Июль, 2016 12:58 ]
Заголовок сообщения:  Re: Юникодные идентификаторы

Иван Денисов" писал(а):
Обращаю внимание на свежую сборку Блэкбокса,

Ваня! Моя подстанция стоит на ул. Ивана Денисова! Чуешь чем пахнет?)))
Качаю, и начинаю переделывать))

kemiisto писал(а):
Хм... А смысл какой в таком отделении?

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

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

Так что, Ваня, радуй чаще такими новостями. Тут один товарищ (не будем поминать всуе :D ) говорил о фрагментации оберонов, на самом деле, имхо, это и не очень-то проблема.
А вот глубокая адаптация, локализация, позволяющие сохранить семантику и неразрывность с главным направлением -- вот это действительно важная задача.
И не надо бояться опять уйти в "автономку" из-за русского языка. В конце-концов: чем английский лучше русского? У нас есть и мировые философы, и великие литераторы, и учёные имеющие авторитет во всём мире. Не думаю, что сначала они свои труды писали на английском. Что за ложный стыд? Хочется напомнить, всё тот же "Буран". Взлетел, вышел на орбиту, сел. Всё это в отечестве родном, не где-нибудь. Много там инженеров знало английский, немецкий, французский?

Да, переключать клавиатуру -- это напряг. Но всё же -- эта сборка БОЛЬШОЙ шаг вперёд!
И кстати, гоуланг сейчас практически лишился своей одной приятной фишки)))
Сейчас специально проверил в питоне -- точняк. Так такого нет изначально)

Автор:  prospero78 [ Четверг, 21 Июль, 2016 15:38 ]
Заголовок сообщения:  Re: Юникодные идентификаторы

Скачал. От счастья сижу переименовываю подсистемы и файлы своей программульки на русский язык.
Первые ожидаемые последствия: сразу встал вопрос, а как адекватно назвать по русски модуль Global?)))
Вот ведь та ещё задача))) Бедные переводчики))
Есть модуль с типовым безразмерным напряжением на чтение. Называется TpiUr. Прямая калька на русский -- ТпиUч просто ужасна. Поэтому прямая транслитерация тут явно не катит.
Пришлось остановиться на варианте ТпиНапр_чт. Просто мозг _ПО_ДРУГОМУ_ воспринимает такую конструкцию!!!

Автор:  adva [ Четверг, 21 Июль, 2016 15:41 ]
Заголовок сообщения:  Re: Юникодные идентификаторы

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

Ну так и я говорю, что "Даёшь операторы на русском" ), чтобы не переключать клаву (а то и в голове контексты какие)

Автор:  prospero78 [ Четверг, 21 Июль, 2016 16:04 ]
Заголовок сообщения:  Re: Юникодные идентификаторы

В качестве мелкого приятного бонуса: в этой сборке ВИЖУ как правильно отображаются True Type шрифты.
Уря! Вместо надоевшего Arail настроил Consolas. Моноширинный, различает "О" и "0", ровные строки :D
Это прогресс, коллеги!

Автор:  Artyemov [ Четверг, 21 Июль, 2016 16:46 ]
Заголовок сообщения:  Re: Юникодные идентификаторы

"Хочется напомнить, всё тот же "Буран". Взлетел, вышел на орбиту, сел. Всё это в отечестве родном, не где-нибудь. Много там инженеров знало английский, немецкий, французский?"

Вы представить себе не можете сколько (;. Упреждая ответ - существенно больше.

Автор:  prospero78 [ Четверг, 21 Июль, 2016 17:46 ]
Заголовок сообщения:  Re: Юникодные идентификаторы

Artyemov писал(а):
"Хочется напомнить, всё тот же "Буран". Взлетел, вышел на орбиту, сел. Всё это в отечестве родном, не где-нибудь. Много там инженеров знало английский, немецкий, французский?"

Вы представить себе не можете сколько (;. Упреждая ответ - существенно больше.

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

З.Ы. У меня куча модулей с названием на подобии GuiWin101. Долго думал как назвать подсистему, так как прямая калька Гуя (Гуи) как-то убога. И ничего более разумного, как "Гип" не придумал. А зачем изобретать велосипед?? Вот таким образом можно легко уйти от избыточных заимствований))

З.Ы.2 Рабочее время закончилось, сижу на работе. Меня просто прёт)))) Комментарий в начале каждого модуля теперь просто лишний.

Автор:  Artyemov [ Пятница, 22 Июль, 2016 10:59 ]
Заголовок сообщения:  Re: Юникодные идентификаторы

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

А нет никаких "…избыточных заимствований…"
"Гип" - да, неадекватное, впрочем, как и "Gui", сокращение, а вот "ГИП" ("GUI") то, что надо.
Разницу чуете: "Гип" - имя собственное, с большой буквы; "ГИП" (или "Г_И_П") - аббревиатура.

Автор:  prospero78 [ Пятница, 22 Июль, 2016 11:10 ]
Заголовок сообщения:  Re: Юникодные идентификаторы

Я прекрасно понимаю, что правильно "ГИП".
Но вы попробуйте в БлэкБоксе в подсистеме "ГИП" положить модуль "Окно405". ;)
Вот поэтому приходится идти на компромисс в виде "Гип".

Написание в форме "Г_И_П" всё также проблему не решит.

Оффтоп. Сейчас переписываю типизированные физические измерения с русским языком и вижу, безобидный, но косяк: в методе типизированного измерения "Обновить" есть лишний супервызов метода-предка. Лишний потому, что в телеизмерении и так обновляется локальная копия значения телеизмерения. Попросту говоря, удаляю лишнее телодвижение))

Автор:  Artyemov [ Пятница, 22 Июль, 2016 11:26 ]
Заголовок сообщения:  Re: Юникодные идентификаторы

"…модуль "Окно405"…"
Буду откровенным - так себе названьице, из разряда:
"- Бортмеханник, приборы?!
- Восемь!!!
- Что восемь?
- А что приборы?"

Автор:  prospero78 [ Пятница, 22 Июль, 2016 11:38 ]
Заголовок сообщения:  Re: Юникодные идентификаторы

Отличное название! Предложите лучше ;)

Автор:  Artyemov [ Пятница, 22 Июль, 2016 11:53 ]
Заголовок сообщения:  Re: Юникодные идентификаторы

405 - это что? Следовательно, пусть "Окно_того_что_означает_405" - ну это прям вот с колёс. А может и не "окно".

Автор:  prospero78 [ Пятница, 22 Июль, 2016 11:54 ]
Заголовок сообщения:  Re: Юникодные идентификаторы

Artyemov писал(а):
405 - это что? Следовательно, пусть "Окно_того_что_означает_405" - ну это прям вот с колёс. А может и не "окно".

Это номер окна))) Очевидно же. "Окно № 405".

Автор:  Artyemov [ Пятница, 22 Июль, 2016 11:58 ]
Заголовок сообщения:  Re: Юникодные идентификаторы

Вот ни разу не очевидно (;
И что, перед ним было 404 (окна)? т.е. модуля?

Upd: не, конечно можно допустить, что (по аналогии с офисными зданиями 5-й оф. на 4-ом этаже) 5е окно в 4й подсистеме (:

Автор:  prospero78 [ Пятница, 22 Июль, 2016 12:39 ]
Заголовок сообщения:  Re: Юникодные идентификаторы

Вот видите))
Вы ПРАВИЛЬНО ПРЕДПОЛОЖИЛИ!!! ))) Это действительно сборочная панель устройств на 4 секции шин № 5. Или ,в соответствии с диспетчерским наименованием -- № 405.
Вполне логичное название.

Наблюдашка: в ходе переписывания столкнулся с изменённой семантикой IN параметров. Приходится заменять на VAR. В-принципе, ничего страшного, кроме того, что совместимость обратная поломатая. Смысл в IN теперь остаётся только для полей типа, которые объявлены на чтение/запись. Методы объекта вызывать нельзя.

З.Ы. Ваня!!! Не работает контекстный просмотр интерфейса модуля!! Это трабла!!

Автор:  Иван Денисов [ Пятница, 22 Июль, 2016 13:09 ]
Заголовок сообщения:  Re: Юникодные идентификаторы

prospero78 писал(а):
З.Ы. Ваня!!! Не работает контекстный просмотр интерфейса модуля!! Это трабла!!

Буду проверять. Рад, что ты подключился к тестированию RC версии.

Автор:  Artyemov [ Пятница, 22 Июль, 2016 13:42 ]
Заголовок сообщения:  Re: Юникодные идентификаторы

"Окно № 405" и "сборочная панель устройств на 4 секции шин № 5. Или ,в соответствии с диспетчерским наименованием -- № 405." синонимы-ы-ы-ы-ы (;

Автор:  prospero78 [ Пятница, 22 Июль, 2016 14:26 ]
Заголовок сообщения:  Re: Юникодные идентификаторы

Artyemov писал(а):
"Окно № 405" и "сборочная панель устройств на 4 секции шин № 5. Или ,в соответствии с диспетчерским наименованием -- № 405." синонимы-ы-ы-ы-ы (;

Да. Потому что на сборочную панель выходят органы управления яч. 10 кВ 405, линейный блок релейно-защитной аппаратуры, а в окне ещё отображается информация по отходящей кабельной линии яч. 405 из подсистемы коммерческого учёта электроэнергии. Это уже явно не сборочная панель. Самое простое и доступное слово для обозначения этого зоопарка -- "Окно". И номер 405, по номеру отходящей кабельной линии. Что не так-то? Это явно лучше ломано-сокращённого енглишь-эрзаца GuiWin405. Или что лучше: "CtrB405" или "УпрЯч405"? "Box" и "ячейка" явно разные по смыслу. А использовать слово "cell" не стал, так как кроме как ассоциации "power cell" и "table cell" лично у меня ассоциации не возникает. Около пяти названий есть (например, ШР -- шинный разъединитель), которые адекватно ооочень сложно написать по английски. "ГипОкно405" -- это цветочки. Понятные цветочки.

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/