Что толку в Ада если Ариан 5 все равно упал
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 05.06.05 18:18
Оценка: 93 (8) +3 -1
Здравствуйте, AVC, Вы писали:

AVC>Весь смысл высокоуровневости — позволить компилятору гарантировать определенные свойства программ, например — безопасность типов (type safety).

AVC>С моей стороны это вовсе не эстетская критика.
AVC>Я полагаю, что только прирожденный душегуб согласится писать сложное ПО, отвечающее за безопасность людей, на низкоуровневых языках, подобных Си и Си++.

Что-то в этой ветке часто упоминается, что есть языки, в которых выход за пределы массива четко и точно отлавливается в run-time. И говорится, что это круто, и что из-за отсутствия таковой возможности C/C++ must die! При этом хотелось бы напомнить, что эта возможность Oberon/Java/C# хороша только при отладке. Если такая ошибка возникает во время эксплуатации, последствия от нее что в C/С++, что в Oberon/Java/C# будут КАТАСТРОФИЧЕСКИМИ.

В качестве примера -- катастрофа Ариан 5 при старте, тогда из-за ошибок программистов не было перехвачено исключение и софт просто вырубился, как на основной, так и на резервной системе контроля. И что толку, что софт был написан на Ada, а не на C++? Поэтому то, что Oberon/Java/C# сгенерирует out of bound exception в run-time, имхо, ничем не поможет программе, в которой это исключение совершенно не ожидалось. А ведь в подавляющем большинстве случаев оно не ожидается
... << RSDN@Home 1.1.4 beta 7 rev. 447>>

21.06.05 18:36: Ветка выделена из темы Почему настоящие программисты избегают C++
Автор: d Bratik
Дата: 17.02.05
— Odi$$ey
21.06.05 18:37: Перенесено модератором из 'Священные войны' — Odi$$ey


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[17]: Что толку в Ада если Ариан 5 все равно упал
От: AVC Россия  
Дата: 07.06.05 10:26
Оценка: 22 (2) +1 -11 :))) :)
Здравствуйте, eao197, Вы писали:

AVC>>Весь смысл высокоуровневости — позволить компилятору гарантировать определенные свойства программ, например — безопасность типов (type safety).

AVC>>С моей стороны это вовсе не эстетская критика.
AVC>>Я полагаю, что только прирожденный душегуб согласится писать сложное ПО, отвечающее за безопасность людей, на низкоуровневых языках, подобных Си и Си++.

E>Что-то в этой ветке часто упоминается, что есть языки, в которых выход за пределы массива четко и точно отлавливается в run-time. И говорится, что это круто, и что из-за отсутствия таковой возможности C/C++ must die!


Я не думаю, что C++ must die! Это Вы меня прямо оклеветали.
Я думаю, что C++ is dead.
Говорят, что если петуху отрубить голову, он еще может носиться по двору. Вот C++ и носится... А потом бряк — и уже вверх ногами!

E>При этом хотелось бы напомнить, что эта возможность Oberon/Java/C# хороша только при отладке. Если такая ошибка возникает во время эксплуатации, последствия от нее что в C/С++, что в Oberon/Java/C# будут КАТАСТРОФИЧЕСКИМИ.


Я так и думал, что программисты, предпочитающие Си++, просто не знают, для чего пишутся программы.
А неверные вычисления и их КАТАСТРОФИЧЕСКИЕ РЕЗУЛЬТАТЫ Вас не пугают?
"Не упасть" — не единственная цель программы. Надо еще и требуемые вычисления выполнить, причем без ошибок.
Впрочем, понятно, что Си++программист всегда в страхе: КАК БЫ ЧЕГО НЕ УПАЛО!

E>В качестве примера -- катастрофа Ариан 5 при старте, тогда из-за ошибок программистов не было перехвачено исключение и софт просто вырубился, как на основной, так и на резервной системе контроля. И что толку, что софт был написан на Ada, а не на C++? Поэтому то, что Oberon/Java/C# сгенерирует out of bound exception в run-time, имхо, ничем не поможет программе, в которой это исключение совершенно не ожидалось. А ведь в подавляющем большинстве случаев оно не ожидается


У меня иные сведения о катастрофе Ариана.

История постоянно подтверждает правоту Н.Вирта. Например, взрыв в 1996 г. ракеты-носителя Ариан-5 стоимостью около 500 миллионов долларов через 40 секунд после старта произошел, как выяснилось, из-за сбоя программного обеспечения: одна из вспомогательных подпрограмм пыталась преобразовать длинное целое значение в короткое без проверки величины значения. Компиляторы Оберона по умолчанию отказываются компилировать такие программы, считая их ошибочными, тем самым "тыкая носом" проектировщика в точки потенциальных сбоев.

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[18]: Что толку в Ада если Ариан 5 все равно упал
От: Mr. None Россия http://mrnone.blogspot.com
Дата: 07.06.05 10:31
Оценка:
Здравствуйте, AVC, Вы писали:

E>>В качестве примера -- катастрофа Ариан 5 при старте, тогда из-за ошибок программистов не было перехвачено исключение и софт просто вырубился, как на основной, так и на резервной системе контроля. И что толку, что софт был написан на Ada, а не на C++? Поэтому то, что Oberon/Java/C# сгенерирует out of bound exception в run-time, имхо, ничем не поможет программе, в которой это исключение совершенно не ожидалось. А ведь в подавляющем большинстве случаев оно не ожидается


AVC>У меня иные сведения о катастрофе Ариана.

