Егор Бугаенко, Elegant Objects/Элегантные объекты

Полистал книжку, где рассказывается, что ООП в том его изводе, которому учат немецких студентов — страшное зло, все надо делать совсем не так. Изложенные идеи красивые, правильные и даже, можно сказать, элегантные в математическом смысле — и это, конечно, мне очень понравилось. Потом взглянул на код реального проекта и загрустил.

Не читайте, если не хотите погрузиться в глубокую депрессию.

PS Впрочем, есть одно средство от депрессии — идите в embedded, пишите на голом Си, это весело и даже может сопровождаться красочными спецэффектами.

Переводчики жгут

peery-lea-iot

Сколько раз зарекался читать техническую литературу на русском — столько же раз и жалел об этом. Издательство ДМК-Пресс отожгло напалмом, такого перевода Ready to send и Clear to send я еще ни разу не видел.

DEC is dead, long live DEC

Читаю книжку, где разбираются организационные принципы Digital Equipment Corporation — от «матричной иерархии» до довольно интересной внутренней культуры. Автор — Эдгар Шейн, основатель организационной психологии и вообще — признанный живой классик этого научного направления. И вроде бы все гладко и логично получается — одни и те же принципы помогли DEC стать второй (после IBM) «компьютерной» компанией, и они же привели ее «на дно» — то есть к поглощению Compaq, а потом и HP.

Но с другой стороны — уж как-то старательно обходится стороной долгая история взаимодействия DEC с одной стороны и Пентагона с DARPA — с другой. Есть только небольшие намеки на то, что продукция DEC очень нравилась «инженерам и ученым» — а что это за инженеры и ученые, у которых есть деньги на DEC’овское оборудование? :) Есть, конечно, и байка про то, как Special Systems Group очень оперативно соорудило модульную версию PDP-8, которую можно было протащить в люки подводной лодки — но это всего лишь один эпизод.

Так вот, на фоне всего этого возникает логичный вопрос — а не связаны ли успехи DEC до «начала 90-х» и позорное его падение в 90-е с тем, что ВНЕЗАПНО иссяк источник финансирования для многих из его клиентов? И если связаны — то какое отношение имеет к этому «организационная психология», и не выдает ли Эдгар Шейн совершенно случайные факторы за приведшие к успеху?

Практическое пособие по государственным переворотам

Забавно, что те, кто орет про «организованные протесты по госдеповской методичке», обычно имеют в виду список Джина Шарпа, в целом довольно бессмысленный — ну разве что если вы не скучающие жидомасоны в тайном мировом правительстве, тогда он может пригодиться для забавной игры — выбираете случайный пункт и устраиваете его в подопечной стране. А есть и куда более полезная книжка — «Государственный переворот: Практическое пособие» Эдуарда Люттвака:

http://publisher.usdp.ru/catalog/887.html

Крайне рекомендую диванным революционерам-любителям.

Чуваки, а вот охуенное

https://www.academia.edu/43760536/Открытие_долготы_и_Первый_Транзитный_проект

Автор уже известен в узких кругах серией развеселых материалов про Семилетнюю войну — а тут немного об истории науки и техники, где Семилетняя война служит этаким фоном. Написано очень живо, и при этом разносторонне — от описания нюансов часовых механизмов до творчества Франсуа Буше («Обветшавшие, но официально-требуемые тряпицы католической религии ещё заставляли облекать буйства плоти на картине в организационные рамки, отличные от современного сюжета «Пришёл водопроводчик»» — примерно в таких терминах).

Вот это я понимаю — нестареющая классика

Разбираясь в том, откуда взялись термины master и slave, докопался до книжки The Motor Vehicle за авторством T. K. Garrett, K. Newton и W. Steeds — у меня в виде pdf есть ее 13-е, «исправленное и дополненное» издание (2001 года) — а первое, где автором был один только Kenneth Newton, вышло аж в 1929 году:

https://openlibrary.org/books/OL6746007M/The_motor_vehicle

Cудя по иллюстрациям — что-то осталось даже от того первого издания.

PS Master cylinder там встречается в описаниях тормозной системы, а вот slave cylinder почему-то попадается только в экзотических гидроусилителях рулевого управления.

И еще про анонимность

Кстати, посмотрел тут на выходных в очередной раз «Профессионала» с Бельмондо и «День Шакала». Сюжет, в принципе, достаточно близок — симпатичный киллер собирается убить несколько менее симпатичного политика, в процессе водит спецслужбы за нос, и все это на фоне Парижа, где даже бомжи — не какие-то там обыкновенные бомжи, а настоящие французские клошары. «Профессионал» местами похож на веселую комедию, а вот «Шакала» — точнее, его литературный первоисточник — в свое время даже называли руководством для кого-нибудь, желающего скрыть личность. Скажем, описанный в книге способ получения британского паспорта довольно надежно работал вплоть до начала 2000-х (и им прекрасно пользовалось даже КГБ — скажем, паспорта на имя Хитфилда и Фоли были получены именно таким способом).

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

Mathematics for Machine Learning

Проглядел мельком очередную книжку «про машинное обучение» — точнее, даже не про само машинное обучение, а что-то вроде учебника по необходимым разделам математики:

https://mml-book.github.io/

Где-то треть книги — изложение стандартного курса линейной алгебры, еще немного — многомерный анализ (всякие там якобианы и тому подобные штуки), основы теории вероятностей и методов оптимизации. Оставшаяся треть — описание «классических» подходов к машинному обучению, заканчивающееся описанием метода опорных векторов (SVM). Впечатление — довольно странное. Для начала, предполагается, что читатель владеет понятиями вроде «производная» и «интеграл», а «вектор» для него — это пара чисел, а не отрезок со стрелочкой на конце. Как утверждается в предисловии, это примерно программа high school — но у нас ВУЗы школам в изучении этих вещей не доверяют (и правильно делают!), поэтому вузовский курс математики начинается с основ анализа.

Если же вы с математикой не соприкасались со школьных времен — то довольно быстро столкнетесь с тем, что некоторые вещи, которые хорошо бы разъяснить, здесь считаются хорошо известными. Классический курс матанализа, хотя бы с изложением теории дифференцирования функций одной переменной, попросту необходим для чтения.

Но говорить, что это книга для изучающих всякие там датасаенсы второкурсников — тоже не совсем правильно. По большому счету, это учебник по линейной алгебре — так как именно эта часть книги снабжена многочисленными заданиями для самостоятельного решения. Но там, где математика изучается на необходимом для чтения этой книги уровне, в первом и втором семестрах тоже читается курс линейной алгебры, при этом вполне полноценный! Единственное, что с моей точки зрения как-то объясняет существование книги — это желание переименовать скучную линейную алгебру в модную «математику для машинного обучения».

Вердикт — под видом датасаенса нам подсовывают замшелую линейную алгебру, протухший товар второго сорта! Заклеймить авторов позором за полное непонимание «практик будущего»! (Это я тут прочитал фейсбучную запись проректора ДВФУ Земцова и пытаюсь несмешно шутить)

Про учебники по C++

Прочитал недавно рецензию на учебник Столярова, где тот обозвали «плохой методичкой«. Ну да, я и сам согласен с тем, что оставлять студентов наедине с книгами Столярова нельзя — но при всех недостатках книжка по C++ (полностью вошедшая в четвертый том многотомника) более-менее подходит для того, чтобы понять основные принципы языка (всякие там rule of three, RAII и так далее). И кстати, не могу согласиться с тезисом о том, что автор не «сделал хоть что-нибудь положительно отличающее текст от бесконечного числа вузовских методичек, призванных помочь студенту сдать экзамен автору методички» — особенно когда перед этим в трех пунктах утверждается, что автор — ебанутый фанатик (в хорошем смысле). В конце концов, большая часть софта, которым мы все пользуемся, была сделана как раз ебанутыми.

А если говорить о dark side образования — ознакомился на днях с конспектом курса «С++ для математиков», который в TU D-stadt читают Dr. Alf Gerisch и Dr. Adrien Semin. Курс представляет собой какую-то смесь из странным образом подобранных элементов C++ и взятых из численных методов примеров.

Из положительного хочется отметить разве что довольно подробную лекцию о IEEE 754 с некоторыми примерами правильных вычислений с плавающей запятой (например, с решением «плохих» квадратных уравнений). А вот отрицательного, к сожалению, гораздо больше. Во-первых — разбираемое в лекциях подмножество C++, как бы это сказать… совершенно недостаточно для нормальной продуктивной работы. Это такой поверхностный обзор в стиле введения в «Язык программирования C++» Страуструпа — вот у нас есть классы, вот как выглядит наследование и полиморфизм (множественное наследование не разбирается), вот есть шаблоны (делаем класс Polynom), вот библиотека STL (в ней есть класс vector).

Во-вторых — вот за такое можно поймать лектора в темной подворотне и отпиздить, желательно ногами по голове (классы все здесь по размеру маленькие, максимум два числа и ссылка на функцию):

int main(void)
{
    // list of two base class pointers
    numInt1D** integrator = new numInt1D*[2];
    // fill with two pointers to derived class objects
    integrator[0] = new numInt1D_rectangleLeft(0.0, 1.0, &f);
    integrator[1] = new numInt1D_trapezoidal(0.0, 1.0, &f);
    // output numerical integral approximations
    std::cout << "Integral approximation using rectangle rule = "
        << integrator[0]->integrate() << std::endl;
    std::cout << "Integral approximation using trapezoidal rule = "
        << integrator[1]->integrate() << std::endl;
    // clean up
    delete integrator[0]; delete integrator[1];
    delete [] integrator;
    return 0;
}

Вообще, не раз наблюдал вот такую ничем не объяснимую любовь к new в C++ у быстро переученных на него джавистов.

Есть, конечно, одно обоснованное возражение - а зачем студентам-математикам учить C++ в каком-то приближенном к реальной жизни объеме, тем более, что для численных методов этого достаточно? Вот возьмем для примера мехмат МГУ - который, в отличие от факультета математики провинциального немецкого ВУЗа, все-таки пытается готовить профессиональных математиков (а пошедшие в программисты выпускники для факультета - третий сорт, после преподавателей этой самой математики). Что входит в "Практикум на ЭВМ" на втором курсе? Отнюдь не только численные методы, но еще и "тонкости" вроде "Десять способов неправильного описания прототипов методов сложения (operator+) и "увеличить на" (operator+=) и единственный правильный способ", да и совершенно "практические" вещи типа библиотеки Qt стороной не обошли. В курсе есть достаточно мест, где можно наступить на стандартные C++-ные грабли и навсегда их запомнить (а нормальное обучение C++ и должно строиться на том, что все эти многочисленные "грабли" надо собрать в процессе обучения самостоятельно и больше их не забывать).

У немецких же товарищей - все наоборот, грабли старательно обходятся, и успешно сдавший экзамен студент знает C++ в том объеме, который позволит ему разве что наделать кучу опасных ошибок.

PS PDFку с лекциями очень просили не распространять, если будут какие-то вопросы - пишите.

Немножко о позднесоветской микроэлектронике

Немножко угорев по советским VAX-ам, полистал книжку Б. М. Малашевича «50 лет советской микроэлектронике», где довольно подробно описана история создания микропроцессорных комплектов серий 1801 и 1839. В книжке, конечно, все написано в духе «сам себя не похвалишь — никто не похвалит» — впрочем, автор и сам прекрасно описывает эту практику:

Во-вторых, в то время еще действовал хрущевский лозунг «Догоним и перегоним Америку» и тому же начальству очень хотелось «догнать и перегнать». Поэтому в технических заданиях и в отчетах по всем темам строго требовалось указывать лучшие зарубежные аналоги и сравнивать с ними технический уровень разработки. И если он был хуже, разработку не разрешали. Следили за правильностью аналогов и сравнений грамотные люди, которых обманывать удавалось не часто. Особенно если проект «перегонял». Правда, эта игра была не без лукавства — ведь сравнивали свои новые разработки с лучшими, но с серийными зарубежными изделиями, в лучшем случае с анонсированными, т. е. освоенными в производстве, — другой информации не было. Но на это лукавство не обращали внимания.

Здесь речь идет о 1801 серии — которая была во всех отношениях довольно оригинальной. Малашевич, конечно, сильно сетует на то, что «оригинальную» систему команд «НЦ», изначально реализованную в этой серии, заменили системой команд PDP-11 — но он электронщик, его хлебом не корми, дай сделать что-то свое, ни с чем не совместимое — в то время как любому программисту понятно, что лучше ДВК с ОС ДЕМОС, чем с какой-то непонятной фигней :)

Впрочем, про историю ДВК и БК есть и у Малашевича, а мы сейчас пойдем чуть дальше — в 1985 году была начата ОКР «Электроника-32» по разработке процессора, совместимого с VAX (это следующая за PDP-11 архитектура процессоров фирмы DEC). Примерно одновременно с этим ГДРовские немцы срисовали выпущенный VAX микропроцессорный комплект microVAX II, и вроде бы эти микросхемы начали выпускать (а похоже — только корпусировать) в Воронеже на заводе «Процессор» под названием 1807 серии — но это совсем другая история.

1839 комплект

В «Ангстреме» срисовывать было западло, поэтому 1839 серия — полностью оригинальная. В интернете можно найти даже исходники (!) микрокода с забавными комментариями вроде «2500 И 2501 — TOЧKИ BXOДA ДЛЯ CБOEB HAYMEHKOBA И ГEPЫ». Разработка в основном была завершена в 1988 году, и по словам Малашевича «Комплект был существенно мощнее ЭВМ «micro-VAX-I» и несколько превосходил «micro-VAX-II», выпущенных примерно в то же время фирмой DEC». Здесь мы сталкиваемся как раз с описанным в процитированном выше абзаце «лукавством» — сопоставимые с К1839ВМ1 (время цикла 200 нс) microVAX (время цикла 250 нс) и microVAX II (200 нс) были выпущены в 1983 и 1985 году соответственно, а в конце 1987 вышла уже следующая серия, под названием CVAX — со временем цикла 80 или 90 нс, то есть почти в 2,5 раза более производительная. CVAX был снабжен забавной надписью прямо на чипе — американцы попытались перевести на русский фразу «CVAX: When you care enough to steal the very best» (получилось вот так: «СВАКС… Когда вы заботите (?) довольно воровать настоящий лучший»), но похоже, что адресаты ее так и не смогли оценить:

cvax

Кроме того, в момент выпуска 1839 серии «Ангстрем» с трудом осваивал двухмикронную технологию (с обычными осложнениями этого всего в виде позднесоветского раздолбайства на всех уровнях, очень рекомендую прочитать записанное социологом Белановским «производственное интервью» с рабочим «Ангстрема» — и осознать уровень творившегося там пиздеца) — а DEC вообще собственного полупроводникового производства не имел, но… Уже во время разработки первого microVAX в Штатах существовали компании по заказной разработке интегральных схем, и готовые сделать «что угодно» производители микросхем — что описано в «рекламной» статье DEC и фирмы Silicon Compilers (которая спроектировала топологию микросхемы). Intel в те же годы выпустил первые 386 процессоры с технологическими нормами 1,5 микрона. Представляете? Целое советское министерство оказывалось в догоняющем положении по отношению к одной из многих американских фирм — кроме DEC и Intel, проектированием 32-битных микропроцессоров баловались Motorola, SUN, кучка фирм поменьше — а некоторые занимались многими проектами параллельно, например, тот же Intel.

Собственно, к разработчикам самого процессора особо претензий нет — во всяком случае то, что они делали, вполне себе было близко к «мировому уровню» — но не забывайте, читая всякого рода мемуары, проверять, где автор наврал про «уникальное» или «лучшее в мире».

PS Книжку Малашевича стоит прочитать в том числе и ради «разоблачения» популярного нынче мифа о Филиппе Старосе (он же Альфред Сарант), который якобы спроектировал первый в СССР «персональный компьютер» и даже показал его Хрущеву.

Программирование: теоремы и задачи

Вот кстати, хочется рассказать о неплохой книжке по алгоритмам и структурам данных — «Программирование: теоремы и задачи» А. Х. Шеня (свободно распространяется в электронном виде, на бумаге несколько раз издавалась МЦНМО). Вот все знают книжки, скажем, Кнута (но мало кто их читал), Кормена (тут ситуация немного получше), Дасгупты или Скиены — а я хочу сказать, что эта брошюрка (320 страниц, на фоне среднего «айтишного» учебника в тысячу-полторы — это ни о чем) по глубине изложенного материала не уступает как минимум двум последним.

