Тег ‘книги’

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

Кстати, посмотрел тут на выходных в очередной раз “Профессионала” с Бельмондо и “День Шакала”. Сюжет, в принципе, достаточно близок – симпатичный киллер собирается убить несколько менее симпатичного политика, в процессе водит спецслужбы за нос, и все это на фоне Парижа, где даже бомжи – не какие-то там обыкновенные бомжи, а настоящие французские клошары. “Профессионал” местами похож на веселую комедию, а вот “Шакала” – точнее, его литературный первоисточник – в свое время даже называли руководством для кого-нибудь, желающего скрыть личность. Скажем, описанный в книге способ получения британского паспорта довольно надежно работал вплоть до начала 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”, но здесь добавлен новый материал по криптографии, безопасности и тому подобным вопросам.

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

Был бы человек, а статья найдется

Сегодня (да, бля, сегодня! часа так в три ночи) узнал, что одна из популярных фразочек на тему “не зарекайся” – “Любого человека, ничего ему не объясняя, можно посадить в тюрьму лет на десять, и где-то в глубине души он будет знать, за что,” – это не просто какая-то придумка отечественных юмористов, а приписываемая швейцарскому писателю Фридриху Дюрренматту цитата. Поиски первоисточника, правда, результатов не дали – в “Визите старой дамы” этих слов нет; что-то подобное встречается в “Аварии” – но только подобное.

Впрочем, почитав Дюрренматта, начал лучше понимать записи vit_r под тегом “switzerland“.

Задача по математике

Думаю, экс-матшкольникам будет интересно. Все те же “Пятьдесят лет в строю” Игнатьева, описание вступительных экзаменов в Академию Генерального штаба (1899 год):

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

— Переходите к геометрии. Что у вас там? Круг? Вот и отлично.— И вместо столь знакомых мне теорем по учебнику Семашко, на которых зиждилось все преподавание геометрии в корпусе, маленький генерал велел начертить просто круг, потом другой, побольше, и предложил определить центры всех третьих кругов, касающихся первых двух.

Подобных задач на построение в корпусе мы никогда не решали, и в программах о них не упоминалось. Шарнгорсту дела до этого не было, и он заставил меня мучиться у доски добрых два часа. То и дело мне приходилось стирать многочисленные хорды и перпендикуляры.

Доска стала уже сероватой, мундир мой покрылся мелом, горькая обида туманила сознание, а мой мучитель изредка только подходил и приговаривал: «А есть еще случай, вами неразобранный…»

http://militera.lib.ru/memo/russian/ignatyev_aa/07.html

Как бы я решал эту задачу? Скорее всего, обратил бы внимание на то, что задача сводится к нахождению точек, разность расстояний от которых до центров построенных окружностей фиксирована – а дальше ввел бы подходящую систему координат и записал бы в ней уравнение соответствующей гиперболы (и да, надо действительно рассмотреть несколько случаев). Может быть, совсем красиво получится, если перейти к проективной геометрии – но все это фантазии, а некоторая неприятность состоит в том, что – цитирую абзац чуть раньше -

Программа вступительных экзаменов по математике не предусматривала даже аналитической геометрии…

Конечно, аналитическую геометрию многие из поступающих в той или иной степени могли знать – скажем, закончивший кадетский корпус Игнатьев должен был быть знаком с ней – но все же интересно, можно ли сравнительно легко и быстро решить эту задачу “элементарными” методами, не выходя за рамки обычного гимназического учебника Киселева (его можно найти и в электронном, и даже в бумажном виде, в отличие от упомянутого выше Семашко)?

UPD Учебник Франца Ивановича Симашко “Начальная геометрия и конические сечения” (использовавшийся в кадетских корпусах) удалось найти в электронном виде:

http://resolver.gpntb.ru/purl?docushare/dsweb/Get/Resource-4472/Simashko_F_Nachalnaya_geometriya_i_konicheskie_secheniya.pdf

