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

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Чем Вирту WITH не угодил?
« Ответ #105 : Апрель 28, 2012, 05:34:42 pm »
Жаль только в Оберонах нельзя определять переменные по месту, с областью действия только в данном блоке. Т.е. такая конструкция будет неудобна, т.к. придется VAR засирать вспомогательными переменными

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Чем Вирту WITH не угодил?
« Ответ #106 : Апрель 28, 2012, 05:45:35 pm »
Жаль только в Оберонах нельзя определять переменные по месту, с областью действия только в данном блоке. Т.е. такая конструкция будет неудобна, т.к. придется VAR засирать вспомогательными переменными
Ну есть еще вложенные процедуры…
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Чем Вирту WITH не угодил?
« Ответ #107 : Апрель 28, 2012, 05:48:43 pm »
Только их инлайнить нет возможности ;)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Чем Вирту WITH не угодил?
« Ответ #108 : Апрель 28, 2012, 05:49:53 pm »
Только их инлайнить нет возможности ;)
В смысле? Ты про оптимизацию компиляторную, или же про что-то иное?
В плане оптимизации - можно.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Чем Вирту WITH не угодил?
« Ответ #109 : Апрель 28, 2012, 06:46:25 pm »
В том смысле, что в языке это не предусмотрено. В CP я например не могу указать, что данную процедуру нужно инлайнить.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Чем Вирту WITH не угодил?
« Ответ #110 : Апрель 28, 2012, 07:09:13 pm »
...А поскольку WITH в Обероне никоем образом не похож на CASE, то даже обработку/разбор сообщений (в Message Bus) оно совсем не облегчает...

Хочу просто уточнить:
Это про оригинальный Оберон?

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Чем Вирту WITH не угодил?
« Ответ #111 : Апрель 28, 2012, 08:22:14 pm »
...А поскольку WITH в Обероне никоем образом не похож на CASE, то даже обработку/разбор сообщений (в Message Bus) оно совсем не облегчает...

Хочу просто уточнить:
Это про оригинальный Оберон?
Да.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Чем Вирту WITH не угодил?
« Ответ #112 : Апрель 28, 2012, 08:23:28 pm »
В том смысле, что в языке это не предусмотрено. В CP я например не могу указать, что данную процедуру нужно инлайнить.
В яве этого тоже не предусматривается, да и в Go тоже. И дофига где еще. И это все не мешает компилятору процедуры/функции инлайнить :-)
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
Re: Чем Вирту WITH не угодил?
« Ответ #113 : Апрель 30, 2012, 09:11:14 pm »
В середине обсуждения замечена типичная реакция известной аудитории - с потоками... удобрений... на поля :)
С последующим признанием, что никто из них 100% никогда не вляпался бы в эту проблему...
Выявленный случайно за годы использования дефект vs. тем, что я читаю через день в окне обновлений Ubuntu с названиями "Критическое обновление безопасности...". Сегодня меня предупредили, что для моей версии (10.10) обновлений безопасности больше не будет. И где позор?

Теперь по существу вопроса. Есть два понятия в сфере критических систем - safety (безопасность) и security (защищённость). Кроме них, ещё два - работоспособность и безотказность. За подробностями - к любой классике программной инженерии, например, Соммервиллу.

Safe-система - которая при штатных условиях применения не способна причинить вред. Безопасной бритвой невозможно причинить себе существенный вред при бритье. Но вполне можно убить человека, если выломать лезвие.
Security - это устойчивость системы к преднамеренным вредоносным действиям злоумышленника.

Да, в области языков программирования есть значительная связь между безопасностью и защищённостью.
Она связана с тем, что небезопасность языка провоцирует такие ошибки в программе, которые делают возможной её уязвимость извне - передачей специально подобранных данных. Либо сетевая уязвимость, либо межпроцессная (например, возможность вредоносного воздействия на код в нулевом кольце защиты). Пресловутые атаки на переполнение буфера. С точки зрения такой уязвимости обсуждаемый вопрос проблемы не порождает.
Всего лишь есть гипотетическая вероятность написать такой код, который приведёт к отказу. Как и при неправильном использовании SYSTEM. Оценки безопасности не делаются так же, как защищённости. В защищённости логика бинарная - либо есть уязвимость, либо нет. Потому что если есть, то она будет использована. В безопасности оценка вероятностная. Если вероятность случайно вляпаться пренебрежимо мала (и, тем более, на практике никогда не встречалась), то это не является претензией к safety. И не оказывает никакого влияния на работоспособность-безотказность.

