Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет chistyakov ([info]chistyakov)
@ 2005-06-10 18:14:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Показалось важным про программирование. Выношу из комментов
Из переписки с dottedmag об объектном и прочем неестественном программировании в дискуссии "Компрачикосы от программирования".

Мой личный научно-технический интерес заключается в создании комплексов ДПЛА. Это сложные радиотехнические, авиационные, программные и ещё чёрт-те какие комплексы.
В части программирования меня интересует создание бортовых и наземных программ для таких комплексов. Требуется заставить ЭВМ делать то, что требуется комплексу для решения его целевой задачи. Причём пароль к успеху один-- "надёжность"! (подчеркну, что речь идёт НЕ о персональных компьютерах, которые в комплексах тоже есть, естественно, на рабочих местах операторов в качестве интерфейсных узлов с человеком).

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

ЭВМ --это прежде всего устройство. Мне вовсе не требуется программировать, не зная и не ведая, как это устройство работает. Это для "программистов". Я знаю ЭВМ и использую эти знания.
Я не имею в виду, что нужно программировать в машинных кодах. Отнюдь! Но язык программирования должен соответствовать тому, что и как делает ЭВМ в реальности. А она исполняет программу, команда за командой. Эта главная особенность ЭВМ как устройства наилучшим образом отражается обычными алгоритмическими процедурно-ориентированными языками. Даже языком "Си":)
Паскаль просто лучше для человека. Ведь важнейшая функция программы как текста, про которую почему-то редко вспоминают, -- это абсолютно достоверное документирование структуры самой программы, структуры данных и алгоритма того, что мы проектируем. И эта функция просто неоценима.

Господ "программистов" просят не беспокоиться.

{+}


(Читать комментарии) - (Добавить комментарий)


[info]rocket_surgeon@lj
2005-06-12 00:56 (ссылка)
Еще. Лозунг "что не понимаю, тому не доверяю" может и приведет к созданию "надежных" систем, но закладывает долгосрочный риск. Из за неизбежности конкуренции такая "надежная" система будет вытеснена менее надежными, но более функциональными. Почему. Потому что основной драйв новизны идет от спроса на функциональность, а надежность является просто естественным свойством обретаемым по мере "отгорания" ненадежных компонент (идей, поставщиков, технологий и т.д.) Проследите историю с надежностью Windows. Кто сегодня жалуется на ненадежность ? Единицы (в сравнении с массой недовольных лет 5 назад), да и те - обладатели устаревшего железа и софта.

(Ответить) (Ветвь дискуссии)


[info]ex_chistyak@lj
2005-06-12 03:23 (ссылка)
Надёжность и функциональность не противоречат друг другу. Это раз.
Два. Отлаживать на пользователе -- неэтично.

И три. А если бы компьютер после каждого сбоя взрывался, тогда как, где бы были Виндовс? А зависание программы для ДПЛА -- однозначная катастрофа. Вопрос цены ошибки, да.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]rocket_surgeon@lj
2005-06-12 13:37 (ссылка)
> Надёжность и функциональность не противоречат друг другу. Это раз.
Нет. Пока считаю, что они сильно связаны (с разными знаками) через сложность, как неизбежное зло.
>Два. Отлаживать на пользователе -- неэтично.
Согласен. Но игнорировать проблемы обнаруженые пользователем в поле гораздо неэтичнее. Можете называть патчинг как угодно неэтичным, но не планировать поддержку в слепом убеждении что продукт абсолютен по качеству по крайней мере неразумно.
>И три. А если бы компьютер после каждого сбоя взрывался
В этом случае надежность бы просто росла гораздо быстрее (от версии к версии), но в итоге достигла бы уровня не намного выше чем в обычном случае.

Сложность - это всегда безобразие. Не думайте что "программисты" так легко соглашаются на усложнение своих продуктов добавлением новых или сменой привычных слоев новыми. В современном дизайне в любой области от карманных сотовых органайзеров до атомных реакторов всегда есть проблема как определить направление "хорошо"/"плохо". В 100% случаев и без исключения побеждает "дешево". В случае с software "дешево", значит сложно, поскольку есть рынок готовых компонент. Да есть исключения, как например в вашей теме с роботами, где объем кода достаточно обозрим и возникает соблазн вести полностью авторизованый дезайн. Прекрасно если этот случай счастливо избежит 3rd party компоненты или неверифицируемые источники. И этот случай вовсе не показателен для проблемы сложности. Те кто строит свой продукт используя гигабайтные код-базы просто позавидует и не найдет в этом опыте ничего полезного.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ex_chistyak@lj
2005-06-12 15:17 (ссылка)
>...Те кто строит свой продукт используя гигабайтные код-базы