Конические сечения в нем вводятся “честно” – как сечения конуса плоскостью, а не как решения уравнений, и особо подробно не рассматриваются – но утверждения об эллипсе, гиперболе и параболе, как геометрических местах точек все же доказываются. В свете этого задача выглядит не очень сложной для тех, кто действительно готовился по учебнику для кадетских корпусов, поводом поговорить на множество разных тем для тех, кто недочитал до конца последнюю главу (к заявленной в билете теме “Круг” она отношения почти не имеет), и совершенно неподъемной – для тех, кто готовился по “гимназической” программе, в которой конические сечения отсутствовали.

Стартаперу на заметку

Граф Алексей Алексеевич Игнатьев – о тонкостях elevator pitch:

Если, например, вы предлагали какое-нибудь дело, крайне выгодное, но требующее вложения капитала, крупному русскому банку, то вы должны были представить ваш проект раздутым до мировых масштабов, сулящим миллиардные наживы.

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

Если же, наконец, вы решались обратиться к настоящему серьезному банкиру, которым являлся в ту пору Париж, то вам следовало для верности заехать сперва в Брюссель и заручиться там хотя бы только принципиальным одобрением какого-нибудь бельгийца. Появившись с ним во французском банке, вам не следовало открывать всех ваших карт, запугивать «нулями», сулить крупные барыши через десять лет, а просто запросить только первую необходимую для начала сумму и доказать возможность заработать хоть какие-нибудь гроши, но в кратчайший срок. Раз французский капиталист дал первые франки, он будет не в силах считать их потерянными — il courra après son argent (он побежит за своими деньгами) и никогда не даст вам погибнуть. Мнение бельгийца как тяжеловатого на подъем, но серьезного дельца послужит вам лучшей рекомендацией.

http://militera.lib.ru/memo/russian/ignatyev_aa/35.html

А. В. Столяров, “Программирование: введение в профессию”

Посмотрел на свежие “краудфандинговые” книги А. В. Столярова:

http://stolyarov.info/books/programming_intro

Лишний раз убедился, что фанатизм несовместим с преподавательской деятельностью – пусть заведомо ложные утверждения частично убраны, использовать эти книги в качестве учебника (и, стоит полагать, слушать лекции автора) категорически нельзя.

Можно ли с чисто педагогической точки зрения яростно обличать “стандартизаторов” языков C и C++? Возможно, не все, что они делают – правильно, но стоит ли осуждать в учебнике (!) современные стандарты? Сам автор книги давно ушел из большого секса, но те, кто по этой книге учится сейчас – будут профессионально заниматься программированием через 4-5 лет. Местами есть относительно разумные объяснения, какими возможностями из новых стандартов пользоваться не стоит – но в целом “вместе с водой выплеснули и ребенка”, и, скажем, о существовании того же stdint.h вообще не упоминается. Можно ли сейчас считать компетентным программиста на C, не знающего о существовании этого заголовочного файла – вопрос риторический.

В общем, местами книги можно считать хорошими, местами – приемлемыми, а кое-что вообще следовало бы вычеркнуть. Явно не подходит для “введения в профессию” – а вот как элементарный справочник по программированию в Unix-подобной среде использовать можно, если грамотно отделять тараканов автора от фактического материала.

Про книжки вопрос

Разбираюсь сейчас с одним проектом с использованием Keil MDK. Первым делом, конечно же, нашел старую, но местами актуальную (особенно в моем случае, где используется довольно старая версия MDK) книжку Тревора Мартина “Микроконтроллеры ARM7 семейств LPC2300/2400″. Некоторую ценность представляет 6 глава, где довольно подробно рассказывается о возможностях ОС Keil RTX.

Но вот сегодня я решил все-таки обратиться к фирменной документации (ну, помимо встроенной справки) – благо книжка Getting Started: Building Applications with RL-ARM доступна совершенно бесплатно – и просматривая раздел про RTOS, испытал ощущение, что где-то я это все уже видел. И действительно – эти две публикации практически дословно повторяют друг друга.

Конечно, русское издание книжки Мартина – очевидный бестселлер, особенно несколько лет назад. Далеко не все отечественные “эмбеддеры” владеют английским языком в достаточной степени, чтобы читать документацию на языке оригинала (некоторые и русским не владеют, но это уже совсем печально) – так что достаточно хороший перевод официального руководства не помешает.

Но вот для кого предназначено оригинальное английское издание, представляющее собой компиляцию свободно доступных даташитов и справочных руководств?