Есть другое поле для обсуждения - вопрос компонентного программирования. Здесь safety языка, начиная с работ Вирта, рассматривается как гарантия невозможности разрушительного влияния одного компонента на другой. Тут мы подходим к интересному вопросу - влияния непроизвольного (из-за ошибки) или преднамеренного? С точки зрения непроизвольных влияний всё ясно - была убедительно показана безопасность языка и её преимущества для компонентного программирования.
С точки зрения преднамеренного. На мой взгляд, преждевременно были сделаны выводы о том, что safe-язык отменяет необходимость традиционных механизмов защиты ОС. Эти заключения вывода Вирта и учеников были потом повторены компанией Sun, которая связала safety и security внутри одного пространства памяти, куда "запускается" произвольный пришедший из недоверенного источника компонент. Как известно, много лет спустя были обнаружены уязвимости в их байт-коде, точно так же, как уязвимость через наш WITH.
На самом деле, про security внутри общего пространства памяти стоит забыть. Как минимум, потому, что security включает в себя не только невозможность разрушения системы, но и невозможность несанкционированного доступа к данными. Когда у нас есть единый граф связей, и "всё всюду гуляет", придумать механизмы контроля доступа - это безумно усложнить язык и/или библиотеки и/или рантайм. Поэтому, в сравнении с традиционными механизмами межпроцессной защиты такие попытки "идут лесом".
Просто традионная ОС "Оберон" была однопользовательской локальной. Индивидуальным инструментом. Поэтому ряд вопросов был оставлен за бортом, чтобы сконцентрироваться на других.
Это оправдано и по сей день, если в систему не приходят компоненты из недоверенных источников. Например, если это встроенная система. С серверной системой всё уже не так просто, если мы хотим позволить третьим лицам исполнять на нашей стороне что-нибудь. В частности, в том числе и поэтому я посчитал нецелесообразным опираться в сетевых проектах на ОС A2. В ней нет межпроцессной защиты. Которую я имею, гоняя Блэкбоксы на Линуксе.

Я рассматривал этот вопрос ещё больше года назад в статье в "Объектных системах".
http://ermakov.net.ru/pub/EIE-21-2010.pdf
Цитировать
Однако, как всегда, имеется и оборотная сторона медали: размываются границы между зонами ответственности отдельных приложений, затрудняется выгрузка и перезапуск отдельных компонентов (из-за плотной интеграции в «паутину» указателей). Наконец, практически невозможно обеспечить контроль прав компонентов и защиту от злонамеренных действий, либо это ведёт к такому усложнению языка и объектной системы, которое выходит за всякие рамки инженерной целесообразности. Таким образом, наличие раздельных объектных пространств остаётся востребованным для современных систем, за исключением некоторых применений (например, встраиваемых, мультимедийных — как раз тех, в нишу которых направлена ОС А2).

Конечно, проще драть глотку, чем серьёзно и непредвзято разбираться в вопросе.
« Последнее редактирование: Апрель 30, 2012, 09:14:29 pm от Илья Ермаков »

alexus

  • Гость
Re: Чем Вирту WITH не угодил?
« Ответ #114 : Май 01, 2012, 07:12:48 am »
Теперь по существу вопроса. Есть два понятия в сфере критических систем - safety (безопасность) и security (защищённость). Кроме них, ещё два - работоспособность и безотказность. За подробностями - к любой классике программной инженерии, например, Соммервиллу.
Ну-ну... С точки зрения теории систем... есть понятия устойчивости и надёжности системы. Устойчивость (динамических) системы можно рассматривать в "математическом" виде (например, по Ляпунову), а можно в более широком "физическом" виде (а-ля, шарик в чаше). Если говорить о программных системах, то... ничего не меняется, устойчивая программная система должна возвращаться в исходное состояние, если любые внешние или внутренние возмущения находятся в заданных ограничениях/пределах.
Надёжность системы - это её способность выполнять заданные функции. Надёжность характеризуется целым рядом показателей: безотказность, ремонтопригодность, сохраняемость, долговечность... Приоритет тех или иных показателей зависит от многих факторов и определяется до начала проектирования системы. Надёжность системы определяется наиболее слабым её элементом. Это фактор является ключевым при проектировании систем.
Всё сказанное - "манная каша"... то, что должен знать любой человек, который хочет заниматься системами: созданием, эксплуатацией, обслуживанием. А для того, кто уже занимается системами... обсуждать это как-то... странно. Тем не менее, западная литература по программированию постоянно преподносит новые "открытия", которые потом тиражируются восторженными адептами... (Как это у классика: "Кричали женщины: "Ура". И в воздух чепчики бросали").

Safe-система - которая при штатных условиях применения не способна причинить вред. Безопасной бритвой невозможно причинить себе существенный вред при бритье. Но вполне можно убить человека, если выломать лезвие.
Кому не способна причинить вред? Себе или внешней среде?.. Что в приведённом примере рассматривается как система? Бритва или человек, который бреется?..

Security - это устойчивость системы к преднамеренным вредоносным действиям злоумышленника.
А непреднамеренным?.. Границу между "преднамеренным" и "непреднамеренным" провести можно?.. "Вредоносность" чем меряется?.. И про "злоумышленника"... тоже интересно... в контексте устойчивости систем в агрессивной среде...

Да, в области языков программирования есть значительная связь между безопасностью и защищённостью.
Она связана с тем, что небезопасность языка провоцирует такие ошибки в программе, которые делают возможной её уязвимость извне - передачей специально подобранных данных. Либо сетевая уязвимость, либо межпроцессная (например, возможность вредоносного воздействия на код в нулевом кольце защиты).
Это напоминает... "правила затачивания карандашей при проектировании космического корабля"... No comments...

Конечно, проще драть глотку, чем серьёзно и непредвзято разбираться в вопросе.
Точно помечено... Так сказать... "не бровь, а в глаз"...

PS. С праздником всех!

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Чем Вирту WITH не угодил?
« Ответ #115 : Май 01, 2012, 10:43:28 am »
В середине обсуждения замечена типичная реакция известной аудитории - с потоками... удобрений... на поля :)
С последующим признанием, что никто из них 100% никогда не вляпался бы в эту проблему...
(тут много букф)
...Конечно, проще драть глотку, чем серьёзно и непредвзято разбираться в вопросе.

А на мой взгляд получился нормальный диалог.  :)

Эмоции.... конечно они есть. Ведь порча памяти это совсем не то, что ожидаешь от Оберона в подобной ситуации.

Далее vlad'ом было указано как можно сделать WITH безопасным. А DIzer указал, что это проблема по большей части реализации, а не языка. И я указал, что семантику нужно более точно определять.

И все это было "серьёзно и непредвзято". ;)

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
Re: Чем Вирту WITH не угодил?
« Ответ #116 : Май 01, 2012, 07:31:02 pm »
Да, идею Влада про WITH я помню ещё со времён, когда он мне её писал. Хорошая идея, на мой взгляд.

Alexus, как часто у него бывает, поднялся в заоблачные выси и замутил предельно простую суть, что устойчивость к преднамеренной атаке и устойчивость к случайным ошибкам - принципиально разные вещи. В отсутствие злоумышленника, например, дверь не нуждается в замке - и может быть совершенно надёжным устройством в его отсутствие.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Чем Вирту WITH не угодил?
« Ответ #117 : Май 01, 2012, 07:39:30 pm »
Да, идею Влада про WITH я помню ещё со времён, когда он мне её писал. Хорошая идея, на мой взгляд.
Но возникают проблемы с дизайном при попытке внедрения в Оберон. Собственно было показано какие проблемы и было показано в каком языке это было успещно введено и почему там проблем не возникло.

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

alexus

  • Гость
Re: Чем Вирту WITH не угодил?
« Ответ #118 : Май 01, 2012, 08:33:37 pm »
Да, идею Влада про WITH я помню ещё со времён, когда он мне её писал. Хорошая идея, на мой взгляд.

Alexus, как часто у него бывает, поднялся в заоблачные выси и замутил предельно простую суть, что устойчивость к преднамеренной атаке и устойчивость к случайным ошибкам - принципиально разные вещи.
Как я понимаю, ползающий по низине Илья, сейчас нам расскажет, чем одна устойчивость отличается от другой устойчивости... с примерами и... теоретическими изысками. Право стыдно, рассуждать о системах... не имея представления об оных.

В отсутствие злоумышленника, например, дверь не нуждается в замке - и может быть совершенно надёжным устройством в его отсутствие.
Дверь - это система? Или система - это квартира/дом?.. Дверь может быть надёжной, даже будучи тряпичной занавеской... является ли при этом надёжной квартира/дом?.. В какой среде данная система (дверь/квартира/дом) может считаться надёжной?.. Является ли сохранение имущества функцией данной системы в данной среде?.. И, наконец, хотелось бы знать более точные сведения о том, кто является злоумышленником?... Болтливая соседка, например... относится к данной категории или нет?..

(Илья, я же понимаю, что начитавшись очередных высказываний очередных проповедников, при полном нежелании думать... будем писать чушь, с видом оскорблённой невинности... ну, да и пишите... не обращайте на меня внимания... помните, что Эйнштейн писал по поводу Вселенной и глупости... не сдерживайте себя... границ нет... пишите...)

DIzer

  • Гость
Re: Чем Вирту WITH не угодил?
« Ответ #119 : Май 02, 2012, 06:58:14 pm »
В середине обсуждения замечена типичная реакция известной аудитории - с потоками... удобрений... на поля :)
С последующим признанием, что никто из них 100% никогда не вляпался бы в эту проблему...
Выявленный случайно за годы использования дефект vs. тем, что я читаю через день в окне обновлений Ubuntu с названиями "Критическое обновление безопасности...". Сегодня меня предупредили, что для моей версии (10.10) обновлений безопасности больше не будет. И где позор?


Так если вам перепадают  "удобрения" ростерите и расцветайте... вы же пока "отсекаете"  ветки... - лично я вижу уродливый "кактус" и горстку "впопуасов" танцующих вокруг него... Позора - о котором говорит ilovb (в отношение Вирта) - лично я не вижу... но в убогости вашей "компашки" лично я  - не сомневаюсь... высказывание как Ваши так и  Инфо21 я помню - и мне пофиг подчищаете вы дерьмо за СОБОЙ на форуме, или нет....