AVC>

AVC>История постоянно подтверждает правоту Н.Вирта. Например, взрыв в 1996 г. ракеты-носителя Ариан-5 стоимостью около 500 миллионов долларов через 40 секунд после старта произошел, как выяснилось, из-за сбоя программного обеспечения: одна из вспомогательных подпрограмм пыталась преобразовать длинное целое значение в короткое без проверки величины значения. Компиляторы Оберона по умолчанию отказываются компилировать такие программы, считая их ошибочными, тем самым "тыкая носом" проектировщика в точки потенциальных сбоев.


Ой мама, куда вас занесло... Вы ещё вспомните старую историю об ошибке в программе на Фортране, когда программист перепутал ',' и '.' и вместо цикла получил объявление вещественной переменной, которое превосходно скомпилировалось, но только потом ракета мимо марса промазала...
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
Re[18]: Что толку в Ада если Ариан 5 все равно упал
От: Cyberax Марс  
Дата: 07.06.05 10:46
Оценка: 22 (5) +4
AVC wrote:

> E>Что-то в этой ветке часто упоминается, что есть языки, в которых

> выход за пределы массива четко и точно отлавливается в run-time. И
> говорится, что это круто, и что из-за отсутствия таковой возможности
> C/C++ must die!
> Я не думаю, что C++ must die! Это Вы меня прямо оклеветали.
> Я думаю, что C++ *is* dead.

Угу, как и 5 миллионов программистов на нем. Причем С++ активно
развивается (читайте c.l.c++.moderated, списки рассылоки от boost'а), в
отличие от уже дохлого Оберона и умирающей Дельфи.

> У меня иные сведения о катастрофе Ариана.


http://www.cs.unibo.it/~laneve/papers/ariane5rep.html "ARIANE 5 Failure
— Full Report"

> История постоянно подтверждает правоту Н.Вирта. Например, взрыв в 1996

> г. ракеты-носителя Ариан-5 стоимостью около 500 миллионов долларов
> через 40 секунд после старта произошел, как выяснилось, из-за сбоя
> программного обеспечения: одна из вспомогательных подпрограмм пыталась
> преобразовать длинное целое значение в короткое без проверки величины
> значения. Компиляторы Оберона по умолчанию отказываются компилировать
> такие программы, считая их ошибочными, тем самым "тыкая носом"
> проектировщика в точки потенциальных сбоев.

Было преобразование (причем контролируемое!) между 64-битной переменной
и знаковой 16-битной. Диапазона значений 16-битный переменной хватало
для оригинального датчика, но не для измененного. Из-за переполнения
вылетело исключение, которое весело распечаталось в поток управления
(узнаю адски-паскалевские решения).

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[18]: Что толку в Ада если Ариан 5 все равно упал
От: Владик Россия  
Дата: 07.06.05 10:53
Оценка: +2 :)
Здравствуйте, AVC, Вы писали:

AVC>У меня иные сведения о катастрофе Ариана.

AVC>

AVC>История постоянно подтверждает правоту Н.Вирта.


Это называется "притянуть Вирта за уши"

AVC>

вспомогательных подпрограмм пыталась преобразовать длинное целое значение в короткое без проверки величины значения. Компиляторы Оберона по умолчанию отказываются компилировать такие программы, считая их ошибочными, тем самым "тыкая носом" проектировщика в точки потенциальных сбоев.


Свежо предание... Что ты будешь делать на Обероне, если при преобразовании длинного целого в короткое возникнет ошибка? Очевидно, что традиционные языки с их кодами возврата и исключениями не способны отловить такие ошибки на этапе компиляции (хотя вот джава заставит таки это исключение хоть как-то хоть где-то обработать, но это все равно не дает 100% гарантии, что обработано оно будет правильно). Что такое революционное предлагает Оберон? Код в студию! (с)
Как все запущенно...
Re[19]: Что толку в Ада если Ариан 5 все равно упал
От: AVC Россия  
Дата: 07.06.05 11:49
Оценка:
Здравствуйте, Mr. None, Вы писали:

MN>Ой мама, куда вас занесло... Вы ещё вспомните старую историю об ошибке в программе на Фортране, когда программист перепутал ',' и '.' и вместо цикла получил объявление вещественной переменной, которое превосходно скомпилировалось, но только потом ракета мимо марса промазала...


Что же, весьма характерная история.
Их существует множество.
Могу, например, рассказать о том, как все известные компиляторы Си++, не моргнув глазом, привели bool к float.

Кажется, Вас не слишком удручает, что "ракета промазала"?
Интересно, почему? Потому что не из Вашего кармана, или просто — "ха-ха, как смешно"?
А если бы программа управляла ядерным реактором, Вы бы так же иронизировали?

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[18]: Что толку в Ада если Ариан 5 все равно упал
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 07.06.05 12:33
Оценка: +2
Здравствуйте, AVC, Вы писали:

AVC>Я не думаю, что C++ must die! Это Вы меня прямо оклеветали.

AVC>Я думаю, что C++ is dead.

Остается процитировать классиков: "Слухи о моей смерти сильно преувеличены"

AVC>Говорят, что если петуху отрубить голову, он еще может носиться по двору. Вот C++ и носится... А потом бряк — и уже вверх ногами!


К этому высказыванию не мешало бы добавить жирное ИМХО.

E>>При этом хотелось бы напомнить, что эта возможность Oberon/Java/C# хороша только при отладке. Если такая ошибка возникает во время эксплуатации, последствия от нее что в C/С++, что в Oberon/Java/C# будут КАТАСТРОФИЧЕСКИМИ.