Пусть строят. Любой объём можно свести к простоте путём структурирования. Спасибо за советы.

А если бы компьютеры взрывались из-за сбоев, то никаких бы Виндовс не было. Никто бы не стал связываться:)

(Ответить) (Уровень выше)


[info]edtech@lj
2005-06-12 08:54 (ссылка)
Я утверждаю, что Windows сейчас является очень ненадёжной системой. Она не умеет нормально распределять память, управлять процессами, даже основные функции ядра в ней реализованы очень криво. Потому что занимаются разработкой этой ОС те самые "программисты".

Если Вы — обычный пользователь, то Windows для вас может быть надёжна, но спросите у математиков, под какими ОС они работают, сами убедитесь.

(Ответить) (Уровень выше) (Ветвь дискуссии)

гы гы гы
[info]tkatchev@lj
2005-06-12 12:58 (ссылка)
Только не говорите про Юникс, это сведет уровень общения с вами до планки цырка с конями.

(Ответить) (Уровень выше)


[info]rocket_surgeon@lj
2005-06-12 14:02 (ссылка)
Если Вы про что-то специальное, малотиражное, в керамических корпусах с золотыми ножками и подписями сборщиц на каждой веревочке, то это менее надежно и обычно менее сложно чем какой-нибудь копеечный калькулятор. Было замечено годах в 90-х например что в Японии новые дизайны чипов идут в массовый тираж для каких-нибудь игрушек и утюгов, а потом в авионику и др. специальные места, а в штатах сначала для военных, а потом в массовый тираж. Преимущество по качеству оказалось у японцев. По этой причине я уверен, что в какой-нибудь QNX для атомных реакторов концентрация багов удельно на инструкцию CPU выше чем в Windows.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]edtech@lj
2005-06-12 14:29 (ссылка)
Вы знаете, я периодически работаю с QNX, поэтому много знаю о ядре этой ОС.
Это качественное, хорошо отлаженное ядро, которое не содержит выявленных ошибок. Да, микроядро отладить гораздо проще. В плане удельной концентрации багов я считаю, что у QNX она равна нулю. По крайней мере ей я абсолютно доверяю.

Если сравнивать Windows и Unix-подобные системы, то последние, опять таки гораздо надёжнее, если правильно скомпилировать ядро. И поверьте мне, как человеку, копавшемуся с ядром Линукса и нашедшим в нём ошибки, ядро Windows не идёт ни в какое сравнение с UNIX.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]rocket_surgeon@lj
2005-06-12 18:45 (ссылка)
Мой критерий - цена и распространенность, поэтому продукция Microsoft с инженерной точки зрения в том числе рулит. Вера в QNX без source code - не больше чем вера, подкрепленная замечательным маркетингом компании QNX. У меня такое же было отношение к Novell в свое время, не без участия маркетинговых первопроходцев этой фирмы, пришедших в Россию в числе самых первых. Но приведись мне делать что-то в математике ничего лучше Windows и не надо.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]edtech@lj
2005-06-13 06:46 (ссылка)
По поводу критериев:
В математическом сообществе Windows практически не распространён, в основном там используется Linux, по причине хорошей переносимости программ на разные архитектуры. По поводу цены Linux вне конкуренции.

Среди разработчиков встраиваемых систем ОС Windows embedded практически не используется (хотя стоит отметить большой шаг Microsoft вперед в этом направлении). Либо это опять же QNX, который, например, в Штатах повсеместно управляет светофорами, ядерными станциями и наземными службами аэродромов, либо Embedded Linux, либо, чаще всего собственные разработки. Стоимость QNX, конечно, немаленькая, но, поверьте, команда программистов с зарплатами миллион долларов в год уж могут и написать 40 килобайт чистого и безошибочного кода.

По поводу Windows: говорю же, многие вещи там реализованы вообще непонятно по каким принципам, и я очень сомневаюсь в квалификации тех людей, которые это делали. Поэтому на данном этапе развития компании большинство разработанных ей технологий, в том числе и Windows XP/2003, я считаю попросту несерьёзными.

(Ответить) (Уровень выше)


(Читать комментарии) -