OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Среда, 25 Апрель, 2018 11:57

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 45 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Нужна ли русификация?
СообщениеДобавлено: Понедельник, 26 Декабрь, 2005 18:06 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1076
Надо ли нам создавать свой вариант языка?

Цитата:
3. Vocabulary and Representation
The representation of (terminal) symbols in terms of characters is defined using ISO 8859-1, i.e., the Latin 1 extension of the ASCII character set.

То есть, использование русских символов в идентификаторах запрещено описанием языка.
Цитата:
6.1 Basic Types
2. SHORTCHAR the characters of the Latin 1 character set (0X .. 0FFX)
3. CHAR the characters of the Unicode character set (0X .. 0FFFFX)

Types 2 and 3 are character types with the type hierarchy:
CHAR >= SHORTCHAR


То есть, использование русских символов в (ARRAY OF) SHORTCHAR также запрещено. Для этого предусмотрен тип CHAR.
Стоит отметить, что это ограничение на самом деле сильнее, чем первое (хотя может показаться наоборот). В то же время, имеющаяся русификация BlackBox нарушает это правило.
Более того, она фактически поощряет и даже вынуждает дальнейшие нарушения. А это усиливает путаницу, которой и так хватает.

С другой стороны, использование BlackBox в неизменном виде за пределами Западной Европы и Америки практически невозможно.

Мне видится два варианта "наведения порядка":
1. Максимально ограничить ненадлежащее использование "коротких символов" и приложить усилия к тому, чтобы все символьные данные хранились в юникоде.
2. Зафиксировать и упорядочить использование различных кодировок и соответственно приложить усилия к тому, чтобы все преобразования проводились корректно.
Насколько я понимаю, ОМ планирует двигаться по первому пути.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 26 Декабрь, 2005 22:26 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8945
Откуда: Россия, Орёл
Самое разумное, действительно, использовать где только возможно CHAR.

Что касается русских идентификаторов, то в общих кодах, претендующих на открытое распространение и переносимость, их быть, я думаю, не должно.
Но в принципе сейчас любой нормальный компилятор должен держать Unicode. Это ему (компилятору) только лишний плюс.

ОМ уже от их поддержки никуда не денется, так как сама их ввела (по просьбе info21).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 27 Декабрь, 2005 10:45 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1076
Илья Ермаков писал(а):
ОМ уже от их поддержки никуда не денется, так как сама их ввела (по просьбе info21).

Да нет там никакой поддержки .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 27 Декабрь, 2005 12:40 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Самое разумное было бы попинать ОМС на предмет изменения языка в стиле:
Цитата:
3. Vocabulary and Representation
The representation of (terminal) symbols in terms of characters is defined using Unicode, i.e., UTF-16 encoded characters.


Ну и соответственно CHAR где только можно. А плодить свой вариант языка конечно нехорошо.

Ещё как вариант посмотреть на GPCP - как с символами у него. Вообще хорошо бы свести варианты BlackBox и GPCP к единому языку со всеми различиями на уровне модуля SYSTEM. Ну да это не наша забота - мы можем об этом только "активно намекать" производителям.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 27 Декабрь, 2005 17:19 

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7815
Откуда: Троицк, Москва
Ivor писал(а):
Самое разумное было бы попинать ОМС на предмет изменения языка в стиле: ... мы можем об этом только "активно намекать" производителям.


Попинаем и понамекаем. Тем более они и сами просят.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 27 Декабрь, 2005 17:31 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1076
Я попытался действовать в стиле "Unicode Everywhere". Поправил HostCFrames, HostWindows и пр. так, чтобы все преобразовывалось в юникод.
Самая большая проблема – компилятор. Без русских идентификаторов жить вполне можно, а вот без русских констант – сложнее. Возможно "из высших соображений" и полезно держать все строки в ресурсах, но очень уж напрягает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 27 Декабрь, 2005 17:34 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1076
Ivor писал(а):
3. Vocabulary and Representation
The representation of (terminal) symbols in terms of characters is defined using Unicode, i.e., UTF-16 encoded characters.


Я бы остановился перед "i.e". Указание кодировки - это уже перегиб.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 27 Декабрь, 2005 19:35 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4081
Откуда: Россия, Орёл
Цитата:
Указание кодировки - это уже перегиб.


Напомню, что Юникоды разные бывают... а ввиду ограниченности типа CHAR двумя байтами, нам подходит только вариант UCS2. Многобайтовые штуки, с переменной длинной (UTF-8), использовать мы все равно не сможем, т. к. придется перепахивать очень много всего. Да и смысла в них особого нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 28 Декабрь, 2005 00:17 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Trurl писал(а):
Я попытался действовать в стиле "Unicode Everywhere". Поправил HostCFrames, HostWindows и пр. так, чтобы все преобразовывалось в юникод.
Самая большая проблема – компилятор. Без русских идентификаторов жить вполне можно, а вот без русских констант – сложнее. Возможно "из высших соображений" и полезно держать все строки в ресурсах, но очень уж напрягает.


