Monday, April 20th, 2015 19:19
— Девушки, ещё раз напоминаю: не надо спрашивать у клиента, что у него стоит, надо спрашивать «Какое программное обеспечение у Вас установлено?»
Инструктаж в телефонном центре техподдержки.

Смотрю презентацию продукта, в разработке которого мне придётся участвовать. В презентации попались интересные сведения:

  • Авионика самолёта F-22 Raptor содержит 1,7 миллионов строк кода. А F-35 Joint Strike Fighter — почти 10 миллионов строк кода. Это примерно размер операционной системы из тех, что попроще, — какой-нибудь FreeBSD или Windows NT.
  • Обычный кардиоводитель содержит программу размером в 80 тысяч строк кода. Я-то думал, что там вообще программы нет, голая электроника с кварцевым осциллятором. Оказывается, есть. «Скачай себе в кардиоводитель прикольный рингтон!..»
  • В любом современном автомобиле около 100 миллионов строк кода. Для сравнения, в Windows XP было всего 45 миллионов строк кода.
    Двумя пунктами выше я говорил про самолёты. Может создаться впечатление, что в самолёте в 10 раз меньше программ, чем в автомобиле. Это превратное впечатление. Выше речь идёт только об авионике, то есть только о бортовом радиоэлектронном оборудовании. Есть ещё системы вооружения, которые являются совершенно отдельным шедевром программирования (по нажатию кнопки «Огонь» система сама выбирает тип вооружения, осуществляет прицеливание, наведение, выстрел и сопровождение цели с активным противодействием её защитным манёврам вплоть до поражения цели). А есть ещё системы индикации и управления в шлеме пилота, это ещё один совершенно независимый аппаратно-программный комплекс, который тоже является шедевром. Фактически, авионика — это лишь малая часть того, что есть в самолёте.
  • В тяжёлой индустрии 90% всех инноваций последних лет — результат обновлений программного обеспечения. В медицине и в медицинских устройствах 70% прогресса — следствие изменений программного обеспечения.

Просто удивительно, насколько глубоко проникли программы в нашу жизнь. Кардиоводители с компьютером внутри! Автомобили, в которых столько же кода, сколько в двух операционных системах, — в каждом автомобиле!

Чтобы написать операционную систему уровня Windows XP с нуля, нужно пять-семь лет работы группы из нескольких сотен весьма мощных специалистов. За те же пять лет механическую часть автомобиля создаёт с нуля группа из двух-трёх десятков дизайнеров, механиков и техников. Получается, что доля труда программистов в современном автомобиле в десяток раз выше, чем доля труда всех остальных. (И это на самом деле так — в той же презентации говорилось, что в современной тяжёлой промышленности количество всех железячников как минимум впятеро меньше числа программистов).

Это удивительный вывод. Получается, что автомобиль ездит не столько потому, что кто-то придал куску металла форму корпуса, поставил внутрь двигатель, приделал к нему колёса и сиденья, а в большей степени потому, что кто-то сидел и дённо и нощно колотил по клавишам.

Получается, что автомобиль, как минимум по трудозатратам, — это на девять десятых программный продукт. Девять десятых от машины — результат работы таких психов, как я. И только одна десятая — железо, пластик и стекло, которые возят наши тушки. Получается, что правильнее представлять себе автомобиль не в виде железяки, в которой где-то внутри спрятан маловажный компьютер, занимающийся своим малопонятным делом, а в виде мощного компьютера (если быть точным — сети из около пяти десятков компьютеров), которые выполняют львиную долю работы, и которые подают сигналы на всякие маловажные детальки типа колёс и руля…

Это же в корне меняет всё мировоззрение! Я думал, что мы ездим на железе. А оказывается, мы ездим прежде всего на программах, а железо — это так, ерунда, мелкое периферийное устройство.

А ведь я ещё помню время, когда самой сложной электронной деталью в автомобиле была радиола…

Monday, April 20th, 2015 16:47 (UTC)

Ничего не понимаю, я гуманитарий