AVC>Я так и думал, что программисты, предпочитающие Си++, просто не знают, для чего пишутся программы.


Ба! Я всегда думал, что программы пишут либо для удовольствия, либо для заработка. И при чем здесь С++?

AVC>А неверные вычисления и их КАТАСТРОФИЧЕСКИЕ РЕЗУЛЬТАТЫ Вас не пугают?


Нет. Я вычислениями не занимаюсь. Кстати, я говорил именно об ошибке выхода за пределы границы массива.

AVC>"Не упасть" — не единственная цель программы. Надо еще и требуемые вычисления выполнить, причем без ошибок.

AVC>Впрочем, понятно, что Си++программист всегда в страхе: КАК БЫ ЧЕГО НЕ УПАЛО!

Сколько нового про себя в Священных Воинах узнаешь, просто ужас. Я и не знал, чего боялся все это время.

E>>В качестве примера -- катастрофа Ариан 5 при старте, тогда из-за ошибок программистов не было перехвачено исключение и софт просто вырубился, как на основной, так и на резервной системе контроля. И что толку, что софт был написан на Ada, а не на C++? Поэтому то, что Oberon/Java/C# сгенерирует out of bound exception в run-time, имхо, ничем не поможет программе, в которой это исключение совершенно не ожидалось. А ведь в подавляющем большинстве случаев оно не ожидается


AVC>У меня иные сведения о катастрофе Ариана.

AVC>

AVC>История постоянно подтверждает правоту Н.Вирта. Например, взрыв в 1996 г. ракеты-носителя Ариан-5 стоимостью около 500 миллионов долларов через 40 секунд после старта произошел, как выяснилось, из-за сбоя программного обеспечения: одна из вспомогательных подпрограмм пыталась преобразовать длинное целое значение в короткое без проверки величины значения. Компиляторы Оберона по умолчанию отказываются компилировать такие программы, считая их ошибочными, тем самым "тыкая носом" проектировщика в точки потенциальных сбоев.


Теперь объясни мне, где же я ошибся в определении причины катастрофы? Главное, что исключение возникло там, где его не ждали.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[19]: Что толку в Ада если Ариан 5 все равно упал
От: Kh_Oleg  
Дата: 07.06.05 12:58
Оценка:
Здравствуйте, eao197, Вы писали:

AVC>>У меня иные сведения о катастрофе Ариана.

AVC>>

AVC>>История постоянно подтверждает правоту Н.Вирта. Например, взрыв в 1996 г. ракеты-носителя Ариан-5 стоимостью около 500 миллионов долларов через 40 секунд после старта произошел, как выяснилось, из-за сбоя программного обеспечения: одна из вспомогательных подпрограмм пыталась преобразовать длинное целое значение в короткое без проверки величины значения. Компиляторы Оберона по умолчанию отказываются компилировать такие программы, считая их ошибочными, тем самым "тыкая носом" проектировщика в точки потенциальных сбоев.


E>Теперь объясни мне, где же я ошибся в определении причины катастрофы? Главное, что исключение возникло там, где его не ждали.


А мне кажется, что главное, что исключение возникло. Потому что софт содержал ошибку.
Re[20]: Что толку в Ада если Ариан 5 все равно упал
От: Владик Россия  
Дата: 07.06.05 13:11
Оценка:
Здравствуйте, AVC, Вы писали:

AVC>Могу, например, рассказать о том, как все известные компиляторы Си++, не моргнув глазом, привели bool к float.


Какие-то детские придирки. На уровне {} vs begin/end. В языке С++ bool может быть неявно приведен к float. Фича такая. В определенных ситуациях это корректно и удобно, в других — нет. Программист на С++ знает об этой фиче и не будет тип, приведение которого к float есть явная ошибка, обозначать как bool.
Как все запущенно...
Re[20]: Что толку в Ада если Ариан 5 все равно упал
От: AlexEagle Украина http://www.vik.oil
Дата: 07.06.05 13:22
Оценка:
Здравствуйте, Kh_Oleg, Вы писали:

E>>Теперь объясни мне, где же я ошибся в определении причины катастрофы? Главное, что исключение возникло там, где его не ждали.


K_O>А мне кажется, что главное, что исключение возникло. Потому что софт содержал ошибку.


Категорически не согласен... В делфе легко можно получить исключение сфокусирован невидимый контрол средствами VCL... Бред... Причем апи тоже ругается, но тихо и свою работу все же выполняет...

Из-за этого я избегаю VCL-ных функций, так как они создают проблемы на пустом месте своими дебильнымим исключениями
Re[20]: Что толку в Ада если Ариан 5 все равно упал
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 07.06.05 14:21
Оценка: +2
Здравствуйте, Kh_Oleg, Вы писали:

K_O>Здравствуйте, eao197, Вы писали:


AVC>>>У меня иные сведения о катастрофе Ариана.

AVC>>>

AVC>>>История постоянно подтверждает правоту Н.Вирта. Например, взрыв в 1996 г. ракеты-носителя Ариан-5 стоимостью около 500 миллионов долларов через 40 секунд после старта произошел, как выяснилось, из-за сбоя программного обеспечения: одна из вспомогательных подпрограмм пыталась преобразовать длинное целое значение в короткое без проверки величины значения. Компиляторы Оберона по умолчанию отказываются компилировать такие программы, считая их ошибочными, тем самым "тыкая носом" проектировщика в точки потенциальных сбоев.


