Книга Дэвида Флэнагана «JavaScript. Подробное руководство»

Дэвид Флэнаган "JavaScript. Подробное руководство"До сих пор мое знание JavaScript носило хаотичный характер, поскольку этот язык я изучал по мере надобности для решения конкретных задач, и чтобы упорядочить свои знания, решил почитать какой-нибудь основательный учебник, в котором бы рассказывалось о последних тенденциях в этом языке и в браузерах. В качестве учебника мне попалась книга Дэвида Флэнагана «JavaScript. Подробное руководство», а именно его 6 издание. Как оказалось, выбор был правильный, эта книга — как раз то, что я искал.

«JavaScript. Подробное руководство» — это довольно объемная книга на 1000 с лишним страниц, и в ней язык JavaScript описан практически со всех сторон, начиная от основ языка, включая то, что часто называют HTML5, и до реализаций JavaScript для работы на сервере — Node.js и Rhino.

Книга состоит из трех примерно равных по объему частей. Первая часть посвящена самому языку JavaScript независимо от того, где именно он используется, это так называемый базовый JavaScript. Мне понравилось, что описание языка написано с одной стороны достаточно аккуратно с точки зрения формулировок и определений, и в то же время, читается книга достаточно легко. В некоторых местах автор сравнивает JavaScript с другими языками программирования, что особенно актуально для глав про объектно-ориентированное программирование — все-таки при переходе на JavaScript с других языков, таких как C++, Java, C# и т.п. приходится перестраивать мышление и думать не в терминах классов, а в объектах. Также автор рассматривает множество подводных камней, характерных для JavaScript, особенно это касается неявного преобразования типов, «поднятия» объявления переменных и области видимости переменных. Благодаря таким примечаниям чувствуется, что автор имеет опыт практического программирования не только на JavaScript, поэтому многие примеры в книге будут полезны даже сами по себе в качестве готовых функций или объектов.

Читать далее ‘Книга Дэвида Флэнагана «JavaScript. Подробное руководство»’ »

Книга М. Руссиновича и Д. Соломона «Внутреннее устройство Microsoft Windows»

book_windows_internalsНе так давно вышло шестое издание книги «Внутреннее устройство Microsoft Windows» (в оригинале «Windows Internals») таких известных среди программистов людей как Марк Руссинович и Дэвид Соломон. Руссиновича вы можете знать в первую очередь как автора многих утилит с сайта Sysinternals, который несколько лет назад перешел под крыло Microsoft.

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

Читать далее ‘Книга М. Руссиновича и Д. Соломона «Внутреннее устройство Microsoft Windows»’ »

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

Питер Сейбел. Кодеры за работой Похоже, что за границей пользуются популярностью книги, которые представляют собой сборники интервью у людей определенных профессий. Когда-то мне уже попадалась книга Пионеры программирования, для которой автор интервьюировал (бррр, ну и словечко) создателей различных языков программирования, на этот раз хочу рассказать про еще одну подобную книгу — «Кодеры за работой. Размышления о ремесле программиста» за авторством Питера Сайбела, который сам является «программистом-писателем или писателем-программистом», как написано во введении. В ней представлены 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-ых годах прошлого века, когда казалось, что еще чуть-чуть и благодаря компьютеру люди создадут еще один разум. Этого не произошло, и требования к искусственному интеллекту стали постепенно снижаться, так появились термины «сильный ИИ» — ИИ в его первоначальном понимании — и «слабый ИИ» — просто интересные алгоритмы.

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

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