Monday, April 20th, 2015 20:58 (UTC)
Вот тут для гуманитариев рассказал поподробнее.
Monday, April 20th, 2015 17:49 (UTC)
Причём в инновационных обеспечениях обязательно есть закладки.
Monday, April 20th, 2015 20:57 (UTC)
Обычно — нет. Я совершенно точно это знаю, я работал в нескольких фирмах и в нескольких проектах, и видел исходный код целой кучи продуктов. С закладками не сталкивался ни разу. Были симуляции исправленных багов для особо крутых клиентов, типа как в Windows 2000 симулировался баг, которым пользовался дебаггер Borland, но именно закладок — не видел.
Tuesday, April 21st, 2015 03:44 (UTC)
Люди зачастую сталкиваются в станках. Впрочем, сейчас, когда обычно есть дистанционное управление, можно и через него.
Monday, April 20th, 2015 19:30 (UTC)
Так в чем фишка? Это новый продукт обещает заметно уменьшить количество строчек кода. Или заранее предупреждает что там будет всё намного хуже, чтобы программисты не пугались.
Monday, April 20th, 2015 20:59 (UTC)
Это Lifecycle Management Solution. Строчек кода будет столько же, но в них будет проще ориентироваться.
Monday, April 20th, 2015 20:12 (UTC)
Как все сложно) То есть мне, человеку, которого ставит в тупик фраза "вставьте строку в код страницы", приходится чувствовать себя буквально безграмотной.
Monday, April 20th, 2015 21:07 (UTC)
Я вот тут пояснил для гуманитариев :)
Monday, April 20th, 2015 20:18 (UTC)
По последнему абзацу.. Beckhoff лет 5 назад любили пример, что в результатае апгрейда софта линии по производству пластиковых бутылок, пластика стало уходить на треть меньше. Причем в апгрейде не было новой функциональности - только оптимизация софта.
Monday, April 20th, 2015 21:00 (UTC)
Да, я сегодня в лекции видел пример, как оптимизация кода улучшила конечный результат на 97% :) Но детали про этот пример выкладывать не могу, — NDA.
Monday, April 20th, 2015 20:25 (UTC)
Мало что поняла, но звучит как выдача гос. секретов :))
Monday, April 20th, 2015 20:39 (UTC)
Нет, это не секретные сведения :) Просто удивительно, насколько глубоко проникли программы в нашу жизнь. Кардиоводители с компьютером внутри! Автомобили, в которых столько же кода, сколько в двух операционных системах, — в каждом автомобиле!

Чтобы написать операционную систему уровня Windows XP с нуля, нужно пять-семь лет работы группы из нескольких сотен весьма мощных специалистов. За те же пять лет механическую часть автомобиля создаёт с нуля группа из двух-трёх десятков дизайнеров, механиков и техников. Получается, что доля труда программистов в современном автомобиле в десяток раз выше, чем доля труда всех остальных. (И это на самом деле так — в той же презентации говорилось, что в современной тяжёлой промышленности количество всех железячников как минимум впятеро меньше числа программистов).

Это удивительный вывод. Получается, что автомобиль ездит не столько потому, что кто-то придал куску металла форму корпуса, поставил внутрь двигатель, приделал к нему колёса и сиденья, а в большей степени потому, что кто-то сидел и дённо и нощно колотил по клавишам.

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

Это же в корне меняет всё мировоззрение! Я думал, что мы ездим на железе. А оказывается, мы ездим прежде всего на программах, а железо — это так, ерунда, мелкое периферийное устройство.

А ведь я ещё помню время, когда самой сложной электронной деталью в автомобиле была радиола.
Edited Apr. 20th, 2015 21:16 (UTC)
Tuesday, April 21st, 2015 04:37 (UTC)

Ого. Интересные наблюдения!

Tuesday, April 21st, 2015 06:42 (UTC)
Вот и я так подумал.
Tuesday, April 21st, 2015 07:56 (UTC)
А чем именно ты в программировании занимаешься? Просто любопытно.
Tuesday, April 21st, 2015 21:00 (UTC)
Я занимаюсь программированием с 2002 года, ещё когда был зелёным студентом (меня взяли в IBM после первого семестра учёбы). С тех пор участвовал в семи крупных проектах. Из самого значительного:

* Дисковые сервера. Это такая штука размером с холодильник и весом в тонну. На ней хранится дофига данных (скажем, вся информация разветвлённой сети магазинов типа IKEA: каталог продукции, склады, поставщики, транспортировка, точки продажи, баланс, кадры, оптовые и мелкооптовые покупатели и всё остальное).

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

