?

Log in

про системных программистов - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

про системных программистов [ноя. 17, 2013|01:11 am]
Anatoly Vorobey
[Tags|]

Джеймс Миккенс знает, что почем: The Night Watch.

Всем программистам очень рекомендую. Очень смешно и правдиво.

На фразе

What is despair? I have known it — hear my song. Despair is when you’re debugging a kernel driver and you look at a memory dump and you see that a pointer has a value of 7.

системные программисты начинают смеяться сквозь слезы.

Еще один отрывок:

You might ask, “Why would someone write code in a grotesque language that exposes raw memory addresses? Why not use a modern language with garbage collection and functional programming and free massages after lunch?” Here’s the answer: Pointers are real. They’re what the hardware understands. Somebody has to deal with them. You can’t just place a LISP book on top of an x86 chip and hope that the hardware learns about lambda calculus by osmosis. Denying the existence of pointers is like living in ancient Greece and denying the existence of Krackens and then being confused about why none of your ships ever make it to Morocco, or Ur-Morocco, or whatever Morocco was called back then. Pointers are like Krackens — real, living things that must be dealt with so that polite society can exist.
СсылкаОтветить

Comments:
(Удалённый комментарий)
[User Picture]From: smilga
2013-11-17 12:09 am
Лисп в лисп-машинах знал очень много всего про железо. Что там указатели, он мог, например, прямо загружать микрокод.
(Ответить) (Parent) (Thread)
(Удалённый комментарий)
From: deadracoon
2013-11-17 04:37 am
А интерпретатор-то кому-то надо писать?
Вот об том и речь.
(Ответить) (Parent) (Thread)
(Удалённый комментарий)
From: deadracoon
2013-11-17 05:51 am
А! Я просто прочитал все целиком несколько дней назад, поэтому у меня другой контекст.
Смысл такой что есть кто-то кому приходится заниматься низкоуровневыми вещами и чем лучше становтся инструменты для основной массы программистов, тем больше разрыв в абстракциях, с которыми приходится иметь дело разным категориям разработчиков.
(Ответить) (Parent) (Thread)
[User Picture]From: smilga
2013-11-17 08:29 am
Программисту, естественно, тоже эта функциональность была доступна.
(Ответить) (Parent) (Thread)
[User Picture]From: prosto_tak
2013-11-16 11:45 pm
Very funny. But at least a pointer with value 7 is a clear, obvious error, indicating that somebody is overwriting it. I can think of worse...
(Ответить) (Thread)
[User Picture]From: beldmit
2013-11-17 05:19 pm
It can be a dereferencing of a member of NULL-pointed structure member.
(Ответить) (Parent) (Thread)
[User Picture]From: 0242
2013-11-16 11:50 pm
так дядя старается быть смешным, что даже не смешно
(Ответить) (Thread)
[User Picture]From: orleanz
2013-11-17 12:14 am
а мне при чтении почему-то вспомнились суровые челябинские мужики которые не боялись метеорита.
(Ответить) (Parent) (Thread)
[User Picture]From: oryx_and_crake
2013-11-17 12:01 am
Очень жизненно!
(Ответить) (Thread)
[User Picture]From: dimrub
2013-11-17 05:29 am
Прикольно, да. А говорят, что майкрософт ничего дельного не производит.
(Ответить) (Thread)
[User Picture]From: winpooh
2013-11-17 07:50 am
Ну так уж и ничего? Компилятор C++ у них неплохой получился. Похуже интеловского, конечно...
Ещё мышки вполне на уровне.
(Ответить) (Parent) (Thread)
From: huzhepidarasa
2013-11-17 10:19 am
Компилятор C++ у них худший из популярных, игнорирует стандарт совершенно наглым образом. IDE неплохая, да.
(Ответить) (Parent) (Thread)
А операционная система у них - популярнейшая из худших :)
(Ответить) (Parent) (Thread)
From: huzhepidarasa
2013-11-17 04:09 pm
Ну она не только из худших, она из всех популярнейшая. Наверное, не без причин. Последние версии мне даже где-то в какой-то мере нравятся.
(Ответить) (Parent) (Thread)
Нравится что при вылете одного драйвера ложится вся система и что для установки или обновления приложения (даже не драйвера) необходимо перезагружать систему?
(Ответить) (Parent) (Thread)
From: huzhepidarasa
2013-11-17 06:37 pm
Я не поклонник Виндовз и пользуюсь ей вынужденно, но данные претензии считаю необоснованными.