Я тоже так развлекался. Кроме мелких косяков (которые надо вылавливать) полностью юникодный Блэкбокс отказывается работать под 98. А компилятор, кстати, переделывать практически не надо - вот там как раз никто не мешает хранить имена в utf-8.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 28 Декабрь, 2005 09:21 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1076
Борис Рюмшин писал(а):
Напомню, что Юникоды разные бывают...

Юникод только один, иначе в нем бы просто не было смысла. А при определении языка ссылки на физическое представление исходных текстов совершенно излишни. Хотя, можно ограничить набор допустимых символов, например BMP или даже ещё уже.

Ivor писал(а):
Я тоже так развлекался. Кроме мелких косяков (которые надо вылавливать) полностью юникодный Блэкбокс отказывается работать под 98.

У меня работает под 98. Но он не полностью юникодный; я не стал переводить на вызовы юникодных функций, а просто вставил перекодировки.

Цитата:
А компилятор, кстати, переделывать практически не надо - вот там как раз никто не мешает хранить имена в utf-8.

Но ведь он игнорирует все символы выше 100X. Они даже не доходят до сканера.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 28 Декабрь, 2005 11:04 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Trurl писал(а):
Но ведь он игнорирует все символы выше 100X. Они даже не доходят до сканера.


Я же сказал "практически не надо" - как раз только сканер и поправить. И прямо в нём конвертить в utf-8 (токма в сообщениях компилятора придётся ставить обратную конвертацию, дабы кракозябров не получить)

P.S. Даже соврал - поправить придётся DevCMP.Get и DevCPS.Get


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 28 Декабрь, 2005 13:02 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1076
Ivor писал(а):
Я же сказал "практически не надо" - как раз только сканер и поправить. И прямо в нём конвертить в utf-8

Не поможет.
Допустим есть текст 'Строка', т.е. 421 442 440 43E 43A 430. Сканер конвертирует его в utf-8. Но для парсера это теперь просто строка в 8-битной кодировке D0 A1 D1 82 D1 80 D0 BE D0 BA D0 B0.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 28 Декабрь, 2005 13:09 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1076
Вот пришла мысль. А что если заставить сканер вместо "Строка" выдавать 421X+442X+440X+43EX+43AX+430X ?
Некрасиво, конечно, но должно работать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 28 Декабрь, 2005 13:34 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Trurl писал(а):
Не поможет.
Допустим есть текст 'Строка', т.е. 421 442 440 43E 43A 430. Сканер конвертирует его в utf-8. Но для парсера это теперь просто строка в 8-битной кодировке D0 A1 D1 82 D1 80 D0 BE D0 BA D0 B0.


Ну и что?
У нас всего два варианта:строка как имя и строка как константа.
Ну будет у нас переменнаая вместо "трям" называться "трС?Рј" - компилятору всё равно. Правда для корректного восприятия строковых констант всё же придётся поправлять исходники. Но не так много, как для имён.

Но в любом случае есть ещё два момента:
1. Кроме компилятора на имена типов завязаны также Kernel, Meta и вся подсистема хранения (то бишь формат файла документа). Как я уже где-то говорил, минимальными изменениями не отделаешься - юникод потянет за собой новую версию всей среды, местами плохо совместимую с оригиналом.
2. ОМС делает юникодную версию 1.6. Лучше нам не бежать впереди паровоза. Вот если то, что они сделают, нас не устроит...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 28 Декабрь, 2005 14:58 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1076
Да как раз имена меня мало интересуют.
Но вот хотелось бы, чтобы Log.String("Привет") выводило бы именно "Привет" :).

Цитата:
ОМС делает юникодную версию 1.6. Лучше нам не бежать впереди паровоза. Вот если то, что они сделают, нас не устроит...

Когда они ещё сделают... А писать надо сейчас.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 28 Декабрь, 2005 18:03 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1076
Ivor писал(а):
Правда для корректного восприятия строковых констант всё же придётся поправлять исходники. Но не так много, как для имён.

Кажется, действительно немного. Правда теперь все, что не ASCII становится юникодным, но может оно и к лучшему.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 29 Декабрь, 2005 01:33 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4081
Откуда: Россия, Орёл
Trurl писал(а):
Борис Рюмшин писал(а):
Напомню, что Юникоды разные бывают...

Юникод только один, иначе в нем бы просто не было смысла.


Естественно один (плохо выразился), но физическое представление разное. Как на него не обращать внимание, если вы оба предлагаете лезть в компилятор :) Ну скажите мне, в какой тип данных загнать UTF-8? В CHAR? :) При этом строго следуя стандарту Unicode, полустандарты не нужны.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 29 Декабрь, 2005 06:09 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Да нет, Игорь прав. Просто я выразился неточно - имелось в виду ограничение на набор символов. Что прямо ложится в диапазон CHAR


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 29 Декабрь, 2005 15:54 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1076
Строки я одолел. :)
Что касается имен, вопросы остаются. Вроде бы Latin-1 нам не нужен.
Можно сделать юникодные имена - там не так уж много работы. И совместимость с текущей версией можно соблюсти. Но вот совместимость с 1.6 ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 30 Декабрь, 2005 00:17 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
На счёт совместимости: самая главная проблема (да и единственная, кажется) - в документах имена типов хранятся как SHORTCHAR. Как это объехать?
А вообще с этим лучше в Координацию :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 45 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2018, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB