Автор Тема: [Oberon rev 2013] operator =,<,>,<=,>=  (Прочитано 10160 раз)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
[Oberon rev 2013] operator =,<,>,<=,>=
« : Ноябрь 07, 2013, 09:25:31 pm »
Согласно 8.2.4:
Цитировать
Relations are Boolean. The ordering relations <, <=, >, >= apply to the numeric types, CHAR, and character arrays

Нигде не сказано что означают эти операторы для char arrays (скажем вот у нас два этих char array'я, оба разной длины, но в них содержится до терминирующего нуля одни и те же буковки - что должно выдать сравнение?).

Также я нигде не нашел что для relations оба операнда должны быть одного типа.

В общем, ткните меня плиз носом в пункт репорта, где запрещено следующее:
myBoolVar := 3.1415 >= "hello world";
Y = λf.(λx.f (x x)) (λx.f (x x))

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: [Oberon rev 2013] operator =,<,>,<=,>=
« Ответ #1 : Ноябрь 08, 2013, 03:05:04 am »
Запрещены здравым смыслом, - в Оберонах не допускаются операции над операндами разных типов, за исключением явно описанных случаев приведения типа. Очевидно, что использование в логическом выражении операндов разных типов также подпадает под это правило.

kkkk

  • Full Member
  • ***
  • Сообщений: 135
    • Просмотр профиля
Re: [Oberon rev 2013] operator =,<,>,<=,>=
« Ответ #2 : Ноябрь 08, 2013, 07:53:09 am »
скажем вот у нас два этих char array'я, оба разной длины, но в них содержится до терминирующего нуля одни и те же буковки - что должно выдать сравнение?).
С учётом того, что строки заканчиваются именно нулём - минимальным значением, ответ вполне закономерен и однозначен

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: [Oberon rev 2013] operator =,<,>,<=,>=
« Ответ #3 : Ноябрь 08, 2013, 09:44:19 am »
Запрещены здравым смыслом, - в Оберонах не допускаются операции над операндами разных типов, за исключением явно описанных случаев приведения типа. Очевидно, что использование в логическом выражении операндов разных типов также подпадает под это правило.
На самом деле это не так. Однотипность операндов явно прописана только для арифметических операторов. (а вот в Oberon rev 1990 и этого не было, там были другие условия).
Y = λf.(λx.f (x x)) (λx.f (x x))

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: [Oberon rev 2013] operator =,<,>,<=,>=
« Ответ #4 : Ноябрь 08, 2013, 12:20:34 pm »
Я и говорю - есть здравый смысл, о котором не стоит забывать, следую букве сообщения о языке.
Но я теперь понимаю, почему импортные инструкции к разным бытовым девайсам такие тупые, словно пишутся для идиотов, повторы одного и того же под разным соусом в разных абзацах, разжевано до состояния слизи, и эта слизь размазана по всем страницам.
Ты же не хочешь, чтобы Вирт писал подобным стилем )). Не для домохозяек же пишет

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: [Oberon rev 2013] operator =,<,>,<=,>=
« Ответ #5 : Ноябрь 08, 2013, 12:26:27 pm »
Я и говорю - есть здравый смысл, о котором не стоит забывать, следую букве сообщения о языке.
Но я теперь понимаю, почему импортные инструкции к разным бытовым девайсам такие тупые, словно пишутся для идиотов, повторы одного и того же под разным соусом в разных абзацах, разжевано до состояния слизи, и эта слизь размазана по всем страницам.
Ты же не хочешь, чтобы Вирт писал подобным стилем )). Не для домохозяек же пишет
Все описания языков, их стандарты, пишутся максимально формально и подробно. Не оставляя лазеек для неверного понимания, и уж точно не рассчитывая на "здравый смысл", ибо у каждого он свой и зависит от того чем человек занимался, на каких языках писал и к чему привык.

Ну, скажем выражение 3.1415 < "Hello world" не вызовет и тени сомнения у тех кто пишет на js например. С их точки зрения тут все отлично, правильно и корректно. И ясно как реализовывать. А с точки зрения какого-нибудь паскалиста - это полная ересь. А с точки зрения хаскелиста полной ересью является невозможность определить самостоятельно смысл оператора < для данной ситуации, а также невозможность определения собственных инфиксных операторов :-)