При вылете одного драйвера не только Виндовз ложится, но и более другая операционная система, которой я предпочитаю пользоваться. Это вообще свойство монолитных ядер, архитектура у них такая.

Что касается перезагрузок при установке приложений, и даже отчасти драйверов, то я их, честно говоря, и не упомню, когда видел. Вот не далее как позавчера убирал драйвер, устанавливал новый драйвер, потом опять новый убирал, старый устанавливал, все без единой перезагрузки. Сервер 2008.

Это не значит, что претензий нет. Их есть у меня в количествах.
(Ответить) (Parent) (Thread)
Плохая значит архитектура. Архитектуру i386 тоже ведь не дураки делали, зачем-то они предусмотрели четыре уровня привилегий.
(Ответить) (Parent) (Thread)
From: huzhepidarasa
2013-11-17 08:04 pm
Архитектура нормальная. Компромисс, как и любое другое решение.

Про i386 я знаю, почему-то никто этими рингами для изоляции компонент ядра не пользуется. Для виртуализации — да, есть такое дело.
(Ответить) (Parent) (Thread)
From: huzhepidarasa
2013-11-17 06:00 am
Никакой ковбойской романтики в поимке беглых указателей нет. Есть достойная печали неспособность отрасли вырасти из пеленок и стать инженерной дисциплиной по сути, а не по названию.
(Ответить) (Thread)
[User Picture]From: cegefbod
2013-11-18 07:21 am
Инженерная дисциплина существует. Но скучно, медленно, дорого, и к Микрософту никакого отношения не имеет.
(Ответить) (Parent) (Thread)
From: huzhepidarasa
2013-11-18 12:10 pm
В каком ВУЗе ее преподают?
(Ответить) (Parent) (Thread)
[User Picture]From: cegefbod
2013-11-18 03:27 pm
Если есть серьёзный проект и нужно набирать выпускников -- я бы набирал EE, то есть "паяльников" и доучивал на месте.
(Ответить) (Parent) (Thread)
From: huzhepidarasa
2013-11-18 04:43 pm
Это и называется «нет такой дисциплины». Может, Вы ее как раз сейчас создаете, ререучивая ЕЕ, я не знаю. Как бы то ни было, меня интересует деятельность, которой занимаются в Майкрософте и Гугле и Оракле и в подобных местах. Тот факт, что в каких-то еще местах, возможно, каие-то неизвестные мне люди таки занимаются реальным инжигирингом, меня не очень греет.
(Ответить) (Parent) (Thread)
[User Picture]From: cegefbod
2013-11-18 06:17 pm
Люди ошибаются. Поэтому создаются процедуры позволяющие обнаруживать и исправлять последствия ошибок. Все эти процедуры применимы и применяются к софту. Так зачем чинить ошибку если пользователь может просто перезагрузить? Для Микрософта, Гугла и Оракла это просто вопрос денег.
(Ответить) (Parent) (Thread)
From: huzhepidarasa
2013-11-19 04:34 am
Это, видимо, замечательные и полезные процедуры, но предмет программирования все-таки не в них. Их можно применить к строительству мостов и космических станций, но у этих отраслей есть и самостоятельное инженерное содержание.
(Ответить) (Parent) (Thread)
[User Picture]From: michaelm1234
2013-11-17 11:16 am
По моему когда указатель смотрит на 7 то все еще здорово; Намного хуже когда сервер падает через семь дней где то там в алокаторе памяти,
Ай ай!
(Ответить) (Thread)
[User Picture]From: _winnie
2013-11-17 11:30 am
7 дней - это замечательно.
За 7 дней у сервер с 128 гигабайтами оперативки может упасть просто потому, что за такое время будут меняться случайные биты в оперативной памяти.

Достаточно сделать шардирование на несколько машин, и перезапускать эти машины раз в сутки.

Вот "падает спустя 20 минут" действительно неприятно для всех (для пользователей, админов, программистов).

