
Неделя соцсетей прошла под спорами о популяризаторше средневековой музыки с помощью выдуманных баек о ней. Но надо сказать что популяризатор, который создает ошибочную картину мира у широких масс — это не такое редкое явление. Иногда в это оказываются вовлечены большие корпорации, например Микрософт. Я конечно же говорю про изданную Микрософтом книгу Чарльза Петзольда «Код».
Вы скажете «но это же старая книга, она был издана еще в 2000 году, зачем откапывать стюардессу». Я так сам думал, пока не увидел на этой же неделе пост бывшего топ‑менеджера Сбербанка с кучей последователей. Топ‑менеджер описывает внеземную радость, которую он испытал, когда понял из книги Петзольда как работает компьютер. Разумеется топ‑менеджер взял AI и не отходя от кассы спроектировал свой 6502 процессор из симулированных AI‑ем транзисторов. На мой коммент про Петзольда товарищ сказал что это неважно потому что Петзольд вызвал у него интерес к теме — точно как защитницы поп‑музыковедки.
В принципе, я не против такого рода интеллектуально‑стимулирующего досуга у взрослых состоявшихся людей — быть против в такой ситуации было бы маразмом. Я против использования такого рода материалов для обучения детей.
Это не абстрактная тревожность — я лично видел случай не так много лет назад, когда менеджерка образовательных программ крупной корпорации дала студенту задание реализовать процессор из Петзольда сначала в симуляции, а потом в FPGA. Мне потом пришлось ему объяснять что его код несинтезируем, и что ему нужно «undo» все «образование» по Петзольду и начать сначала, ну хоть по тому же Харрис & Харрис (хотя и к Харрисам у меня уже накопились претензии, например у них арбитры и FIFO не покрыты).
А менеджерка образовательных программ неназываемой крупной корпорации еще ругалась на меня, что я черствый чурбан и не понимаю, какой Петзолдьд хороший и как его D‑защелки человечнее чем мои D‑триггеры.
Короче вот мой коммент бывшему топ‑менеджеру Сбербанка:
Одна из фич книги Петзольда — он сначала вводит D‑защелки (level‑triggered D‑latch), комбинирует их с сумматорами и только потом вводит D‑триггер (D‑flip‑flop). Что «естественно» для программиста (Петзольд прославился в конце 1980-х как автор книги по программированию Windows), но не соотвествует реальному проектированию в современных электронных компаниях (99%+ элементов состояния — это D‑триггеры, а D‑защелки используются в основном для clock gaters (такая штука для экономии энергопотребления), очень редко для latch arrays и time borrowing (неактуально для новичков).
Какие у вашего процессора элементы состояния — D‑latch или D‑flip‑flop?
Также в картинках у Петзольда еще одна типичная программистская ошибка — плавающий вход (разомкнутый переключатель не означает 0 на входе), правда тут можно отбрыкаться «мы не хотели загромождать картинку».
Вообще книжка Петзольда это ОК для развлечения, но детей по ней учить нельзя — там много сусанинских уводов молодежи в болото. Например рассусоливать адресацию по [HL] в Intel 8080 в 21 веке — это диверсия. Молодежь нужно учить по RISC‑V — он и хорошо конвейеризуется (в том числе в качестве учебного примера) и привязан к актуальным технологиям, в отличие от аккумуляторного 6502 и от 8080.
Комментарии (6)

Brak0del
29.08.2026 16:39Поясню, почему так случается. Заметьте, что авторы подобных книг -- программисты/системные программисты/писатели операционных систем.
Книги типа "Код" Петцольда, "Архитектура компьютера" Танненбаума (которую Вы тоже как-то тут критиковали), как и "Компьютерная архитектура. Количественный подход" Хеннесси и Паттерсона рассчитаны на более широкую аудиторию, чем малочисленные проектировщики цифровых устройств. Эти книги дают перспективу проектировщикам вычислительных систем (программистам, системным программистам и железячникам). Они расширяют контекст студентам-программистам, чтобы те не улетели в облака абстракций, а могли писать hardware-friendly софт и понимали, где в системе узкие места. Такие книжки дают представление, как проектировать эффективный на разных уровнях стек датацентров типа как у NVIDIA, Google, а не отдельные супер-сверх-быстрые GPU. Имхо, с точки зрения программистов тот же Харрис & Харрис слишком сосредоточен на деталях реализации и выцеживать из него общие принципы для программеров -- это пустая трата времени.
По поводу цифрового проектирования и связанных тем, имхо, на постсоветском пространстве есть острый дефицит доступных современных книжек. В этом случае, имхо, надо переводить современные, а не бороться с ветряными мельницами позапрошлых десятилетий. Не переводят наверно потому, что покупателей подобных книжек здесь совсем мало, не окупишь труд. Петцольда оставьте программистам.

Brak0del
29.08.2026 16:39Одна из фич книги Петзольда — он сначала вводит D‑защелки (level‑triggered D‑latch), комбинирует их с сумматорами и только потом вводит D‑триггер (D‑flip‑flop). Что «естественно» для программиста (Петзольд прославился в конце 1980-х как автор книги по программированию Windows), но не соотвествует реальному проектированию в современных электронных компаниях (99%+ элементов состояния — это D‑триггеры, а D‑защелки используются в основном для clock gaters (такая штука для экономии энергопотребления), очень редко для latch arrays и time borrowing (неактуально для новичков).
Вроде в этом утверждении есть логическая ошибка. Книжка не соответствует современным трендам, потому что когда она писалась в 1999-2000, тренды были другими. Поправьте, если ошибаюсь, в конце 90-х самые топовые, высокопроизводительные процессоры (например, DEC Alpha) разрабатывались широко опираясь на D-latch и full custom design. Позже простота разработки и изготовления, развитие EDA и прочие вещи перевесили и со временем все стали использовать D-триггеры.

YuriPanchul Автор
29.08.2026 16:39Я в этой индустрии с 1995 года, когда я познакомился с верилогом в Mentor Graphics, и я могу сказать совершенно определенно - и альфа, и latch-based design были тогда экзотикой. Работал с такими компаниями как Hitachi в 1998 и дизайном от Motorola в 1999 и там все было d-flip-flop based. В d-latch based дизайне вы теряете половину такта - зачем?
Moog_Prodigy
Мне кажется это проблема надуманная, вы со стороны как специалист вполне обоснованно критикуете образовательные подходы. Так я и сам могу, я немного в другой плоскости но тоже электронщик. И...ух бы как бы я критиковал книги Борисова или Отряшенкова. В реале я это практикую, но нужно понимать, что критиковать - это одно, а знать как подать материал - это другая планета. Вот я например не знаю. Совсем. Потому что я и мои подходы - они мои, как их вложить в голову другим - это уже заслуга и работа других людей - педагогов, популяризаторов. Вы тоже не стройте из себя универсального, это неблагодарное занятие. Условно говоря академику не нужно обьяснять законы Ома школьнику, а учителю физики из школы будет некомфортно в роли препода в МИФИ.
YuriPanchul Автор
Потренируюсь в подаче. Например у Петзольда (как и во многих курсах за последние 50+ лет) D-триггер объясняют через SR-защелку, D-защелку, JK-триггер, master-slave итд - у Петзольда на это уходит 30 страниц. Которые местами написаны очень мутно, например пассаж про разницу между level-sensitive и edge-sensitive D-триггер. И потом еще столько же страниц про использование D-защелок и D-триггеров, причем только для банальных действий типа накопления результатов сложения.
Я объясняю это в 5 пунктов и 5 минут упражнений с платой:
D-триггер - это устройство, которой помнит 1 бит информации в течение 1 такта. Иными словами, минимальный элемент состояния.
Такт - это период тактового сигнала, по английски clock. Clock меняется 0101 с фиксированной частотой.
Запись в D-триггер, через вход D, происходит в начале такта, когда clock меняется с 0 в 1. После записи D-тригер можно читать в любой момент в течение такта - на его выходе Q будет стоять значение записанное в начале такта.
Любые изменения входа D посередине такта будут игнорироваться.
Из смеси комбинационного логики И/ИЛИ/НЕ и D-триггеров можно строить схемы, результат в которых зависит не только от текущих входов, но и предистории. В частности строить выполнятели итеративных алгоритмов.
Далее каждый ученик получает микросхему CMOS 4013 и уже собранный генератор тактового сигнала на основе микросхемы 555, настроенный на частоту около 0.5 герц (период тактового сигнала около 2 секунд). Он исследует как информация запоминается во внутренее состояние D‑триггера во время положительного фронта тактового сигнала. Вход D с кнопки, CLK выводится на светодиод, Q выводится на светодиод. Ученик видит, что изменения входа внутри такта игнорируются.
Через 5 минут игры с платой школьник понимает работу D-триггера и может перейти к его использованию, причем не только в счетчиках и сдвиговых регистрах для мигающих огоньков (как это делается в кондовых текущих наборах для школьников), но и в конечных автоматах для распознавания последовательностей и других интересных схемах, вплоть до очередей FIFO и других взрослых микроархитектурных конструкций.
Обращаю внимание что для моего объяснения функции и использования D-триггера - для него D-защелка итд вообще не нужны. D-защелку нужно показать только через год или два, уже студенту освоившему все микроархитектурные конструкции, когда пойдет речь о трюках для экономии энергопотребления и будет нужен medium-grain clock gater. До этого она только сбивает с толку.