Автор библии программистов книги искусство программирования: Дональд Кнут Автор Библии программистов. Архитекторы компьютерного мира

Содержание

Дональд Кнут Автор Библии программистов. Архитекторы компьютерного мира

Дональд Кнут

Автор Библии программистов

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

Дональд Кнут

Дональд Кнут

В 1974 году, когда Дональд Кнут как раз закончил третий том своего семитомника «The art of computer programming» (в русском переводе — «Искусство программирования для ЭВМ»), ему была присуждена премия Тьюринга. В постановлении комитета по премиям Тьюринга сказано, что она «присуждается профессору Стэнфордского университета Дональду Е. Кнуту за ряд выдающихся работ в области анализа алгоритмов и разработки языков программирования и в особенности за его вклад в развитие «искусства программирования», осуществленный серией известных книг с этим общим названием.

Методы программирования, алгоритмы, теоретические построения, изложенные в указанных книгах, послужили основой преподавания информатики и организующим началом в развитии этой дисциплины».

В 80-х годах его личный опыт написания книг и неудовлетворенность тем, в каком виде были представлены гранки, возбудили в нем интерес к компьютерному набору. Этот интерес привел к созданию издательской системы ТеХ и программы проектирования шрифтов METAFONT.

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

Дональд Кнут родился 10 января 1938 года в Милуоки (штат Висконсин). Его отец преподавал бухгалтерский учет в университете и занимался также дома, в подвале, печатным делом. Ребенком Кнут с удовольствием играл с калькулятором отца, который мог перемножать десятизначные числа, но у него уходило от десяти до двадцати секунд, чтобы напечатать ответ. Кнут вспоминает, как он пытался извлечь квадратный корень из десяти, пытался и ошибся. Открыв, что ответ находится между 3,16 и 3,17, он сделал заключение, что число должно иметь истинное значение л, а не 3,14, как говорилось в его учебнике. Вскоре он понял, что его заключение было ошибочным.

Любовь Кнута к математике усилилась на первом году учебы в университете. Он был захвачен графикой алгебраических функций — областью нескончаемых возможностей.

Физика также ему нравилась, и он разрывается между ней и музыкой — он серьезно обучался игре на пианино, сам написал несколько произведений. Кнут признает, что у него комплекс неполноценности. Это объясняет, говорит он, то, что он всегда много работал. В старших классах Милуокской лютеранской высшей школы он беспокоился, что низкие оценки по математике могут помешать его поступлению в колледж, но это была непонятная озабоченность, поскольку он закончил школу с самым высоким коэффициентом за все времена — 97,5 %.

В 1956 году он поступил в Кейский Технологический институт в Кливленде. На первом году обучения он занялся высшей математикой. Снова из-за страха, что не справится, Кнут в дополнительное время с рвением изучал дифференциальное и интегральное исчисление и аналитическую геометрию.

Во время каникул после первого курса Кнут впервые занялся работой с компьютером. У него было задание на лето — построить графики для статистиков Кейса. В соседней комнате находилась новая машина IBM 650. Кнут так загорелся ею, что посвятил «Искусство программирования» компьютеру IBM 650, установленному в Кэйском технологическом институте, в память о многих приятных вечерах. Некоторые из его преподавателей советовали ему держаться в стороне от компьютеров, утверждая, что это ни к чему хорошему не приведет. Но любопытство взяло верх, он проводил ночи напролет с компьютером.

Кнут с легкостью оставил физику. Его лабораторные работы, казалось, не приносили удовлетворения, он ронял детали на пол и часто оказывался последним. Сварка оказалась катастрофой: при росте 6 футов и 4 дюйма он был слишком высоким для сварочных столов, и ему невозможно было наблюдать за работой, кроме того, очки ему не подходили.

Кнут добился успехов, используя компьютер для оценки игры баскетбольной команды, менеджером которой он являлся. Он выработал сложную формулу для ранжирования игроков, рассчитывая вклад каждого в игру, не только по количеству очков, которые он принес команде. Кнут обычно сидел за компьютером IBM 650 и подводил статистику игры, в то время, когда тренер стоял рядом. Используя программу Д. Кнута, тренер мог определить истинный вклад каждого в игру и в соответствии с этим использовать игроков. Оказалось также, что данная программа стимулировала игроков работать с большей отдачей. В 1960 году Кэйский институт выиграл чемпионат лиги, а магическая формула Кнута неожиданно была опубликована в «Walter Cronkite’s Sunday» и в «Newsweek».

В 1960 году Кнут получил звание бакалавра по математике, причем студенты даже проголосовали за присуждение ему степени доктора. Летом этого года в Пассадене Кнут занялся работой по системному программированию, результатом которой было создание компилятора для ALGOL. За эту работу он получил 5,5 тысячи долларов. Осенью того же года он поступает в Калифорнийский технологический институт для получения степени доктора философии по математике.

В январе 1962 года издательство «Addison-Wesley» предложило Кнуту написать книгу по компиляторам. Он принял это предложение.

В июне 1963 года в Калифорнийском технологическом институте Кнуту присуждается степень доктора философии по математике и он становится ассистентом профессора. Вскоре он начинает работу над главами своей книги.

Находясь в зачаточном состоянии, компьютерная наука того времени страдала от недостатка специальной литературы, которая была к тому же неоднородной. Кнут обнаружил, что многие из опубликованных статей были неправильны. Тысячи программистов писали новые алгоритмы для мэйнфреймов. Но когда приходила хорошая мысль, она терялась в журнале или техническом докладе. Многие программы просто не читались. Результатом было то, что люди вновь открывали методы, которые уже были известны.

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

Цель Кнута в этой монументальной работе состояла в том, чтобы обобщить технику программирования и найти ей соответствующее применение. Его основным вкладом было обобщение материала и анализ методов. Он пытался развить наиболее используемые теории для разных методов и заполнить пробелы в этих теориях, он был первым, кто находил эти пробелы и собирал все эти разбросанные теории. Вначале Кнут думал, что напишет только одну книгу о компиляторах. Набросав несколько глав, тем не менее, он почувствовал, что книга должна быть гораздо большей и основополагающей. Получив зеленый свет от издателя, он писал, писал и писал. К июню 1965 года он завершил первый проект из двенадцати глав, который размещался на трех тысячах страницах рукописного текста.

В октябре он отослал первую главу издателю. Издательство «Addison-Wesley» предложило, что двенадцать частей будут опубликованы как семь отдельных томов, каждый из которых будет содержать один или два раздела. Кнута устраивало такое предложение.

Проведя напряженные дни и ночи над реализацией семитомного проекта, Кнут испытал несколько приступов язвы летом 1967 года. Как вспоминает он, это случилось на середине «алгоритма Евклида», на 333 странице второго тома.

Данные издания, как оказалось, имели наибольший спрос из всех книг, продаваемых «Addison-Wesley». В середине 80-х годов две тысячи экземпляров каждого из трех томов расходились в течение месяца, и эта цифра не менялась с середины 70-х годов. Работа была переведена на китайский, румынский, японский, испанский и русский, планировалось издание на португальском и венгерском. Кнут становится все более знаменитым: в 1979 г. в возрасте 41 года он получает из рук президента Дж. Картера Национальную медаль в области науки за свою работу по алгоритмам.

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

Может показаться неправдоподобным, но Д. Кнут также пишет фантастические вещи. Его новелла «Сюрреалистические числа: как два бывших студента занялись чистой математикой и нашли полное счастье» была опубликована в издательстве «Addison-Wesley» в 1974 году. В книге рассказывается об исследовании новой системы чисел, открытой в Кэмбриджском университете Дж. Конвэем. Кнут узнал о данной системе от самого Конвэя в 1972 году. Один журналист отметил, что впервые значимое открытие в математике описывается сначала в научной фантастике. Кнут написал данную книгу не для того, чтобы проповедовать теорию Конвэя, а чтобы объяснить, как человек может создать такую теорию.

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

Кнут изобрел ТеХ, первую издательскую систему, а также METAFONT, систему, которая использует классическую математику для придания внешнего вида шрифтам. ТеХ был назван одним из наиболее важных изобретений в истории печатания книг. Некоторые сравнивали его по значению с Библией Иоганна Гуттенберга, что смутило Кнута.

ТеХ позволяет наборной машине размещать буквы и знаки на странице со значительной гибкостью и эстетичным качеством.

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

Кнут ввел обе программы в открытое пользование: ни он, ни Стэнфордский университет не заработали на них ни гроша. Он написал программы, как он говорит, из любви к книгам и для достижения необходимой эстетики.

Когда Кнут сверстал второй том «Искусства программирования», используя METAFONT и ТеХ, результат был лучше, но не идеальным. Плохо получались числа. Так он потратил еще пять лет, работая с лучшими дизайнерами по графике, для того, чтобы создать новые системы и наиболее полно использовать их потенциал. Летом 1986 года разработки Кнута по типографии были завершены, и вышел пятитомник «Компьютеры и набор знаков». Первый том посвящен ТеХ; второй содержит полный источник кодов ТеХ; третий и четвертый, соответственно, посвящены METAFONT и полному источнику кодов для него; пятый том содержит 500 с лишним примеров программирования по METAFONT.

В 1986 году на приеме в издательстве «Addison-Wesley», устроенном в его честь, ему задали вопрос: «Будет ли завершен его семитомник, будут ли дописаны четыре недостающих тома?» Он ответил, что их написание заняло бы еще двадцать лет.

Прошло тринадцать лет. В 1999 году профессор Кнут заявил, что к существующим трем л омам он намерен добавить еще два тома. Кроме того, он решил заменить виртуальную модель компьютера MIX 1009 (модель, похожую на реальные компьютеры конца 60-х — начала 70-х годов), на языке которого написаны большинство алгоритмов первых трех томов, на новую модель — 64-разрядный процессор MMIX 2009 с RISC-архитектурой. В следующих изданиях «Искусство программирования» примеры будут приводиться на языке ассемблера ММIX.

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

Номер 2009 является средним арифметическим номеров четырнадцати процессоров. В их числе — CRAY I, IBM 701, Alpha 21264, MIPS 4000, StrongArm 110, Sparc 64 и др. Логическая модель MMIX довольно подробно описывает поведение настоящего процессора. Например, для каждой команды указано число тактов, требующихся для выполнения, определено поведение процессора в таких ситуациях, как неверное предсказание ветвления или промах кэша. В модели имеется набор изменяемых параметров, поэтому на самом деле MMIX — это целое семейство совместимых процессоров. Профессор Кнут намерен реализовать метасимулятор для всего семейства, чтобы можно было менять параметры модели и исследовать поведение программ.

Дональд Кнут уже разработал архитектуру процессора, простой симулятор и ассемблер. Первая редакция описания набора команд была опубликована в феврале, а четвертая редакция введения в MMIX вышла в конце июня. Теперь предстоит перенос всего накопленного программного фонда старого MIX на новый RISC-процессор MMIX. Дональд Кнут приглашает к сотрудничеству добровольцев со всего мира, прежде всего студентов.

Как заметил Питер Гордон, издававший книги Кнута в издательстве «Addison-Wesley»: «Если его сравнить с Евклидом за его работу «Искусство программирования» и с Гуттенбергом за работу по ТеХ, мы можем только догадываться, каким будет следующее сравнение».

Библия программиста | KV.by

