Питер Сейбел «Кодеры за работой»

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

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

Читать далее ‘Питер Сейбел «Кодеры за работой»’ »

Книга Кевина Митника «Призрак в сети»

cover_mitnickЕсли вы попросите кого-нибудь на улице назвать какого-нибудь хакера, то тут возможны два исхода: или вам ничего не ответят, или назовут имя Кевина Митника (неправильные варианты рассматривать не будем). Книга «Призрак в сети» (в оригинале «Ghost in The Wires») является автобиографией этого известного хакера в соавторстве с Уильямом Саймоном (он в основном занимался художественной обработкой текста). Поскольку имя Митника обросло огромным количеством легенд, многие из которых являются откровенной ложью, а многие преувеличением, то автобиография — это хорошая отправная точка для того, чтобы узнать историю жизни этого человека.

В книге основной упор был сделан на том, что Митника интересует больше всего — на взломах. Он довольно подробно (опуская некоторые технические моменты) описывает то, как ему удалось проникнуть на тот или иной компьютер или получить ту или иную информацию. Это довольно удивительно, учитывая, что с момента некоторых его атак прошло более 20 лет. Однако, Кевин в самом начале предупреждает, что память у него, мягко говоря, хорошая, что он до сих пор помнит многие номера телефонов, которыми пользовался во время взломов.

Читать далее ‘Книга Кевина Митника «Призрак в сети»’ »

Книга Фредерика Брукса «Мифический человеко-месяц»

brooks

Не многие книги, так или иначе связанные с программированием, вспоминают через десяток лет. А уж таке книги, чтобы их переиздавали спустя почти 40 лет, это вообще уникальные. Этот пост как раз и посвящен одной такой книге, первое издание которой вышло аж в 1975 году, но на нее до сих пор ссылаются на форумах и статьях. Это книга Фредерика Брукса «Мифический человеко-месяц».

Автор книги в 60-ых годах прошлого века работал в компании IBM и участвовал в качестве менеджера в создании операционной системы OS/360 для компьютеров System/360 (это те самые компьютеры, которые были клонированы в СССР под названием ЕС ЭВМ). В этой книге автор описывает проблемы и возможные пути решения, возникающие при создании больших программных систем. В первую очередь книга описывает взгляд на разработку с точки зрения менеджера, работающего с группой программистов. Основной посыл книги — это проблема срывов сроков при создании софта, над которым трудится некоторое количество человек, больше одного-двух.

Читать далее ‘Книга Фредерика Брукса «Мифический человеко-месяц»’ »

Моя первая книга по программированию

Моя первая книга по программированию

Сегодня будет очередной ностальгический пост, на этот раз про первую книгу по программированию, которую я прочитал. Точнее, книга была не только по программированию, но и про компьютеры вообще, про их устройство и использование. Называлась она «Основы компьютерной грамотности» авторов Б. Кёршан, А. Новембер и Дж. Стоун.

Эту книгу родители мне подсунули уже не помню в каком году, но это было в каком-то одном из начальных классов, по памяти меньше пятого. Сама книга 1989 года издания, но в интернете ходит ее электронная версия от 1995 года, сходу различий между двумя этими изданиями я не нашел. В это время мой отец собирал комьютеры Радио-86 РК и какой-то клон Спектрума, я на все это поглядывал с любопытством, но ничего особенного с теми компьютерами не делал, до тех пор пока у нас не появился Поиск. Вот примерно в то время книга и попала в мои руки.

Основы компьютерной грамотности

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

Читать далее ‘Моя первая книга по программированию’ »

Книга Джеймса Бёрка «Пинбол-эффект»

