Чему учить хакеров
2011-09-29 23:30Увидел тут на днях расписание занятий четвёртого курса Физтеха - кто-то в фейсбуке вывесил. И стало мне грустно-печально. Вспомнилась старая шутка про военную академию, где генералов учат мастерски побеждать в давно прошедшей войне. Здесь же преподают вещи, которые имели огромную ценность во времена Королёва и Курчатова. То есть пятьдесят лет назад. Не то, чтобы оно бесполезно, нет, но мир заметно изменился с тех пор. Не могу судить про теорфизиков, но уж на программистском факультете совсем другие приоритеты требуются.
К примеру. Мой друг Юрий Панчул
panchul разработал концепцию лабораторного курса для программистских специальностей. Краткий конспект:
Конструктивная критика приветствуется.
К примеру. Мой друг Юрий Панчул
- Сборка простых электронных схем на основе микросхем малой степени интеграции
- Знакомство с концепциями логического элемента (gate), D-триггера (D-flip-flop) и синхросигнала
- Макетная плата (breadboard), батарейка, лампочки (LED), проводочки, микросхема генерации синхросигнала (555 Timer), CMOS микросхемы серии 4000, 7-сегментный дисплейчик
- Лаба - сборка на макетной плате всяких счетчиков и бегающих огоньков
- Дизайн цифровой логики на языке SystemVerilog с реализацией на платах ПЛИС (FPGA) от Xilinx или Altera
- Знакомство с языком SystemVerilog и его конструкциями - модуль, порты, сигналы, always-blocks, continuous assignments, blocking и non-blocking assignments
- Знакомство с концепциями моделирования (HDL simulation), логического синтеза, place-and-route, static timing analysis
- Знакомство с бесплатным/дешевым софтвером Xilinx ISE WebPACK, Altera Quartus II, Aldec HDL, ModelSim-Altera Starter Edition
- Знакомство с FPGA платами - Xilinx Basys 2, Xilinx Nexys 2, Altera DE0, Altera DE1
- Лаба - переписать на верилог, засинтезировать и загрузить на плату дизайнов счетчиков и бегающих огоньков из первой лабы
- Конечные автоматы и дизайн с адресуемой памятью
- Знакомство с концепцией конечного автомата (state machine)
- Знакомство с устройствами ввода на плате - клавишами и кнопками, и как их debounce
- Знакомство с концепцией адресуемой памяти и интерфейса шины
- Лаба - конечный автомат, принимающий от переключателей команды чтения и записи в память всяких последовательностей
- Что такое процессор?
- Знакомство с концепциями комбинационной и секвенциальная логики (combinational and sequential logic)
- Лаба - простейший процессор, выполняющий команды в один длинный цикл. Дискуссия о максимальной тактовой частоте.
- Концепция конвейера
- Лаба - конвейерный процессор с 3-5 стадий и без interlocks - hazards компенсируются nop-ами
- Концепция stalls и forwarding
- Лаба - конвейерный процессор с stalls и forwarding
- Программирование на голом железе и зачатие операционной системы
- Лаба - знакомство с платой chipKit32 / PIC32 / MIPS и программирование её на С с помощью Arduino-подобного GUI. Кнопочки, лампочки, дисплейчик, IO Shield.
- Введение в ассемблер на примере MIPS
- Лаба - загрузка в память программок на ассемблере
- Концепция простейшей многозадачной операционной системы
- Лаба - своя игрушечная многозадачная ОС, которая бутится, ставит обработку прерывания по таймеру, в котором переключает задачи по схеме round-robin.
Конструктивная критика приветствуется.

no subject
Date: 2011-09-30 06:42 (UTC)А учителя в физтехе бараны по сравнению с практиками типа Панчула.
Именно по этой причине образование не дает то что нужно, а забивает голову всякой фигней.
no subject
Date: 2011-09-30 06:51 (UTC)no subject
Date: 2011-09-30 07:36 (UTC)Ага. Я помню у нас в ХАИ было 50 дисциплин.
А сколько было на самом деле нужно для моей будущей работе. И кроме, часто в нужной дисциплине дают не то что нужно, и часто то, что уже давно устарело.
no subject
Date: 2011-10-01 06:09 (UTC)no subject
Date: 2011-09-30 07:10 (UTC)какая разница, чему конкретно учить? к моменту окончания все устрее безбожно.
так же не реально все охватить даже по вершкам.
no subject
Date: 2011-09-30 07:18 (UTC)no subject
Date: 2011-09-30 07:26 (UTC)нет, не важно. важно поставить мышление.
а остальные не станут, как ни учи. спосбности не привьешь.
а это чьи слова "Здесь же преподают вещи, которые имели огромную ценность во времена Королёва и Курчатова. То есть пятьдесят лет назад. Не то, чтобы оно бесполезно, нет, но мир заметно изменился с тех пор."?
я не думаю что и основы по физике охватываются лабами, если конечно не считать за основу самую элементращину.
с полгода назад по жж бегал пост с темами и литературой. вероятно, как хохма. разумеется, такой же однобокий как этот список.
это, извиняюсь, программа обучения разработчика процессора. это вообще на железячника, а не программиста.
а зачем нам каждый год 300 разработчиков процессоров из одного института?
no subject
Date: 2011-09-30 15:04 (UTC)Поставить мышление нужно, но зачем ставить мышление скажем писателя компиляторов теорфизикой и при этом не преподавать алгоритмы, используемые в компиляторах? Ведь потом компиляторщик должен будет потратить кучу времени на самообразование.
И, если вы правы, почему например врачей все-таки учат биохимии, анатомии и как резать на лабах, а не теорфизике? Почему от врачей не требуют самообразования для реальной работы?
*** это, извиняюсь, программа обучения разработчика процессора. это вообще на железячника, а не программиста. а зачем нам каждый год 300 разработчиков процессоров из одного института? ***
Время жесткого разделения на программистов и железячников проходит. Наращивать частоту традиционного процессора типа пентиума становится проблематичным, и все более важными становятся решения, при которых часть алгоритма делается специализированным железом, часть софтвером. Для обучения разработчика процессора нужно в 100 раз больше всякой всячины, чем в предложеной мною последовательности лаб. А вот в качестве ликбеза для программиста - имхо самое то.
no subject
Date: 2011-10-02 15:07 (UTC)а что, именно теорфизикой в действительности мучают?
не, для LR(1) грамматики теорфизика наверное и правда излишня, то вот если дальше начать буриться, в современные, то там как бы не произошла смычка через какую-нибудь теоркат.
ну здрасте, а ординатура?
ну расскажите, какое такое специализированное железо доступно и оспользуется какой-либо субд, сайтом на java/php/ror? ms office? 1c бухгалтерией? SAP/R3?
no subject
Date: 2011-09-30 08:42 (UTC)no subject
Date: 2011-10-01 21:14 (UTC)no subject
Date: 2011-09-30 10:20 (UTC)no subject
Date: 2011-10-01 06:13 (UTC)no subject
Date: 2011-10-01 06:37 (UTC)no subject
Date: 2011-10-01 19:13 (UTC)no subject
Date: 2011-10-01 19:42 (UTC)no subject
Date: 2011-10-07 07:37 (UTC)no subject
Date: 2011-09-30 12:08 (UTC)Лично мне например основы тензорной алгебры оказались полезнее.
А вообще-то... жаль, конечно, что у нас нигде не учат ни программированию, ни экономике на таком уровне, на каком на физтехе учат физике, но это должны быть ДРУГИЕ институты.
По-моему.
А так-то лабы занимательные, кто б спорил.
no subject
Date: 2011-10-01 19:24 (UTC)no subject
Date: 2011-09-30 12:34 (UTC)А вот добавить понятия кеша и его использования для ускорения было бы полезно.
И еще одно добавление в пункт 5. Не своя игрушечная ОС, а общая ОС в которую в качестве заданий надо добавлять различные возможности.
ОС конечно предельно маленькая по размеру.
no subject
Date: 2011-09-30 15:16 (UTC)Конечный автомат не в чисто математическом смысле, а в практическом, как стиль написания кода на верилоге для описания поведения дизайна на последовательных циклах.
*** А вот добавить понятия кеша и его использования для ускорения было бы полезно. ***
Я думал про лабу про кэш. Но если начинать про кэш, то надо сначала перейти к multi-way cache, потом к cache coherency, всяким многоядерным системам, при которых ядра подсматривают кэши друг у друга - это лучше делать отдельно, в, так сказать сиквеле для курса.
*** И еще одно добавление в пункт 5. Не своя игрушечная ОС, а общая ОС в которую в качестве заданий надо добавлять различные возможности. ***
Наверное можно было бы взять для основы какую-нибудь маленькую RTOS типа uOS - тут нужно было бы подумать. Но для иллюстрации обработчика прерывания, переключения контекстов и как работает multitasking имхо чем меньше кода, тем лучше - легче запоминается без лишних деталей.
no subject
Date: 2011-10-03 08:13 (UTC)Про кэш есть простенькие примеры как грамотное использование кэша увеличивает прозводительность раз так в 10. Без всякой многоядерности. А то об этом очень часто забывают. Подробности и развитие идеи - в следующем курсе.
Про ОС. Чем меньше кода - тем лучше. Это я согласен. Но добавление возможностей в чужой код - очень и очень полезный скилл.
no subject
Date: 2011-10-01 19:28 (UTC)no subject
Date: 2011-10-01 19:40 (UTC)Поразило присутствие методов оптимизации и методов оптимального управления, которые читались еще в мое время, и оказались по жизни самым бесполезным знанием из всего, полученного на физтехе. Называются они красиво, а по сути представляют собой тяжелые математическме методики поиска экстремумов разнообразных многоразмерных плохо определенных функционалов. Для расчета "Бурана" оно может и хорошо, но зачем это нынешним студентам? Впрочем, один из моих однокурсников с давних пор работает в НАСА.
no subject
Date: 2011-10-01 21:09 (UTC)no subject
Date: 2011-10-02 15:09 (UTC)или там шаговым двигателем в винчетере?
no subject
Date: 2011-09-30 16:48 (UTC)no subject
Date: 2011-09-30 21:10 (UTC)no subject
Date: 2011-09-30 18:20 (UTC)no subject
Date: 2011-10-01 19:47 (UTC)no subject
Date: 2011-10-01 19:57 (UTC)Обучение программированию
Date: 2011-10-01 08:14 (UTC)***
Date: 2011-10-01 23:29 (UTC)Re: ***
Date: 2011-10-02 06:42 (UTC)Конечно, это надо было делать раньше - я сам выучил Verilog в 1996 году.
А насчет актуальности - это все актуально сейчас больше чем когда-либо. 15 лет назад эпоха SoC (систем на чипе) только начиналась, а сейчас она в полном расцвете. Будущее еще более интересно, так как тактовые частоты традиционных процессоров упираются в потолок и становится все более важным системы, где помимо традиционного процессора и софтвера есть куча специализированных сопроцессоров для графики и видео, очень многоядерные системы и т.д.
Будет очень жалко, если дизайн высокопроизводительного железа не разовьется в России, как он развился в США, Японии, Европе и сейчас развивается в Китае. Для России нет объективных ограничений, почему это не могло бы произойти, особенно сейчас, когда происходят большие перемены (переориентация с Wintel-платформы на мобильные устройства и cloud-computing, а также сростание домашней электроники и мобильных устройств).
Так что лучше позже, чем никогда.
Также см. мой другой вводный пост - http://ru-programming.livejournal.com/1271886.html
Re: ***
Date: 2011-10-06 15:47 (UTC)Что это надо было делать раньше или что это типа неактуально?
Конечно же я имел в виду, что это надо было делать раньше! Актуальность подобных вещей сейчас огромна!
Я уже давал ссылку на заинтересовавший меня мемуар:
http://dmi3s.blogspot.com/2011/04/ii.html
Автор несколько раз говорит о "западывании" на 10 лет. Но, это до 1991 года! Если прибавить сюда лет 5 "безпредела", то получим как раз 15 лет :-(( :-))
Эти вещи сейчас стали не просто массовыми, а очень массовыми. Чтобы понять это достаточно зайти в ларек "Игрушки" на каком нибудь "Черкизоне". Игрушек с использованием ПЛИС множество. И как любая игрушка, - стоят они копейки. (На преподавательский карман - не очень "копейки", но это другая тема.)
Сейчас читаю Ваши ссылки, потом напишу более подробно.
no subject
Date: 2011-10-11 21:41 (UTC)no subject
Date: 2011-10-12 03:18 (UTC)