Думаю, каждый может с уверенностью назвать книгу, которую больше всего любит. Кто-то скажет, что это «Унесенные ветром», кто-то (в т. ч. и ваш покорный слуга) назовет любимой книгой «Властелин колец», а кто-то вспомнит «Основы дифференциального и интегрального исчисления» Г. М. Фихтенгольца. Хотя, вопрос о любимых книгах довольно тривиален. Лично мне нравится формулировка, когда-то предлагавшаяся редакцией журнала «Искатель» публиковавшимся в нем авторам: «Десять книг, изменивших Ваш внутренний мир». Какие только книги не фигурировали в ответах…

С предложением назвать наиболее полезную книгу дело обстоит гораздо сложнее — далеко не каждый в состоянии сделать однозначный выбор. Можно, например, вспомнить букварь или Большую Советскую Энциклопедию (как вариант — «Британику»). Но для программистов, как мне кажется, такой книгой можно считать знаменитый труд Дональда Кнута «The Art Of Computer Programming» (в русском переводе его чаще всего печатают под названием «Искусство программирования»). Именно о нем я хочу сегодня вам напомнить.

«Искусство программирования» Дональда Кнута — одно из самых выверенных и точных пособий по программированию, какое только можно найти. Именно поэтому лучше использовать именно его для изучения алгоритмов и структур данных. Ходят даже слухи (или шутки) о том, что каждый кусок кода Дональд Кнут лично тестировал на университетском компьютере, покупая машинное время за собственные деньги. Во что это ему обошлось в далеком 1972 году, когда вышло в свет первое издание «Искусства программирования», даже страшно подумать. Кроме того, эти расходы на поиск ошибок — далеко не единственные из тех, что понес автор. В предисловии он обещает заплатить $2.56 каждому, кто найдет хоть одну ошибку или опечатку. Правда, издатели русского перевода тут же поясняют, что это относится только к оригинальному, англоязычному, изданию книги.

Нередко прикладные программисты предпочитают Кнуту книги «Фундаментальные алгоритмы на C» и «Фундаментальные алгоритмы на C++» Роберта Седжвика или «Фундаментальные алгоритмы и структуры данных в Delphi» Джулиана Бакнелла, благо, русские переводы этих книг имеются. Эти пособия тоже, безусловно, весьма достойны и заслуживают отдельного рассказа о них в рубрике «Книжная полка», однако, по сути, они представляют собой конспективное переложение «Искусства программирования» на один конкретный язык (в данном случае C, C++ и Delphi, хотя я видел аналогичные книги для программистов на Visual Basic, C# и Fortran). В упомянутых мною книгах сильно сокращено количество чисто математического материала, за счет чего все они — однотомники, против трех томов Кнута. Но чем хорошо изложение Дональда Кнута — оно старается абстрагироваться от конкретного языка программирования, для чего автор использует специальный Assembler MIX. На момент написания книги это был совершенно абстрактный язык, да и сейчас процессора с архитектурой, соответствующей командам Assembler MIX, конечно же, не существует, зато есть трансляторы с Assembler MIX на Ассемблеры платформ i386, PowerPC, SPARC и др. На мой взгляд, автор не зря выбрал именно язык Ассемблера — разбор примеров на нем позволяет не отвлекаться на оптимизацию, в сторону которой так часто тянет любителей C/C++, а вникать в саму алгоритмическую суть программы. Кроме того, по замыслу автора, пример все равно придется переделывать на существующий язык для одной конкретной платформы, поэтому каждый переведенный таким образом пример способствует еще лучшему пониманию материала. А примеров в книге вполне достаточно!

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

Один мой знакомый, очень квалифицированный программист, уже давно уехавший «за бугор» на работу в IBM, как-то сказал: «Кнут — это книга, которая должна лежать на полке каждого программиста». Не могу с ним не согласиться. «Искусство программирования» Дональда Кнута — книга, ставшая поистине легендарной в силу многих причин. Основная — это, конечно же, объем охваченного материала и качество его изложения. Поэтому если вы решили серьезно заниматься программированием или уже занимаетесь — не важно, системным, прикладным или олимпиадным, — и на вашей книжной полке нет трех белых корешков с надписью «Дональд Кнут. Искусство программирования. Том i-й», то спешите скорее в магазин и покупайте!

Лично я рекомендую приобрести эту книгу в моем любимом книжном магазине «Книга XXI век» (Минск, пр. Независимости, 92 — м. «Московская»). Цены там вполне приемлемые, а продавцы хорошо разбираются в том, что продают.

Что ж, на сегодня все, до новых встреч на страницах «КВ». Пишите на форуме, какие книги вы хотели бы увидеть на «Книжной полке»!

Вадим СТАНКЕВИЧ

Дональд Кнут – Йода Кремниевой долины

На протяжении полувека стэнфордский информатик Дональд Кнут, чем-то напоминающий Йоду из «Звездных войн», правил алгоритмическим царством. Он написал книгу «Искусство программирования» – четырехтомный труд, являющийся работой всей его жизни. Многие называют ее Библией информатики. «Как и настоящая Библия, она длинная и всеобъемлющая. Другой такой книги нет», – сказал Питер Норвиг, директор исследований в Google. Первый том заканчивается цитатой Билла Гейтса: «Если вы смогли дочитать это до конца, вы определенно должны отправить мне свое резюме».

Внутри нее описаны алгоритмы – рецепты, которые кормят цифровую эпоху. Кнут – уважаемый алгоритмист; его имя связывают с самыми важными достижениями науки, такими как алгоритм Кнута-Морриса-Пратта, который осуществляет поиск подстроки в строке.

Фото: Джилл Кнут. Дональд Кнут в Калифорнийском технологическом институте, где он защитил докторскую диссертацию.

Сейчас ему 80 лет. В свое время он работал в непосредственной близости с машиной – писал в бинарном коде.

«Кнут показал нам всем, что систему можно понять даже на машинном уровне», – сказал Норвиг. Сегодня, конечно, среднестатистический программист больше не вынужден писать в бинарном коде, вместо этого он работает с иерархиями абстракции, слоями кода, части которого он заимствует из библиотек. Тем не менее, некоторые разработчики иногда все же заходят дальше.

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

Строгие стандарты ученого могут объяснить, почему труд всей его жизни еще не закончен. Он заключил пари с Сергеем Брином, сооснователем Google и его бывшим студентом, по поводу того, кто первым закончит свою научную работу – Брин диссертацию или Кнут книгу?

Рассвет алгоритмов

В 19 лет Кнут опубликовал свою первую техническую работу в журнале Mad. Он стал информатиком до того, как появилась эта дисциплина, еще когда изучал математику в Кейсовском технологическом институте. Он смотрел на программы для мейнфрейма IBM 650, и заметив некоторые недостатки, переписал ПО, а также учебник для курса.

Фото: Джилл Кнут

За летние каникулы Кнут зарабатывал больше, чем профессора за год, тем, что писал компиляторы. Компилятор – что-то вроде переводчика; он переводит высокоуровневый язык программирования в низкоуровневый.

В итоге Кнут сам стал компилятором, случайно основав новую область наук под названием «Анализ алгоритмов». Он должен был написать книгу о компиляторах, но она превратилась в работу, в которой были собраны все его знания о написании кода для компьютеров – книгу об алгоритмах.

Выход нового тома планировался на Рождество, но его придется перенести, поскольку Кнут постоянно находит новые проблемы, которые хочет рассмотреть подробнее.

Чтобы побыстрее закончить труд, он освободил все свое время: в 55 лет он вышел на пенсию, ограничил все свои публичные обязательства и отказался от имейлов.

Раньше Кнут принимал студентов по утрам в пятницу, пока не начал проводить ночи в лаборатории Джона Маккарти, где у него был доступ к компьютерам. Тогда он, ужаснувшись от того, как физически выглядела его книга, решил создать систему компьютерной верстки TeX, которая по сей день является золотым стандартом для всех форм научных коммуникаций и публикаций. Некоторые считают ее самым важным вкладом Кнута в типографию со времен Гутенберга.

Фото: Bettmann, via Getty Images

«Я никогда не буду знать всего. Моя жизнь была бы намного хуже, если бы я знал ответы на все и если бы я не мог ответить ни на один вопрос».

Пазлы и игры – вещи, которые очень нравятся ученому. Один из разделов его книги называется «Пазлы против реального мира». Он отправил по электронной почте выдержку из своей работы художнику Мартину Демейну и его сыну и информатику Эрику Демейну, поскольку написал об их алгоритмических шрифтах-головоломках.

«Для меня большая честь быть упомянутым в его книге», – поделился Эрик Демейн.

Конечно, вся эта алгоритмическая суета также вызывает и реальные проблемы. Алгоритмы, написанные людьми, которые с каждым разом решают все более сложные проблемы, но производят код с багами и предвзятостью, довольно проблематичны. Возможно, еще большую тревогу вызывают алгоритмы, написанные не людьми, а машинами.

Программисты все еще обучают машины и кормят их данными. Однако Кевин Славин, научный сотрудник медиалаборатории Массачусетского технологического института сказал: «Сейчас мы пишем алгоритмы, которые не можем прочитать. Мы переживаем уникальный момент в истории, где мы подвержены идеям и действиям физики, имеющим человеческое происхождение, но не обладающим человеческим пониманием».

Фото: Джилл Кнут

«Сегодня программисты используют то, что создали Кнут и другие, в качестве компонентов своих алгоритмов, а затем добавляют другие необходимые им вещи и объединяют это все в одно целое», – сказал Норвиг.

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

А пока Кнут предполагает, что до завершения книги еще примерно 25 лет, хотя это прогнозируемое число не менялось с 1980 года.  Получат ли алгоритмы, пишущие алгоритмы, собственную главу или страницу в его эпилоге? «Определенно, нет», – сказал Кнут.

«Я переживаю, что алгоритмы сейчас играют слишком заметную роль в мире, – добавил он. – Сначала информатики переживали, что их никто не слушает. Теперь я переживаю, что нас слушают слишком много людей».

Источник. 


Материалы по теме:

50 лет назад «Мать всех демонстраций» Дугласа Энгельбарта навсегда изменила технологии

Суат Топсу – человек, который хочет подключить к интернету все человечество

10 уроков из жизни основоположника теории информации

Алан Тьюринг и его влияние на искусственный интеллект

Литература для разработчика

Список рекомендованной (и просто полезной) литературы для разработчиков на iOS.
Вся представленная литература на русском языке.

Библия программиста

Искусство программирования. В трех томах.

Искусство программирования. Том 1. Основные алгоритмы
ID 1335648
The Art of Computer Programming: Volume 1: Fundamental Algorithms
Автор: Дональд Эрвин Кнут
Издательство: Вильямс
Серия: Искусство программирования
ISBN 978-5-8459-1984-7, 978-5-8459-0080-7, 0-201-89683-4; 2015 г.

Язык Русский
Страниц 720 стр.
Формат 70×100/16 (170×240 мм)
Тираж 1000 экз.
Переплет Твердый переплет

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

 

 

Язык С/С99/С++

Полный справочник по C

Полный справочник по C
ID 966202
C: The Complete Reference
Автор: Герберт Шилдт
Языки: Русский
Издательство: Вильямс
ISBN 978-5-8459-1102-5, 5-8459-0226-6, 0-07-212124-6; 2009 г.

Страниц: 704 стр.
Формат: 70×100/16 (167×236 мм)
Тираж: 4000 экз.
Переплет: Твердый переплет

В данной книге, задуманной как справочник для программистов, работающих на языке С, подробно описаны все аспекты языка С и его библиотеки стандартных функций. Главный акцент сделан на стандарте ANSI/ISO языка С. Приведено описание как стандарта С89, так и С99. Особое внимание уделяется учету характеристик трансляторов, среды программирования и операционных систем, использующихся в настоящее время. Уже в самом начале подробно представлены все средства языка С, такие как ключевые слова, инструкции препроцессора и другие. Вначале описывается главным образом С89, а затем приводится подробное описание новых возможностей языка, введенных стандартом С99. Такая последовательность изложения позволяет облегчить практическое программирование на языке С, так как в настоящее время именно эта версия для большинства программистов представляется как «собственно С», к тому же это самый распространенный в мире язык программирования. Кроме того, эта последовательность изложения облегчает освоение С++, который является надмножеством С89.

В книге много содержательных, нетривиальных примеров. Рассмотрены наиболее важные и распространенные алгоритмы и приложения, необходимые для каждого программиста, а также применение методов искусственного интеллекта и программирование для Windows 2000. Обсуждаются вопросы эффективности, переносимости и отладки программ. А в конце книги возможности языка С иллюстрируются на примере разработки его интерпретатора. Это, несомненно, самый лучший способ для осмысления, постижения и понимания чистоты и элегантности языка С.

 

 

Полный справочник по C++

Полный справочник по C++
ID 1498452
C++: The Complete reference
Автор: Герберт Шилдт
Переводчик: Дмитрий Клюшин
Языки: Русский
Издательство: Вильямс
ISBN 978-5-8459-0489-8, 5-8459-0489-7, 0-07-222680-3; 2007 г.

Страниц: 800 стр.
Формат: 70×100/16 (167×236 мм)
Тираж: 4000 экз.
Переплет: Твердый переплет

В четвертом издании этой книги полностью описаны и проиллюстрированы все ключевые слова, функции, классы и свойства языка С++, соответствующие стандарту ANSI/ISO. Информацию, изложенную в книге, можно использовать во всех современных средах программирования. Освещены все аспекты языка С++, включая его основу — язык С. Справочник состоит из пяти частей: 1) подмножество С; 2) язык С++; 3) библиотека стандартных функций; 4) библиотека стандартных классов; 5) приложения на языке С++. Книга предназначена для широкого круга программистов.

 

