Тег ‘книги’

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

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.

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

Understanding the Digital World: What You Need to Know about Computers, the Internet, Privacy, and Security

Оказывается, Брайан Керниган (один из авторов языка программирования C и операционной системы Unix) еще не впал в маразм и недавно (в 2017 году) написал книжку с подзаголовком “что нужно знать о компьютерах, Интернете, приватности и безопасности”.

understanding-the-digital-world

Основное содержание книги – что-то вроде конспекта курса лекций по “Введению в Computer Science”, или CS 109 в университете Принстона (кстати, очень полезно посмотреть задания и лабораторные по этой ссылке). Примерно 3/4 книги повторяют более раннюю “D is for Digital: What a well-informed person should know about computers and communications”, но здесь добавлен новый материал по криптографии, безопасности и тому подобным вопросам.

Если вам интересно, что действительно должно быть в нормальном современном учебнике по “Основам информатики и вычислительной техники” – посмотрите эту книгу и упражнения к ней.