Особенность книжки — в изложении материала. Это не столько учебник/справочник, сколько задачник, построенный по логике «системы задач на листочках». Эта система применяется, скажем, во многих московских матшколах и состоит примерно в следующем — на каждую тему выдается список задач («листочек» — обычно они помещаются на лист формата A4), часть задач может иметь и самостоятельную ценность (как полноценные теоремы; иногда содержательные утверждения разбиваются на несколько подряд идущих задач). Сложность задач возрастает, для перехода к последующим листочкам надо либо решить текущий целиком, либо решить большую часть задач (в этом случае листочки могут содержать и нерешаемые задачи). Часть задач может разбираться «у доски» (прежде всего что-то основополагающее), остальные предназначены для самостоятельного решения.

В общем, получился такой сборник задач по алгоритмам для старших школьников или студентов-младшекурсников, не отягощенный излишней сложностью (как тот же Кормен), но и не скатывающийся в сюсюкание, как Бхаргава. Использовать как справочник проблематично, а как набор задач для самостоятельного понимания этого всего — в самый раз. В непонятных местах можно дополнить книжкой Дасгупты или Скиены.

PS Издание 90-х годов сопровождалось совершенно шикарным текстом — «Не покупайте эту книгу!» (кликабельно):

dont-buy-this-book

Про новую книгу Харари

А я правильно понимаю, что если механически заменить в ней все упоминания Трампа на упоминания Путина, ее смысл вовсе не изменится?

Game Engine Black Books

С удовольствием прочитал две книжки с подробными описаниями процесса разработки и технических решений Wolfenstein 3D и Doom:

http://fabiensanglard.net/gebb/index.html

Сочетание PC-шного и не очень (в частности, довольно подробно описывается NeXT, на котором разрабатывался Doom) «железа», разнообразных хитрых приемов для рендеринга графики, оригинальных алгоритмических решений и просто программистских трюков — это очень круто, рекомендую. Для полного удовольствия от книжек крайне желательно знать Си и иметь представление о том, что рассказывается в стандартном курсе по «алгоритмам» — иначе такие штуки, как BSP, просто пройдут мимо.

Русский перевод The Art of Electronics

Зашел тут на днях в книжный магазин и увидел красивое свежее издание Хоровица и Хилла. Взял полистать — на первый взгляд ничего, но наткнулся глазом на фразочку — «подробнее мы рассмотрим это в 12-й главе» — а было написано это уже в конце книги. Посмотрел оглавление — опа, а 12 главы нет, есть только 9 или 10! Решил уточнить вопрос — и оказалось, что «Бином» уже давно печатает «так называемое 7 русское издание» — урезанный вариант того, что переводилось еще издательством «Мир». Хорошо, что не купил!

Ну а правильные сайты, где можно скачать в электрическом виде правильные русские и английские издания, все и так знают.

А вот посоветуйте книжек

Насоветовал тут в фейсбуке кучку книжек по программированию микроконтроллеров:

https://www.facebook.com/tikhonovruslan/posts/2193043937400492

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

  • Что такое микроконтроллер? (опционально — что такое ARM, Cortex, STM32 и так далее)
  • Устанавливаем среду разработки (без нее вот просто никуда, даже светодиодом не поморгать без Keil)
  • Пишем простейшую программу (тут половина читателей отваливается, потому что даже «простейшая» программа требует шаманства в виде настройки тактирования, и идет делать сайты на PHP)
  • Работаем с GPIO
  • Работаем с таймерами
  • Работаем со всякой остальной периферией
  • Тема для продвинутых — что такое DMA и как с ним жить
  • Тема для очень продвинутых — как в CubeMX накликать в проект FreeRTOS

На этом «стандартный» курс заканчивается — но дальше-то что? Рано или поздно в любом проекте на микроконтроллере “вырастает” несложная RTOS (или присутствует там с самого начала). При этом в литературе «для начинающих» это почему-то считается сложной темой, а книг «для продолжающих» почему-то нет. Вот где почитать, например, о том, как написать драйвер периферии или внешнего устройства? Как и когда использовать DMA? Да вот даже какие-то вопросы с потреблением памяти — покажите мне книжку, где было бы достаточно подробно расписано, что происходит со стеком в многозадачной системе во время обработки прерывания?

В общем, что есть хорошего на эту тему «для продолжающих», с описанием принятых «лучших практик»?

Development and Deployment of Multiplayer Online Games

Посмотрел «бета-версию» будущей книжки Development and Deployment of Multiplayer Online Games: from social games to MMOFPS, with stock exchanges in between.

dnd-of-mog