Диалект Objective-C/Objective-C 2.0

Objective-C. Карманный справочник

ID 17562786
Objective-C Phrasebook
Автор: Дэвид Чиснолл
Переводчик: И. Берштейн
Языки: Русский
Издательство: Вильямс
Серия: Карманный справочник
ISBN 978-5-8459-1777-5; 2012 г.

Страниц: 352 стр.
Формат: 70×100/32 (120х165 мм)
Переплет: Мягкая обложка

Второе издание, обновленное с учетом новой версии Objective-C для платформ Mac OS X 10.7 и iOS 5 и поддержки механизма ARC

В этом кратком справочнике представлены самые основные сведения, иллюстрируемые лаконичными фрагментами кода, для быстрой и эффективной работы над проектами программ на Objective-C. Второе издание этого справочного пособия обновлено с учетом новой версии Objective-C, в которой поддерживается компилятор LLVM 3.0 для платформ Mac OS X 10. 7 и iOS 5, а также механизма ARC и других языковых средств Objective-C, внедренных в последние версии интегрированной среды Xcode.

Удобный и простой в использовании справочник, заменяющий в карманном формате многочисленную литературу.

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

 

 

Objective-C. Программирование для Mac OS.X и iOS

Objective-C. Программирование для Mac OS.X и iOS
ID 19902137
Learn Objective-C on the Mac: For OS X and iOS
Автор: Скотт Кнастер, Вакар Малик, Марк Далримпл
Переводчик: Дмитрий Клюшин
Языки: Русский
Издательство: Вильямс
ISBN 978-5-8459-1826-0; 2013 г.

Страниц: 304 стр.
Формат: 70×100/16 (167×236 мм)
Тираж: 1500 экз.
Переплет: Твердый переплет

Начинайте создавать приложения на основе новейших технологий, включающих в себя устройства iPhone и iPad, а также компьютеры Маc, с помощью этой книги. В книге показано, как использовать библиотеки AppKit и UlKit для разработки приложений, предназначенных для операционной системы iOS, и/или интерфейсы для операционной системы OS X.

Ведущие эксперты по компьютерам Маc Скотт Кнастер и Вакар Малик предлагают полный курс по основам языка Objective-C с помощью новейшей среды Xcode, разработанной компанией Apple. Вы также ознакомитесь с инфраструктурой Cocoa, сопровождающей язык Objective-C. Освоив язык по этой книге, вы сможете работать в среде Cocoa и создавать полноценные проекты.

iOS SDK

iPhone SDK. Разработка приложений

iPhone SDK. Разработка приложений
ID 4760826
iPhone SDK Application Development
Автор: Джонатан Здзиарски
Переводчик: Александра Маленкова
Языки: Русский
Издательство: БХВ-Петербург
ISBN 978-5-9775-0178-1, 978-0-596-15405-9; 2010 г.

Страниц: 506 стр.
Формат: 70×100/16 (167×236 мм)
Тираж: 1500 экз.
Переплет: Мягкая обложка

Книга посвящена разработке мобильных приложений и игр для iPhone и iPod Touch с использованием SDK Apple. Описаны основные этапы процесса разработки, язык Objective-C, а также все основные библиотеки SDK и примеры их использования. Рассмотрены проектирование и создание элементов пользовательского интерфейса с помощью Interface Builder и библиотеки U1 Kit, создание элементов управления приложением, работа с уровнями и 3D-преобразования с использованием Core Graphics и Quartz Core, микширование и воспроизведение звуковых файлов с помощью AVFoundations, управление сетевыми возможностями с помощью платформы CFNetwork, использование библиотеки Core Location для осуществления взаимодействия с GPS iPhone и многое другое. Материал сопровождается большим количеством примеров.

Для программистов.

 

 

iOS 5 SDK. Разработка приложений для iPhone, iPad и iPod touch

iOS 5 SDK. Разработка приложений для iPhone, iPad и iPod touch
ID 17920640
Beginning iOS 5 Development: Exploring the iOS SDK
Автор: Дэйв Марк, Джек Наттинг, Джефф Ламарш
Переводчик: Дмитрий Клюшин
Языки: Русский
Издательство: Вильямс
Серия: Expert’s Voice
ISBN 978-5-8459-1785-0, 978-1-43-023605-4; 2012 г.

Страниц: 672 стр.
Формат: 70×100/16 (167×236 мм)
Тираж: 1500 экз.
Переплет: Твердый переплет

Книга представляет собой руководство, в котором подробно рассмотрены вопросы разработки приложений для устройств iPhone, iPad и iPod touch с использованием самых новых версий комплекта iOS SDK и системы iOS 5. Все проекты были созданы с помощью комплекта инструментов Xcode 4. Цель книги — объяснить, как работают приложения для системы iOS и продемонстрировать процесс их создания шаг за шагом, ничего не пропуская. Проработав книгу, читатели смогут самостоятельно разрабатывать профессиональные приложения для устройств iPhone, iPad и iPod touch, использующие новейшие возможности системы iOS.

В книге описаны современные технологии, включая раскадровки и службу iCloud. Все главы существенно переработаны с учетом новшеств, появившихся в комплекте iOS 5 SDK. Вы узнаете все, что необходимо для создания собственных приложений для новейших устройств, работающих под управлением системы iOS, включая iPhone 4S, iPad 2 и последние версии iPod touch.

Требуя от читателей лишь минимального знания языка программирования Objective-C и придерживаясь легкого и понятного стиля изложения, авторы книги предлагают вашему вниманию полный курс по программированию для устройств iPhone, iPad и iPod touch. Книга начинается с объяснений, как загрузить и инсталлировать программу Xcode и комплект iOS 5 SDK и как создать первое простое приложение.

Затем вы изучите способы интеграции все элементов интерфейса системы iOS, например, кнопок, переключателей, селекторов, инструментальных панелей и ползунков, которые пользователи должны хорошо знать и широко использовать. Вы освоите множество шаблонов проектирования: от простого одиночного представления до сложных иерархий представлений. Мы снимем покров таинственности с искусства создания таблиц, и вы научитесь сохранять и извлекать данные с помощью подсистемы Core Data и механизма SQLite.

И это еще не все! Вы научитесь рисовать с помощью библиотек Quartz 2D и OpenGL ES, добавлять в свои приложения поддержку сложных мультисенсорных жестов (щипков и скольжений), а также работать с фотоаппаратом, фотоальбомом, акселерометром и встроенной системой GPS. Вы узнаете, как лучше настроить приложение и научитесь локализовать его для многих языков.
Книга посвящена системе iOS 5, благодаря чему она стала бестселлером и самой нужной книгой для разработчиков, использующих технологию Cocoa Touch.

Книга содержат много полезных советов и методов, помогающих читателям стать профессиональными разработчиками приложений в системе iOS с помощью нового комплекта SDK.

Книга предназначена для программистов любого уровня.

 

 

iOS 6 SDK. Разработка приложений для iPhone, iPad и iPod touch

iOS 6 SDK. Разработка приложений для iPhone, iPad и iPod touch
ID 21462201
Beginning iOS 6 Development Exploring the iOS SDK
Автор: Дэйв Марк, Джек Наттинг, Джефф Ламарш, Фредрик Олссон
Языки: Русский
Издательство: Вильямс
Серия: Expert’s Voice
ISBN 978-5-8459-1852-9; 2013 г.

Страниц: 672 стр.
Формат: 70×100/16 (167×236 мм)
Тираж: 1500 экз.
Переплет: Твердый переплет

Книга «iOS 6 SDK. Разработка приложений для iPhone, iPad и iPod touch» научит читателей разрабатывать собственные приложения для iPhone и iPad. Требуя лишь минимального знания языка Objective-C, написанная в легком стиле, она представляет собой полный курс программирования для iPhone, iPad и iPod touch.

Следуя советам экспертов, читатели освоят проверенные приемы и методики оптимизации программ и приобретут ценный опыт.

В книге «iOS 6 SDK. Разработка приложений для iPhone, iPad и iPod touch» рассмотрены следующие темы.

Загрузка и инсталляция среды Xcode и пакета iOS 6 SDK
Интеграция элементов управления интерфейсом, таких как кнопки, инструментальные панели и ползунки
Поддержка жестов, таких как щипки и скольжение
Работа с фотоаппаратом, библиотекой фотографий и встроенной системой GPS
Создание полноценных пользовательских интерфейсов с помощью представлений таблиц и коллекций
Сохранение и получение данных с помощью каркаса Core Data и библиотеки SQLite
Рисование с помощью библиотек Quartz 2D и OpenGL ES
Шаблоны проектирования, от простых представлений до сложных конструкций
Локализация приложений на многих языках
Работа с iCloud
В новом издании книги «iOS 6 SDK. Разработка приложений для iPhone, iPad и iPod touch» продемонстрированы возможности нового пакета iOS 6 SDK и последней версии среды Xcode. Все примеры были созданы заново с помощью самых современных версий среды Xcode и шаблонных проектов пакета iOS 6 SDK.

В книге «iOS 6 SDK. Разработка приложений для iPhone, iPad и iPod touch» описаны новейшие сведения, необходимые для создания собственных приложений на самых современных версиях устройств под управлением системы iOS.

Полезное

Разработка игр для iPhone и iPad

Разработка игр для iPhone и iPad
ID 19604162
Tap, Move, Shake: Turning Your Game Ideas into iPhone & iPad Apps
Автор: Тодд Мур
Языки: Русский
Издательство: Питер
Серия: Бестселлеры O’Reilly
ISBN 978-5-496-00215-8; 2013 г.