* Я разрабатывал анализатор данных, которыми обменивается компьютер с внешним миром. Очень быстрая программа, которая проверяет всю информацию, входящую в компьютер и покидающую его. Вся информация проверяется на наличие угроз безопасности, и если есть угроза, информация блокируется. В результате мы можем остановить атаку на компьютер пользователя и защитить его. Этот проект вошёл в Microsoft Security Essentials, Windows Defender и в несколько других защитных программ. Если у тебя Windows Vista или более новый, то наше с тобой общение проходит через написанную мной программу как минимум дважды: при переходе между твоим компьютером и Интернетом и при переходе между Интернетом и моим компьютером (у меня Windows 8).

Ещё немного я рассказывал об этом проекте тут. :)

* Последний проект — разработка системы графического дизайна. В ней создают самолёты, автомобили, сотовые телефоны, конструкторы Lego и тысячи других вещей. Я помогал выпустить три новых версии этой программы. Я сейчас езжу на автомобиле, каждая деталь которого до последнего болтика была нарисована в программе, которую я писал. Дизайн последнего подаренного мной Шеле украшения тоже был создан в ней, (я, пользуясь служебным положением, видел эскизы).
Edited Apr. 21st, 2015 21:01 (UTC)
Wednesday, April 22nd, 2015 04:36 (UTC)
Очень круто. И интересно. У меня windows 7, 8-ку мой ноут не потянет.
У меня парень сейчас хочет попробовать себя в программировании - точнее сначала верстке и php. Хочет попасть на стажировку в местную компанию. А я за него волнуюсь.
Уже же не студент, чтобы начинать.
Wednesday, April 22nd, 2015 07:15 (UTC)
У 8-ки требования такие же, как у 7-ки, и на том же железе она немножко быстрее. Но в июле выходит Windows 10 с такими же требованиями, так что можешь уже подождать...

PHP и вёрстка - это не программирование :) Точнее, это веб-программирование, которое к настоящему программированию имеет весьма далёкое отношение. Я вот здесь объяснял разницу. Настоящее программирование кончается на прикладниках. Веб-программирование оплачивается хуже, чем прикладное, и конкуренция в нём выше.
Edited Apr. 22nd, 2015 07:16 (UTC)
Wednesday, April 22nd, 2015 07:18 (UTC)
Угу, я уже тоже поняла, что немного не то ляпнула)
Но он вот сначала здесь хочет попытаться. Будем надеяться. Пусть учится)

А 8, 10 мне ни к чему) Я на ноуте использую ворд и интернет))) Хотя вроде бы 7-ку уже перестали поддерживать. Может, и придется.
Wednesday, April 22nd, 2015 07:20 (UTC)
А насчёт "уже не студент" - это совсем неважно. Начинать можно в любом возрасте, было бы желание. Мой начальник учил физику, получил магистра наук, а в 40 его переклинило, и он стал крутейшим программистом. Мой предыдущий начальник, человек, который изобрёл и запатентовал BitLocker, был военным пилотом армии США и в 1991-м бомбил Ирак. Подписал контракт, отслужил его, и только потом пошёл в программирование. Начинать можно в любом возрасте, никаких пределов нет.
Wednesday, April 22nd, 2015 07:35 (UTC)
Твои рассказы внушают надежду.
На самом деле он не глуп, думаю, у него может получиться. Только потребуется некоторое время.

Плохо, когда поздно определяешься с тем, в какую сторону двигаться и развиваться. Я вот тоже зачем-то технический ВУЗ окончила - хотя чувствовала, что это не мое.
Wednesday, April 22nd, 2015 07:53 (UTC)
Технический вуз хорош тем, что прививает методику для самостоятельного обучения. После технического вуза можно спокойно учить хоть философию, хоть театральное искусство.
Wednesday, April 22nd, 2015 07:58 (UTC)
Это да.
Думаю, моя любовь к четкому плану, привычка составлять план главы именно отсюда)
Tuesday, April 21st, 2015 13:30 (UTC)
Ничего, в мире еще остались "механические" автомобили, без компьютерного блока управления.
Tuesday, April 21st, 2015 15:09 (UTC)
Да, пока ещё остались. Слава Богу, скоро они рассыпятся от старости. Даже в индийских микромобильчиках теперь есть компьютерные блоки управления.
Friday, May 15th, 2015 05:54 (UTC)
Только меня волнует, что когда-нибудь мой автомобильчик меня не послушается и поедет туда, куда сам захочет?
Friday, May 15th, 2015 14:58 (UTC)
Значит, ему туда нужнее! :)
Friday, May 15th, 2015 20:09 (UTC)
Даже не возразишь, что я главнее. Потому что не факт.)
Friday, May 15th, 2015 23:16 (UTC)
Всё верно. :)