Картинка справа - из тбилисского хакспейса f0rthsp4ce
Картинка справа — из тбилисского хакспейса f0rthsp4ce

Неделя соцсетей прошла под спорами о популяризаторше средневековой музыки с помощью выдуманных баек о ней. Но надо сказать что популяризатор, который создает ошибочную картину мира у широких масс — это не такое редкое явление. Иногда в это оказываются вовлечены большие корпорации, например Микрософт. Я конечно же говорю про изданную Микрософтом книгу Чарльза Петзольда «Код».

Вы скажете «но это же старая книга, она был издана еще в 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)


  1. Moog_Prodigy
    29.08.2026 16:39

    Мне кажется это проблема надуманная, вы со стороны как специалист вполне обоснованно критикуете образовательные подходы. Так я и сам могу, я немного в другой плоскости но тоже электронщик. И...ух бы как бы я критиковал книги Борисова или Отряшенкова. В реале я это практикую, но нужно понимать, что критиковать - это одно, а знать как подать материал - это другая планета. Вот я например не знаю. Совсем. Потому что я и мои подходы - они мои, как их вложить в голову другим - это уже заслуга и работа других людей - педагогов, популяризаторов. Вы тоже не стройте из себя универсального, это неблагодарное занятие. Условно говоря академику не нужно обьяснять законы Ома школьнику, а учителю физики из школы будет некомфортно в роли препода в МИФИ.


    1. YuriPanchul Автор
      29.08.2026 16:39

      Потренируюсь в подаче. Например у Петзольда (как и во многих курсах за последние 50+ лет) D-триггер объясняют через SR-защелку, D-защелку, JK-триггер, master-slave итд - у Петзольда на это уходит 30 страниц. Которые местами написаны очень мутно, например пассаж про разницу между level-sensitive и edge-sensitive D-триггер. И потом еще столько же страниц про использование D-защелок и D-триггеров, причем только для банальных действий типа накопления результатов сложения.

      Я объясняю это в 5 пунктов и 5 минут упражнений с платой:

      1. D-триггер - это устройство, которой помнит 1 бит информации в течение 1 такта. Иными словами, минимальный элемент состояния.

      2. Такт - это период тактового сигнала, по английски clock. Clock меняется 0101 с фиксированной частотой.

      3. Запись в D-триггер, через вход D, происходит в начале такта, когда clock меняется с 0 в 1. После записи D-тригер можно читать в любой момент в течение такта - на его выходе Q будет стоять значение записанное в начале такта.

      4. Любые изменения входа D посередине такта будут игнорироваться.

      5. Из смеси комбинационного логики И/ИЛИ/НЕ и D-триггеров можно строить схемы, результат в которых зависит не только от текущих входов, но и предистории. В частности строить выполнятели итеративных алгоритмов.

      Далее каждый ученик получает микросхему CMOS 4013 и уже собранный генератор тактового сигнала на основе микросхемы 555, настроенный на частоту около 0.5 герц (период тактового сигнала около 2 секунд). Он исследует как информация запоминается во внутренее состояние D‑триггера во время положительного фронта тактового сигнала. Вход D с кнопки, CLK выводится на светодиод, Q выводится на светодиод. Ученик видит, что изменения входа внутри такта игнорируются.

      Через 5 минут игры с платой школьник понимает работу D-триггера и может перейти к его использованию, причем не только в счетчиках и сдвиговых регистрах для мигающих огоньков (как это делается в кондовых текущих наборах для школьников), но и в конечных автоматах для распознавания последовательностей и других интересных схемах, вплоть до очередей FIFO и других взрослых микроархитектурных конструкций.

      Обращаю внимание что для моего объяснения функции и использования D-триггера - для него D-защелка итд вообще не нужны. D-защелку нужно показать только через год или два, уже студенту освоившему все микроархитектурные конструкции, когда пойдет речь о трюках для экономии энергопотребления и будет нужен medium-grain clock gater. До этого она только сбивает с толку.


  1. Brak0del
    29.08.2026 16:39

    Поясню, почему так случается. Заметьте, что авторы подобных книг -- программисты/системные программисты/писатели операционных систем.

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

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


  1. qr-kot
    29.08.2026 16:39

    Так а кого читать-то?


  1. 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-триггеры.


    1. YuriPanchul Автор
      29.08.2026 16:39

      Я в этой индустрии с 1995 года, когда я познакомился с верилогом в Mentor Graphics, и я могу сказать совершенно определенно - и альфа, и latch-based design были тогда экзотикой. Работал с такими компаниями как Hitachi в 1998 и дизайном от Motorola в 1999 и там все было d-flip-flop based. В d-latch based дизайне вы теряете половину такта - зачем?