Страниц: 224 стр.
Формат: 70×100/16 (167×236 мм)
Тираж: 2000 экз.
Переплет: Мягкая обложка

У вас появилась отличная задумка игры для мобильного устройства? Тогда это комплексное руководство, составленное по принципу «сделай сам», отлично подойдет вам. Оно поможет воплотить в жизнь вашу идею об игре для iPhone или iPad. Изучив издание, вы сможете собственноручно разработать настоящую мобильную игру. Вы познакомитесь с Xcode и Objective-C, научитесь реализовывать игровую логику, изысканную графику, игровую физику, звуковое сопровождение, а также напишете компьютерный интерфейс приложения.
Автор книги Тодд Мур научился создавать игры для iPhone всего за неделю. Теперь разработка приложений и игр для смартфонов — его основное профессиональное занятие. Вооружившись этой книгой, любой программист сможет превратить игровые идеи в реальные продукты, готовые для отправки на рынок App Store.

 

 

iOS. Разработка приложений для iPhone, iPad и iPod

iOS. Разработка приложений для iPhone, iPad и iPod
ID 19154618
iOS 5 Programming Cookbook: Solutions & Examples for iPhone, iPad, and iPod touch Apps
Автор: Вандад Нахавандипур
Переводчик: О. Сивченко
Языки: Русский
Издательство: Питер
Серия: Бестселлеры O’Reilly
ISBN 978-5-4461-0059-0; 2013 г.

Страниц: 864 стр.
Формат: 70×100/16 (167×236 мм)
Тираж: 1500 экз.
Переплет: Мягкая обложка

Вот и настало время решить порядком надоевшие проблемы, с которыми мы сталкиваемся при разработке приложений для iPhone, iPad или iPod Touch. В данном руководстве предлагается более 100 приемов программирования, позволяющих быстро научиться пошаговому созданию полнофункциональных приложений для операционной системы iOS: и совсем простых, как музыкальный плеер, и достаточно сложных, в которых представлены функции, связанные с применением анимации, графики, мультимедиа, баз данных и облачного хранилища iCloud.

 

 

iOS. Приемы программирования

iOS. Приемы программирования
ID 27393160
iOS 7 Programming Cookbook
Автор: Вандад Нахавандипур
Издательство: Питер
Серия: Бестселлеры O’Reilly
ISBN 978-5-496-01016-0; 2015 г.

Язык Русский
Страниц 832 стр.
Формат 70×100/16 (170×240 мм)
Тираж 500 экз.
Переплет Мягкая обложка

Книга представляет собой новый, полностью переписанный сборник приемов программирования по работе с iOS. Он поможет вам справиться с наболевшими проблемами, с которыми приходится сталкиваться при разработке приложений для iPhone, iPad и iPod Touch. Вы быстро освоите всю информацию, необходимую для начала работы с iOS 7 SDK, в частности познакомитесь с решениями для добавления в ваши приложения реалистичной физики или движений — в этом вам помогут API UIKit Dynamics.
Вы изучите новые многочисленные способы хранения и защиты данных, отправки и получения уведомлений, улучшения и анимации графики, управления файлами и каталогами, а также рассмотрите многие другие темы. При описании каждого приема программирования приводятся образцы кода, которые вы можете смело использовать.

 

 

Программирование для iOS 7. Основы Objective-C, Xcode и Cocoa

Программирование для iOS 7. Основы Objective-C, Xcode и Cocoa
ID 26348798
iOS 7 Programming Fundamentals: Objective-C, Cocoa
Автор: Мэтт Нойбург
Издательство: Вильямс
Серия: O’Reilly
ISBN 978-5-8459-1895-6; 2014 г.

Язык Русский
Страниц 384 стр.
Формат 70×100/16 (170×240 мм)
Тираж 1500 экз.
Переплет Твердый переплет

Если вы впервые приступаете к разработке приложений для операционной системы iOS или хотите лучше понять ее основы, то практическое руководство «Программирование для iOS 7. Основы Objective-C, Xcode и Cocoa» даст вам ясное представление о ее фундаментальных составляющих — языке программирования Objective-C, Xcode и Cocoa Touch. Вы освоите объектно-ориентированные концепции, научитесь использовать инструменты компании Apple для разработки приложений и узнаете, каким образом среда Cocoa обеспечивает базовые функциональные возможности, которыми должно обладать приложение для iOS. Десятки примеров проектов можно загрузить с веб-сервиса GitHub.

Прочитав книгу»Программирование для iOS 7. Основы Objective-C, Xcode и Cocoa»;, вы

изучите язык Си(C) и поймете, как устроен язык Objective-C;
научитесь создавать экземпляры и поймете, почему они имеют такую важность;
проследите жизненный цикл проекта в среде Xcode 5, от задумки до размещения в App Store;
научитесь создавать интерфейсы с помощью nib-файлов и редактора nib-файлов;
узнаете, как в среде Cocoa используются лингвистические свойства языка Objective-C;
научитесь использовать модель, управляемую событиями, и основные шаблоны проектирования Cocoa;
поймете роль методов доступа, кодирования «ключ-значение» и свойств;
оцените мощь объектного управления памятью на основе механизма ARC;
научитесь пересылать сообщения и данные между объектами Cocoa.

10 лучших книг для программистов

3. «Структура и Интерпретация Компьютерных Программ»

Авторы — Абельсон Харольд, Сассман Джеральд Джей

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

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

4. «Идеальный программист. Как стать профессионалом разработки ПО»

Автор Мартин Роберт К.

Еще одна книжища с большой буквы «К» от опытного инженера-программиста Роберта К. Мартина посвящена методам и инструментам, при помощи которых можно достичь настоящего мастерства в разработке программного обеспечения. В ней рассказывается не только о том, как писать чистый код, но и о том, как воспитать в себе квалифицированного профессионального программиста.

Книга насыщена практическими советами в отношении всех аспектов программирования: от оценки проекта и написания кода до рефакторинга и тестирования. Эта книга – больше, чем описание методов, она о профессиональном подходе к процессу разработки.

«Почему вы выбрали эту книгу? Наверное, потому что вы — программист, и вас интересует понятие профессионализма. И правильно! Профессионализм — то, чего так отчаянно не хватает в нашей профессии. Я тоже программист. Я занимался программированием 42 года и за это время повидал многое. Меня увольняли. Меня превозносили до небес. Я побывал руководителем группы, начальником, рядовым работником и даже исполнительным директором. Я работал с выдающимися программистами, и я работал со слизняками. Я занимался разработкой как самых передовых встроенных программных/аппаратных систем, так и корпоративных систем начисления зарплаты. Я программировал на COBOL, FORTRAN, BAL, PDP-8, PDP-11, C, C++, Java, Ruby, Smalltalk и на многих других языках. Я работал с бездарными халявщиками, и я работал с высококвалифицированными профессионалами. Именно последней классификации посвящена эта книга.

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

обзор книги Кормена и Лейзерсона «Алгоритмы. Построение и анализ»

Дмитрий Красичков

предприниматель, программист, основатель IT-компании

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

Существенная часть прикладных знаний в IT устаревает за 4-5 лет, но официальной документации в совокупности с примерами, конференциями и статьями вполне хватает, чтобы держать себя «в форме» и осваивать новый материал на теоретическом уровне. Практику же ничего не заменит.

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

Библия программиста

Удачно сочетая в себе полноту и строгость изложения материала, книга Кормена стала де-факто стандартом в отрасли в качестве учебника для подготовки программистов. Показательно, что ведущие мировые университеты, включая MIT, использует ее как основной учебник по соответствующему курсу. Более того, этот фундаментальный труд будет полезен далеко не только студентам, многие профессиональные разработчики найдут для себя что-то новое, а в дальнейшем книга может послужить отличным настольным справочником.

В книге Кормена представлено детальное описание таких важных тем, как: сортировки, структуры данных, динамическое программирование, жадные алгоритмы, алгоритмы на графах, параллельные вычисления и многое другое. По сути, охватывая основной спектр современных алгоритмов.

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

Структура изложения

Автор начинает повествование с основ анализа алгоритмов. Этот раздел крайне важен для понимания остального материала, т.к. формирует необходимый математический аппарат для сравнения алгоритмов между собой. Именно благодаря этому мы можем аргументировано говорить «алгоритм A лучше, чем B для этой задачи» и наоборот. Остальные главы книги относительно самодостаточны и могут изучаться в произвольном порядке.

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

Начинающий уровень

  • Быстрая сортировка.
  • Сортировка кучей.
  • Сортировка за линейное время.
  • Медианы и порядковые статистики.
  • Элементарные структуры данных.
  • Хеш-таблицы.
  • Двоичные деревья.
  • Динамическое программирование.
  • Жадные алгоритмы.

Средний уровень

  • Красно-черные деревья.
  • Б-деревья.
  • Алгоритмы на графах.
  • Амортизационный анализ.
  • Алгоритмы параллельных вычислений.

Продвинутый уровень

  • Остальные разделы на выбор.

Конкретные названия глав и их набор могут незначительно отличаться в зависимости от издания книги.

Зачем мне теория алгоритмов?

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

Для изучения данной области есть как минимум три, с моей точки зрения, достаточно веские причины.

Во-первых, знание теории алгоритмов позволяет вам писать эффективный код. Это научит вас применять правильные инструменты в правильных местах. Например, в следующий раз вы будете понимать, почему тут стоит использовать HashMap (применительно к языку Java), а в другом случае TreeMap и т.д.

На первый взгляд можно предположить, что широкая доступность дешевых вычислительных ресурсов позволяет игнорировать такие параметры программы, как потребляемая память и/или время выполнения, ведь всегда можно докупить оперативной памяти или новый процессор. Отчасти эта точка зрения имеет право на жизнь, но нужно учитывать, что и объем обрабатываемых данных, и нагрузка на ресурсы также растут. В современном мире эффективные алгоритмы востребованы еще больше, чем раньше.

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

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

В-третьих, подавляющее большинство технологических гигантов (такие как Google, Facebook, Yandex и т.д.) весьма требовательно относятся к знаниям теории алгоритмов у кандидатов при приеме на работу. Например, есть замечательная книга G.L. McDowel «Cracking the Coding Interview» по прохождению собеседований подобного формата и даже беглого взгляда на ее оглавление достаточно, чтобы понять, насколько сильно эти темы пересекаются с материалами из книги Кормена.

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

Вместо итога

Может ли разработчик обойтись без знаний теории алгоритмов? Да, может. Таких «разработчиков», к сожалению, очень много, но качество их работы в подавляющем большинстве случаев оставляет желать лучшего.

Знание теории алгоритмов необходимо, чтобы быть квалифицированным специалистом в своей профессии, а книга «Алгоритмы. Построение и анализ» Томаса Кормена и Чарльза Лейзерсона однозначно является одной из лучших в этой области и крайне рекомендуется к ознакомлению. Я буду очень рад, если благодаря этой статье кто-то узнает об этой книге и на нашем рынке станет чуточку больше профессионалов.

«Что почитать начинающему программисту? » – Яндекс.Кью

Добрый день!

Студенты и выпускники Яндекс.Практикума составили списки книг и ресурсов, которые помогли им освоить веб-разработку, тестирование и бэкенд-разработку. Выжимку из этих списков оставлю здесь. Сохраняйте 🙂

1. Алгоритмы. С. Дасгупта, Х. Пападимитриу, У. Вазирани.

Книга поможет новичкам разобраться с темой алгоритмов и подойдёт даже тем, кто ничего не читал об этом.

2. Программирование. Теоремы и задачи. А. Шень.

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

3. Искусство программирования. Д. Кнут.

