Автор Тема: Oberon-07/2012  (Прочитано 21859 раз)

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Oberon-07/2012
« Ответ #15 : Август 15, 2012, 08:23:12 pm »
Я вот не знаю даже что хуже - Latin-1 в "стандарте" или же отсутствие стандарта вообще.

Все просто :) Unicode - слишком сложно. Latin-1 - настолько древнее и отстойное, что упоминать стыдно. Поэтому Вирт просто умолчал неудобный момент.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Oberon-07/2012
« Ответ #16 : Август 15, 2012, 08:40:23 pm »
Я вот не знаю даже что хуже - Latin-1 в "стандарте" или же отсутствие стандарта вообще.

Все просто :) Unicode - слишком сложно. Latin-1 - настолько древнее и отстойное, что упоминать стыдно. Поэтому Вирт просто умолчал неудобный момент.
Дык! Давеча вот думал а не прикрутить ли к лексеру utf8, и таки решил забить, ибо сложно и не читабельно получалось (если делать декларативно). Но потом, видимо, придется все же прикрутить, ибо язык без поддержки utf8 в строковых литералах это нонсенс в современном мире.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Oberon-07/2012
« Ответ #17 : Август 16, 2012, 09:49:10 am »
valexey занялся написанием компилятора?

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Oberon-07/2012
« Ответ #18 : Август 16, 2012, 10:26:28 am »
valexey занялся написанием компилятора?
Да так.. Ковыряю зачем-то на досуге.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: Oberon-07/2012
« Ответ #19 : Август 16, 2012, 08:28:17 pm »
Занимался тут немного лексерами, заметил, что:

В Oberon report от 1990 года про charset (ака кодировка) сказано следующее:
Цитировать
The representation of symbols in terms of characters is defined using the ASCII set
То есть все в ASCII.

В Oberon report от 2008 года (то есть это уже 07) сказано следующее:
Цитировать
The representation of symbols in terms of characters is defined using the Latin-1 set.
То есть уже все в Latin-1.

А в Oberon report от 2011 и 2012 упоминания о charset уже нет вовсе - лепи что хочешь и на совместимость плевать :-)

Я вот не знаю даже что хуже - Latin-1 в "стандарте" или же отсутствие стандарта вообще.
А зачем ограничивать реализацию конкретными кодировками? Я думаю, что Вирт посчитал, что внутреннее представление символа не должно иметь значение для компилятора.
В зависимости от возможностей среды исполнения можно получить различные компиляторы, причем с точки зрения языка ничего не изменится.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Oberon-07/2012
« Ответ #20 : Август 16, 2012, 08:36:31 pm »
А зачем ограничивать реализацию конкретными кодировками? Я думаю, что Вирт посчитал, что внутреннее представление символа не должно иметь значение для компилятора.
В зависимости от возможностей среды исполнения можно получить различные компиляторы, причем с точки зрения языка ничего не изменится.
Как минимум чтобы реализации были совместимы. Чтобы исходники писаные для одной реализации можно было собрать другой реализацией. А про внутреннее представление символа(внутри компилятора/лексера) речи тут не идет вообще.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: Oberon-07/2012
« Ответ #21 : Август 17, 2012, 08:32:29 am »
Возможно, Вирт сосредоточился на компиляторах и оставил среду исполнения на второй план. Для нее требуется составлять отдельный список требований, включая совместимость с кодировками. Этого трудно достичь из-за больших различий сред, поэтому Вирт мог предпочесть не влезать в дебри.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Oberon-07/2012
« Ответ #22 : Август 17, 2012, 09:28:36 am »
Возможно, Вирт сосредоточился на компиляторах и оставил среду исполнения на второй план. Для нее требуется составлять отдельный список требований, включая совместимость с кодировками. Этого трудно достичь из-за больших различий сред, поэтому Вирт мог предпочесть не влезать в дебри.
Эмм... А среда исполнения тут вообще не при чем. Смотри:
MODULE Test;
    IMPORT Out;

BEGIN
    Out.WriteLn("Hello, 世界, Привет!")