E>>Теперь объясни мне, где же я ошибся в определении причины катастрофы? Главное, что исключение возникло там, где его не ждали.


K_O>А мне кажется, что главное, что исключение возникло. Потому что софт содержал ошибку.


Нет, я не согласен. Возникновение исключения -- это еще не проблема. Поскольку сам механизм исключений был придуман для того, чтобы порожденные исключения перехватывать. А вот то, что порожденное исключение должным образом не было обработано, вот это уже проблема.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[19]: Что толку в Ада если Ариан 5 все равно упал
От: AVC Россия  
Дата: 07.06.05 15:04
Оценка: 7 (2)
Здравствуйте, Cyberax, Вы писали:

>> E>Что-то в этой ветке часто упоминается, что есть языки, в которых

>> выход за пределы массива четко и точно отлавливается в run-time. И
>> говорится, что это круто, и что из-за отсутствия таковой возможности
>> C/C++ must die!
>> Я не думаю, что C++ must die! Это Вы меня прямо оклеветали.
>> Я думаю, что C++ *is* dead.

C>Угу, как и 5 миллионов программистов на нем. Причем С++ активно

C>развивается (читайте c.l.c++.moderated, списки рассылоки от boost'а), в
C>отличие от уже дохлого Оберона и умирающей Дельфи.

Ну, знаете, тараканов еще больше. И что из того?

>> У меня иные сведения о катастрофе Ариана.


C>http://www.cs.unibo.it/~laneve/papers/ariane5rep.html "ARIANE 5 Failure

C>- Full Report"

Спасибо за ссылку на отчет о полете Ариан-5.
В перерыве быстро его прочитал. (Надеюсь, не упустил из виду существенной информации.)
Правда, от английского этого отчета я не в восторге.
Некоторые фразы трудно "переварить". Причем иногда это фразы,
имеющие большое значение для оценки всего происшедшего в целом.
Вот пример:

It has been stated to the Board that not all the conversions
were protected because a maximum workload target of 80% had been set
for the SRI computer.

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

Но давайте рассмотрим факты.
Основная часть ПО Ариан-5 была унаследована от ПО Ариан-4.
Траектория полета Ариан-5 отличалась от траектории полета Ариан-4.
Горизонтальная скорость Ариан-5 была значительно выше, чем у Ариан-4.
Именно поэтому 64-битное число с плавающей точкой (double?) оказалось
невозможным привести к 16-битному знаковому целому без потерь.
Это и вызвало исключение.
Данная переменная была незащищена (unprotected) от подобного исключения.
Ясно сказано, что решение не защищать данную переменную от исключения
было принято сознательно.
По-видимому, чтобы не превосходить указанный лимит ресурсов в 80%.
Дальше много говорится об "анализе, котрый проделали, перед тем как принять
такое решение" и прочей безответственной чуши. Пожалуйста, вот Вам цена
всех этих "верификаций"!
Что значит — переменная незащищена? Значит ли это, соответствующее исключение
было аппаратным (вроде исключения при делении на нуль)?
В Обероне, если присвоение значения переменной может привести к потере информации,
требуется явно указать допустимость этой потери информации, иначе
компилятор не пропустит данный оператор присвоения.
Если же программист явно указывает допустимость такой ситуации,
то, конечно, никакого исключения сгенерировано не будет (или оно обязательно
будет перехвачено, если имеет аппаратное происхождение).
Именно об этом говорилось в приведенной мной цитате.
Так мысль, высказанная в ней, верна: Оберон не допустил бы такой ситуации.
А здесь — и присвоение разрешено, и защиты от аппаратного прерывания не создано.
Просто красота!
Дальше — больше.
Оказывается, любое исключение в бортовом компьютере считается имеющим
аппаратное происхождение и вызывает shut-down компьютера!
Итак, резюме происшедшего:
1) тот факт, что траектория Ариан-5 отличалась от траектории Ариан-4,
не был должным образом осознан и отображен в ПО;
2) ресурсы бортового компьютера были недостаточны, вследствие чего
было принято решение не защищать некоторые переменные от
(аппаратных) исключений (в данном случае — переполнения);
3) любое исключение понимается как аппатратный сбой и вызывает shut-down
компьютера.
Ясно, что пункт 2 полностью противоречит принципам Оберона: людям свойственно
ошибаться, поэтому нельзя отказываться от защиты типов, что как раз
и имело место в данном случае.

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[20]: Что толку в Ада если Ариан 5 все равно упал
От: Cyberax Марс  
Дата: 07.06.05 15:14
Оценка:
AVC wrote:

> C>Угу, как и 5 миллионов программистов на нем. Причем С++ активно

> C>развивается (читайте c.l.c++.moderated, списки рассылоки от boost'а), в
> C>отличие от уже дохлого Оберона и умирающей Дельфи.
>
> Ну, знаете, тараканов еще больше. И что из того?
>

> Некоторые фразы трудно "переварить". Причем иногда это фразы,

> имеющие большое значение для оценки всего происшедшего в целом.
> Вот пример:
> It has been stated to the Board that not all the conversions
> were protected because a maximum workload target of 80% had been set
> for the SRI computer.

В Аде есть типы, для которых компилятор четко следит за выходом за
диапазон. То есть если тип Type1 имеет границы [1,2], то компилятор
будет везде проверять возможность выхода за границы.

> Так мысль, высказанная в ней, верна: *Оберон не допустил бы такой

> ситуации*.

В Обероне что, совсем НЕТ кастов? Тогда его как язык можно в утиль
отправить. В Аде нельзя неявно кастовать числа, нужно ставить оператор
каста.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[20]: Что толку в Ада если Ариан 5 все равно упал
От: Владик Россия  
Дата: 07.06.05 15:22
Оценка:
Здравствуйте, AVC, Вы писали:

AVC>Если же программист явно указывает допустимость такой ситуации,


Ну и кто мешает на Обероне явно указать допустимость "такой ситуации" и получить в случае "недопустимости" все ту же исключительную ситуацию, которая и приведет (например) к отключению компа? Касты в Обероне никто не отменял, как я понял. Каждый каст может оказаться недопустимым.

AVC>то, конечно, никакого исключения сгенерировано не будет (или оно обязательно

AVC>будет перехвачено, если имеет аппаратное происхождение).

Подробнее, pls. Чего Оберон делает с аппаратными исключениями, на основании чего и зачем.

AVC>Именно об этом говорилось в приведенной мной цитате.

AVC>Так мысль, высказанная в ней, верна: Оберон не допустил бы такой ситуации.

Так я увижу этот волшебный код или нет?
Как все запущенно...
Re[19]: Что толку в Ада если Ариан 5 все равно упал
От: AVC Россия  
Дата: 07.06.05 19:12
Оценка:
Здравствуйте, eao197, Вы писали:

AVC>>Я не думаю, что C++ must die! Это Вы меня прямо оклеветали.

AVC>>Я думаю, что C++ is dead.
E>Остается процитировать классиков: "Слухи о моей смерти сильно преувеличены"


Какое счастье — все классики живы!

AVC>>Говорят, что если петуху отрубить голову, он еще может носиться по двору. Вот C++ и носится... А потом бряк — и уже вверх ногами!

E>К этому высказыванию не мешало бы добавить жирное ИМХО.

Согласен.
Но ведь я так и написал: "я думаю, что..."
Поэтому и аргумент Cyberax'а о 5 миллионах Си++программистов — это не более, чем "перепись населения"
в каких-то диких странах.
Две тысячи лет назад большинство людей полагало, что Земля плоская, хотя задолго до того Эратосфен (тот самый, чье
"решето" для простых чисел) весьма точно вычислил ее размер.
Точно так же сейчас многие еще пишут на Си++, но будущее за модульными языками, обеспечивающими безопасность типов.
Собственно, я защищаю Оберон за то, что это первый в мире язык программирования, обеспечивающий безопасность типов. При этом, в отличие от Java и C#, это эффективный язык, на котором пишут операционные системы.

E>>>При этом хотелось бы напомнить, что эта возможность Oberon/Java/C# хороша только при отладке. Если такая ошибка возникает во время эксплуатации, последствия от нее что в C/С++, что в Oberon/Java/C# будут КАТАСТРОФИЧЕСКИМИ.


AVC>>Я так и думал, что программисты, предпочитающие Си++, просто не знают, для чего пишутся программы.

E>Ба! Я всегда думал, что программы пишут либо для удовольствия, либо для заработка. И при чем здесь С++?



AVC>>А неверные вычисления и их КАТАСТРОФИЧЕСКИЕ РЕЗУЛЬТАТЫ Вас не пугают?

E>Нет. Я вычислениями не занимаюсь. Кстати, я говорил именно об ошибке выхода за пределы границы массива.

Вот как? Вы не занимаетесь вычислениями?
Кажется, Вы полагаете, что вычисления — это только "численные методы"?
Впрочем, хорошо Вам! Раз Вы не занимаетесь вычислениями, то и ошибок в Ваших программах не бывает...

AVC>>"Не упасть" — не единственная цель программы. Надо еще и требуемые вычисления выполнить, причем без ошибок.

AVC>>Впрочем, понятно, что Си++программист всегда в страхе: КАК БЫ ЧЕГО НЕ УПАЛО!
E>Сколько нового про себя в Священных Воинах узнаешь, просто ужас. Я и не знал, чего боялся все это время.

Хотите об этом поговорить?

E>Теперь объясни мне, где же я ошибся в определении причины катастрофы? Главное, что исключение возникло там, где его не ждали.


Главное — что сняли защиту.

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[21]: Что толку в Ада если Ариан 5 все равно упал
От: AVC Россия  
Дата: 07.06.05 20:51
Оценка: 10 (1)
Здравствуйте, Владик, Вы писали:

В>Так я увижу этот волшебный код или нет?


Какой код, Владик? ПО для Ариана-5 на Обероне?
Так ведь ПО для Ариана-5 было написано на Аде.

Если же Вас действительно интересует Оберон, то информации в Интернете и открытого кода предостаточно.
Лучше всего начать с описания языка:
http://www.uni-vologda.ac.ru/oberon/o2rus.htm
Чтобы не толочь воду в ступе, вот, сжато, что я думаю об Обероне и Си++:
http://alexcheremkhin.boom.ru/oberon.htm
К сожалению, нет особой возможности "развивать тему" — времени не хватает.
Но, зато, я там привел достаточное количество ссылок на обероновские сайты.
К этому списку я бы добавил сайт фирмы Oberon Microsystems:
http://www.oberon.ch
У них есть достаточно интересный продукт BlackBox.
Я сначала его не оценил, а сейчас использую в работе.

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[22]: Что толку в Ада если Ариан 5 все равно упал
От: Владик Россия  
Дата: 07.06.05 21:11
Оценка: +3
Здравствуйте, AVC, Вы писали:

В>>Так я увижу этот волшебный код или нет?

AVC>Какой код, Владик?

Код явного небезопасного преобразования из одного типа в другой, который не пропустит компилятор Оберона (на этапе компиляции), но пропустит компилятор Ады или С++. Ты ведь об этом говорил?

P.S. За ссылки спасибо, но по той информации, которую я почерпнул из обсуждений на RSDN, мне этот язык для более глубоко изучения пока неинтересен.

P.S.S. На самом деле на код я не надеюсь. Просто корректнее надо быть в высказываниях. Приведеная тобой цитата про то, что компилятор Оберона чего-то там не пропустит и "ткнет носом", может иметь смысл только применительно к плюсовым неявным преобразованиям POD-типов (и то, нормальный компилятор С++ выдаст варнинг при преобразовании int64 в int16). В случае с Адой и спутником, где такое преобразование было сделано явно, реальных преимуществ Оберона я так и не увидел.
Как все запущенно...
Re[20]: Что толку в Ада если Ариан 5 все равно упал
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 08.06.05 11:03
Оценка: 10 (1) +5
Здравствуйте, AVC, Вы писали:

AVC>>>Говорят, что если петуху отрубить голову, он еще может носиться по двору. Вот C++ и носится... А потом бряк — и уже вверх ногами!

E>>К этому высказыванию не мешало бы добавить жирное ИМХО.

AVC>Согласен.

AVC>Но ведь я так и написал: "я думаю, что..."

Здесь хочется придраться к словам
Сначала было сказано:

Я думаю, что C++ is dead.

И здесь было понятно, что это твое личное мнение. Но уже затем, отдельной строкой:

Говорят, что если петуху отрубить голову, он еще может носиться по двору. Вот C++ и носится... А потом бряк — и уже вверх ногами!

Вот во второй строке ИМХО бы совершенно не помешал.

AVC>Поэтому и аргумент Cyberax'а о 5 миллионах Си++программистов — это не более, чем "перепись населения"

AVC>в каких-то диких странах.
AVC>Две тысячи лет назад большинство людей полагало, что Земля плоская, хотя задолго до того Эратосфен (тот самый, чье
AVC>"решето" для простых чисел) весьма точно вычислил ее размер.
AVC>Точно так же сейчас многие еще пишут на Си++, но будущее за модульными языками, обеспечивающими безопасность типов.

По этому поводу хочу привести две цитаты Страуструпа отсюда:

As ever, it is hard to estimate the number of C++ programmers, but in 2003, the IDC reported well over three million full-time C++ programmers (compared to my estimate of 400,000 in 1991; §D&E7.1), and that’s not an implausible number. I’m not in a position to accurately count, but all the indicators I have, show a steady increase in the use of C++ over the last decade (1995-2004) after the explosive growth of C++’s first decade (1985-1994). I never experienced a year without growth.


So what do all of those C++ programmers actually do? What kind of applications do they write and what kind of programming styles do they employ? I don’t know; nobody knows. In the same way as there are too many C++ programmers to count, there are too many different application areas and too many programming styles for any one person to grasp. It is common to hear generalizations along the line “C++ is used like this”. Such statements are typically wishful thinking based on very limited experience. We are playing “blind men and the elephant” with a very large creature. There are people who have read more than a million lines of C++ code, written hundred of thousands of lines of C++, read all the articles in C-vu, C/C++ Users Journal, etc., read all the good C++ books and dozens of the bad ones, read all the academic papers relating to C++, and “lived” on the C++ newsgroups for years. There are not many such people, and even they have only scratched the surface. Such people are usually the last to utter simple generalizations. In fact, I hear the most succinct and confident generalizations (both positive and negative) about C++ from people who have hardly any experience with C++. Ignorance is bliss.


Лично меня последняя цитата поразила -- имея более чем тринадцатилетний опыт программирования на C++ для разных платформ я думал, что я могу представить, в каких областях C++ применяется. Но, оказалось, что я даже не представляю себе вершину этого айсберга. Многообразие приложений, которые создавались, создаются, эксплуатируются сейчас и будут разрабатываться в будущем просто невозможно себе представить.

Поэтому я не думаю, что ты являешься человеком, обладающим достаточными представлениями о текущем состоянии C++ для того, чтобы предсказывать что-либо про будущее С++. Ничего личного.

AVC>>>А неверные вычисления и их КАТАСТРОФИЧЕСКИЕ РЕЗУЛЬТАТЫ Вас не пугают?

E>>Нет. Я вычислениями не занимаюсь. Кстати, я говорил именно об ошибке выхода за пределы границы массива.

AVC>Вот как? Вы не занимаетесь вычислениями?

AVC>Кажется, Вы полагаете, что вычисления — это только "численные методы"?

Да, в моем понимании вычисления -- это "численные методы" и есть. Во время учебы я специализировался на кафедре Вычислительной Математики и Программирования, поэтому я себе представляю, чем отличается, скажем, расчет ленточных фундаментов методом конечных элементов или распределения температуры по поверхности методом граничных элементов от real-time взаимодействия спецвычислителей радиолокационных станций или формирования подписанного XML. Причем, C/С++ успешно справляется со всеми этими задачами.

E>>Теперь объясни мне, где же я ошибся в определении причины катастрофы? Главное, что исключение возникло там, где его не ждали.


AVC>Главное — что сняли защиту.


Нет, имхо, проблема была в проектировании, в том что было решено использовать оригинальные модули от Ариан 4 в Ариан 5. А уже то, что где-то был выполнен явный каст -- это уже следствие.

Собственно, поэтому мне и не нравятся аргументы типа: "C++ позволяет неявный каст, что плохо. С++ не контролирует выходы за пределы массивов, что плохо. С++ то, С++ се". Все это граничные условия, которые нужно учитывать, используя C++ для решения конкретных задач. Если какое-то из условий не было учтено, то, вероятно, это была ошибка проектирования. А ошибки проектирования страшны для любых языков.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[20]: Что толку в Ада если Ариан 5 все равно упал
От: Cyberax Марс  
Дата: 08.06.05 11:34
Оценка:
AVC wrote:

> AVC>>Говорят, что если петуху отрубить голову, он еще может носиться

> по двору. Вот C++ и носится... А потом бряк — и уже вверх ногами!
> E>К этому высказыванию не мешало бы добавить жирное ИМХО.
> Согласен.
> Но ведь я так и написал: "*я думаю, что*..."
> Поэтому и аргумент Cyberax'а о 5 миллионах Си++программистов — это не
> более, чем "перепись населения"
> в каких-то диких странах.

Тут уже ссылку привели.

> Точно так же сейчас многие еще пишут на Си++, но будущее за модульными

> языками, обеспечивающими безопасность типов.
> Собственно, я защищаю Оберон за то, что это *первый в мире язык
> программирования, обеспечивающий безопасность типов*.

Вранье. Причем наглое. До Оберона была Ада, в которой намного больше
средств контроля за типами, была типизированная scheme, была еще куча
языков, был даже ML.

Оберон появился в конце 80-х, а Ада была еще в 70-х годах. Ее
предшественники — еще раньше.

> При этом, в отличие от Java и C#, это эффективный язык, на котором

> пишут операционные системы.

На Яве тоже пишут операционные системы (причем распространенные больше,
чем BlueBottle).

А уж с ОСами написанными на С лучше BlueBottle даже не сравнивать.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[21]: Что толку в Ада если Ариан 5 все равно упал
От: AVC Россия  
Дата: 08.06.05 22:32
Оценка: 6 (1) :))
Здравствуйте, eao197, Вы писали:

AVC>>>>Говорят, что если петуху отрубить голову, он еще может носиться по двору. Вот C++ и носится... А потом бряк — и уже вверх ногами!

E>>>К этому высказыванию не мешало бы добавить жирное ИМХО.
AVC>>Согласен.
AVC>>Но ведь я так и написал: "я думаю, что..."
E>Здесь хочется придраться к словам
Сначала было сказано:
E>

E>Я думаю, что C++ is dead.

E>И здесь было понятно, что это твое личное мнение. Но уже затем, отдельной строкой:
E>

E>Говорят, что если петуху отрубить голову, он еще может носиться по двору. Вот C++ и носится... А потом бряк — и уже вверх ногами!

E>Вот во второй строке ИМХО бы совершенно не помешал.

В принципе, пассаж про петуха "был задуман" просто как пояснение к предыдущей фразе.
Ведь ясно, что сейчас Си++программистов много. Но вряд ли так будет долго.
Я только хотел сказать, что иногда в действительности не все так, как кажется.
Впрочем, хорошо. Пожалуйста:

ИМХО, если петуху отрубить голову, он еще может, ИМХО, носиться по двору. Вот, ИМХО, C++ и носится... А потом, ИМХО, бряк — и уже вверх ногами!



AVC>>Точно так же сейчас многие еще пишут на Си++, но будущее за модульными языками, обеспечивающими безопасность типов.

E>По этому поводу хочу привести две цитаты Страуструпа отсюда:

E>

E>As ever, it is hard to estimate the number of C++ programmers, but in 2003, the IDC reported well over three million full-time C++ programmers (compared to my estimate of 400,000 in 1991; §D&E7.1), and that’s not an implausible number. I’m not in a position to accurately count, but all the indicators I have, show a steady increase in the use of C++ over the last decade (1995-2004) after the explosive growth of C++’s first decade (1985-1994). I never experienced a year without growth.


E>

E>So what do all of those C++ programmers actually do? What kind of applications do they write and what kind of programming styles do they employ? I don’t know; nobody knows. In the same way as there are too many C++ programmers to count, there are too many different application areas and too many programming styles for any one person to grasp. It is common to hear generalizations along the line “C++ is used like this”. Such statements are typically wishful thinking based on very limited experience. We are playing “blind men and the elephant” with a very large creature. There are people who have read more than a million lines of C++ code, written hundred of thousands of lines of C++, read all the articles in C-vu, C/C++ Users Journal, etc., read all the good C++ books and dozens of the bad ones, read all the academic papers relating to C++, and “lived” on the C++ newsgroups for years. There are not many such people, and even they have only scratched the surface. Such people are usually the last to utter simple generalizations. In fact, I hear the most succinct and confident generalizations (both positive and negative) about C++ from people who have hardly any experience with C++. Ignorance is bliss.


E>Лично меня последняя цитата поразила -- имея более чем тринадцатилетний опыт программирования на C++ для разных платформ я думал, что я могу представить, в каких областях C++ применяется. Но, оказалось, что я даже не представляю себе вершину этого айсберга. Многообразие приложений, которые создавались, создаются, эксплуатируются сейчас и будут разрабатываться в будущем просто невозможно себе представить.

E>Поэтому я не думаю, что ты являешься человеком, обладающим достаточными представлениями о текущем состоянии C++ для того, чтобы предсказывать что-либо про будущее С++. Ничего личного.

Мне нравится фраза о том, что цитата Вас "поразила".
По крайней мере, мне знакомо подобное состояние: когда внезапно что-нибудь по настоящему осознаешь.
Правда, я в этой фразе Страуструпа не увидел ничего особо примечательного.
Чтобы поддержать Ваш торжественный зачин , отвечу примерно так.
Имея почти двадцатилетний опыт программирования на Си и тринадцатилетний (с гаком) опыт программирования на Си++,
опыт создания приложений в самых разных прикладных областях (от вычислительной математики до русского языка),
опыт создания программ, работающих в жестком реальном времени времени, участвуя в создании систем безопасности,
имея теперь уже немалый опыт создания ассемблеров, компиляторов (Си), отладчиков, вообще — систем программирования для новых процессоров, для некоторых из которых я был и первым программистом, не вижу в этой фразе Стауструпа ничего заслуживающего внимания.
Уф!
Напротив, каждый день я вижу, как мучаются эти программисты, многомиллионым количеством которых здесь принято громко хвастаться.
Ведь за консультацией по Си/Си++ они часто приходят ко мне.
Так что вижу я типового программиста на Си++, можно сказать, "без штанов", прямо как специалист по венерическим заболеваниям.
Когда ко мне последний раз пришли с проблемой? Правильно — сегодня!
Толковый парень, решает сложную математическую задачу. Понадобился трехмерный массив заранее не определенной размерности.
Для Оберона это вообще не проблема. И для Java, и для C#. А вот в Си++ (сколько раз я уже об этом повторил на форуме?) нет нормальных массивов.
Может быть, скажете, что надо использовать STL, "зачем изобретать велосипед"?
Да не годится vector STL в качестве велосипеда!
Не дай Бог, забудешь, что вот здесь надо использовать не reserve, а resize, или еще одну из кучи таких же столь любимых "знатоками" "тонкостей". Да, и не забудьте, что писать >> здесь надо через пробел: > >.
И загружать голову огромным количеством подобной фигни для того, чтобы воспользоваться этим "сокровенным" знанием один-два раза в жизни? Абсурд!
И все равно придется писать свой вспомогательный код!
Какой же это велосипед? Это просто цепи на ногах.

AVC>>>>А неверные вычисления и их КАТАСТРОФИЧЕСКИЕ РЕЗУЛЬТАТЫ Вас не пугают?

E>>>Нет. Я вычислениями не занимаюсь. Кстати, я говорил именно об ошибке выхода за пределы границы массива.
AVC>>Вот как? Вы не занимаетесь вычислениями?
AVC>>Кажется, Вы полагаете, что вычисления — это только "численные методы"?
E>Да, в моем понимании вычисления -- это "численные методы" и есть. Во время учебы я специализировался на кафедре Вычислительной Математики и Программирования, поэтому я себе представляю, чем отличается, скажем, расчет ленточных фундаментов методом конечных элементов или распределения температуры по поверхности методом граничных элементов от real-time взаимодействия спецвычислителей радиолокационных станций или формирования подписанного XML. Причем, C/С++ успешно справляется со всеми этими задачами.

Ну, а я закончил факультет Вычислительной Математики и Кибернетики. Кафедра алгоритмических языков.
А насчет вычислений: никуда Вам от них не деться. Даже индекс в массиве Вам приходится вычислять.
А там где вычисления — там и потенциальные ошибки.
Си++ не помогает с ними бороться. Скорее — наоборот.

E>>>Теперь объясни мне, где же я ошибся в определении причины катастрофы? Главное, что исключение возникло там, где его не ждали.

AVC>>Главное — что сняли защиту.
E>Нет, имхо, проблема была в проектировании, в том что было решено использовать оригинальные модули от Ариан 4 в Ариан 5. А уже то, что где-то был выполнен явный каст -- это уже следствие.

Из отчета, ссылку на который дал Cyberax (за что ему отдельное спасибо, хотя не помню, чтобы мы хоть раз совпали во мнениях ), очевидно, что первопричина — в недостаточности вычислительных ресурсов. Соответствующую цитату из отчета я уже приводил.
Если бы с ресурсами было все в порядке, вычисления производились бы с использованием соответствующего типа, а не 16-битного знакового целого; и все преобразования, если бы они потребовались, были бы защищены от подобных исключений.
А так программисты вынуждены были искать, где пожертвовать надежностью.
Ну и нашли...
Кстати, интересно, кто-нибудь задумался, чтобы случилось, если бы вследствие этого выхода за границы диапазона исключения бы не было? Имеем: ракету рядом с земной поверхностью, "руководствующуюся" совершенно неверными данными.

E>Собственно, поэтому мне и не нравятся аргументы типа: "C++ позволяет неявный каст, что плохо. С++ не контролирует выходы за пределы массивов, что плохо. С++ то, С++ се". Все это граничные условия, которые нужно учитывать, используя C++ для решения конкретных задач. Если какое-то из условий не было учтено, то, вероятно, это была ошибка проектирования. А ошибки проектирования страшны для любых языков.


Что верно, то верно.
Но когда я из переменной некоего класса получаю float неявным преобразованием через bool(), что уже само по себе абсурдно, а потом меня еще начинают поучать, что, дескать, это такая "фича" языка, и все просто OK, это — дурдом.
Чтобы там не провещал Страуструп, я еще не разучился различать черное и белое.

Ну вот, я уже почти и не сердит...

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.