Так что я хочу максимально полное и формальное описание языка. Чтобы у реализаторов не возникало разночтений, и реализации были таки совместимы друг с другом, а не как сейчас.
Y = λf.(λx.f (x x)) (λx.f (x x))

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: [Oberon rev 2013] operator =,<,>,<=,>=
« Ответ #6 : Ноябрь 08, 2013, 12:47:53 pm »
Мне кажется, что когда говорят от здравом смысле, всегда подразумевают некий конкретный контекст. Таким образом, говорить о здравом смысле и Обероне в контексте Хаскеля или жабаскрипта не имеет смысла.
Вирт создал целое направление в ЯП и компиляторостроении, и у тех, кто в этот контекст погружен и уверенно плавает, не возникает разночтений или недопониманий. Другое дело, что мы в этом контексте мало ориентируемся, мы чужие на этом празднике жизни, и тащим туда свои шары, бантЫ и клоунские колпаки, которые не всегда вписываются в окружающую обстановку, а потом удивляемся ...

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: [Oberon rev 2013] operator =,<,>,<=,>=
« Ответ #7 : Ноябрь 08, 2013, 12:59:28 pm »
Я и говорю - есть здравый смысл, о котором не стоит забывать, следую букве сообщения о языке.

Цитата: Альберт Эйнштейн
Здравый смысл — это собрание предрассудков, приобретенных до восемнадцатилетнего возраста.
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: [Oberon rev 2013] operator =,<,>,<=,>=
« Ответ #8 : Ноябрь 08, 2013, 01:02:28 pm »
Мне кажется, что когда говорят от здравом смысле, всегда подразумевают некий конкретный контекст. Таким образом, говорить о здравом смысле и Обероне в контексте Хаскеля или жабаскрипта не имеет смысла.
Вирт создал целое направление в ЯП и компиляторостроении, и у тех, кто в этот контекст погружен и уверенно плавает, не возникает разночтений или недопониманий. Другое дело, что мы в этом контексте мало ориентируемся, мы чужие на этом празднике жизни, и тащим туда свои шары, бантЫ и клоунские колпаки, которые не всегда вписываются в окружающую обстановку, а потом удивляемся ...
Тогда открывается широкое поле для последующих сокращений репорта языка - ведь все и так знают, и все в теме, в контексте. Так что следующий репорт может быть просто диффом для этого контекста :-) Думаю реально уложиться в одну страничку.
Y = λf.(λx.f (x x)) (λx.f (x x))

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: [Oberon rev 2013] operator =,<,>,<=,>=
« Ответ #9 : Ноябрь 08, 2013, 01:19:04 pm »
Тогда открывается широкое поле для последующих сокращений репорта языка - ведь все и так знают, и все в теме, в контексте. Так что следующий репорт может быть просто диффом для этого контекста :-) Думаю реально уложиться в одну страничку.
Oberon-SA уместился в 7 страниц.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: [Oberon rev 2013] operator =,<,>,<=,>=
« Ответ #10 : Ноябрь 08, 2013, 01:27:43 pm »
Тогда открывается широкое поле для последующих сокращений репорта языка - ведь все и так знают, и все в теме, в контексте. Так что следующий репорт может быть просто диффом для этого контекста :-) Думаю реально уложиться в одну страничку.
Oberon-SA уместился в 7 страниц.
При этом Oberon rev 2007 можно было бы уместить в пару страниц :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: [Oberon rev 2013] operator =,<,>,<=,>=
« Ответ #11 : Ноябрь 08, 2013, 02:48:06 pm »
Я и говорю - есть здравый смысл, о котором не стоит забывать, следую букве сообщения о языке.

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

Т.е., я не предлагаю оформить репорт так, что даже программист, который ничего, кроме жабаскрипта не видел, все поймет. Но замыкаться на обероне самом, игнорируя "здравый смысл" по больнице в целом - тоже неправильно.

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: [Oberon rev 2013] operator =,<,>,<=,>=
« Ответ #12 : Ноябрь 08, 2013, 02:54:37 pm »
Я и говорю - есть здравый смысл, о котором не стоит забывать, следую букве сообщения о языке.

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

Т.е., я не предлагаю оформить репорт так, что даже программист, который ничего, кроме жабаскрипта не видел, все поймет. Но замыкаться на обероне самом, игнорируя "здравый смысл" по больнице в целом - тоже неправильно.
Я никогда не встречал людей, которые изучают язык программирования по РБНФ и Сообщению о языке.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: [Oberon rev 2013] operator =,<,>,<=,>=
« Ответ #13 : Ноябрь 08, 2013, 03:01:03 pm »
Я никогда не встречал людей, которые изучают язык программирования по РБНФ и Сообщению о языке.

Это как раз типично для людей, которые изучают далеко не первый язык. Ты же не ожидаешь, что они буду читать Виртовские учебники для школьников/студентов и разбирать подробно примеры?

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: [Oberon rev 2013] operator =,<,>,<=,>=
« Ответ #14 : Ноябрь 08, 2013, 03:06:04 pm »
Я никогда не встречал людей, которые изучают язык программирования по РБНФ и Сообщению о языке.
Я изучал и CP и Lua по репортам :-)