По версии журнала American Scientist, книга вошла в список лучших физико-математических монографий XX столетия.

4. Карьера программиста. Макдауэлл Г. Лакман.

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

5. Совершенный код. С. Макконнелл.

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

6. Чистая архитектура. М. Роберт.

Автор рассказывает про архитектуру и дизайн кода, а ещё даёт рекомендации, как стать хорошим программистом.

7. Изучаем Python. М. Лутц.

Лутц — культовый инструктор по Python, а книга — всемирно известный учебник, собранный из материалов курсов Лутца. Автор доступным языком объясняет, как научиться писать эффективный высококачественный код на Python. Книга подойдёт как новичкам, так и тем, кто уже погружён в тему. Если есть возможность, лучше читать в оригинале.

8. Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих. А. Бхаргава.

Книга (с картинками) доказывает читателю, что алгоритмы — это весело и доступно даже детям.

9. Тестирование dot com. Р. Савин.

Библия в мире русскоязычного тестирования. Первая книга, которую все рекомендуют прочитать начинающему тестировщику.

10. Паттерны объектно-ориентированного проектирования. Р. Джонсон, Р. Хелм, Дж. Влиссидес, Э. Гамма («Банда Четырех»)

Если коротко, это must-read для каждого программиста и любого, кто хочет связать свою жизнь с ИТ. Четыре известных разработчика — Банда четырёх — систематизировали свой опыт объектно-ориентированного программирования. Авторы предлагают простые, но красивые решения типичных задач, с которыми программисты сталкиваются в реальной работе.

11. Deadline. Роман об управлении проектами. Т. ДеМарко

Программисты всегда работают в команде, а эта книга поможет понять других специалистов и построить с ними эффективную коммуникацию.

Искусство программирования, тома 1-3 в коробке, Дональд Эрвин Кнут

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

Не беспокойтесь о других изданиях, кроме третьего (я собрал три издания, хотя изучил только самое последнее) — помните, что Кнут потратил десять лет на разработку TeX в ответ на невзгоды подготовки и печать Первого. Третий — прекрасный, одни из лучших книг в моей библиотеке, практически нерушимый (обратите внимание, что Том 3 находится только во втором издании).

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

Я слышал жалобы на использование Кнута ассемблера; Эти возражения меня сбивают с толку, и я считаю их в высшей степени бессмысленными. Четко определенный язык ассемблера (особенно на машинах MIX / MMIX, предназначенных для абстракции), безусловно, намного проще, чем большинство языков высокого уровня, хотя и более неясен в своей мнемонике.Я изучил языки ассемблера для MosTek 6502 (используемый в моем ATARI 400) и Intel 8086 в возрасте 7 и 10 лет соответственно и нашел первый гораздо более разумной и разумной (не говоря уже о мощной) онтологии, чем ATARI BASIC. которые служили в основном для того, чтобы питаться из ваших драгоценных 16 КБ оперативной памяти. Посмотрим правде в глаза, джентльмены: если вы не можете понять чертов язык ассемблера, вам лучше отказаться от этих мечтаний о коде и придерживаться синих рубашек, улыбок и стереотдела Best Buy. 32. Необходимые уравнения ограничений были на странице 20 или около того. В тот день я закодировал генерирующую функцию еще до обеда, превратил ее в своего (охваченного благоговением) босса, и она продолжает составлять основу наших активных поисковых операций. Во-вторых, для недавнего анализа многоядерной сортировки, а именно различных настроек кеша, я изо всех сил пытался правильно смоделировать транзакции — я открыл том 3 и был ослеплен разделом 5.3.2 «Сортировка минимального сравнения», разделом, клянусь, что я Прочитал несколько раз, но не подумал подать заявку.Мой анализ, гораздо более точный, чем он мог бы быть иначе, был завершен в течение часа.

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

8 книг для программистов

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

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

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

Код: Скрытый язык компьютерного оборудования и программного обеспечения

Автор: Чарльз Петцольд, опубликовано Microsoft Press.

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

Прагматичный программист

Авторы: Эндрю Хант и Дэйв Томас, опубликовано издательством Addison-Wesley Professional.

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

Введение в алгоритмы

Авторы: Томас Х. Кормен, Чарльз Э. Лейзерсон, Рональд Л. Ривест и Клиффорд Штайн, опубликовано MIT Press.

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

Искусство программирования: Том 1

Автор: Дональд Э. Кнут, опубликовано издательством Addison-Wesley Professional.

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

Code Complete: Практическое руководство по созданию программного обеспечения

Автор: Стив МакКоннелл, опубликовано Microsoft Press.

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

Cracking the Coding Interview: 150 вопросов и решений для интервью по программированию, 6-е издание

Автор: Гейл Лаакманн Макдауэлл, опубликовано им самим.

Эта книга для вас, если вы ищете работу программиста. На своих страницах он собирает 150 часто задаваемых вопросов на собеседовании и как на них отвечать как козырёк. Прочитав его, вы решите проблемы программирования наилучшим образом, даже если вы не претендуете на работу.

Мифический человеко-месяц: очерки программной инженерии

Автор: Фредерик П. Брукс-младший, издано издательством Addison-Wesley Professional.

Эта книга — одна из самых полезных, если вы хотите научиться работать с проектами разработки программного обеспечения. По сути, он учит вас, что делать, а что нет, если вы разрабатываете проект с командой программистов.

Алгоритмы для жизни: компьютерные науки о человеческих решениях

Авторы: Брайан Кристиан и Том Гриффитс, опубликовано Генри Холтом и Ко.

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

Соучредитель GetWith + Connector │ Мы создаем отличные ИТ-команды │ Присоединяйтесь к нашей команде и помогите нам сделать рекрутинг заново человечным!

книг, которые (в конечном итоге) могут сделать вас лучшим программистом


Аннотация

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

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

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

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

Programming Pearls by Jon Bentley — Это довольно старая книга. Первое издание датируется 1986 годом. По сути, это книга по дизайну, ориентированная на «проектирование в малом»: как писать эффективные алгоритмы, как думать о проблемах, как менять место на скорость и так далее.Он разделен на «столбцы», так как это был набор столбцов, ранее опубликованных в журнале «Сообщения ACM». Это строго техническая книга со множеством реальных экспериментов, и, читая ее, становится ясно, что она написана на основе личного опыта самого автора. Иногда к этой книге обращаются с критикой: теперь, когда машины стали быстрее и с памятью стоит недорого, эта книга уже не так ценна, как раньше. По моему личному опыту, это неверно по двум причинам.Первый заключается в том, что если вы замените память на кеш, вы окажетесь в той же точке, где мы были 20 лет назад, и нет необходимости тратить машинные циклы зря. Во-вторых, в зависимости от того, что вы делаете, 24 ГБ ОЗУ может быть небольшим количеством, например, когда вы пытаетесь кластеризовать более 30 ГБ необработанных данных. На этом этапе важно научиться думать о макете структур данных, чтобы завершить вашу работу.

Практика программирования Брайан У.Керниган и Роб Пайк — Практическая инженерия и разработка программного обеспечения с примерами на 5 различных языках, сжатыми менее чем на 300 страницах. 300 плотных и приятных страниц. Это еще одна книга, написанная по опыту двумя изобретателями Unix, языка программирования C, AWK, точки и т. Д. Она охватывает практические вопросы: как отлаживать, как тестировать, как писать переносимый код, как профилировать код, как комментировать код, чтобы он был эффективным и не раздражающим, как выразительность языков программирования влияет на эффективность программы (т. е., торгуя временем программистов на машинное время), и все заканчивается описанием того, как, по сути, написать виртуальную машину / интерпретатор. Код, используемый в качестве примера, прекрасен: он необходим до крайности и выполнен в красивом стиле. Прочитав эту книгу, вы определенно станете лучшим программистом.

Мифический месяц человека и другие очерки программной инженерии Фредерик П. Брукс младший — Эта книга бессмертна. Она была написана в 1975 году, а это значит, что эта книга старше меня.Когда вы его читаете — если вы разрабатываете программное обеспечение профессионально — вы сразу можете заметить, что мир программной инженерии не так сильно изменился за все это время. И на самом деле, эта книга рассказывает вам, почему по прошествии стольких лет она не сильно изменилась: хотя программные инструменты сильно эволюционировали и у нас появились языки программирования более высокого уровня, отладчики, способные дать точное представление о том, что происходит во время выполнения. время и профилировщики, способные точно сказать вам, где ваша программа проводит время; К сожалению, люди, занимающиеся разработкой программного обеспечения, не так сильно эволюционировали, и проблемное пространство не сильно изменилось.Программная инженерия — это, по сути, деятельность, интенсивно использующая мозг, и человеческий мозг не развился за такое короткое время. Даже если инструменты сильно эволюционировали, люди остались прежними, и все человеческие проблемы, такие как общение, разделение работы между дизайном, кодированием и тестированием, не изменились. Независимо от того, насколько лучше ваш отладчик сейчас по сравнению с тем, тестирование и интеграция (то есть тестирование в более болезненной форме) всегда будут занимать более или менее 50% процесса разработки, а кодирование ваших алгоритмов и структур данных — только 1/6. проектного времени, а остальное — дизайн.Если вы достаточно поработали в разработке программного обеспечения, вы знаете, что это верно сейчас, как это было, когда автор участвовал в проекте OS / 360 еще в 60-х годах. Еще один важный вывод из книги: именно данные формируют алгоритмы, а не наоборот.

Код: Скрытый язык компьютерного оборудования и программного обеспечения by Charles Petzold — Это одна из моих любимых книг. Так меня бы научили компьютерной архитектуре.Он начинается с представления информации и чисел (с использованием ламп, пальцев и системы Брайля) и доходит до реализации языков программирования и их сопоставления с инструкциями процессора. Все это, включая то, как информация хранится в битах, как работают регистры и схемы, как построить арифметический сумматор с лампами и переключателями и как эти схемы отображаются на строительные блоки процессора. Компьютерные архитектуры объясняли «снизу вверх», исходя из проблемы, для решения которой они были придуманы, а не из самого решения, поскольку все другие книги по компьютерной архитектуре структурированы.Читая эту книгу, я значительно улучшил свое понимание представления информации и того, как это соответствие в схемах. Знание того, что на самом деле скрыто под капотом, помогает вам понять, как сгибать инструменты высокого уровня, чтобы заставить их делать именно то, что вы от них хотите. Кроме того, если вы уже много знаете о компьютерных архитектурах, это определенно книга, которая многому вас научит и навсегда изменит ваш взгляд на компьютер. Хотя волшебство того, как работают эти адские машины, исчезнет, ​​оно исчезнет навсегда.Действительно.

The C Programming Language by Brian W. Kernighan and Dennis Ritchie — Эта книга, написанная в 1975 году, попала в этот список не потому, что язык программирования C — это язык программирования, который вам нужно знать как программист, но потому что это самый блестящий пример того, как вы должны писать техническую документацию, и потому что он содержит одни из самых красивых и элегантных примеров кода, которые мне когда-либо посчастливилось прочитать за всю свою жизнь.Примерно на 250 страницах два автора описывают синтаксис языка, его стандартную библиотеку и рассказывают, как использовать язык для выполнения работы. Гимн краткости и ясности. Мне никогда не удавалось создать документацию такой красоты, краткости и ясности, как это могли сделать два автора. Я очень старался, но потерпел неудачу. Я, вероятно, продолжу читать эту книгу, пытаясь научиться делать то же самое, движимый одной лишь завистью, но это, вероятно, один из немногих случаев, когда зависть является положительным моментом, потому что заставляет вас читать что-то хорошее.Такая краткость, элегантность и ясность выражается в самих примерах кода. Я не хочу объяснять почему, но оставлю это на примере. Следующая функция вводит день, месяц и год и сообщает вам, какой день в году этот (например, 21 февраля 1978 г. — 52-й день 1978 г.):

 
статический график daytab [2] [13] = {
    {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
    {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};

int day_of_year (int год, int месяц, int день) {
    int я, прыжок;
    високосный = год% 4 == 0 && год% 100! = 0 || год% 400 == 0;
    для (i = 1; i  

Прагматика языка программирования by Michael L. Скотт — Вы не можете назвать себя инженером-программистом или просто программистом, если у вас нет естественной любви и любопытства к языкам программирования. Языки программирования — это абстракция, которую мы, инженеры-программисты, создали для того, чтобы управлять машинами и указывать им, что делать. Эта книга — моя любимая книга по этой теме. Он описывает или просто может упомянуть почти 100 языков программирования, рассказывающих, почему они такие, какие они есть, какие классы задач они предназначены для решения и как они их решают.Автор также находит время поговорить о синтаксическом анализе, абстрактных синтаксических деревьях, виртуальных машинах, оптимизации и генерации кода, а также обо всех технических деталях, лежащих в основе языка программирования и компилятора. Честно говоря, языки программирования и компиляторы, вероятно, лучшее, что вы можете найти в компьютерной системе, в основном потому, что люди, которые их реализовали, реализовали их для себя: они были самыми первыми клиентами этих языков, а затем им пришлось меньше как можно более болезненно, и заказчик этих программ был хорошо известен, и все требования были очень четкими.

Как лгать со статистикой Даррелл Хафф — Это единственная книга из списка, которая не о программировании. Это даже не книга о статистике. Это книга, которая учит вас, какие вопросы нужно задавать, когда кто-то представляет вам данные. А если вы разрабатываете программное обеспечение профессионально, к вам приходит кто-то и говорит: «Нам (вам!) Необходимо реализовать эту функцию, потому что об этом говорят наши исследования рынка». Хорошо, давайте начнем задавать правильные вопросы: как было проведено это маркетинговое исследование? Каков размер выборки? Что на самом деле спросили? Это средство или средство массовой информации? Какое стандартное отклонение? Вы, наверное, получили это сейчас.Более того, научиться задавать все эти вопросы на самом деле означает научиться мыслить нестандартно и развить критическое мышление, особенно в отношении своей работы.

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

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

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

3 книги для успешных программистов на 2020 год и далее | Томас Е

Специально для недавних выпускников, стремящихся стать следующими техническими суперзвездами.

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

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

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

Здесь я могу помочь. Предполагая, что вы интересуетесь искусством разработки программного обеспечения и тем, как выйти на новый уровень, позвольте мне представить вам 3 моих личных фаворита по этой теме. Не пугающие 25, чтобы напугать вас, а всего 3, так как этого более чем достаточно, чтобы вы начали.

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

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

Вы когда-нибудь задумывались, откуда Facebook получает свои смехотворно большие доходы? Или как Apple уходит с рук, взимая такую ​​огромную премию за телефон почти такого же качества, как у Samsung? Что ж, прочтите эту книгу, и вы больше не будете удивляться.

Four — это захватывающая экскурсия вглубь внутренней работы четырех технологических гигантов: Amazon, Apple, Facebook и Google. Прочитав его, вы поймете и по-настоящему оцените огромную мощь, которая открывается, если объединить обилие данных с умными алгоритмами, способными извлекать из них ценную информацию.

После распознавания вы больше не будете озадачиваться рыночной оценкой Facebook, которая составляет сотни миллиардов долларов, несмотря на то, что это « просто социальная сеть », которая, кажется, не дает многого.Спойлеры, это вообще А ЛОТ под капотом.

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

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

Отлично, после прочтения книги 1) вы познакомитесь с правилами игры « big technology » и будете готовы покорять мир. При этом получение допуска к игре в высшей лиге на одной из Four — это не совсем прогулка по парку, особенно для новичков.

К счастью, книга 2) посвящена тому, чтобы вы прошли мимо этих ужасных привратников в форме технических собеседований и помогли вам начать свою технологическую карьеру, получив работу своей первой мечты.

Эта книга стала своего рода библией для студентов, изучающих информатику, которые хотят пройти стажировку и первые полноценные выступления в одной из модных технологических компаний, снова Amazon, Apple, Facebook, Google, но на этот раз список расширяется Microsoft и Palantir. Для целей следующих нескольких абзацев назовем совокупность этих 6 компаний « The Six ».

Базовые предположения (которые остаются верными к концу 2020 года), на основе которых Книга 1) и Книга 2) строят свое содержание в 3 раза:

  1. Работа на одном из Шесть — это очень желательно для недавних выпускников технических специальностей
  2. Получение работы в одной из Шесть чрезвычайно конкурентоспособна и, следовательно, трудна
  3. Процесс найма очень похож во всех Шесть

Предположение 1 подробно рассматривается в Книга 1) . Теперь, Книга 2) касается пунктов 2 и 3. Точнее, его цель — подготовить молодых, амбициозных, честолюбивых технических суперзвезд, готовых преуспеть на техническом собеседовании с одним из The Six и, следовательно, получить работа своей мечты.

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

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

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

Остальная часть книги (т.е. более 80% из них) представляет собой так называемую техническую часть и представляет собой набор типовых задач, с которыми кандидаты были представлены на реальных собеседованиях на одном из The Six с прилагаемыми к ним описательными решениями.

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

Хотите верьте, хотите нет, но многие сообразительные инженеры, готовые наизусть цитировать реализации хэш-карты, часто оказываются застигнутыми врасплох простыми запросами вроде: « Итак, Томас, расскажи мне немного о себе ». Сам был там, и это не весело! Первая часть Книга 2) разработана специально для того, чтобы вы не закончили, как я, поэтому не пропускайте ее.

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

То есть потому, что собеседование стало де-факто стандартом при приеме на работу в наше время. Если вы готовитесь к собеседованию в The Six, (то есть — один из самых сложных процессов собеседования), вы должны быть более чем готовы успешно пройти собеседование практически для любой другой работы в мире.

Отлично, после прочтения книг 1) и 2) вы знаете, как выглядит ориентировочная игра в технологии, а также знаете, как поиграть с другими крутыми ребятами в Google и Facebook по всему миру.

Теперь вы можете спросить себя: как только я окажусь в высшей лиге, как мне выделиться? Что отличает Криштиану Роналдос от местных игроков в мире технологий?

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

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

Хорошие новости! Книга 3) (Прагматичный программист) — это именно то, что вам нужно, сборник советов, приемов и привычек, которые эффективные программисты используют для написания чистого, хорошо продуманного кода, соблюдения сроков и предоставления передового программного обеспечения, получая при этом признание за свою работу и доверие. коллег-инженеров, а также ключевых участников бизнеса.

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

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

  1. Научитесь оценивать свою работу (скажите: «Задача X займет у меня N дней.»Вместо:« Я не знаю, сколько времени потребуется, чтобы завершить X… »)
  2. Автоматизировать повторяющиеся задачи (обычно с помощью сценариев оболочки)
  3. Не спрашивать разрешения (лучше попросить прощения позже…)

Забавный факт : Совет 3 — это моя любимая мудрость, которую мой нынешний менеджер уровня пропуска в Amazon любит делиться с недавними участниками команды. Интересно, почерпнул ли он это и из этой книги…

Используя себя в качестве примера, я прочитал B ook 3) , когда я проходил через когнитивный диссонанс, вызванный тем, что меня бросили в американскую корпорацию прямо после университета.Тогда я думал, что как программист большую часть времени буду писать код. Я был совершенно неправ…

Как я уже собирался усвоить на собственном горьком опыте, программная инженерия — очень сложная дисциплина, которая ставит перед своими практиками расплывчато определенные проблемы, сжатые сроки и постоянно требовательные клиенты.

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

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

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

Спасибо, что прочитали мою статью

Ищете наставника, который поможет вам преуспеть в мире высоких технологий?
Подпишитесь на мой список рассылки !

Tomas Ye
Гимнаст, математик и инженер-программист
Не стесняйтесь связаться со мной в LinkedIn :

Тирания выбора -> https: // www.Scientificamerican.com/article/the-tyranny-of-choice/

Лидеры — это читатели -> https://www.pda.org/pda-europe/news-archive/full-story/2017/03/06 / 4-причина-лидеры-читатели

Четверка Скотта Галлоуэя -> https://www.amazon.com/Four-Hidden-Amazon-Facebook-Google/dp/0525501223

Прагматичный программист Эндрю Хант и Дэвид Томас -> https://www. amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X

Взломать кодирование Интервью Гейл Лаакманн МакДауэлл -> https: // www.amazon.com/Cracking-Coding-Interview-Gayle-McDowell/dp/0984782850

24 влиятельных книги, которые следует прочитать программистам (обновлено на 2020 год)

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

Часть 1: Книги для написания кода

Code Craft: Практика написания отличного кода (Пит Гудлифф)

Все программисты знают, как писать работающий код. Но только лучшие кодировщики и программисты могут создать выдающийся код — чистый программный код, понятный и долговечный. Code Craft может помочь вам пополнить их ряды. Выйдите за рамки простого написания того, что работает, и напишите выдающиеся, отмеченные наградами программы. Эта книга учит лучшему стилю представления кода, методам решения проблем, именованию переменных, обработке ошибок и безопасности.

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

Solid Code (передовой опыт разработчиков) / (Донис Маршалл)

Эффективность является ключевым моментом в любом сеансе разработки кода. Solid Code призван помочь программистам в создании надежного кода без ошибок. Два эксперта по Microsoft . NET преподают ценные уроки на примерах из реальных проблем, с которыми программисты сталкиваются каждый день. Научитесь управлять расходами и работать в команде на регулярной основе. Улучшайте свои проекты, прототипы, отладку и тестирование с помощью множества советов, предлагаемых в этой книге по программированию. Начните создавать невероятные, изменяющие мир продукты и код.

Solid Code научит вас:

  • Используйте метапрограммирование для уменьшения сложности кода, одновременно увеличивая гибкость и ремонтопригодность.
  • Относитесь к производительности как к функции и управляйте ею на протяжении всего жизненного цикла разработки.
  • Примените передовой опыт для масштабируемости приложений.
  • Используйте превентивные меры безопасности для отражения злонамеренных атак.
  • Практикуйтесь в защитном программировании, чтобы выявлять ошибки до выполнения.
  • Включите автоматические сборки, анализ кода и тестирование в ежедневный процесс разработки.
  • Реализуйте более совершенное управление исходным кодом и процедуры регистрации.
  • Установите ритм проекта, ориентированный на качество и основанный на этапах, и улучшите свои результаты!

Чистый кодер: Кодекс поведения для профессиональных программистов (Роберт К. Мартин)

В Чистый кодер: Кодекс поведения для профессиональных программистов, легендарный эксперт по программному обеспечению Роберт К. Мартин советует начинающим программистам кодируйте с дисциплиной и техникой, а не просто следуйте указаниям. Он наполнил каждую страницу огромной ценностью: научился с легкостью оценивать, кодировать, рефакторировать и тестировать.

Но Мартин делает гораздо больше, чем просто обучает элементарной технике. Он также объясняет важность отношения. Clean Coder фокусируется на подходе к разработке программного обеспечения с уважением, самоуважением и гордостью. Кодировщики научатся:

  • Работать хорошо и работать чисто.
  • Честно общайтесь и оценивайте.
  • Примите трудные решения ясно и честно.
  • Поймите, что глубокие знания связаны с ответственностью действовать.

Читатели также узнают:

  • Что значит вести себя как настоящий мастер программного обеспечения.
  • Как справляться с конфликтами, плотным графиком и неразумными менеджерами.
  • Как попасть в поток программирования и преодолеть тупик писателя.
  • Как справиться с безжалостным давлением и избежать выгорания.
  • Как сочетать стойкое отношение к новым парадигмам развития.
  • Как управлять своим временем и избегать тупиков, болот, трясин и болот.
  • Как создать среду, в которой могут развиваться программисты и команды.
  • Когда сказать «Нет» и как это сказать.
  • Когда говорить «да» — и что на самом деле означает «да».

Отладка процесса разработки: практические стратегии для сосредоточения внимания, определения сроков поставки и построения надежных команд (Стив Магуайр)

Стив Магуайр рассказывает историю о том, как его команды разработчиков программного обеспечения Microsoft научились разрабатывать лучшее программное обеспечение, не тратя зря десять центов или день. Некоторые из его методов можно было считать спорными, но они работали на Магуайра. Он не скрывает, что удалось, а что нет в его команде в Microsoft.

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

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

Рефакторинг: улучшение дизайна существующего кода (Мартин Фаулер)

Поскольку применение объектно-ориентированного программирования стало обычным явлением, перед сообществом разработчиков программного обеспечения встала новая проблема.

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

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

В статье «Рефакторинг: улучшение дизайна существующего программного обеспечения » Мартин Фаулер нарушает молчание. Книга по программированию демистифицирует эти основные практики и демонстрирует, как специалисты по программному обеспечению могут реализовать значительные преимущества этого нового процесса.

Code Complete: Практическое руководство по созданию программного обеспечения, второе издание (Стив МакКоннелл)

Это широко считается одним из лучших практических руководств по программированию, эффективно демонстрирующих искусство и науку разработки программного обеспечения.Автор, Стив МакКоннелл, объединяет многие методы и принципы, которым необходимо следовать, и превращает их в действенное руководство. Он извлекает их из исследований, академических кругов и повседневной деловой практики.

Это руководство подходит для читателей с разным уровнем опыта, разным опытом или проектами разного размера. Читатели могут научиться разрабатывать чистый программный код высочайшего качества.

Это основные темы в этой книге:

  • Дизайн для минимальной сложности и максимального творчества.
  • Воспользуйтесь преимуществами совместной разработки.
  • Применяйте методы защитного программирования, чтобы уменьшить количество ошибок и избавиться от них.
  • Используйте возможности для рефакторинга или развития кода и делайте это безопасно.
  • Используйте методы строительства, наиболее подходящие для вашего проекта.
  • Устранение проблем быстро и эффективно.
  • Решайте критические проблемы строительства как можно раньше и правильно.
  • Обеспечьте качество в начале, середине и конце вашего проекта.

Чистый код: Справочник по гибкому программированию (Роберт К. Мартин)

Чистый код разделен на три части. Первый обучает необходимым элементам чистого программного кода: принципам, шаблонам и методам.

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

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

Читатели уйдут от понимания этой книги:

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

Простота кода: основы программного обеспечения (Макс Канат-Александр)

Хорошая разработка программного обеспечения приводит к простому коду. Но поскольку до недавнего времени ценность простого кода не была признана, в цифровом мире почти не существует простого кода.Программистов поощряли наводнять рынок своим непонятным кодом. Эта книга стремится изменить это. Это руководство, призванное помочь программистам понять, что необходимо для создания хорошего кода, и подробно описывает универсальные принципы, которые можно использовать для любого языка программирования или проекта.

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

  • Узнайте, что отличает хороших программистов от плохих.
  • Понимать конечную цель программного обеспечения и цели хорошего проектирования программного обеспечения.
  • Определите ценность своих решений сейчас и в будущем.
  • Изучите реальные примеры, демонстрирующие, как система меняется с течением времени.
  • Учитесь максимально изменять среду с наименьшими изменениями в программном обеспечении.
  • Сделайте более легкие изменения в будущем, сделав ваш код проще сейчас.
  • Разберитесь, зачем писать тесты и какие тесты писать.

Часть 2: Книги по разработке программного обеспечения

Быстрая разработка: приручение дикого расписания программного обеспечения (Стив МакКоннелл)

Каждый в техническом мире стремится получить контроль над своим расписанием разработки. В статье RAPID DEVELOPMENT автор Стив МакКоннелл прямо обращается к этим проблемам, предлагая общие стратегии, конкретные передовые практики и ценные советы, которые помогут сократить и контролировать графики разработки, а также продлить проекты.Внутри этой книги по программированию вы найдете:

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

Rapid Development — это реальное руководство по более эффективной разработке приложений.

Руководство по выживанию в программном проекте (передовой опыт разработчиков) / (Стив МакКоннелл)

Автор классических книг CODE COMPLETE и RAPID DEVELOPMENT имеет больше мудрости, чтобы поделиться со своими читателями. Стив МакКоннелл опирается на солидные исследования и карьерный опыт, чтобы наметить самый верный путь к вашей цели — то, что он называет «одним особым подходом к разработке программного обеспечения, который довольно хорошо работает в большинстве случаев для большинства проектов.

Девятнадцать кратких глав учат, как атаковать и преодолевать процесс разработки. Читатели научатся планировать, разрабатывать и управлять своим программированием, а также гарантировать качество, тестирование и архивирование. Простой и элегантный код доступен далеко не всем программистам.

Гибкая разработка программного обеспечения: совместная игра (Алистер Кокберн)

Алистер Кокберн начинает с обновления своей мощной модели разработки программного обеспечения как «совместной игры изобретений и общения.Среди новых идей он вводит:

  • , используя конкуренцию без ущерба для сотрудничества.
  • извлечение уроков из бережливого производства.
  • балансирующие стратегии для общения.

Кокберн также объясняет, как кооперативная игра проводится в бизнесе и в инженерных проектах, а не только при разработке программного обеспечения.

Затем он систематически освещает гибкую модель, показывает, как она развивалась, и отвечает на вопросы, которые чаще всего задают разработчики и менеджеры проектов, в том числе:

  • Как гибкая разработка подходит для нашей организации?
  • Как совместить гибкие идеи с другими идеями?
  • Как расширить гибкие идеи?

Кокберн опровергает важные заблуждения, из-за которых гибкие проекты терпят неудачу. Вы также найдете вдумчивое обсуждение противоречивой взаимосвязи между гибкими методами и дизайном пользовательского опыта.

Это издание содержит важные новые материалы по этим и другим темам:

  • Agile и CMMI.
  • Представляем Agile сверху вниз.
  • Возвращаясь к «таможенным контрактам».
  • Создание изменений с помощью «стикеров».

Реализация: более умный, быстрый и простой способ создания успешного веб-приложения (Джейсон Фрид и другие)

На примере 37signals читатели узнают принципы бизнеса, дизайна, программирования и маркетинга, применимые к их программирование.Эта книга представляет собой мощный удар с простыми и понятными идеями, противоположными точками зрения и нестандартным взглядом на разработку программного обеспечения. Но не дайте себя обмануть: это не просто учебник. Это книга идей по программированию.

Цифровые веб-разработчики и программисты всех мастей могут найти ответы на свои вопросы в этой книге. 37signals добились огромного успеха в пяти приложениях: Basecamp, Campfire, Backpack, Writeboard и Ta-da Last, а также в их фреймворке веб-приложений с открытым исходным кодом Ruby on Rails.Все это было построено всего за два года без внешнего финансирования, без долгов и с участием всего семи человек (распределенных по семи часовым поясам).

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

Совершенное программное обеспечение: и другие иллюзии относительно тестирования (Джерри Вайнберг)

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

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

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

Темы включают:

  • Почему бы просто не протестировать все?
  • Информационный иммунитет.
  • Что делает тест хорошим?
  • Основные заблуждения относительно тестирования
  • Определение значимости.
  • Тестирование без оборудования.
  • ,
  • и многое другое.

Кодер разработчику: инструменты и стратегии для доставки вашего программного обеспечения (Майк Гандерлой)

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

Внутри вы найдете множество технических руководств по таким темам, как:

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

Чтобы собрать все это воедино, автор предоставил исходный код для Download Tracker, инструмента для организации вашей коллекции загруженного кода, который используется в качестве примеров в этой книге. Код предоставляется в различных стадиях завершения, что позволяет читателям глубже погрузиться в фактический процесс создания программного обеспечения. Но вы также разовьете более «мягкие» навыки в таких областях, как управление командой, совместная работа с открытым исходным кодом, документация для пользователей и разработчиков и защита интеллектуальной собственности.

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

Оценка программного обеспечения: демистификация черного искусства (передовой опыт разработчиков) / (Стив МакКоннелл)

В своей долгожданной книге по программированию известный автор Стив МакКоннелл раскрывает тайну успешной оценки программного обеспечения. Software Estimation объединяет академическую информацию и реальный опыт в практическое руководство для работающих профессионалов в области программного обеспечения.

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

Узнайте, как:

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

Разработка программного обеспечения: подход практикующего специалиста (Роджер С. Прессман)

Книга по программированию состоит из пяти частей: процесс, моделирование, управление качеством, управление проектами и дополнительные темы.Количество глав останется на уровне 32, без изменений по сравнению с шестым изданием. Однако было разработано восемь новых глав, а еще шесть глав подверглись значительным или умеренным изменениям. Остальные главы подверглись незначительным правкам / обновлениям.

Факты и заблуждения программной инженерии (гибкая разработка программного обеспечения) / (Роберт Л. Гласс)

Читая Факты и заблуждения программной инженерии , вы можете испытать моменты: «О, да, я забыл это, »Рядом с некоторыми« Это правда? »

Автор этой книги не избегает полемики.Фактически, каждый из фактов и заблуждений сопровождается обсуждением любых противоречий, которые их окружают. Вы можете согласиться с множеством фактов и заблуждений, но некоторые из них вас расстроят эмоционально! Согласны вы или не согласны, вы узнаете, почему автора называют «главным скрягой в практике программного обеспечения».

Эти факты и заблуждения являются фундаментальными в области создания программного обеспечения.

Часть 3: Книги для ментальности

Преднамеренная позиция (Дэниел К.Dennett)

Как мы можем понимать и предвидеть друг друга в повседневной жизни, в наших повседневных взаимодействиях? Через использование таких понятий, как вера, желание, намерение и ожидание, утверждает Дэниел Деннет. Автор потратил двадцать лет на разработку этого полномасштабного изложения теории интенциональности.

Согласно Деннету, люди занимают позицию, предсказательную стратегию интерпретации, которая предполагает рациональность людей или других сущностей, которые мы надеемся понять и предсказать.

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

The Intentional Stance объединяет как ранее опубликованные, так и оригинальные материалы: четыре из десяти глав книги (первая, восьмая, девятая и десятая) появляются здесь впервые, остальные шесть были опубликованы ранее в 1980-х годах. но были нелегко доступны.За старыми главами следуют размышления — эссе, в которых пересматриваются и расширяются утверждения более ранних работ.

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

Задняя сторона салфетки: решение проблем и продажа идей с помощью картинок (Дэн Роам)

Когда соучредитель Southwest Airlines Херб Келлехер придумал решение, чтобы победить традиционные авиалинии с узлами и спицами, он взял салфетку и ручка.Он нарисовал три точки, чтобы обозначить Даллас, Хьюстон и Сан-Антонио, и три стрелки, чтобы обозначить прямые рейсы. Изображение облегчило продажу Southwest Airlines инвесторам и клиентам. Это также решило его проблему.

При правильном использовании простой рисунок на простой салфетке более эффективен, чем Excel или PowerPoint. Это помогает кристаллизовать идеи, заставлять людей мыслить нестандартно и напрямую передавать идеи. В этой книге Дэн Роам утверждает, что каждый рождается с талантом к визуальному мышлению, даже те, кто клянется, что не умеет рисовать.

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

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

Вневременный способ строительства (Кристофер Александр)

Кристофер Александер считает, что нынешняя теория архитектуры в нашем мире несостоятельна.

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

Теперь, наконец, появилась связная теория, описывающая в современных терминах архитектуру столь же древнюю, как само человеческое общество.

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

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

Хакеры и художники: большие идеи из компьютерной эры (Пол Грэм)

«Компьютерный мир похож на интеллектуальный Дикий Запад, в котором вы можете расстрелять кого угодно своими идеями, если вы готовы рискнуть последствия.”–Из Хакеры и художники: большие идеи компьютерной эпохи , Пол Грэм

Мы живем в компьютерную эпоху. Наш мир, наше общество создается и совершенствуется компьютерными программистами и разработчиками программного обеспечения. Эти люди называют себя хакерами. Кто эти люди, что ими движет и почему это должно вас волновать?

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

Hackers & Painters: Big Ideas from the Computer Age собирает исторические свидетельства, чтобы нарисовать мета-картину феномена цифрового прогресса.В легком для чтения стиле Пол Грэм исследует «интеллектуальный Дикий Запад».

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

Продуктивный программист (Теория на практике (О’Рейли)) / (Нил Форд)

В карьере разработчика программного обеспечения ключевым моментом является проверенный метод создания кода более эффективным образом. Продуктивный программист обучает методам настройки вашей текущей системы для разработки программного обеспечения. Его просто читать и еще проще улучшить вашу работу.

Главный разработчик Нил Форд обсуждает, как работать умнее, используя все инструменты и ресурсы, которые у вас есть, чтобы создать лучший код. Он также показывает, как сохранять мотивацию, максимально использовать свои инструменты и избегать повторения одной и той же задачи снова и снова. Станьте более ценным для своей команды!

Вы научитесь:

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

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

У эффективных инженеров есть определенная система, которую они используют, чтобы выполнять работу быстро и эффективно манера. Разве не было бы хорошо, если бы у вас была такая же система? Постарайтесь избежать проб и ошибок и научитесь быть востребованным товаром, а не просто очередным сотрудником.

Эдмонд Лау иллюстрирует свою точку зрения интервью с ведущими инженерами лучших технологических компаний.Он пытается заставить их ответить на свой вопрос: как инженеры становятся лучшими в своей области? Какие советы должен знать каждый инженер, чтобы продвигаться вперед.

Эти истории и анекдоты были собраны от вице-президентов по инжинирингу, директоров, менеджеров и опытных руководителей современных компаний-разработчиков программного обеспечения. Некоторые из этих компаний включают Google, Facebook, Twitter и Linkedin. Другие перспективные компании включают Dropbox, Square, Box, Airbnb и Etsy. Также было включено несколько стартапов, таких как Reddit, Stripe, Instagram и Lyft.

Из их рассказов читатели могут извлечь уроки, чтобы добиться успеха.

Эта книга учит читателей

  • Расставлять приоритеты для правильных проектов и задач, чтобы увеличить свое влияние.
  • Получите больше свободы действий от коллег и менеджеров в своих проектах.
  • Тратьте меньше времени на поддержку и на исправление программного обеспечения и больше времени на создание и на поставку новых функций.
  • Получение более точных оценок программного обеспечения.
  • Недорого проверяйте свои идеи, чтобы сократить потери работы.
  • Определите узкие места в организации и людях.
  • Найдите соответствующий уровень проверки кода, тестирования, абстракции и технического долга, чтобы сбалансировать скорость и качество.
  • Сократите рабочий процесс отладки, чтобы увеличить скорость итераций.
  • Используйте метрики, чтобы количественно оценивать свое влияние и последовательно добиваться прогресса.

Программист-прагматик: от подмастерья к мастеру (Эндрю Хант)

Узнайте, как расти и развивать свою карьеру, добавляя обязанности и методы в свое портфолио.Если вы умеете писать гибкий и адаптируемый код, вы можете работать где угодно. Эта книга представляет собой серию самостоятельных уроков, которые позволяют вам время от времени изучать ее, чтобы узнать что-то новое. Автор использует примеры, чтобы проиллюстрировать свою точку зрения. Вы изучите передовой опыт разработки программного обеспечения, оттачивая свои умственные инструменты, которые помогут вам продвинуться в этой области.

Программист-прагматик учит читателей:

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

Программисты не читают книги — но вы должны

Одна из центральных тем stackoverflow.com заключается в том, что разработчики программного обеспечения больше не изучают программирование по книгам, как сказал Джоэл:

Программисты, похоже, перестали читать книги. Рынок книг по программированию ничтожен по сравнению с количеством работающих программистов.

Джоэл выразил похожие чувства в 2004 году в книге «Путь программного обеспечения Шлемиэля»:

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

Если программисты сегодня не учатся по книгам, как они научатся программировать? Они делают это по старинке: засучив рукава и написав код , код , используя коллективную мудрость Интернета во втором окне. Интернет сделал книги по программированию устаревшими. Это быстрее, эффективнее и просто умнее , чтобы получать информацию о программировании в Интернете. Я считаю, что опыт Дуга МакКьюна, который он точно описывает как «Почему я не читаю книги», довольно типичен.

Я полностью возлагаю вину на издательство технических книг:

  • Большинство книг по программированию — отстой. Насколько я могу судить, препятствия на пути к тому, чтобы стать автором книги, практически отсутствуют. Пожалуй, соотношение «сигнал-шум» при публикации книг не намного лучше, чем то, что вы найдете в просторах Интернета. Из сотен книг по программированию, выпускаемых ежегодно, возможно, две или три действительно стоят потраченного времени.
  • Книги по программированию на вес, а не на объем .Похоже, существует обратная зависимость между размером книги по программированию и ее качеством. Чем больше книга, тем меньше в ней будет полезной информации. В чем смысл этих гигантских фолиантов-справочников? Как вы, , находите в нем что-нибудь , не говоря уже о том, чтобы поднять эти чертовы предметы?
  • Книги по быстрому исправлению ошибок, ориентированные на новичков . Ничего не имею против того, чтобы новички начали заниматься программированием. Но я продолжаю верить в «Выучите [укажите язык здесь] за 24 часа!» разнообразие книг оказывает нашей профессии медвежью услугу.Мономаниакальный фокус на прямо сейчас и на самый быстрый и простой способ сделать что-то ведет новичков по ложному пути — или, как я люблю называть это, «PHP». Я ребенок! Я ребенок!
  • Программирование книги порнографию . Идея о том, что стопка толстых, важных на вид книг по программированию, лежащих на вашей полке, в основном непрочитанных, каким-то образом сделает вас лучшим программистом. Как однажды написал мне Дэвид Пул в электронном письме: «Я никогда не смогу сделать этого в реальной жизни», похоже, является темой порнухи из книги по программированию.Вот почему я рассматривал возможность покупки книги Кнута «Искусство компьютерного программирования» и отказался от нее. Постарайтесь приобрести практические книги, которые вы действительно прочитаете и, что еще более важно, примените к делу.

Я тоже виноват как автор. Я был соавтором книги по программированию, и все еще не думаю, что вам стоит ее покупать. Я не имею в виду это иронично-дальнобойщиком, обратной психологией. Я имею в виду буквально. В любом случае это неплохая книга. Я очень уважаю своих уважаемых соавторов. Но та же самая информация была бы гораздо более доступной в сети.Захватить его в книге мертвых деревьев — в конечном итоге пустая трата усилий.

Интернет, безусловно, ускорил исчезновение книг по программированию, но есть некоторые свидетельства того, что даже до интернета программисты не читали так много книг по программированию. Я был весьма удивлен, обнаружив в Code Complete следующий отрывок:

Похлопайте себя по спине за чтение этой книги. Вы уже узнаете больше, чем большинство людей в индустрии программного обеспечения, потому что одна книга больше, чем большинство программистов читают каждый год (DeMarco and Lister 1999).Небольшое чтение имеет большое значение для профессионального роста. Если вы будете читать хотя бы одну хорошую книгу по программированию каждые два месяца, примерно по 35 страниц в неделю, вы скоро получите твердое представление об отрасли и выделите себя почти среди всех, кто вас окружает.

Я считаю, что тот же текст присутствует в оригинальном издании Code Complete 1993 года, но у меня больше нет копии, чтобы это проверить. Небольшой поиск позволил обнаружить отрывок, на который Стив МакКоннелл ссылается в книге ДеМарко и Листера Peopleware:

.

Статистика чтения особенно обескураживает: Средний разработчик программного обеспечения, например, не владеет ни одной книгой по теме своей работы, и никогда не читал ни одной .Этот факт ужасает всех, кого беспокоит качество работы в этой области; для людей вроде нас, пишущих книги, это трагично.

Мне очень больно читать комментарии Reddit и узнавать, что люди интерпретируют заявление о миссии stackoverflow.com как отказ от книг по программированию. Как ни неоднозначно я отношусь к текущему рынку книг по программированию, я люблю книги по программированию! Этот самый блог был основан на концепции моего рекомендованного списка чтения для разработчиков.Многие из моих сообщений в блоге — это мои слабые попытки объяснить ключевые концепции, давно изложенные в классических книгах по программированию.

Как совместить это, казалось бы, противоречивое утверждение, динамику любви и ненависти? Понимаете, есть книги по программированию, и есть книг по программированию, .
Лучшие книги по программированию вне времени. Они выходят за рамки выбора языка, IDE или платформы. Не объясняют как, а почему . Если вы чувствуете себя обязанным убирать дом на своей книжной полке каждые пять лет, поверьте мне, , вы покупаете не те книги по программированию .

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

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

(Обновление: Тим Сполдинг любезно создал учетную запись LibraryThing от моего имени — и участники уже задокументировали и занесли каждую книгу, изображенную на этих полках. Впечатляет и довольно круто!)

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

Я намерен сделать stackoverflow.com в высшей степени дополнением к таким вневременным классическим книгам по программированию.Это никоим образом, форма или форма не предназначена для их замены.

С другой стороны, если вы неудачливый автор Perl для чайников, то берегите себя, потому что мы определенно охотимся за вами.

Аудиокнига недоступна | Audible.com

  • Evvie Drake: в старте больше

  • Роман
  • К: Линда Холмс
  • Рассказал: Джулия Уилан, Линда Холмс
  • Продолжительность: 9 часов 6 минут
  • Несокращенный

В сонном приморском городке в штате Мэн недавно овдовевшая Эвелет «Эвви» Дрейк редко покидает свой большой, мучительно пустой дом почти через год после гибели ее мужа в автокатастрофе. Все в городе, даже ее лучший друг Энди, думают, что горе держит ее внутри, а Эвви не поправляет их. Тем временем в Нью-Йорке Дин Тенни, бывший питчер Высшей лиги и лучший друг детства Энди, борется с тем, что несчастные спортсмены, живущие в своих худших кошмарах, называют «ура»: он больше не может бросать прямо, и, что еще хуже, он не может понять почему.

  • 3 из 5 звезд
  • Что-то заставляло меня слушать….

  • К Каролина Девушка на 10-12-19
.