pinball-effectВы бы не могли прочитать этот пост, если бы программисты не написали бы ваш любимый браузер, который был бы бесполезен, если бы в 1989 году Тим Бернес-Ли и Роберт Кайо не создали технологию WWW (World Wide Web), которая, в свою очередь, не могла появиться без военного проекта ARPANET по созданию компьютерной сети, который был бы бессмысленным без появления компьютеров, построенных по архитектуре фон Неймана, который работал над созданием компьютера ENIAC, который был по начальной задумке предназначен для расчета баллистических таблиц, которые было бы невозможно создать, если бы в в XVII веке Ньютон не открыл законы механики, названные его именем. Продолжая такую цепочку, мы должны будем благодарить того неизвестного гениального человека, кто изобрел колесо, которое, в свою очередь, не было бы открыто, если бы до него кто-то впервые не взял в руки камень…

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

Читать далее ‘Книга Джеймса Бёрка «Пинбол-эффект»’ »

Обзор книги Х. Марманиса и Д. Бабенко «Алгоритмы интеллектуального интернета»

bool_intellect_internetПрочитал книгу Х. Марманиса и Д. Бабенко «Алгоритмы интеллектуального интернета». Как видно из названия, эта книга посвящена алгоритмам, которые применяются на сайтах для того, чтобы сделать сайт чуть более дружественным пользователю, хотя эти же алгоритмы можно применять и для оффлайновых приложений.

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

В разделе про поиск описывается алгоритм PageRank, который был представлен на конференции в 1998 году Сергеем Брином и Ларри Пейджем. Конечно, с того времени в алгоритме, используемым Google, многое поменялось, но в целом суть осталась той же — чем больше ссылок на странице, тем более релевантной она считается. Этот алгоритм показывает, как можно учитывать ссылки между страницами для того, чтобы определить, какой из них отдать предпочтение при поиске.

Для поиска по данным в примерах используется библиотека Lucene, которая использует свой алгоритм подсчета релевантности страниц. В книге описаны способы объединения нескольких алгоритмов подсчета веса страниц с тем, чтобы улучшить поисковую выдачу.

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

Читать далее ‘Обзор книги Х. Марманиса и Д. Бабенко «Алгоритмы интеллектуального интернета»’ »

Книги про параллельные вычисления с использованием MPI

Книги про параллельные вычисления с использованием MPI

Начиная с этого понедельника в течение двух недель у меня начинаются занятия в Летней суперкомпьютерной академии МГУ, куда меня послали на работе. В качестве направления (на сайте это называется треком), по которому я буду учиться, выбрал параллельное программирование с использованием MPI (Message Passing Interface) и OpenMP. Судя по всему, изначально подразумевалось, что те, кто будет проходить обучение в этой академии, уже должны уметь пользоваться этими библиотеками, а на лекциях и практике будут рассказывать более углубленные вещи. По крайней мере в прошлые годы для поступления в эту академию нужно было проходить тестирование, которое в этом году отменили.

До сих пор об MPI и OpenMP я имел представление только на уровне «да, есть такие библиотеки», хотя некоторые исходники с использованием OpenMP еще видел издалека и представлял, что распараллеливание происходит с помощью команд #pragma… В общем, чтобы не совсем опозориться, где-то месяц назад начал судорожно читать книги про OpenMP и особенно MPI. OpenMP — это все-таки более простая вещь, если есть опыт программирования обычных многопоточных приложений, а вот MPI мозг выворачивает наизнанку. Если с использованием OpenMP программу можно постепенно из последовательной сделать параллельной, то при использовании MPI программу нужно изначально писать с расчетом на эту библиотеку.

Так что основной упор за последний месяц сделал именно на MPI, который не особо полезен на обычных настольных компьютерах, но без него не обойтись при расчетах на суперкомпьютерах с распределенной памятью, когда память не одна на все процессоры, а каждый процессор может обращаться к своему блоку памяти. Поэтому в MPI, в отличие от OpenMP, распараллеливание происходит не по потокам (знаю, что их правильнее называть нитями, но я уже слишком привык к такому неправильному переводу слова «thread», распространенному в нашей литературе), а по процессам. Программа, написанная с использованием MPI — это по сути несколько одновременно запущенных программ (или одинаковых, или разных), обменивающихся между собой данными, и задача программиста описать, какой процесс, что делает.

