Автор Тема: Чем Вирту WITH не угодил?  (Прочитано 85776 раз)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Чем Вирту WITH не угодил?
« Ответ #15 : Апрель 26, 2012, 12:48:12 pm »
Я не говорю, что отменяет, я говорю что хватает...
Вот только компилятор не даст так написать.  ;)

Или даст? ???
« Последнее редактирование: Апрель 26, 2012, 12:49:49 pm от ilovb »

DIzer

  • Гость
Re: Чем Вирту WITH не угодил?
« Ответ #16 : Апрель 26, 2012, 12:55:31 pm »
ну... и проку бы было намного  больше если бы была разрешена множественная охрана WITH a:Checkbox, b:Radiogroup, c:Button DO....

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Чем Вирту WITH не угодил?
« Ответ #17 : Апрель 26, 2012, 12:59:02 pm »
А смысл?

DIzer

  • Гость
Re: Чем Вирту WITH не угодил?
« Ответ #18 : Апрель 26, 2012, 01:00:18 pm »
не плодить ветки под каждое кастование...

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Чем Вирту WITH не угодил?
« Ответ #19 : Апрель 26, 2012, 01:04:04 pm »
Ааааа понял  :)
WITH a:Checkbox, b:Radiogroup, c:Button DO...
мне привиделось:
WITH a:Checkbox, a:Radiogroup, a:Button DO....  ;D

У меня внимательность сегодня хромает  ;D
« Последнее редактирование: Апрель 26, 2012, 01:05:43 pm от ilovb »

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Чем Вирту WITH не угодил?
« Ответ #20 : Апрель 26, 2012, 01:12:39 pm »
Мне нравится ваше предложение  :)

Компилятор это не усложнит, а WITH мощнее становится.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Чем Вирту WITH не угодил?
« Ответ #21 : Апрель 26, 2012, 01:17:42 pm »
http://www.inf.ethz.ch/personal/wirth/Articles/Oberon/Oberon07.pdf
Цитировать
The With statement has been eliminated.
На оберонкоровском форуме обсуждали уже -- этот оператор WITH в реализации блекбокса приводил к порче памяти из-за неправильных кастов.
Там же было упомянуто, что в обероне-07 Вирт убрал этот WITH, возможно из-за такой уязвимости...
to iterate is human, to recurse, divine

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

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Чем Вирту WITH не угодил?
« Ответ #22 : Апрель 26, 2012, 01:21:36 pm »
Т.е. его трудно правильно реализовать?

Можно ссылочку, если знаете в какой ветке это обсуждалось?

DIzer

  • Гость
Re: Чем Вирту WITH не угодил?
« Ответ #23 : Апрель 26, 2012, 01:23:11 pm »
http://www.inf.ethz.ch/personal/wirth/Articles/Oberon/Oberon07.pdf
Цитировать
The With statement has been eliminated.
На оберонкоровском форуме обсуждали уже -- этот оператор WITH в реализации блекбокса приводил к порче памяти из-за неправильных кастов.
Там же было упомянуто, что в обероне-07 Вирт убрал этот WITH, возможно из-за такой уязвимости...
Веселое дело, вы хотите сказать, что его удалили только из за того что у создателей реализации росли руки не из того места?.... еть... радует , то что они хотя бы складывать умеют а то не видать юзерам операции сложения.... а коровцы нашли бы и под это логичное объяснение...

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Чем Вирту WITH не угодил?
« Ответ #24 : Апрель 26, 2012, 01:25:07 pm »
В ЧЯ и FOR неправильно реализован на сколько я помню  :)

Значит его тоже в мусорку  ;)

DIzer

  • Гость
Re: Чем Вирту WITH не угодил?
« Ответ #25 : Апрель 26, 2012, 03:11:11 pm »
Веселое дело, вы хотите сказать, что его удалили только из за того что у создателей реализации росли руки не из того места?.... еть... радует , то что они хотя бы складывать умеют а то не видать юзерам операции сложения.... а коровцы нашли бы и под это логичное объяснение...
например.. на .... складывать если этого даже Вирт не умеет...

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Чем Вирту WITH не угодил?
« Ответ #26 : Апрель 26, 2012, 05:07:11 pm »
В Обероне 07 так будет:
CopyOver(F, M(Oberon.CopyOverMsg).text, M(Oberon.CopyOverMsg).beg, M(Oberon.CopyOverMsg).end)
Можно такM1 := M(Oberon.CopyOverMsg);
CopyOver(F, M1.text, M1.beg, M1.end)

Губанов Сергей Юрьевич

  • Hero Member
  • *****
  • Сообщений: 590
    • Просмотр профиля
    • Домашняя страница
Re: Чем Вирту WITH не угодил?
« Ответ #27 : Апрель 26, 2012, 08:34:14 pm »
На Оберонкоре Трурль показывал как с помощью WITH завалить Блэкбокс. Деталей уже не помню, но общий смысл в следующем. Компилятор думает, что внутри блока WITH после кастинга динамический тип переменной на которую ссылается закастованная ссылка на протяжении всего блока уже не изменяется. Но это не всегда так. Дело в том, что той переменной, на которую мы получили ссылку теперь можно присвоить другое значение (например, с помощью другого указателя) с другим динамическим типом. Так получается, что WITH - это дыра в системе защиты типов.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Чем Вирту WITH не угодил?
« Ответ #28 : Апрель 26, 2012, 08:39:05 pm »
На Оберонкоре Трурль показывал как с помощью WITH завалить Блэкбокс. Деталей уже не помню, но общий смысл в следующем. Компилятор думает, что внутри блока WITH после кастинга динамический тип переменной на которую ссылается закастованная ссылка на протяжении всего блока уже не изменяется. Но это не всегда так. Дело в том, что той переменной, на которую мы получили ссылку теперь можно присвоить другое значение (например, с помощью другого указателя) с другим динамическим типом. Так получается, что WITH - это дыра в системе защиты типов.
Но, по моему, тот же финт ушами в GPCP не прокатывает и ничего там завалить не выйдет.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

DIzer

  • Гость
Re: Чем Вирту WITH не угодил?
« Ответ #29 : Апрель 26, 2012, 08:42:05 pm »
значит это хреновая охрана (реализация)... проблема  реализации... видать разума на который надеялся Вирт, писавший 16 страничное сообщение об языке, не хватает у его учеников для нормальной реализации...