И где же возражение? Я нигде не написал, что надо выучить 100500 тонн теории до того, как зажечь светодиод. Более того, я многократно повторил: действительно необходимую теорию можно дать буквально за один-два часа! Просто детей среднего школьного возраста нужно учить не тупо собирать по схеме, а понимать на базовом уровне, почему и для чего что-то там нужно -- ну а автор предлагает выкинуть вообще всё, что не нужно для реализации логики на HDL (именно так! поскольку для полноценной реализации логики на рассыпухе надо иметь определённые познания об этой самой рассыпухе, голой логики здесь недостаточно -- если речь идёт, конечно, о понимании, а не механическом повторении).
А потом у них всё будет гореть, перемыкать и т.д. и т.п., как тут выше уже писали. Потому что кто-то решил сэкономить пару-тройку часов на изложение основ.
Я бы тоже предпочёл доверить профессионалу -- хотя б потому, что я слепой. Но:
иногда надо сделать вотпрямща, а пригласить специалиста по каким-то причинам невозможно;
а эти специалисты есть? Если ко мне придёт условный узбек, могу ли я рассчитывать на то, что он сам проложит мне достаточно толстый провод, чтобы мои 100500 компутеров не вызвали его недопустимый нагрев? Я вот сильно не уверен, что он всё сделает правильно, и предпочту сначала сам посчитать, провод какого сечения мне необходим, а затем, возможно, и купить его самому.
Зачем например тратить целое занятие на карты Карно? Они устарели еще в 1960-е годы, а потом оптимизация в Espresso logic optimizer в 1980-е вообще сделала ручную оптимизацию ненужной
Ну а зачем в школе учат умножение/деление в столбик? В реальной жизни считают на калькуляторах и компутерах. Да и писать ручкой или карандашом учиться тоже особо не требуется: в реальной жизни давно уже сплошь компьютеры.
Но ладно, выкинем и JK-триггеры, и карты Карно -- сократим несколько учебных часов. Хватит их на нормальную практику? Нифига не хватит. Я предлагаю полностью выкинуть абсолютно весь курс высшей математики -- ведь в 95% реальной работы она совершенно не нужна. Вот такое решение абсолютно точно освободит уйму часов для практических занятий.
Я знаю, что AXI -- синхронная, и с назначением сигналов тоже знаком, хотя полностью в голове это не держу: всё ж мне это нужно эпизодически, когда я в очередной раз лезу что-то ковырять на плисине.
Ну и ни с какими шинами я AXI напрямую не сравниваю, я лишь говорю, что опыт с другими шинами, в т.ч. древними, помогает и здесь. Вы вот, например, написали, что
данные возвращаемые не в порядке запросов (out-of-order read с тэгами)
и это создаёт у молодёжи проблемы. Ну а я сразу вспомнил допотопный, ещё из первой половины 1960-х, интерфейс ввода-вывода Системы 360: на мультиплексном канале висит много устройств, и все они могут работать параллельно, а канал по их запросам переключается между ними, используя "тэг" в виде адреса устройства, который устройство, запросившее обслуживание, ему выдаёт. И ход, и завершение операций ввода-вывода там могут быть в произвольном порядке; "рукопожатия" тоже есть -- только они асинхронные, без всякого клока (канал выдал некий управляющий сигнал -- устройство должно ответить одним из своих сигналов, ну и наоборот). Ну а поскольку я со всем этим в своё время познакомился, то, увидев про сию возможность у AXI, я ничуть не удивился, и никаких сложностей типа "а как это можно сделать?" у меня не возникает, хотя ведь очевидно, что AXI и тот интерфейс -- вещи абсолютно разные. (А, ещё его можно считать "двухканальным": как и в современных шинах, там нет двунаправленных линий, типичных для шин 70-80-х годов).
Естественно, это не значит, что современным студентам стоит изучать тот интерфейс или, скажем, ISA, но вот считать подобные древние знания бесполезными в наши дни тоже было бы опрометчиво.
И по нагрузочной способности могут быть проблемы (в статике-то потребление у входов близко к нулю, а вот в момент переключения... хотя столь жёстких ограничений, как в ТТЛ, у КМОП, конечно, нет), и ёмкость кучи входов может привести к слишком медленному изменению сигнала.
Ну, с этим-то я согласен :) Но мне тут ещё одна мысль в голову пришла.
Если бы Вы вели, скажем, некий спецкурс в университете, а Вашими слушателями были бы студенты, условно говоря, 3-го курса, Вы были бы полностью вправе полагаться на то, что элементарную физику (на уровне достаточно грамотного использования реальных цифровых микросхем, хотя и не проектирования их из транзисторов) они знают, про подтяжки или там токоограничители тоже в курсе, с цифровой электроникой знакомы, ну и т.д. Более того, если студент пришёл на Ваш спецкурс по современному процессорному микроархитектурному вериложеству, то Вы точно знаете, что именно эта тема его и интересует: это уже взрослый человек, более-менее знающий, чем он хочет в будущем заниматься.
Однако со школьниками ситуация совсем другая. У них ещё нет более-менее сформировавшихся интересов, а начальный уровень знаний может быть крайне невелик. Они, вполне может быть, крайне смутно представляют, что такое этот ваш процессор вообще. Поэтому Вам в любом случае надо давать им сначала базовую цифровую электронику на рассыпухе -- что Вы, собственно говоря, и делаете. Но, с одной стороны, это реальные микросхемы, накладывающие реальные физические ограничения -- это не HDL, где все такие подробности скрыты от разработчика; соответственно, некоторые элементарные сведения сообщить было бы, по меньшей мере, разумно (типа того, что нельзя на один выход цеплять 100500 входов или что логические уровни 1 и 0 могут иметь разные физические напряжения, поэтому не всегда можно напрямую соединить железку А с железкой Б); сюда входят и пресловутые резисторы, и даже генератор на 555 -- причём всё это "на пальцах" можно за одно занятие объяснить, если не пытаться лезть в дебри с дифурами (вот, глядите: ставим конденсатор ёмкости N -- светодиод мигает часто, ёмкости 2*N -- примерно в два раза медленнее; это из-за того, что для переключения конденсатор должен зарядиться/разрядиться, а скорость сего процесса зависит, внезапно, от ёмкости конденсатора и от тока, который пропускает резистор -- представьте себе бочку, в которую наливают воду или откачивают через трубу определённого диаметра; но глубже мы с вами это разбирать не будем, потому что это так называемая аналоговая электроника, а наш предмет -- цифровая, и от аналоговой нам нужны лишь самые базовые вещи типа вот этого "магического" генератора сигналов на 555, ну а кто хочет поподробней именно про это -- почитайте для начала книжку такую-то).
С другой стороны, нельзя сказать: вот элемент И, он работает так-то, вот элемент ИЛИ, он работает сяк-то, вот Д-триггер -- а теперь сделайте мне из них ФИФО. Нужна куча промежуточных ступеней с достаточно простыми задачами, которые реально решить в пределах одного занятия (особенно если школьники ещё достаточно мелкие -- это у великовозрастных мотивации может оказаться достаточно для нескольких занятий без получения ощутимого и очевидного результата, "малышам" же для поддержания интереса результаты нужны быстро; в общем, между 16 и 12 годами разница в подобном весьма велика, хотя в интеллекте как таковом её уже практически нет -- в отличие от 12 и 8). Соответственно, могут возникать задачи вроде "а сделайте-ка из логики и триггеров счётчик", "а теперь сделайте реверсивный счётчик" и т.д. -- а, как Вы наверняка знаете, "в древности" подобное нередко делалось на тех самых JK-триггерах, т.е. и они не являются бесполезными на уровне освоения "физической схемотехники" (а не HDL), хотя вполне можно решить те же задачи и на Д-триггерах.
Ну и, наконец, любые подобные занятия для ребёнка -- это пока ещё "общее развитие", а не узкопрофессиональное обучение (в отличие от студента-старшекурсника), а соответственно, здесь нужна не столько глубина, сколько ширина. Тут больше цель -- заинтересовать техникой вообще, показать возможные направления развития (а не сидения в зомбочатиках), а не сделать из ребёнка супер-пупер-профессионального разработчика суперскалярных процов.
Тут я больше к тому, что профессиональные программисты тоже вынуждены иногда идиотизмом заниматься -- пусть и из-за идиотизма платформы, которую должны по той или иной причине использовать. Но, с другой стороны, и на МК опрос иногда проще и лучше. Скажем, был у меня другой прибор, где всё крутилось в главном цикле (задача простая, лепить туда какую-нить недоОСРВ смысла никакого). Оказалось, что мне проще проверять факт нажатия кнопок именно обычным опросом в рамках главного цикла, не делать прерывания по их нажатию (а вот обмен данными по UART и SPI был уже с использованием прерываний).
Подтяжки объясняются за 5 минут. Настоящий UART требует, конечно, куда больше времени, но оно отнюдь не впустую уйдёт, в том числе и для HDLщика. Вы вот заранее знаете, чем ребёнку в будущем заниматься придётся? Может, он будет не процессорное ядро проектировать, а периферию для SoC?
С другой стороны, я, ни разу не являясь электронщиком как таковым (HDL для меня вообще хобби), с этой самой AXI по спецификации разобрался за полдня, хотя до неё из более-менее современных шин знакомился только с AHB (зато, естественно, знаю всякую древнюю асинхронщину -- хоть DECовский Unibus, хоть вообще классический интерфейс ввода-вывода Системы 360, и уж тем более всякие там ISA). И мне кажется, что столь быстро я в это вник как раз потому, что знаком с большой кучей всякого старья. Кстати говоря, эти самые "рукопожатия" valid/ready вполне имеют место и во многих древних асинхронных шинах (но не во всех).
А, кстати, ещё такой вопрос. Если Вы полностью игнорируете "презренный металл" в виде реальных схем на уровне транзисторов, то как Вы собираетесь объяснять сопряжение блоков, работающих в разных доменах синхронизации? Объяснять метастабильность злым колдунством, которое искореняется, и то не со 100% гарантией, магическими цепочками триггеров?
Или как, не упоминая "физику", объяснить, для чего иногда регистры дублируются (из-за ограниченной нагрузочной способности и/или слишком большой ёмкости подключённых к ним входов)?
Мы это уже обсуждали. Лично я только частично с Вами согласен. То, что требует длительного разбора -- да, наверное, лучше пропустить. То, что много времени не потребует -- скорей, лучше посмотреть. Ну а уж фундаментальные вещи для электроники типа тока, напряжения и сопротивления -- они попросту обязательны, и особенно для детей, чтоб они пускай поверхностно, но изучали мир во всех его проявлениях. Если на то пошло, знание элементарной не электроники даже, а электротехники в 100500 раз важней всех этих конвейеров с кредитными счётчиками -- потому что последними занимается 0,0000000001% населения Земли, а починить розетку или кинуть провод на даче может потребоваться каждому.
Но на том же Линухе по "прерываниям" зачастую невозможно: их просто нет на уровне задач (процессов) пользователя. Вот мне буквально сейчас нужно связать две платы: Распберри 5, которая работает мордой (дисплей с сенсорным экраном, Ethernet для связи с чем-то более высокого уровня и всё такое), и микроконтроллерной платкой, которая реализует собственно прибор (производит замеры с помощью своего АЦП, управляет всякими там клапанами и прочая). Обмен между ними вполне себе асинхронный, объёмы передачи небольшие, так что логично использовать UART. Но в Линухе я не могу запустить операцию ввода с UART и не ждать её окончания, как я сделал бы это в Винде, в VAX/VMS, RSX-11 или даже в древней и ни разу не реального времени OS/360 -- поскольку асинхронного ввода-вывода там нет, в отличие от всех перечисленных ОС. По сути, единственный способ -- спамить опрос UARTа с помощью select/poll и выполнять чтение, когда опрос сообщит, что есть что читать. Ну или запускать второй процесс, который будет запрашивать в чтение и останавливаться, пока оно не будет выполнено, в то время как другой процесс общается с пользователем (рисует картинки, обрабатывает сенсорный экран и т.п.).
Вы почти правы. Однако у автора идея доведена до абсурда: раз нечто не требуется для данной очень узкой специальности (разработчика внутренностей цифровой микросхемы на языке описания аппаратуры), то давайте выкинем вообще всё, кроме минимально необходимого именно для этой специальности.
Отказываться от обычных светодиодов для уменьшения возни при сборке на макетке -- нормально. Не упоминать вообще о том, что настоящим светодиодам (и не только им) требуется резистор -- это уже идиотизм. Тем более это можно объяснить не только ученику средних классов (да, ему уже есть смысл с законом Ома, даже если в школе до него они ещё не дошли), но и какому-нибудь 8-летнему ребёнку -- только последнему таки без формул, а с понятной на пальцах "гидравлической" аналогией (резистор "тормозит" ток, не давая пройти ему в опасном для жизни светодиода количестве -- как узкая труба ограничивает поток воды). Для этого не требуется курс высшей математики, для этого не требуется отвлекаться от столь любимых автором конвейеров с FIFO на 3 месяца -- всё необходимое можно объяснить буквально за час, максимум за два.
Всегда использовал и его, и 7zip, и другие архиваторы только и исключительно в командной строке, а для комстроки, насколько знаю, он официально полностью бесплатен.
Человеку, например, может потребоваться генератор на другую частоту. Так что показать, как 555 использовать и как изменение номиналов резисторов-конденсаторов влияет на частоту, вполне можно и нужно -- дифуры для этого не требуются. Зато полезно сказать, почему в глубины функционирования 555 погружаться не будем (это аналоговая электроника, а наш курс посвящён "цифре", поэтому аналоговыми вещами занимаемся лишь в минимально необходимом объёме; в данном случае, нам нужен генератор сигналов, а как именно он работает внутри, нам без разницы), а заодно указать, где и что могут почитать те, кому интересно узнать об этих вещах более подробно.
Ну, собственно, автор именно это и предлагает. Причём даже логику в минимальной степени, ведь HDL скрывает подробности реализации (скажем, чтобы описать на Верилоге регистр, не требуется понимать, как устроен триггер -- надо знать, как написать текст на языке).
У меня, знаете, ощущение, что Вы действуете, как американские вузы в том анекдоте: если тебя в американском вузе учили крутить болты, ты будешь уметь это делать лучше всех в мире, но крутить гайки ты вообще не сможешь, потому что тебя этому никак не учили.
Я не считаю, что можно получить действительно грамотного специалиста, если он не знает ничего вокруг своей узкой специальности. Ну а все ваши "конвейерные микроархитектуры" существуют не в сферическом вакууме и не ради самих себя. Ну а лично Вы являетесь действительно грамотным специалистом как раз во многом благодаря тому, что Ваши знания и умения выходят далеко за тот уровень, которым Вы хотите ограничивать учеников (ага, в том числе потому, что Вы знаете, что такое JK-триггер :) ).
Вы кидаетесь из крайности в крайность. ЗАЧЕМ нужны какие-то дифуры, чтобы просто собрать работающий генератор на 555? ЗАЧЕМ нужно подробно изучать его внутреннее устройство, чтобы просто его использовать в качестве генератора?
Ну, так оно и есть.
И где же возражение? Я нигде не написал, что надо выучить 100500 тонн теории до того, как зажечь светодиод. Более того, я многократно повторил: действительно необходимую теорию можно дать буквально за один-два часа! Просто детей среднего школьного возраста нужно учить не тупо собирать по схеме, а понимать на базовом уровне, почему и для чего что-то там нужно -- ну а автор предлагает выкинуть вообще всё, что не нужно для реализации логики на HDL (именно так! поскольку для полноценной реализации логики на рассыпухе надо иметь определённые познания об этой самой рассыпухе, голой логики здесь недостаточно -- если речь идёт, конечно, о понимании, а не механическом повторении).
А потом у них всё будет гореть, перемыкать и т.д. и т.п., как тут выше уже писали. Потому что кто-то решил сэкономить пару-тройку часов на изложение основ.
Я бы тоже предпочёл доверить профессионалу -- хотя б потому, что я слепой. Но:
иногда надо сделать вотпрямща, а пригласить специалиста по каким-то причинам невозможно;
а эти специалисты есть? Если ко мне придёт условный узбек, могу ли я рассчитывать на то, что он сам проложит мне достаточно толстый провод, чтобы мои 100500 компутеров не вызвали его недопустимый нагрев? Я вот сильно не уверен, что он всё сделает правильно, и предпочту сначала сам посчитать, провод какого сечения мне необходим, а затем, возможно, и купить его самому.
Ну а зачем в школе учат умножение/деление в столбик? В реальной жизни считают на калькуляторах и компутерах. Да и писать ручкой или карандашом учиться тоже особо не требуется: в реальной жизни давно уже сплошь компьютеры.
Но ладно, выкинем и JK-триггеры, и карты Карно -- сократим несколько учебных часов. Хватит их на нормальную практику? Нифига не хватит. Я предлагаю полностью выкинуть абсолютно весь курс высшей математики -- ведь в 95% реальной работы она совершенно не нужна. Вот такое решение абсолютно точно освободит уйму часов для практических занятий.
Вот только без них далеко не всё получится сделать. "Сферической в вакууме" цифры нет, ей приходится иметь дело с грубым материальным миром.
Я знаю, что AXI -- синхронная, и с назначением сигналов тоже знаком, хотя полностью в голове это не держу: всё ж мне это нужно эпизодически, когда я в очередной раз лезу что-то ковырять на плисине.
Ну и ни с какими шинами я AXI напрямую не сравниваю, я лишь говорю, что опыт с другими шинами, в т.ч. древними, помогает и здесь. Вы вот, например, написали, что
и это создаёт у молодёжи проблемы. Ну а я сразу вспомнил допотопный, ещё из первой половины 1960-х, интерфейс ввода-вывода Системы 360: на мультиплексном канале висит много устройств, и все они могут работать параллельно, а канал по их запросам переключается между ними, используя "тэг" в виде адреса устройства, который устройство, запросившее обслуживание, ему выдаёт. И ход, и завершение операций ввода-вывода там могут быть в произвольном порядке; "рукопожатия" тоже есть -- только они асинхронные, без всякого клока (канал выдал некий управляющий сигнал -- устройство должно ответить одним из своих сигналов, ну и наоборот). Ну а поскольку я со всем этим в своё время познакомился, то, увидев про сию возможность у AXI, я ничуть не удивился, и никаких сложностей типа "а как это можно сделать?" у меня не возникает, хотя ведь очевидно, что AXI и тот интерфейс -- вещи абсолютно разные. (А, ещё его можно считать "двухканальным": как и в современных шинах, там нет двунаправленных линий, типичных для шин 70-80-х годов).
Естественно, это не значит, что современным студентам стоит изучать тот интерфейс или, скажем, ISA, но вот считать подобные древние знания бесполезными в наши дни тоже было бы опрометчиво.
И по нагрузочной способности могут быть проблемы (в статике-то потребление у входов близко к нулю, а вот в момент переключения... хотя столь жёстких ограничений, как в ТТЛ, у КМОП, конечно, нет), и ёмкость кучи входов может привести к слишком медленному изменению сигнала.
Ну, с этим-то я согласен :) Но мне тут ещё одна мысль в голову пришла.
Если бы Вы вели, скажем, некий спецкурс в университете, а Вашими слушателями были бы студенты, условно говоря, 3-го курса, Вы были бы полностью вправе полагаться на то, что элементарную физику (на уровне достаточно грамотного использования реальных цифровых микросхем, хотя и не проектирования их из транзисторов) они знают, про подтяжки или там токоограничители тоже в курсе, с цифровой электроникой знакомы, ну и т.д. Более того, если студент пришёл на Ваш спецкурс по современному процессорному микроархитектурному вериложеству, то Вы точно знаете, что именно эта тема его и интересует: это уже взрослый человек, более-менее знающий, чем он хочет в будущем заниматься.
Однако со школьниками ситуация совсем другая. У них ещё нет более-менее сформировавшихся интересов, а начальный уровень знаний может быть крайне невелик. Они, вполне может быть, крайне смутно представляют, что такое этот ваш процессор вообще. Поэтому Вам в любом случае надо давать им сначала базовую цифровую электронику на рассыпухе -- что Вы, собственно говоря, и делаете. Но, с одной стороны, это реальные микросхемы, накладывающие реальные физические ограничения -- это не HDL, где все такие подробности скрыты от разработчика; соответственно, некоторые элементарные сведения сообщить было бы, по меньшей мере, разумно (типа того, что нельзя на один выход цеплять 100500 входов или что логические уровни 1 и 0 могут иметь разные физические напряжения, поэтому не всегда можно напрямую соединить железку А с железкой Б); сюда входят и пресловутые резисторы, и даже генератор на 555 -- причём всё это "на пальцах" можно за одно занятие объяснить, если не пытаться лезть в дебри с дифурами (вот, глядите: ставим конденсатор ёмкости N -- светодиод мигает часто, ёмкости 2*N -- примерно в два раза медленнее; это из-за того, что для переключения конденсатор должен зарядиться/разрядиться, а скорость сего процесса зависит, внезапно, от ёмкости конденсатора и от тока, который пропускает резистор -- представьте себе бочку, в которую наливают воду или откачивают через трубу определённого диаметра; но глубже мы с вами это разбирать не будем, потому что это так называемая аналоговая электроника, а наш предмет -- цифровая, и от аналоговой нам нужны лишь самые базовые вещи типа вот этого "магического" генератора сигналов на 555, ну а кто хочет поподробней именно про это -- почитайте для начала книжку такую-то).
С другой стороны, нельзя сказать: вот элемент И, он работает так-то, вот элемент ИЛИ, он работает сяк-то, вот Д-триггер -- а теперь сделайте мне из них ФИФО. Нужна куча промежуточных ступеней с достаточно простыми задачами, которые реально решить в пределах одного занятия (особенно если школьники ещё достаточно мелкие -- это у великовозрастных мотивации может оказаться достаточно для нескольких занятий без получения ощутимого и очевидного результата, "малышам" же для поддержания интереса результаты нужны быстро; в общем, между 16 и 12 годами разница в подобном весьма велика, хотя в интеллекте как таковом её уже практически нет -- в отличие от 12 и 8). Соответственно, могут возникать задачи вроде "а сделайте-ка из логики и триггеров счётчик", "а теперь сделайте реверсивный счётчик" и т.д. -- а, как Вы наверняка знаете, "в древности" подобное нередко делалось на тех самых JK-триггерах, т.е. и они не являются бесполезными на уровне освоения "физической схемотехники" (а не HDL), хотя вполне можно решить те же задачи и на Д-триггерах.
Ну и, наконец, любые подобные занятия для ребёнка -- это пока ещё "общее развитие", а не узкопрофессиональное обучение (в отличие от студента-старшекурсника), а соответственно, здесь нужна не столько глубина, сколько ширина. Тут больше цель -- заинтересовать техникой вообще, показать возможные направления развития (а не сидения в зомбочатиках), а не сделать из ребёнка супер-пупер-профессионального разработчика суперскалярных процов.
Тут я больше к тому, что профессиональные программисты тоже вынуждены иногда идиотизмом заниматься -- пусть и из-за идиотизма платформы, которую должны по той или иной причине использовать. Но, с другой стороны, и на МК опрос иногда проще и лучше. Скажем, был у меня другой прибор, где всё крутилось в главном цикле (задача простая, лепить туда какую-нить недоОСРВ смысла никакого). Оказалось, что мне проще проверять факт нажатия кнопок именно обычным опросом в рамках главного цикла, не делать прерывания по их нажатию (а вот обмен данными по UART и SPI был уже с использованием прерываний).
Подтяжки объясняются за 5 минут. Настоящий UART требует, конечно, куда больше времени, но оно отнюдь не впустую уйдёт, в том числе и для HDLщика. Вы вот заранее знаете, чем ребёнку в будущем заниматься придётся? Может, он будет не процессорное ядро проектировать, а периферию для SoC?
С другой стороны, я, ни разу не являясь электронщиком как таковым (HDL для меня вообще хобби), с этой самой AXI по спецификации разобрался за полдня, хотя до неё из более-менее современных шин знакомился только с AHB (зато, естественно, знаю всякую древнюю асинхронщину -- хоть DECовский Unibus, хоть вообще классический интерфейс ввода-вывода Системы 360, и уж тем более всякие там ISA). И мне кажется, что столь быстро я в это вник как раз потому, что знаком с большой кучей всякого старья. Кстати говоря, эти самые "рукопожатия" valid/ready вполне имеют место и во многих древних асинхронных шинах (но не во всех).
А, кстати, ещё такой вопрос. Если Вы полностью игнорируете "презренный металл" в виде реальных схем на уровне транзисторов, то как Вы собираетесь объяснять сопряжение блоков, работающих в разных доменах синхронизации? Объяснять метастабильность злым колдунством, которое искореняется, и то не со 100% гарантией, магическими цепочками триггеров?
Или как, не упоминая "физику", объяснить, для чего иногда регистры дублируются (из-за ограниченной нагрузочной способности и/или слишком большой ёмкости подключённых к ним входов)?
Мы это уже обсуждали. Лично я только частично с Вами согласен. То, что требует длительного разбора -- да, наверное, лучше пропустить. То, что много времени не потребует -- скорей, лучше посмотреть. Ну а уж фундаментальные вещи для электроники типа тока, напряжения и сопротивления -- они попросту обязательны, и особенно для детей, чтоб они пускай поверхностно, но изучали мир во всех его проявлениях. Если на то пошло, знание элементарной не электроники даже, а электротехники в 100500 раз важней всех этих конвейеров с кредитными счётчиками -- потому что последними занимается 0,0000000001% населения Земли, а починить розетку или кинуть провод на даче может потребоваться каждому.
Но на том же Линухе по "прерываниям" зачастую невозможно: их просто нет на уровне задач (процессов) пользователя. Вот мне буквально сейчас нужно связать две платы: Распберри 5, которая работает мордой (дисплей с сенсорным экраном, Ethernet для связи с чем-то более высокого уровня и всё такое), и микроконтроллерной платкой, которая реализует собственно прибор (производит замеры с помощью своего АЦП, управляет всякими там клапанами и прочая). Обмен между ними вполне себе асинхронный, объёмы передачи небольшие, так что логично использовать UART. Но в Линухе я не могу запустить операцию ввода с UART и не ждать её окончания, как я сделал бы это в Винде, в VAX/VMS, RSX-11 или даже в древней и ни разу не реального времени OS/360 -- поскольку асинхронного ввода-вывода там нет, в отличие от всех перечисленных ОС. По сути, единственный способ -- спамить опрос UARTа с помощью select/poll и выполнять чтение, когда опрос сообщит, что есть что читать. Ну или запускать второй процесс, который будет запрашивать в чтение и останавливаться, пока оно не будет выполнено, в то время как другой процесс общается с пользователем (рисует картинки, обрабатывает сенсорный экран и т.п.).
Вы почти правы. Однако у автора идея доведена до абсурда: раз нечто не требуется для данной очень узкой специальности (разработчика внутренностей цифровой микросхемы на языке описания аппаратуры), то давайте выкинем вообще всё, кроме минимально необходимого именно для этой специальности.
Отказываться от обычных светодиодов для уменьшения возни при сборке на макетке -- нормально. Не упоминать вообще о том, что настоящим светодиодам (и не только им) требуется резистор -- это уже идиотизм. Тем более это можно объяснить не только ученику средних классов (да, ему уже есть смысл с законом Ома, даже если в школе до него они ещё не дошли), но и какому-нибудь 8-летнему ребёнку -- только последнему таки без формул, а с понятной на пальцах "гидравлической" аналогией (резистор "тормозит" ток, не давая пройти ему в опасном для жизни светодиода количестве -- как узкая труба ограничивает поток воды). Для этого не требуется курс высшей математики, для этого не требуется отвлекаться от столь любимых автором конвейеров с FIFO на 3 месяца -- всё необходимое можно объяснить буквально за час, максимум за два.
Всегда использовал и его, и 7zip, и другие архиваторы только и исключительно в командной строке, а для комстроки, насколько знаю, он официально полностью бесплатен.
Человеку, например, может потребоваться генератор на другую частоту. Так что показать, как 555 использовать и как изменение номиналов резисторов-конденсаторов влияет на частоту, вполне можно и нужно -- дифуры для этого не требуются. Зато полезно сказать, почему в глубины функционирования 555 погружаться не будем (это аналоговая электроника, а наш курс посвящён "цифре", поэтому аналоговыми вещами занимаемся лишь в минимально необходимом объёме; в данном случае, нам нужен генератор сигналов, а как именно он работает внутри, нам без разницы), а заодно указать, где и что могут почитать те, кому интересно узнать об этих вещах более подробно.
Ну, собственно, автор именно это и предлагает. Причём даже логику в минимальной степени, ведь HDL скрывает подробности реализации (скажем, чтобы описать на Верилоге регистр, не требуется понимать, как устроен триггер -- надо знать, как написать текст на языке).
Тоже крайность. Изучение ошибок зачастую полезнее изучения "лучших практик" без указания на возможные ошибки и почему именно это является ошибкой.
У меня, знаете, ощущение, что Вы действуете, как американские вузы в том анекдоте: если тебя в американском вузе учили крутить болты, ты будешь уметь это делать лучше всех в мире, но крутить гайки ты вообще не сможешь, потому что тебя этому никак не учили.
Я не считаю, что можно получить действительно грамотного специалиста, если он не знает ничего вокруг своей узкой специальности. Ну а все ваши "конвейерные микроархитектуры" существуют не в сферическом вакууме и не ради самих себя. Ну а лично Вы являетесь действительно грамотным специалистом как раз во многом благодаря тому, что Ваши знания и умения выходят далеко за тот уровень, которым Вы хотите ограничивать учеников (ага, в том числе потому, что Вы знаете, что такое JK-триггер :) ).
Вы кидаетесь из крайности в крайность. ЗАЧЕМ нужны какие-то дифуры, чтобы просто собрать работающий генератор на 555? ЗАЧЕМ нужно подробно изучать его внутреннее устройство, чтобы просто его использовать в качестве генератора?