Возвращаясь к книжкам. После того, как стало ясно, что мне предстоит, я скачал (за одно это слово пока еще не расстреливают? А то я не успеваю следить за потоком незамутненного сознания наших депутатов) несколько книг:

  • А. С. Антонов — Параллельное программирование с использованием технологии MPI.
  • Г. И. Шпаковский, Н. В. Серикова — Программирование для многопроцессорных систем в стандарте MPI.
  • В. Д. Корнеев — Параллельное программирование в MPI.

Читать далее ‘Книги про параллельные вычисления с использованием MPI’ »

Про книгу А. С. Потапова «Искусственный интеллект и универсальное мышление»

potapov

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

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

Читать далее ‘Про книгу А. С. Потапова «Искусственный интеллект и универсальное мышление»’ »

Книга Леонарда Сасскинда «Битва при черной дыре»

black-hole Как же здорово иногда почитать качественные книги, в которых на популярном языке рассказывается о сложных научных теориях. Конечно, после таких книг нельзя говорить, что ты разбираешься в этих теориях, но получить хотя бы общее представление о них полезно. Одной из таких замечательных книг является «Битва при черной дыре» физика-теоретика Леонарда Сасскинда. Второе название книги «Мое сражение со Стивеном Хокингом за мир, безопасный для квантовой механики».

Стержень книги — это научный спор автора и его сторонников со Стивеном Хогингом (и его сторонников) по вопросу о том, пропадает ли информация, попавшая в черную дыру бесследно, или все-таки каким-то образом ее можно оттуда извлечь (теоретически). Хокинг считал, что информация пропадает, но это значит, что в этом случае должен переставать работать один из основных принципов квантовой механики, что обеспокоило Сасскинда и его друга, лауреата Нобелевской премии Герарда ’т Хоофта (интересно, что означает такой апостроф в начале фамилии?) Сасскинд пытался доказать, что информацию можно извлечь (опять же, теоретически), собрав частицы, которые образуются при испарения черной дыры. Самое интересное, что это самое испарение черных дыр предсказал и обосновал все тот же Хокинг в далеком 1974 году, и сейчас это излучение носит его имя.

Сасскинд рассказывает, как в течение долгих лет (начиная с 1983 года и до двухтысячных годов) появлялись различные теории, которые между собой взаимодействовали, и которые в результате помогли ответить на поставленный вопрос, разумеется, в пользу автора книги. 🙂 Самое замечательное во всей этой истории то, что этот спор был чисто научный, не перерос полемику и не сказался на отношениях между двумя сторонами.

Читать далее ‘Книга Леонарда Сасскинда «Битва при черной дыре»’ »

Про книгу Сьюзан Уэйншенк «100 главных принципов презентации»

100 Прочитал на днях книгу Сьюзан Уэйншенк «100 главных принципов презентации». Если сразу не обратить внимание на второй заголовок, написанный оранжевым цветом на розовом фоне (фиг его заметишь), то можно подумать, что это книга про то, как создавать слайды. По крайней мере у меня слово презентация ассоциируется со слайдами в PowerPoint. Однако, второй заголовок звучит: «Что должен знать оратор о людях». В итоге книга оказалась не о том, как создавать дизайн слайдов, а о том, как должен вести себя докладчик на презентации, с учетом того, что у него все-таки есть слайды.

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

Что касается подачи материала в книге, то она представляет собой сборник коротких советов, каждый из которых описан максимум на несколько страниц. Честно говоря, я недолюбливаю такую подачу материала, потому что чаще всего эти советы кажутся разрозненными и кончаются внезапно. При чтении «100 главных принципов презентации» такого ощущения не было (может быть только в начале немного), во многом благодаря построению книги, когда один совет плавно переходит в другой, но из-за такого мелкого разбиения материала иногда бывает чувство недосказанности.

Читать далее ‘Про книгу Сьюзан Уэйншенк «100 главных принципов презентации»’ »