Разумеется, она не столько про мультиплеерные игры, сколько про распределенные системы «вообще» — к таковым можно отнести, например, всякие там биржевые системы (автор, Сергей Игнатченко, упоминается тут, как один из разработчиков торговой системы РТС). Рассматривается буквально все — от нюансов программирования на C++ (вплоть до всевозможных заблуждений) до архитектуры «в целом«. Очень понравились главы про сетевое взаимодействие, выбор между TCP и UDP, некоторые неочевидные нюансы этих протоколов.

Сейчас вышел на бумаге первый том (из планируемых 9), почти готов второй, третий — в состоянии бета-версии (все три есть на Leanpub).

Адитья Бхаргава, Грокаем алгоритмы

Мельком просмотрел тут одну детскую книжку по «алгоритмам».

bhargava-algorithms

Удивлен большим количеством положительных отзывов на нее — причем ее рекомендовали, как вполне себе «взрослый» учебник, позволяющий быстренько подготовиться к собеседованию (собственно, вопросы «про алгоритмы» на программистском собеседовании — это некая форма карго-культа). На самом деле объем изложенного там материала катастрофически мал, местами вообще создается впечатление, что книга написана по принципу — взять «полноценный» учебник по «алгоритмам» (что-то типа Кормена или Дасгупты), выкинуть все сложное, а оставшееся максимально упростить. Все это разбавляется некоторым количеством смешных картинок — и готово.

Возможно, это и неплохо для детской книги — даже очень талантливый и старательный семи-восьмиклассник вряд ли будет настолько усидчив, чтобы самостоятельно разрисовать что-то вроде диаграммы стековых вызовов для несложной рекурсивной функции, а здесь она приведена в готовом виде — но есть несколько «сюжетов», которые при таком подходе очень сильно «повисают в воздухе». Особенно почему-то досталось O-нотации, которая здесь изложена в виде «как ее понимает средний программист» (а уж подсчет сложности тривиальной сортировки — O(n2) — во второй главе — это просто песня!).

Кратенькое резюме такое — неплохо для семиклассника, читающего под одеялом с фонариком журнал Ксакеп, для взрослого человека скорее бесполезно, в качестве справочника заменяется любым cheatsheet-ом вроде такого:

https://algs4.cs.princeton.edu/cheatsheet/

Introduction to Applied Linear Algebra

Нашел замечательную просто книжку по линейной алгебре — точнее, той ее части, которая нужна в «машинном обучении». Так и называется — Introduction to Applied Linear Algebra – Vectors, Matrices, and Least Squares, издана Cambridge University Press, но на официальном сайте доступна и электронная версия.

vmls_cover

Это не совсем учебник по математике в «строгом» смысле — многие вполне содержательные утверждения там приводятся без доказательства, но скорее — сборник многочисленных «прикладных» примеров, причем в самых разных областях — от эконометрики до классификации текстов. Думаю, вполне подойдет тем, кому слова «матрица» и «вектор» напоминают о страшноватой «высшей математике».

А. А. Бек, «Талант» («Жизнь Бережкова»)

<sarcasm>

Кстати, если вас бесят биографии всяких там стивов джобсов и элонов масков в жанре «сопли с сахаром» — крайне рекомендую прочитать роман «Талант» (он же «Жизнь Бережкова») А. А. Бека. Написан он в те времена, когда ложная политкорректность была не в моде — и поэтому барыг, спекулянтов и растратчиков называли просто, по рабоче-крестьянски — барыгами, спекулянтами и растратчиками, а не «успешными предпринимателями», «инвесторами» или «бизнес-ангелами», а малолетних долбоебов — малолетними долбоебами, а не «стартаперами». Пользуясь этим нехитрым словарем, любой, кто интересуется инженерным бизнесом и менеджментом, может извлечь из книги немало полезного.

</sarcasm>

А если серьезно — очень рекомендую.

О профессиональной этике

Полистал тут книжечку Modern Assembly Language Programming with the ARM Processor by Larry D. Pyeatt, в частности, главу про арифметику с фиксированной запятой. В этой главе упоминается про известный случай с заглючившей системой Patriot, а в одном из упражнений предлагается обсудить это, исходя из положений Software Engineering Code of Ethics And Professional Practice.

Интересно, а многие ли отечественные программисты слышали про такой документ?