END Test.
А теперь представим себе что у нас есть единая среда исполнения и два компилятора с единым парсером но разными лексерами. Один лексер ожидает множество символов Latin-1, а другой лексер ожидает UTF-8. И мы им скармливаем этот пример. Как думаешь, что будет? :-)

Мало того, что Latin-1 лексер не осилит эту программу as is, мы её даже не сможем автоматически сконвертировать в вид приемлемый для него (без потерь информации и без знания деталей реализации рантайма). А ведь это часть семантики.

Ну, а про то, что кроме строковых литералов существуют еще и, например, идентификаторы, я вообще молчу.

Вирт мог бы написать, что используемое множество символов (charset) - unicode. Без уточнения конкретной кодировки (utf-8, utf-16, utf-32, ucs-2 и так далее). Вот тогда было бы полное (в данном месте) определение семантики без уточнения конкретной реализации, и это позволило бы писать совместимые компиляторы (то есть код для одного компилятора после простейшей автоматической обработки/конвертации (банальное преобразование скажем из utf-32 -> utf-8) будет собираться другим компилятором). Кроме того была бы достигнута совместимость снизу вверх.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: Oberon-07/2012
« Ответ #23 : Август 17, 2012, 09:52:02 am »
Возможно, он это неявно и предполагал. Исходи из предположения уникода и не просчитаешься.

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Oberon-07/2012
« Ответ #24 : Август 17, 2012, 11:17:41 am »
идентификаторы в utf-8 это такая ж...

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Oberon-07/2012
« Ответ #25 : Август 17, 2012, 11:21:33 am »
идентификаторы в utf-8 это такая ж...
Тебя смущают идентификаторы не на латинице, или же именно юникод?

PS. И да, я хочу использовать юникод только в строковых литералах и комментариях.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Oberon-07/2012
« Ответ #26 : Август 17, 2012, 11:27:19 am »
идентификаторы в utf-8 это такая ж...
Тебя смущают идентификаторы не на латинице, или же именно юникод?
меня напрягает именно utf-8
а, к примеру, русские идентификаторы меня более чем устраивают, как и ключевые слова. С русскими идентификаторами программа практически самодокументируется.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Oberon-07/2012
« Ответ #27 : Август 17, 2012, 11:36:08 am »
идентификаторы в utf-8 это такая ж...
Тебя смущают идентификаторы не на латинице, или же именно юникод?
меня напрягает именно utf-8
Почему?

а, к примеру, русские идентификаторы меня более чем устраивают, как и ключевые слова. С русскими идентификаторами программа практически самодокументируется.
А, к примеру китайские или там туркменские? Я предпочитаю чтобы я мог разобраться в чужой программе/модуле/либе. Ибо с подобными проблемами (правда пока лишь на уровне комментов) уже сталкивался.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Oberon-07/2012
« Ответ #28 : Август 17, 2012, 12:00:56 pm »
Почему?
усложняют разбор, сравнение строк... и подобное
утф для транспорта хорош, ибо компактен, а для работы как-то не очень. по крайней мере для меня.
А, к примеру китайские или там туркменские? Я предпочитаю чтобы я мог разобраться в чужой программе/модуле/либе. Ибо с подобными проблемами (правда пока лишь на уровне комментов) уже сталкивался.
Давай не будем смешивать. Если код предназначен для определенной языковой группы, то там он и должен крутиться, а для глобального применения используются соответствующие, пусть негласные, стандарты.
Можно так же пытаться разобраться в коде, где идентификаторы заданы как lro, rro, ivlevn, baskor - это реальные имена из реального модуля, никакого китайского, и даже русского, всё как ты и хотел, но стало ли от этого понятнее?

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Oberon-07/2012
« Ответ #29 : Август 17, 2012, 12:08:20 pm »
Почему?
усложняют разбор, сравнение строк... и подобное
утф для транспорта хорош, ибо компактен, а для работы как-то не очень. по крайней мере для меня.
Так он и тут для транспорта только и используется :-) То есть это чисто проблемы лексера. Внутреннее представление в бинаре (это ведь строковый литерал) будет какое-нибудь UTF-32 (aka ucs-4).
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"