- Автор: Сергій Тепляков
- С ++
- Java
- .Net, C #
- ООП, Шаблони проектування
- Управління проектами
- WinAPI / WinSocks
- COM
- алгоритми
- Загальні питання програмування
- бази даних
Автор: Сергій Тепляков
Опубліковано: 14.03.2010
Виправлено: 10.12.2016
Версія тексту: 1.0
Щорічно виходить безліч книг з програмування, починаючи від опису певних мов програмування, закінчуючи вихвалянням методологій, які, нібито, повинні змінити цей комп'ютерний світ на краще. Найбільш складним завданням для читача в цьому випадку є вибір з усього цього різноманіття книги, на яку дійсно буде не шкода витрачених зусиль. На багатьох форумах досить легко знайти перелік рекомендованих книг по С ++, C #, ООП і чому завгодно ще, які люди відносять до класики в своїй області. Я ж хочу зібрати в одному місці книги, які вважаються класичними в різних областях комп'ютерної науки. При цьому я не збираюся грунтуватися виключно на власній думці (більш того, я не готовий грунтуватися на думці будь-якого ОДНОГО людини), а скористатися для цих цілей думкою комп'ютерного співтовариства.
Доброю практикою в підборі комп'ютерної літератури є розгляд «перехресних посилань» літературних джерел. Наприклад, якщо ви візьмете будь-яку книгу, так чи інакше пов'язану з об'єктно-орієнтованим аналізом і проектуванням, то в переліку літератури ви безсумнівно знайдете праці Бертрана Мейєра, Граді Буча, згадка книги Банди Чотирьох (GoF) і, напевно, Рефакторинг Мартіна Фаулера. Таку ж картину ви можете спостерігати і гортаючи книги по С ++, .Net, баз даних, управління проектами або будь-який інший області. Крім того, багато авторів в переліку літератури можуть призвести не просто голий список, а список з невеликими коментарями, за якими легше судити, яка книга є одноденкою, а яка класичної.
Тепер повернемося до самого переліку книг. Наведений список, ні в якому разі не є остаточним, буде розвиватися і доповнюватися, адже головна його мета - зібрати справжню класику комп'ютерної літератури, але не абстрактну, а таку, яка б допомогла практикуючому розробнику в заповненні прогалин в тій чи іншій галузі знань.
С ++
1. Бйорн Страуструп. Мова програмування С ++. Спеціальне видання. Біном, Невський діалект, 2008
Ця книга стоїть першою не тому, що її автор є за сумісництвом також і автором мови програмування С ++, а тому що вона містить неймовірну концентрацію думки на один рядок тексту. До цієї книги варто повертатися знову і знову, і з висоти свого досвіду ви будете знаходити все нові і нові відомості про програмування взагалі і про С ++ зокрема.
рецензія Купити в Озоне
2. Бйорн Страуструп. Дизайн і еволюція мови C ++. ДМК Пресс, Питер, 2006
Мова С ++ є таким, яким він є з усіма його перевагами і недоліками. Але перш ніж говорити про ті чи інші архітектурних питаннях, варто подивитися на те, в яких умовах перебували його автори і чому вони брали ті чи інші рішення. У цій книзі розповідається саме про це: для чого були введені посилання, які сили рухали командою розробників мови при реалізації перших шаблонів, чому бібліотека вводу / виводу така, яка вона є і так далі. Всі ці відомості допомагають дещо м'якше ставиться до недоліків мови і з ще більшою повагою ставитися до його достоїнств.
рецензія Купити в Озоне
3. Скотт Мейерс. Ефективне використання C ++. 55 вірних рад поліпшити структуру і код ваших програм. 3-е видання. ДМК Пресс, 2006
рецензія Купити в Озоне
4. Скотт Мейерс. Ефективне використання С ++. 35 нових способів поліпшити стиль програмування. Питер, 2006
рецензія Купити в Озоне
5. Скотт Мейерс. Ефективне використання STL. Питер, 2002
рецензія Купити в Озоне
Всі три книги Скотта Мейерса відносяться до категорії «для продовжують» і будуть корисні людям уже знайомим з С ++, але бажаючим підняти свої знання на наступний рівень. Книги вже давно стали класикою в своїй області і є родоначальниками серії «Effective programming», головним редактором якої є Скотт Мейерс.
6. Герб Саттер. Рішення складних завдань на C ++. Вільямс, 2008
рецензія Купити на Озоне
7. Герб Саттер. Нові складні завдання на C ++. Вільямс, 2005
рецензія Купити на Озоне
Книги Герба Саттер по праву вважаються кращими в області «просунутих» книг по мові С ++. У них розглядаються цікаві завдання і не менш цікаві рішення, досліджуються темні кути мови С ++, включаючи тему безпеки винятків, яка є досить складною і найбільш улюбленої автором (недарма перші дві книги автора названі "Exceptional C ++" і "More Exceptional C ++" ). Глави цих книг доступні на сайті автора ( http://gotw.ca ), Крім того на сайті Герба можна знайти безліч статей серії Effective Concurrency, які вже найближчим часом вийдуть у вигляді нової книги.
8. Андрій Александреску. Сучасне проектування на С ++. Вільямс, 2004
У своїй книзі Александреску показує, як можна реалізувати основні шаблони проектування, описані в книзі «банди чотирьох», за допомогою сучасного компілятора С ++. Книга вимагає серйозної підготовки як в області шаблонів проектування (design patterns), так і шаблонів С ++ (C ++ templates), тому я б рекомендував її до прочитання після ретельного вивчення книги «банди чотирьох» і книги Джосаттіса і Вандервурда по шаблонах С ++ .
рецензія Купити на Озоне
9. Герб Саттер і Андрій Александреску. Стандарти програмування на З ++. Вільямс, 2008
Книга являє собою концентрацію досвіду, накопиченого авторами і комп'ютерним спільнотою в області програмування на С ++. Її можна розглядати як коротку версію «просунутих» книг по мові програмування С ++, що стали такими популярними останнім часом.
рецензія Купити на Озоне
10. Девід Вандевурд, Микола М. Джосаттіс. Шаблони C ++. Довідник розробника. Вільямс, 2008
Книга являє собою найбільш повне керівництво по шаблону С ++, починаючи від простих шаблонів функцій і класів, закінчуючи метапрограмування і визначенням фундаментальних типів під час компіляції. Вона чудово доповнює книгу Александреску «Сучасне проектування», а точніше дозволяє зрозуміти і реалізувати самостійно все те, про що пише Андрії в своїй книзі.
рецензія Купити на Озоне
Java
1. Bruce Eckel. Thinking in Java, 4th Edition. Prentice Hall Ptr, 2006
Книга Брюса Еккель є, безумовно, кращим підручником з мови програмування Java з введенням в об'єктно-орієнтоване програмування та шаблони проектування. Автор володіє відмінним стилем викладу, наводить цікаві приклади і не соромиться критики розробників мови. У 2009-му році вийшла на російську мову під назвою «Філософія Java», відмітною особливістю російськомовного варіанту є відсутність п'яти глав: Strings, Container In Depth, Enumerated Types, Annotations і Graphic User Interface. Тому питання про те, який варіант вибирати залишається відкритим.
Купити на Озоне
2. Кей Хорстманн, Гарі Корнелл. Java 2. Бібліотека професіонала. Том 1. Основи. 8-е видання. Вільямс, 2008
Купити на Озоне
3. Кей Хорстманн, Гарі Корнелл. Java 2. Бібліотека профессіонала.Том 2. Тонкощі програмування. 8-е видання. Вільямс, 2008
Купити на Озоне
Найбільш фундаментальна праця з мови Java.
4. Joshua Bloch. Effective Java, 2nd Edition. Prentice Hall, 2008
Книга Джошуа Блоха займає те саме положення на полиці Java програміста, що і книги Скотта Мейерса і Герба Саттер на полиці С ++ програміста. Ця книга містить безліч прийомів і ідіом і буде корисна кожному, хто всерйоз займається цим чудовим мовою.
Купити на Amazon
5. Brian Goetz et al. Java Concurrency in Practice.
Хоча мова програмування Java значно спрощує розробку багатопотокових додатків, многопоточность все ще залишається однією з найбільш складних завдань, з якими стикається сучасний розробник. Ця книга якраз і покликана допомогти у вирішенні подібних завдань на мові Java.
рецензія Купити на Озоне
.Net, C #
1. Джеффрі Ріхтер. CLR via C #. Пітер, Російська редакція, 2007
рецензія Купити на Озоне
2. Jeffrey Richter. CLR via C #. 3d Edition. Microsoft Press 2010
Книга вже давно стала класикою в області програмування на платформі .Net. Саме вона є першою книгою, на яку необхідно звернути увагу кожному розробнику, який розраховує використовувати платформу .Net в своїй професійній діяльності. Третє видання книги піддалося істотним переробкам, внаслідок чого в ній відображені нововведення C # 3.0 і C # 4.0, а також містить нову частину, повністю присвячену питанням многопоточности.
Купити на Amazon
3. Дон Бокс, Кріс Селлз. Основи платформи .NET. Том 1. Загальномовне виконуюча середу. Вільямс, 2003
При своєму невеликому обсязі (всього 288 сторінок) і поважному віці (оригінал вийшов в 2002 році) книга залишається цінним експонатом в бібліотеці .Net програміста. Оскільки автори описують виключно фундаментальні концепції платформи, причому роблять це з неймовірним талантом, поєднуючи доступність викладу і глибину, тому ця книга залишається, і буде залишатися актуальною протягом всього часу життя платформи .Net.
Купити на Озоне
4. Krzysztof Cwalina, Brad Abrams. Framework Design Guidelines 2nd Edition. Addison-Wesley Professional, 2008
Розробка якісних програмних систем є досить складним завданням, а розробка якісних бібліотек (особливо framework-ів) є воістину вершиною майстерності архітекторів і розробників. Складність тут криється в специфіці прийнятих рішень, адже акцент серйозно зміщується в бік простоти і зручності використання, розширюваності і надійності. Але хоча ця тема є центральною, книга буде також дуже корисна і простим розробникам, адже знання ключових ідіом мови є обов'язковою умовою, коли команда дивиться хоча б трохи далі свого носа, і піклується не тільки про написання коду, а й про його подальшому супроводі.
рецензія Купити на Amazon
5. Bill Wagner. Effective C # (Covers C # 4.0): 50 Specific Ways to Improve Your C #. 2nd Edition. Addison-Wesley Professional 2010
Купити на Amazon
6. Bill Wagner. More Effective C #: 50 Specific Ways to Improve Your C #. Addison-Wesley Professional, 2008
Тема ефективності використання стала настільки популярною, що подібна література з'являється по більшості мов програмування і багатьом технологіям. Мова програмування C # не є винятком. Представником серії «ефективного програмування» на мові C # є ці дві книги Била Вагнера. Перша книга вийшла ще в 2004-му році і присвячена C # 1.0 і розглядаються різні питання, починаючи від відмінностей між класами і структурами, закінчуючи важливістю суворої гарантією винятків і проблемами взаємодії керованого і некерованого коду. Друга книга хоча і вийшла незадовго до офіційного виходу C # 3.0, але вже відображає всю специфіку цієї версії мови і платформи. У книзі розглядаються особливості роботи з узагальненнями (generics), багатопоточність (в тому числі і при роботі з призначеним для користувача інтерфейсом), нові можливості мови C # 3.0 і окремо розглядаються питання, пов'язані з LINQ. У березні 2010 року вийшло друге, перероблене видання першої книги, в якій відображені зміни C # 4.0, включаючи такі нововведення як PLINQ і тип Dynamic (якому присвячена ціла глава).
ООП, Шаблони проектування
1. Бертран Мейер. Об'єктно-орієнтоване конструювання програмних систем, 2-е видання. Російська редакція, 2005
Книга, яку багато по своїй фундаментальності в області об'єктно-орієнтованого програмування порівнюють з творінням Дональда Кнута (причому абсолютно без перебільшення) в області алгоритмів і структур даних. Ця книга є найбільш фундаментальною працею по об'єктній парадигмі, коли-небудь виходили російською або англійською мовами. Книга охоплює широке коло питань, починаючи від питань спадкування, інкапсуляція, модульність, повторного використання, закінчуючи автоматичним управлінням пам'яттю, шаблонами проектування і проектуванням за контрактом (який тільки через два десятиліття починає набирати обертів в mainstream мовах і технологіях).
Купити на Озоне
2. Граді Буч. Об'єктно-орієнтований аналіз і проектування, 3-е видання. Вільямс, 2008
Ще одна класична книга з об'єктно-орієнтованого програмування, але на відміну від книги Бертрана Мейєра має менш формальний і більш описовий характер. У книзі приголомшливо описана проблема складності ПО, описані ролі абстракції і ієрархії, викладено порівняння найбільш популярні на сьогоднішній день методології розробки та багато іншого.
рецензія Купити на Озоне
3. Ерік Гамма, Ральф Джонсон, Ричард Хелм, Джон Вліссідес. Прийоми об'єктно-орієнтованого проектування. Патерни проектування. Питер, 2007
Це та сама, знаменита книга «банди чотирьох», після виходу якої почався стрімкий розвиток ідеї шаблонів проектування в світі розробки ПЗ. Після її виходу ідея шаблонів почала поширюватися і розвиватися, і сьогодні ідеї шаблонів застосовується не тільки в контексті проектування, а й практично в кожній області розробки програмного забезпечення.
рецензія Купити на Озоне
4. Мартін Фаулер. Рефакторинг. Поліпшення існуючого коду. Символ-Плюс, 2008
Книга стала родоначальником такого популярного нині принципу поступового поліпшення коду без зміни функціональності, що зробило її вже давно класичної. Крім переліку рефакторингов в книзі багато говориться про якість коду, про його вплив на продуктивність програми і вартість її супроводу; міститься безліч прикладів неякісного коду, що допомагає зрозуміти, коли варто застосовувати рефакторинг, а коли ні.
рецензія Купити на Озоне
Управління проектами
1. Фредерік Брукс. Міфічний людино-місяць або Як створюються програмні системи, 2-е видання. Символ-Плюс, 2006
Ця книга (як і багато інших в цьому переліку) не потребує представлення. Такі поняття, як «міфічний людино-місяць», «смоляна яма», «срібна куля» і багато інших вже давно стали класичними, фрагменти з книги постійно з'являються на форумах, в статтях, їх цитують відомі сучасні автори. Перше видання книги вийшло понад три десятиліття років тому, але вона продовжує розбурхувати уми все нових і нових читачів, і продовжує залишатися такою ж актуальною, як і багато років тому.
рецензія Купити на Озоне
2. Том ДеМарко і Тімоті Лістер. Людський фактор. Успішні проекти і команди. 2-е видання. Символ-Плюс 2009
Книга «Людський фактор» є відмінним доказом того, що, незважаючи на стрімкий розвиток технологій, людський фактор є однією з найбільш складних проблем при побудові програмних систем. Фредерік Брукс (читаючи лекції своїм студентам) виділив наступні фундаментальні концепції книги: 1) важливість кристалізації команд (team jelling) і поняття цькування команд (teamicide); 2) важливість робочого простору; 3) акцент на «якості співробітників»; 4) вплив (негативний) на переїзд великого проекту Програми з одного місця (географічного) в інше. Цій книзі судилося довге життя з тієї ж причини, «чому розповіді Гомера пережили тисячі років: ці розповіді про людей, і вони також вірні сьогодні, як і тисячу років тому».
рецензія Купити на Озоне
3. Едвард Йордон. Шлях камікадзе. 2-е видання. Лорі, 2008
Ще одна класична книга з управління проектами, але на відміну від попередніх книг, присвячена роботі над безнадійними проектами (ризик провалу яких перевищує 50%). У книзі розглядається широкий спектр проблем, починаючи від політики і принципів ведення переговорів, закінчуючи роллю людського фактора і важливістю інструментальних засобів.
рецензія Купити на Озоне
WinAPI / WinSocks
1. Джеффрі Ріхтер, Крістоф Назарр. Windows via C / C ++. 5-е видання. Пітер, Російська Редакція 2009
Це класична і однозначно найкраща книга з програмування в Microsoft Windows. Якщо вам потрібно зрозуміти що таке об'єкти ядра, потоки, принципи синхронізації потоків, таймера, асинхронний ввід-висновок, архітектура пам'яті, структурна обробка винятків, DLL і все що з ними пов'язано і багато іншого, то ця книга саме те, що потрібно.
рецензія Купити на Озоне
2. Джеффрі Ріхтер, Джейсон Кларк. Програмування серверних додатків для Microsoft Windows 2000. Пітер, Російська Редакція, 2001.
Прекрасне доповнення до попередньої книги Джеффрі Ріхтера для розробників серверних додатків. Хоча ця книга і не є настільки популярною, як попередня (у зв'язку зі своєю більш вузькою спрямованістю), вона також відрізняється глибиною викладу, яку вельми складно знайти в будь-якому іншому джерелі. Тому якщо вам цікава тема розробки серверних додатків - книга буде дуже корисною.
рецензія Купити на Озоне
3. Ентоні Джонс, Джим Оланд. Програмування в мережах Microsoft Windows. Пітер, Російська Редакція, 2002
Найбільш повне керівництво по розробці мережевих додатків з використанням WinAPI. Якщо раптом знадобитися попрацювати з NetBIOS, іменованими каналами, реалізувати асинхронний ввід-висновок за допомогою портів завершення, налаштувати якість обслуговування або скористатися простими (Raw) сокетами, ця книга буде як не можна до речі.
Купити на Озоне
COM
1. Дон Бокс. Сутність технології COM, Пітер
Якщо ви все ж якимось чином пов'язані з цією чудовою технологією, «з маршалинга, монікерамі, розподіленими потоками, агрегатами і мільйоном інших речей, які розумів тільки Дон Бокс, і навіть Дон Бокс більше не може на це дивитися», то ця книга повинна бути першою в вашому списку. А якщо серйозно, то це найкраща і єдина книга за технологією COM, яка допоможе вам зрозуміти цю технологію.
рецензія Купити на Озоне
2. Крістофер Таваре, Кірк Фертітта, Брент Ректор, Кріс Селлз. ATL 8. Внутрішня структура та застосування. 2-е видання. Вільямс, 2007
Краща і єдина (ну, не зовсім єдина, але інші книги виходили не пізніше 2000 року) книга по бібліотеці ATL.
Купити на Озоне
алгоритми
1. Дональд Е. Кнут. Мистецтво програмування. Том 1. Основні алгоритми. 3-е видання. Вільямс, 2008
Купити на Озоне
2. Дональд Е. Кнут. Мистецтво програмування. Том 2. Получісленние алгоритми. 3-е видання. Вільямс, 2005
Купити на Озоне
3. Дональд Е. Кнут. Мистецтво програмування. Том 3. Сортування і пошук. 2-е видання. Вільямс, 2008
Купити на Озоне
4. Дональд Е. Кнут. Мистецтво програмування. Том 1. Випуск 1. MMIX - RISC-комп'ютер для нового тисячоліття. Вільямс, 2007
Купити на Озоне
5. Дональд Е. Кнут. Мистецтво програмування. Том 4. Випуск 2. Генерація всіх кортежів і перестановок. Вільямс, 2008
Купити на Озоне
6. Дональд Е. Кнут. Мистецтво програмування. Том 4. Випуск 3. Генерація всіх сполучень і розбиття. Вільямс, 2007
Купити на Озоне
7. Дональд Е. Кнут. Мистецтво програмування. Том 4. Випуск 4. Генерація всіх дерев. Історія комбінаторної генерації. Вільямс, 2007
Купити на Озоне
Одна з найбільш відомих у світі книг з програмування, Фундаментальний Праця, якому автор присвятив усе своє життя. І хоча сьогодні сучасний прикладний програміст не кожен день стикається з проблемами, вирішення яких він міг би знайти на сторінках цієї книги, це анітрохи не применшує її достоїнств. Незважаючи на стрімкий розвиток мов, інструментів, бібліотек, кожен хороший програміст періодично повертається до ключових тем, без знання яких неможливо стати Справжнім Програмістом.
8. Генрі C. Уоррен, мл. Алгоритмічні трюки для програмістів
Ця книга не містить відомості про структури даних, складних алгоритмах сортування і пошуку, принципах хеширования або довічних деревах, основний зміст книги присвячено всього лише бітам, масивам біт і операцій над ними, а також тим, яке безліч завдань можна вирішити за допомогою таких операцій. Книга буде корисна любителям оптимізації (адже, навіть сьогодні далеко не всі працюють на процесорах з тактовою частотою в декілька гігагерц), розробникам компіляторів і всім любителям алгоритмічних трюків і етюдів.
рецензія Купити на Озоне
Загальні питання програмування
1. Ендрю Хант і Девід Томас. Програміст-прагматик. Шлях від підмайстри до майстра. Лорі 2009
Це одна з тих книг, які вчить постійно рухатися вперед у своєму професійному плані, не зациклюватися на певних мовах або платформах, на методологіях і парадигмах програмування, на інструментах та ідіоми. У книзі розглядається широкий ряд питань, тут вам і проблеми «видобутку» вимог, і особливості написання специфікацій, і складність оцінки термінів, і важливість тестування, і закон Деметера, і вибір між складністю розробки і супроводу і багато іншого. Книга являє собою такий собі програмістські-філософська праця, який просто змушує задуматися над багатьма (хоча може бути і очевидними для багатьох) питаннями розробки ПО.
рецензія Купити на Озоне
2. Джон Бентлі. Перлини програмування, 2-е видання. Вільямс, 2007
Не можна назвати цю книгу простий, оскільки теми, що розглядаються в книзі, такими не є, але стиль викладу матеріалу і перелік ліричних відступів істотно спрощує сприйняття (книга більше нагадують рубрику «Цікаве програмування», і є однією з найвідоміших книг в своїй області). Незважаючи на це, теми, порушені в книги, є виключно серйозними. Тут і загальні питання програмування, і алгоритми, і структури даних, і питання оптимізації та налагодження, і вміння робити попередні оцінки, і багато чого ще. Тільки при читанні книги потрібно слідувати пораді автора і не поспішати, а ретельно продумувати і опрацьовувати весь матеріал, ось тоді від книги буде максимальна віддача.
рецензія Купити на Озоне
3. Стів Макконнел. Досконалий код. 2-е видання. Питер, 2007
За статистикою над одним проектом в середньому працює 10 поколінь розробників, а це значить, що більша частина життєвого циклу ПО становить його підтримка і супровід. З чого можна зробити простий висновок, що за _чтеніем_ програми проводиться набагато більше часом, ніж за її _напісаніем_, а це, в свою чергу означає, що якість коду грає дуже важливу роль. У цьому питанні книга Стіва Макконнелла (як і багато книги в цьому списку) є найкращою в своїй області. У книзі розглядається широкий спектр питань, так чи інакше пов'язаних з кодуванням, починаючи від правил іменування змінних (яким виділені 52 (!) Сторінки), закінчуючи рефакторингом і рекомендацій щодо оптимізації.
рецензія Купити на Озоне
4. Джеффрі Фріддл. Регулярні вирази. 2-е видання. Символ-Плюс, 2008
Найбільш фундаментальна праця по темі регулярних виразів, який коли-небудь виходив друком (все ж книга присвячена тільки цій темі і містить 608 сторінок). Книга містить опис роботи трьох типів механізмів регулярних виразів, містить приклади оптимізації та особливості застосування в різних мовах програмування і середовищах.
Купити на Озоне
бази даних
1. К. Дж. Дейт. Введення в системи баз даних. 8-е видання. Вільямс, 2006
Книга прекрасно відображає, наскільки великою є тема систем управління базами даних, вона відрізняється чималим обсягом (понад 1300 сторінок), а перелік літератури до кожної з глав дає зрозуміти, що це тільки верхівка айсберга. Книга не описує жодну з існуючих СУБД, а зосереджена насамперед на реляційної моделі (хоча досить часто проскакує критика про невідповідність реляційної моделі в існуючих реалізаціях) і є найбільш фундаментальною працею в своїй області.
Купити на Озоне
2. Джеффрі Ульман і ін. Системи баз даних повний курс, Вільямс, 2004
Ще одна класична книга з області систем управління базами даних. Книга також має чималий обсягом (одна тисячі вісімдесят вісім сторінок), покриває більшість найбільш актуальних тем цієї області, але є більш практичною, ніж книга Кріса Дейта. Книга теж не прив'язується до конкретної СУБД і буде корисна всім читачам, які цікавляться цією тематикою.
Купити на Озоне
Будь-який з матеріалів, опублікованих на цьому сервері, не може бути відтворений в якій би то не було формі і якими б то не було засобами без письмового дозволу власників авторських прав.