Оберон-клуб «ВЄДАsoft» https://zx.oberon.org/forum/ |
|
POW! https://zx.oberon.org/forum/viewtopic.php?f=56&t=167 |
Страница 2 из 2 |
Автор: | Last_Alien [ 21 дек 2013, 12:29 ] |
Заголовок сообщения: | Re: POW! |
В Pow! компилятор собирается из исходников без всяких проблем. Нужно думать о добавлении типа LONGCHAR в него. |
Автор: | Zorko [ 21 дек 2013, 19:42 ] |
Заголовок сообщения: | Re: POW! |
Я думал об этом. Пришёл к следующим выводам. Во 80-е всем хватало однобайтового символа и кодовых страниц. Насчёт китайских иероглифов заморачивались те, кому это было реально нужно, но и они тоже обходились. Вирту и компании, помимо ASCII, нужны были германские символы ÄäÖöÜüß, что они легко решили своей германской кодовой страницей, далее не пошли. Стандарт Оберона 1 и 2 регламентирует CHAR только печатными символами из таблицы ASCII. Задать русские символы не только в идентификатор, но даже в строку не получится (в Ofront'е это нельзя; я хотел бы сделать, но тогда надо привязываться к одной из однобайтных кодировок (1251, KOI8-R)). Но мир становился всё теснее, постепенно юникод вошёл в обиход, и теперь мы без него не мыслим работы, и наверное это правильно. Вирт вот тоже решил, что в Обероне-07 "символ" # "только латинский символ". Поэтому в стандарте О-07 нет привязки CHAR к однобайтовости.
Если соберёшься сделать третий вариант для POW!, то я планирую реализовать его же для XDev/Ofront. Получим целую линейку систем, реализующих такой подход: BlackBox, GPCP, Active Oberon, XDev/Ofront и POW! Для добавки нового типа в XDev можно начать с сопоставления исходников компилятора OPCL и BlackBox (они на одной основе — OP2). По различиям будет видно какие именно изменения для широких символов добавлены. А POW! вроде не на основе OP2. Ещё не так-то просто будет добавить поддержку юникода в IDE/редактор. P.S. Наверное могу помочь с портированием ACL или LVCL на Оберон-2. Если согласуем взгляды на разработку и стиль кодирования. Такую работу рассматриваю как полезную и довольно необъёмную. VisualOberon кажется более верным направлением, но и самым трудоёмким. |
Автор: | Last_Alien [ 23 дек 2013, 10:43 ] |
Заголовок сообщения: | Re: POW! |
Да, все верно. Получается нужно пробовать именно третий подход из тобой перечисленных. Для начала переделать в Pow char в shortchar - заодно посмотрю, как он там реализован. А потом на основе полученных знаний, реализовать 2х-байтный char. По большому счету там только операция присвоения реализуется, ну и сам тип.... |
Автор: | Zorko [ 23 дек 2013, 14:05 ] |
Заголовок сообщения: | Re: POW! |
Да, реализовать операцию COPY для двухбайтовых CHAR, перевод длинных символов/строк в короткие SHORT() и наоборот — LONG(), ну шобы всё по уму. Рад, что мы сошлись во мнениях насчёт третьего варианта. Уже фрагментации избежим. |
Автор: | Last_Alien [ 24 дек 2013, 21:54 ] |
Заголовок сообщения: | Re: POW! |
Фрагментации в реализации Оберона и без нас вроде бы вполне хватает Давно пора во многих вопросах заняться обобщением. Есть такие мысли и в отношении GUI, но пока что до их реализации - как пешком до Луны. |
Автор: | Madzi [ 17 янв 2014, 10:23 ] |
Заголовок сообщения: | Re: POW! |
в АО CHAR занимает 4 байта (32 битный UNICODE) |
Автор: | Zorko [ 06 мар 2014, 16:04 ] |
Заголовок сообщения: | Re: POW! |
Ну что ж, могу отметить, что мне не нравится разрыв между однобайтным и четырёхбайтным символьными типами. Хотя какой-то смысл в таких длинных символах наверное есть. Для китайцев. Курс по программированию на POW! Pascal of the 3d milenium (Computer programming with Oberon-2). Увы, на румынском. Но зато с картинками. |
Автор: | sage [ 20 май 2016, 02:15 ] |
Заголовок сообщения: | Re: POW! |
Кхм... Zorko писал(а): Сделать CHAR двухбайтовым, ввести SHORTCHAR = 1 байт: Плюсы: Компилятор приобретает в этом смысле совместимость не с заброшенным OO2C, а с самыми зрелыми реализациями Оберона: BlackBox, GPCP, Active Oberon. База совместима с O-07. Реверанс в сторону Вирта. LONGCHAR остаётся зарезервированным под более длинные символы (например, в 4 байта); Минусы: Модификация сложная, надо узнать как добавлять новые типы. Madzi писал(а): в АО CHAR занимает 4 байта (32 битный UNICODE) Никто в AO не делал CHAR двухбайтовым или четырёхбайтовым. CHAR там по сей день как был восьмибитным так и остался восьмибитным.Но, вся текстовая подсистема работает с 32-х битными символами, это верно. Просто в Texts.Mod находим следующие объявления: Код: "OBERON"
|
Автор: | sage [ 20 май 2016, 09:13 ] |
Заголовок сообщения: | Re: POW! |
Zorko, может твоя явная нелюбовь к AO происходит от такой явной дезинформированности? Фильтровать надо инфушку-то, а ещё славянин... Из вышесказанного мною, очевидно, что для шага в сторону совместимости с AO можно портировать на POW! текстовую подсистему из A2. Для возможности работы с UNICODE это возможно и достаточный шаг, так как текстовая подсистема - сердце всей системы A2, как во многих Oberon-системах. Ну, и 32-битность, а не 16-битность, это да, реверанс китайцам В Китае, кстати, тоже есть оберонщики. ЗЫ. Или, что вообще мешает понаделать 16-битных нужных биндингов и работать с UNICODE строками как с ARRAY OF INTEGER? Ну, понаписывать нужных библиотечных функций для работы с такой строкой... Length, Pos, и т.д. |
Автор: | sage [ 20 май 2016, 09:36 ] |
Заголовок сообщения: | Re: POW! |
Капец, смех да и только. Что-то тут обсуждали-обсуждали... Хоть кто-то смотрел вообще в исходники библиотеки POW! ??? Там и биндинги с префиксом W есть и тип WCHAR = INTEGER |
Страница 2 из 2 | Часовой пояс: UTC + 2 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |