OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 13:09

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 154 ]  На страницу 1, 2, 3, 4, 5 ... 8  След.
Автор Сообщение
СообщениеДобавлено: Понедельник, 26 Январь, 2009 10:30 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Хоар: "Нулевые ссылки -- ошибка стоимостью в миллиард долларов"
Tony Hoare. "Null References: The Billion Dollar Mistake"
Track: Historically bad ideas

Abstract: I call it my billion-dollar mistake. It was the invention of the null reference in 1965. At that time, I was designing the first comprehensive type system for references in an object oriented language (ALGOL W). My goal was to ensure that all use of references should be absolutely safe, with checking performed automatically by the compiler. But I couldn't resist the temptation to put in a null reference, simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years. In recent years, a number of program analysers like PREfix and PREfast in Microsoft have been used to check references, and give warnings if there is a risk they may be non-null. More recent programming languages like Spec# have introduced declarations for non-null references. This is the solution, which I rejected in 1965.

Стоит ли упоминать, что в ФП нет ссылок, а следовательно и проблемы нулевых ссылок... :lol:

ЗЫ. Говорят, в Аде эта проблема не так остра, так как там есть non-null references. Вот вам и язык, который "doomed to success"... :mrgreen:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Январь, 2009 12:40 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Geniepro писал(а):
Стоит ли упоминать, что в ФП нет ссылок, а следовательно и проблемы нулевых ссылок... :lol:
ЗЫ. Говорят, в Аде эта проблема не так остра, так как там есть non-null references. Вот вам и язык, который "doomed to success"... :mrgreen:

Это всё - гут, но даже выдающуюся систему управления DeepSpace One (не смотря на все грандиозные заделы и результаты) с Лиспа на Си++ перевели просто по причине неудовлетворения РТ-требованиям.
В системе управления не надо, что бы 1000000 раз среагировали за наносекунду, а на 1000001 раз - за полсекунды. Надо - пусть за миллисекунду (+/- пятьдесят наносекунд) - НО - ГАРАНТИРОВАНО ПОСТОЯННО!
В системах со сборкой мусора, не смотря на отчёты по диссерам, пока никто такого не достиг...
К СОЖАЛЕНИЮ...
А то б я первый побежал системы управления свои на Лисп или Схему переписывать...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Январь, 2009 13:03 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Автоматическая сборка мусора - это совсем другой вопрос.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Январь, 2009 13:52 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Valery Solovey писал(а):
Автоматическая сборка мусора - это совсем другой вопрос.

Тока картинка - та же: ОЧЕНЬ дорогой фейерверк в пол-неба, воронка с футбольное поле и гектары, засеянные обломками...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Январь, 2009 14:56 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Я, конечно, не работал с РВ, но мне кажется, что совмещение освобождения памяти и создания нового объекта будет гораздо меньше, чем у сборщика и относительно небольшим по сравнению с ручным освобождением памяти. Под совмещением я подразумеваю немедленное автоматическое освобождение памяти при указании ссылки на новый объект (и если счётчик ссылок на объект обнулён). Самое важное для РВ - предсказуемость? Ну так здесь всё предсказуемо.

PS. Это решение в лоб. Возможно, найдётся что-то и получше.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Январь, 2009 15:10 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Владимир Лось писал(а):
Valery Solovey писал(а):
Автоматическая сборка мусора - это совсем другой вопрос.

Тока картинка - та же: ОЧЕНЬ дорогой фейерверк в пол-неба, воронка с футбольное поле и гектары, засеянные обломками...

Ну, фейерверк на полмиллиарда долларов (Ариан-5) был вовсе не из-за сборщика мусора... :lol:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Январь, 2009 15:20 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Geniepro писал(а):
Владимир Лось писал(а):
Ну, фейерверк на полмиллиарда долларов (Ариан-5) был вовсе не из-за сборщика мусора... :lol:

И не из-за NIL dereference.

Я тут уже чую повод для беспочвенной драки, поэтому предупреждаю заранее всех присутствующих, что я здесь. :mrgreen:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Январь, 2009 15:28 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Geniepro писал(а):
ЗЫ. Говорят, в Аде эта проблема не так остра, так как там есть non-null references. Вот вам и язык, который "doomed to success"... :mrgreen:


Ну в C++ ссылки по определеннию ненулевые (в отличие от указателей). Толку то? :) Как только появляется понятие состояния (с которым так успешно борются в ФП), то появляется и необходимость в нулевых ссылках (указателях в терминах C++).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Январь, 2009 15:51 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Geniepro писал(а):
Стоит ли упоминать, что в ФП нет ссылок, а следовательно и проблемы нулевых ссылок... :lol:


А чем nil отличается от нулевой ссылки? ;)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Январь, 2009 16:18 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Trurl писал(а):
Geniepro писал(а):
Стоит ли упоминать, что в ФП нет ссылок, а следовательно и проблемы нулевых ссылок... :lol:


А чем nil отличается от нулевой ссылки? ;)

Ну... например, тем, что с ним нет проблем, как с нулевыми ссылками? :roll:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Январь, 2009 17:14 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Vlad писал(а):
Как только появляется понятие состояния (с которым так успешно борются в ФП), то появляется и необходимость в нулевых ссылках (указателях в терминах C++).


Хотя наличие состояния всего-лишь усугубляет ситуацию :) Корень, как мне кажется, в неявности разыменования. Если бы для разыменования ссылки (которая может быть нулевой) всегда требовалось указать "обработчик" для случая нулевой ссылки, то проблем стало бы меньше (осмысленный "обработчик", а не выброс какого-нибудь "null dereference"). В случае ФП это приводит к каскадному протаскиванию вверх какого-нибудь "may be" результата, от которого никак не избавиться, пока не укажешь правильный "обработчик" для этого "may be".
Когда появляется состояние, которое может быть нулевым (требует "инициализации"), то все функции для работы с этим состоянием превращаются в "may be", что совершенно непрактично. Вывод все тот-же, что и в теме про "локализацию состояния" - глобальное состояние это зло :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Январь, 2009 19:33 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Geniepro писал(а):
Ну... например, тем, что с ним нет проблем, как с нулевыми ссылками? :roll:


А можо пример проблемы, которая есть с нулевыми ссылками и нет с nil.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Январь, 2009 20:15 

Зарегистрирован: Среда, 14 Ноябрь, 2007 19:03
Сообщения: 1314
Цитата:
Я тут уже чую повод для беспочвенной драки, поэтому предупреждаю заранее всех присутствующих, что я здесь.

Правильно,правильно-мне тоже не нравиться разворот темы с указателями...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Январь, 2009 23:23 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Valery Solovey писал(а):
... мне кажется ...

Вам не кажется! Даю определяющую наводку: Inferno+Limbo
Тока в Стиксе не утоните и не понукайте Харона... :о)

ЗЫ вот только что-то давненько не было обновлениев хвицияльных... То ли у них всё так гут в последней версии, что стабильность на уровне мечт, то ли кануло и это в Лету...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Январь, 2009 23:57 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Geniepro писал(а):
Ну, фейерверк на полмиллиарда долларов (Ариан-5) был вовсе не из-за сборщика мусора... :lol:

Ну уж от кого не ожидал не виденья за деревьями леса, так это от Вас!
При чём тут NIL/не NIL?
Я что зря о ВРЕМЕНИ разговор завёл?
У Вас есть реально работающий с повторяемым 100% результатом СМ с гарантированным невозмущением среднего времени цикла сборки мусора? Я о таких не слышал... Какие-то очередные ура-отчёты читал, но и NASA, когда умудряется Яву втиснуть в свои наработки, втискивает её в РВ-варианте, где чётко прописано, что в дельных местах СМ (даже заявленным, как РВ) даже и пахнуть не должно!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 27 Январь, 2009 08:55 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Владимир Лось писал(а):
Geniepro писал(а):
Ну, фейерверк на полмиллиарда долларов (Ариан-5) был вовсе не из-за сборщика мусора... :lol:

Ну уж от кого не ожидал не виденья за деревьями леса, так это от Вас!
При чём тут NIL/не NIL?
Я что зря о ВРЕМЕНИ разговор завёл?
Ну хорошо, тогда Вы, наверное, сможете привести примеры ракет, взорвавшихся от сборщика мусора? А то я слышал только об Ариане-5, у которого была проблема из-за неверного алгоритма и недостаточного тестирования унаследованного кода, о ракете, не долетевшей до Венеры из-за точки вместо запятой в программе на фортране, и о шаттле, у которого вообще была аппаратная проблема (замерзшая резиновая прокладка [или клапан?])...
А ещё я слышал про космический аппарат, в котором за сотни тысяч миль на ходу исправляли какую-то алгоритмическую ошибку в коде на лиспе, в котором есть GC и горячая замена кода...

Владимир Лось писал(а):
У Вас есть реально работающий с повторяемым 100% результатом СМ с гарантированным невозмущением среднего времени цикла сборки мусора? Я о таких не слышал... Какие-то очередные ура-отчёты читал, но и NASA, когда умудряется Яву втиснуть в свои наработки, втискивает её в РВ-варианте, где чётко прописано, что в дельных местах СМ (даже заявленным, как РВ) даже и пахнуть не должно!

У меня лично -- нет, увы. Не занимаюсь я этой областью. И вообще, когда занимался, обходился без динамического распределения памяти -- в сотне байт что распределять-то динамически?

А Вы интересовались сборщиком мусора Эрланга? Он хоть и "soft real time", но всё же там вроде более-менее параметры должны быть. На каждый процесс -- собственный GC, так что время каждой сборки незаметно и почти не сказывается на отзывчивость системы. Ну, может там и нет гарантии в +-5% (я просто не в курсе), но и на несколько порядков задержек тоже быть не должно...


Последний раз редактировалось Geniepro Вторник, 27 Январь, 2009 09:06, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 27 Январь, 2009 09:01 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Trurl писал(а):
Geniepro писал(а):
Ну... например, тем, что с ним нет проблем, как с нулевыми ссылками? :roll:


А можо пример проблемы, которая есть с нулевыми ссылками и нет с nil.

Под nil Вы имеете в виду конструктор пустого списка в ФП? А какие с ними вообще проблемы-то? :shock:

А если этот Ваш nil -- значение нулевой ссылки как в паскалях да адах, то ну извините, проблемы по определению. Аж даже сам Хоар просил прощения у всего программерсокого сообщества за это своё изобретение... :mrgreen:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 27 Январь, 2009 11:35 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Geniepro писал(а):
Ну хорошо, тогда Вы, наверное, сможете привести примеры ракет, взорвавшихся от сборщика мусора?
НЕТ, КОНЕЧНО!
Мне даже интересно будет посмотреть на того ИДИОТА, который систему управления с ПО, использующего современные СМ, всунет в разгонные блоки...
Geniepro писал(а):
А ещё я слышал про космический аппарат, в котором за сотни тысяч миль на ходу исправляли какую-то алгоритмическую ошибку в коде на лиспе, в котором есть GC и горячая замена кода...
Шикарно.
RAX (так, по-моему), конечно интересным проектом БЫЛ.
Теперь остаётся вопрос, подобный тому, что задают обероновцам: если всё такое белое и пушистое, чего ж это такой славный подход и опыт с такими чудесными результатами не применяют в остальных конструкциях NASA? Вот про тот вариант, который был после лисповского, на Си++, я знаю, что он (не всегда весь, частями, блоками) пошёл в остальные системы управления, был реализован на куче платформ и в нескольких исполняющих системах (осях)...
Учитывая год создания Гатовского лиспового варианта и прогресс техники (при том, как успешно справлялся ТОТ вариант на ТОЙ технике) и ПО, странно не видеть желание руководителей и управленцев не заметь столь сладкую конхветку... Где всё почти «само собой» и такое гибкое и настраиваемое, шо аж налету «переобувается и портянки перематывае»...
И что ж это Гат, такой выдающийся работник, оказался не востребованным в такое «сложное время», ушёл из NASA (афигеть! Скольких, интерсно, можно назвать ПО-шников, попавших туда, а потом уволившихся сами???.. :) ) и даже имя сменил?...
Владимир Лось писал(а):
в сотне байт что распределять-то динамически?
А вот — не надо! Это я в сотне байт управление заслонками движка по совокупности нескольких параметров делаю. Но системы уровня RAX — это совсем другое дело. Там на порядки параметров и состояний больше и пермалывающих это всё исполняемых сущностей.
Владимир Лось писал(а):
А Вы интересовались сборщиком мусора Эрланга? Он хоть и "soft real time", но всё же там вроде более-менее параметры должны быть. На каждый процесс -- собственный GC, так что время каждой сборки незаметно и почти не сказывается на отзывчивость системы. Ну, может там и нет гарантии в +-5% (я просто не в курсе), но и на несколько порядков задержек тоже быть не должно...
Винда — тоже «мягкое» РВ.
Вот у нас смежники свою часть на Вин98 сделали. Их тесты все классно проходили. Но это когда на её экран просто смотрели, без оператора-прапорщика за пультом... А тут ему понадобилось посмотреть монитор производительности системы. И, именно, во время прохождения КА и съёма с него телеметрии и данных... Я вижу, что у меня ними по RS232 связь пропала, кричу: «я вас не вижу, пакеты не идут!», а у них лица вытянутые: триста страниц обоснования, как это выгодно было делать на винде (привычночть сред разработки, системы исполнения, «проверенный годами эксплуатации» код Оси...) и - одно нажатие мышки прапором... :)
Ну ладно, здесь я согласен, был фактор в виде прапорщика, а вдруг винде захочется со своп-файлом разобраться?! Вот тока не надо говорить «что такого никогда не будет»... Это — самая мрачная фраза из моего опыта программирования! Когда заказчик, начальство или коллеги её произносят, у меня инстинктивно, пардон, все сфинкторы сжимаются и хочется со свечкой по углам обойти и святой водой окропить... В данном случае, при имеющихся СМ и НЕМИНУЕМОСТИ наступания момента, когда вашей системе на ФЯ не хватит памяти, ОСи сильно понадобится поработать со страницами на винте... Со всеми вытекающими...
Я буду согласен, когда у меня ОЗУ безмерно будет, применять Лисп/Схему... Но! Опять-таки, ну нет строго определённых по времени работы алгоритмов сборки мусора... Хоть ты тресни! Придумают – хвала, а пока, что даже Эрланг прячется полустыдливо за словосочетанием «мягкое РВ»... Ага, - «мягкое»... Тока последствия бывают сильно жёсткими.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 27 Январь, 2009 16:23 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Geniepro писал(а):
А если этот Ваш nil -- значение нулевой ссылки как в паскалях да адах, то ну извините, проблемы по определению. Аж даже сам Хоар просил прощения у всего программерсокого сообщества за это своё изобретение... :mrgreen:


Можете внятно объяснить существо проблемы с NIL?

Не могу понять. Есть структура данных - модель реального объекта. В её описании указано, что она может иметь связь с другим объектом. Чем противоестественна, в общем случае, ситуация, когда объект может иметь связь, но в данный момент её не имеет?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 27 Январь, 2009 16:34 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Илья Ермаков писал(а):
Не могу понять. Есть структура данных - модель реального объекта. В её описании указано, что она может иметь связь с другим объектом. Чем противоестественна, в общем случае, ситуация, когда объект может иметь связь, но в данный момент её не имеет?


Тем, что этот факт (отсутствие связи) может высниться в самый неподходящий момент (в рантайме). И все из-за того, что код, который эту связь устанавливает (и находится совсем в другом месте), был модифицирован (с неправильным пониманием относительно такого, насколько важно установить эту связь именно здесь) несколько релизов назад :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 154 ]  На страницу 1, 2, 3, 4, 5 ... 8  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB