wizzard: (Default)
[personal profile] wizzard

There is no such thing.

It’s a trade-off. Even in computers, there is no such thing as perfectly reliable code, there’s only how much resources you’re willing to pay for the next improvements. It’s easy to be oblivious to this. I can’t even count the number of times said some variation of “OK, now I know it works” before I learned that it will always break. Always.

Failure is inevitable. If you want to build anything large and to last, you have to incorporate it into your design and build organic systems that monitor, recover, repair, and, above all, fail gracefully when they themselves inevitably fail.

Holy Grail этот самый, короче, достижим только в случае неизменного окружения, неизменного ТЗ и исключения человеческого фактора. Чего в природе не бывает.

Date: 2010-08-10 03:39 pm (UTC)
From: [identity profile] gds.livejournal.com
ну нет же, есть perfectly reliable code, например, полученный экстракцией из доказательства.
А типизация -- это минимальные гарантии. Если типизация не вызывает проблем, то лучше иметь эти гарантии, чем не иметь.
Она позволяет легко делать простой рефакторинг ещё, например, тогда как в случае динамической типизации это нереально (там транслятор не знает о типах, поэтому не может помочь при изменении типа данных; я часто делаю рефакторинг, меняя типы, и ничего не ломается по определению).
Ещё одно клёвое свойство статической типизации состоит в том, что ей покрыт весь код, тогда как в случае динамической типизации необходимо принимать меры к тому, чтобы тестирование/рефакторинг покрывало весь код.

Date: 2010-08-10 03:42 pm (UTC)
From: [identity profile] gds.livejournal.com
во, кстати да, совершенно независимым образом эта мысль впервые посещала меня пару дней назад. Конечно, ничего хорошего не придумал, но забавное совпадение.

Date: 2010-08-10 03:58 pm (UTC)
From: [identity profile] xplozive.livejournal.com
В XCode, кстати, недавно добавили инструмент для статического анализа Objective-C кода. Довольно умная штука, реально дохуя багов в production-коде нашло. Насколько помню, базируется на каком-то доказателе теорем.

Date: 2010-08-10 04:35 pm (UTC)
From: [identity profile] vkorenev.livejournal.com
Инженерные конструкции можно рассчитывать на прочность, а можно строить на глазок. Динамическая типизация, ИМХО, аналог строительства на глазок: быстро и очень даже уместно, когда надо сарай построить. А авиалайнеры хорошо бы всё-таки рассчитывать на прочность.

Date: 2010-08-10 09:22 pm (UTC)
From: [identity profile] antonix.livejournal.com
Резервные системы ставятся для подстраховки от внешних факторов, а не от ошибок в самой системе. Например если молния жахнула, из за чего случился отказ основного компьютера. Тогда резервная система спасёт. А если в программе баг, то резервная система не поможет.

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

Date: 2010-08-10 09:27 pm (UTC)
From: [identity profile] vkorenev.livejournal.com
Пойнт статьи в том, что сколько не резервируй, а катапультируемое сидение лучше поставить, да и завещание написать.

Date: 2010-08-10 07:44 pm (UTC)
From: [identity profile] aka-rider.livejournal.com
Эм. Ну что сказать? Мой софт работает, просто работает. Но согласно SLA, а я в своей жизни не видел SLA на 100% availability.
И если это софт кардиостимулятора, чем плох static verification, который гарантированно повысит надежность кода?
Лично я за виртуализацию и sandboxing, и я против JIT. Благо по вычислительной мощности у программистов большой запас, просто сейчас она утилизируется восновном на RAD.

Date: 2010-08-10 07:51 pm (UTC)
From: [identity profile] aka-rider.livejournal.com
JIT - потенциально наиболее узкое место в безопасности виртуальной машины, багов в среднем должно быть больше, чем в других местах. А еще JIT усложняет жизнь механизмам защиты OS и антивирусам.

Date: 2010-08-10 08:00 pm (UTC)
From: [identity profile] aka-rider.livejournal.com
>OS->VM->OS->browser->browser JS
А движемся как раз в эту сторону. Исходя из того, что все крупные абстракции текут, тот самый browser JS будет позволять выполнить native код на ring0 :)

Date: 2010-08-10 08:13 pm (UTC)
From: [identity profile] aka-rider.livejournal.com
Это интересно, от 7-ки не ожидал, там же часть с аппаратным ускорением вынесена из ядра.
Кстати, неплохо было бы в MS те самые swf'ки заслать, у них приоритет багов от пользователей выше, чем от штатных тестировщиков. Так что больше шансов что поправят.

Date: 2010-08-10 08:28 pm (UTC)
From: [identity profile] aka-rider.livejournal.com
А, ну да.
Ну Семен писал, что раньше еще веселее было, пока DX инфраструктура в ядре крутилась. То есть компилятор шейдеров, как пример.

Хех, все никак времени нет minix3 расколупать (драйверы устройств в user-space) и почитать Татенбаума вдумчиво. А там глядишь - свой Болгенос напишу.

Date: 2010-08-10 07:57 pm (UTC)
From: [identity profile] aka-rider.livejournal.com
Хотя, я все-таки не совсем правильно выразился. Я не против JIT в JVM/.NET (у них все-таки задачи другие), но меня сильно беспокоит его наличие скажем в браузере.

Date: 2010-08-10 08:10 pm (UTC)
From: [identity profile] aka-rider.livejournal.com
Это логично, сразу же вспомнил: На что был похож код в Imaging
Навскидку можно сказать, что интерпретаторы с JIT еще более дырявые :)))

Date: 2010-08-11 06:09 am (UTC)
From: [identity profile] thedeemon.livejournal.com
В Flash Player 9 и 10 уже давно JIT.

Profile

wizzard: (Default)
wizzard

January 2019

S M T W T F S
  12 345
6789101112
1314 1516171819
202122 23242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 15th, 2025 07:03 am
Powered by Dreamwidth Studios