Edited at 2013-11-17 11:35 (UTC)
(Ответить) (Parent) (Thread)
[User Picture]From: michaelm1234
2013-11-17 01:08 pm
Мои заказчики считают что перезапуск за сутки это слишком часто; у нас должно все стоять хотя бы в течение недели.

Edited at 2013-11-17 13:09 (UTC)
(Ответить) (Parent) (Thread)
[User Picture]From: cegefbod
2013-11-18 07:12 am
На ECC решили денег не тратить?
(Ответить) (Parent) (Thread)
[User Picture]From: carfagen
2013-11-17 02:08 pm
Loved this:
and free massages after lunch?

Where the f... is mine?! ;-)
(Ответить) (Thread)
From: huzhepidarasa
2013-11-18 12:19 pm
Надо пожаловаться начальству на RSI и carpal tunnel syndrome. Я пожаловался (их есть у меня) и получил свои 6 сеансов бесплатного массажа. Но для этого надо в большой организации работать.
(Ответить) (Parent) (Thread)
[User Picture]From: dimrub
2013-11-17 03:18 pm
Не совсем кернел драйверс, но напомнило:

http://gotchas.livejournal.com/3207.html
http://gotchas.livejournal.com/3534.html
(Ответить) (Thread)
[User Picture]From: gruimed
2013-11-17 04:52 pm
Ха, сколько лет прошло, а до сих пор живо помню как дебаггировал BSP бесконечными циклами.
(Ответить) (Thread)
[User Picture]From: cegefbod
2013-11-18 01:07 am
Забавно

The systems programmer has read the kernel source

а также знает чем симулятор отличается от эмулятора, как читать RTL и кривую документацию на жаргоне понятном только ограниченному числу людей запертых в одной комнате (а вы снаружи), и что бывает если воткнуть JTAG вверх ногами.

Страшная история -- это когда после многих месяцев поисков выясняется что хардверщик воткнул pass gate вместо flip-flop и у нас на руках сотни тысяч экземпляров почти работающих микросхем.

Послать что-ли резюме в микрософт

Edited at 2013-11-18 18:34 (UTC)
(Ответить) (Thread)
From: asox
2013-11-18 06:36 pm
после многих месяцев поисков выясняется что хардверщик воткнул pass gate вместо flip-flop

%))
(Ответить) (Parent) (Thread)
[User Picture]From: cegefbod
2013-11-18 06:52 pm
И представьте себе почти работало, только раз в несколько секунд открывалось из-за паразитных токов и посылало сигнал который никто не ожидал и потому успешно игнорировал... за исключением того редкого случая когда сигнал действительно ждали именно на этом цикле и он приходил чуть раньше чем следует... и все выглядело что как будто какой-то программный компонент затирает память.
(Ответить) (Parent) (Thread)
From: asox
2013-11-18 07:08 pm
Ну дык.
На конечной стадии разработки контроллера в процессе климатических испытаний выяснилось, что в определённых услових контроллер теряет синхронизацию.
Это происходило из-за микросхемы источника питания, которая была выбрана из-за своей дешевизны.
В итоге у нас имеется предсерийная партия в 10 тыс. контроллеров (или 20, забыл %), а у поставщика имеется 100 тыс. плат и подготовленное производство.

Необходимо исправить дефект максимально дешёвым путём при минимальной переделке печатных плат, и восстановлением работоспособности имеющихся контроллеров.

Частично это получается скомпенсировать конденсатором c малым ESR.
К сожалению данная задача не была поставлена перед закупщиками, и они, естественно, купили то, что подешевле.

%))
(Ответить) (Parent) (Thread)
[User Picture]From: p2004r
2013-11-18 12:01 pm
... а что в Марокко был Кракен?
(Ответить) (Thread)
[User Picture]From: cegefbod
2013-11-18 06:44 pm
Кстати о pointers

Был такой язык - Fortran IV, и лет сорок назад все на нем писали и всех на нем учили. И некоторым приходилось писать программы с linked list и рекурсией при том, что язык ни pointers, ни рекурсии не поддерживает, а использовать assembler не позволяет профессиональная гордость.

Да, может они и кракены, но без них гораздо хуже
(Ответить) (Thread)