×Закрыть

Книжки з програмування: як читати і що саме

Регулярно отримую дані запитання від початківців. Тому спробую дати відповідь усім одразу.

Загалом розкажу про таке:
— коли і як варто читати;
— які книги читати, залежно від мови програмування;
— а також розкажу, що читав сам, коли починав.

Для чого книга взагалі?

Книга — це ресурс для навчання досить грунтовний та об’ємний. Технічна книга часто дає не просто техніки і поради, але й погляд з «пташиного польоту» на певні концепції, ідеї та загальне розуміння предмету.

Технічна книга не читається за один вечір, як художня література. Зазвичай вона забирає дні, тижні, а деколи і місяці для освоєння та розуміння хоча б частини описаного матеріалу. Таким чином, на початку брати велику технічну книгу (а то й дві) і просто читати — малоефективний метод.

Спершу треба визначитись, що ви хочете опанувати.

Якщо йдеться про складні технології, низькорівневі мови програмування, абстрактні поняття та концепції, тоді є сенс сідати грунтовно за теорію і, можливо, в процесі щось пробувати на практиці.

Я, наприклад, коли вже вивчив високорівневу (читайте «простішу») мову програмування Python, захотів також хоча б спробувати себе в мові C. Пройшов кілька туторіалів за 2-3 години і одразу взявся кодити. І знаєте що? Нічого не вийшло. Низькорівневе управління пам’яттю, вказівники, масиви і маса інших цікавих речей, про які я навіть не здогадувався, програмуючи на Пітоні, не дали мені нічого зробити :-)

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

Тепер інший приклад:
Якщо починаєте вивчати нескладні технології, де для перших експериментів достатньо знати кілька простих фактів, читати цілу книгу немає змісту. Принаймні, із самого початку.

Розбираючись з HTML, я пройшов 2 онлайн-туторіали за 1 годину і одразу почав експериментувати. Адже, щоб написати кілька нескладних тегів, не потрібно вивчати вищу математику. Достатньо отримати інформацію про те, які є теги і коли їх варто використовувати.

Так само я зробив із мовою Python. Спочатку — кілька швидких онлайн-курсів на кілька годин. Далі практикувався та писав хоч якийсь код. Потім паралельно вже починав базову книгу, знову ж таки, паралельно кодуючи та застосовуючи інфу з книги на практиці.

Підсумуємо:
— починаєте вивчати щось новеньке і не знаєте, чи воно складне? Спробуйте швидкі курси, статті, туторіали. Не допомогло? Шукайте книгу;
— знаєте, що технологія загалом не є, як кажуть американці, «rocket sience» (не складно) — тоді книгу почитаєте вже коли набудете трохи досвіду, так вона вам буде значно зрозумілішою і кориснішою;
— точно знаєте, що буде складно (наприклад, компільована мова або мова зі складними конструкціями та парадигмами, розробка під певну платформу вимагає багато специфічних знань) — тоді одразу шукаєте книгу, але паралельно не забувайте практикувати.

Як краще читати книгу?

Вища математика — це досить часто суто теорія. Програмування — це в більшості випадків (на превелике щастя!) практика.

Відповідно книги по технологіях (мови програмування, розробка під веб, розробка під Android) зазвичай є надзвичайно практичними, а тому треба «набивати руку», щоб матеріал правильно осідав в голові.

Правило номер один: Лише практика набиває руку.
Вартує випробовувати приклади із книги одразу в процесі читання. Ускладнюйте їх самостійно, вигадуйте свої власні задачки із застосуванням щойно вивченого матеріалу.

Правило номер два: перечитуйте.
Якщо технологія чи мова для вас зовсім нова і ви ніколи з нею не зустрічались ні на практиці, ні в теорії, тоді швидше за все з першого разу всю інформацію в книзі ви не зрозумієте. Саме тому рекомендую після першого прочитання та деякої практики повернутись до книги ще раз.

Правило номер три: П’ять книг — не завжди краще, ніж одна.
Вивчаючи щось нове, буває важко змусити себе перейти до практики. Щоб залишитись у зоні комфорту, ми часто тішимо себе думками, що «я ще мало знаю, мені ще зарано кодити...». Таким чином, потрапляємо в капкан під назвою «Вічний Студент» — людина, яка постійно щось вчить, але нічого насправді не робить зі своїми знаннями.

Щоб почати працювати з новою для вас технологією, достатньо пройти одну базову книгу. Якщо ви вважаєте інакше, відкоментуйте — цікаво, що ж ви таке вивчали... :-)

Мене часто контактують із запитанням типу: «Прочитав щойно Лутца по Пітону, що далі читати найкраще?». Я відповідаю запитанням на запитання: «А скільки рядочків коду ти написав під час прочитання даної книги і що ти очікуєш від наступної книги книги на ту ж тематику?». Якщо людина лише вивчала теорію, тоді рекомендую перечитати книгу ще раз і вже щось написати, нарешті!

Не женіться за кількістю. Для початку достатньо одного курсу, однієї книги, одного туторіала, одного відеоуроку, щоб почати перші рядочки коду. Без цих рядочків гріш ціна наступній товстій книзі.

Які книги читати?

А тепер невеличка таблиця книг з різних мов та технологій. Література подібрана для початківців.
Маєте доповнення? Коментуйте, будемо вдосконалювати!

Технологія/мова Книги

Python

В. Подоба «Веб-розробка з Python i Django для початківців»
С. Читлур «Укус Питона»
М. Лутц «Изучаем Python»
Г. Россум «Язык программирования Python»

C++

Б. Страуструп «Язык программирования С++»
Х. Дейтел «Как программировать на C++»
Г. Шилдт «С++ для начинающих. Шаг за шагом»

Java

Б. Эккель «Философия Java»
Г. Шилдт «Java. Руководство для начинающих»
С. Хорстманн «Java. Библиотека профессионала. Том 1. Основы»

PHP

Д. Валейд «PHP5 для чайников»
Л. Бейли «Изучаем PHP и MySQL»
Онлайн Посібник «PHP для начинающих»

C#

К. Нейгел «C# 4.0 и платформа .NET 4 для профессионалов»
Г. Шилдт «C# 3.0. Руководство для начинающих»
Э. Троелсен «С# и платформа .NET»

JavaScript

М. Моррисон «Изучаем JavaScript»
М. Дмитриева «JavaScript. Быстрый старт»
Д. Флэнаган «JavaScript. Подробное руководство»

Ruby/Rails

Ю. Мацумото «Язык программирования Ruby»
К. Пайн «Учись программировать»
Д. Ханссон «Гибкая разработка веб-приложений в среде Rails»

HTML/CSS

Б. Лоусон «Изучаем HTML 5»
П. Лабберс «HTML 5 для профессионалов»
Б. Хеник «HTML и CSS Путь к совершенству»
К. Шмитт «HTML5. Рецепты программирования»

MySQL

П. Дюбуа «MySQL»
В. Гольцман «MySQL 5.0. Библиотека программиста»
М. Кузнецов «MySQL 5»

А який у вас підхід до прочитання технічних книг?

142 комментария

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Мені здається, чи тут немає книг українською ?

Нікому це не вигідно, тим більше зараз

В якому розумінні зараз ? Мені здається, що навпаки кількість охочих вивчати IT збільшується з кожним роком

В якому розумінні зараз ? Мені здається, що навпаки кількість охочих вивчати IT збільшується з кожним роком
Угу
От только:
1) Есть куча доступных бесплатных материалов (нормальная книга сейчас обойдется в 200-500 грн).
2) «Общепонятный» язык — это английский, поэтому переводы не требуются.
3) Размер множества тех хто хочет вАйти и при этом говорит (читает) __только__ на украинском стремится к 0.

Так, англійська потрібна, але з власного досвіду скажу, що всі читають російський переклад

Я ж не кажу книгу перекладати і видавати друком, можна як посібник онлайн зробити

кількість охочих вивчати IT збільшується з кожним роком
Скоріше одразу заробляти чим «вивчати»
Нікому це не вигідно, тим більше зараз
Перефразую: не рентабельно. І як вже казали нижче
2) «Общепонятный» язык — это английский, поэтому переводы не требуются.
На сьогоднішній день знати англійську така ж необхідність як вміти читати-писати-рахувати

Уже писав, англійська звісно потрібна,але всі читають російський переклад, яка тут англійська ?

яка тут англійська ?
Як мені казали іще багато хто скаже: вийшла книга на англійській, одразу читай, поки перекладуть її, то вже може бути не актуальною

Також добре написана книга: Siddhartha Rao Sams Teach Yourself C++ in One Hour a Day (Seventh Edition).

Прата для новчачків в С++ стане гарним початком, щиро раджу

По С++ для новачків підійде книжка «Освой самостоятельно С++ за 21 день» Д. Либерти

А кто-то может подсказать что-то по Scala? А то этот язык как-то стороной обходят...

По QA подскажите пожалуйста хорошие книги кроме Канера и Савина. Что ещё есть из стоящих внимания?

А она сильно отличается от этой: www.amazon.com/.../dp/098478280X ?
Имхо, Cracking объемней и лучше в целом. Я прошлым летом Exposed «прочитал» за день после длительного разбора Cracking’a — те же задачи, те же мысли.

Судя по результату — мало отличается )
Но Programming Interviews Exposed в два раза дешевле!

Все рекомендованные книги по php — гавно, уж простите за мой французский.

Які кращі книги порекомендуєте для початківців?

Виталий, я в принципе не вижу разницы между книжками для начинающих и для продолжающих всех остальных. Неплохой список привел Akeksei, и я там ниже еще добавил: Pro PHP: Patterns, Frameworks, Testing and More, автор — Kevin McArthur.

Варто додати до Пайтона ще книгу Марка Пілгірма «Dive Into Python» www.diveintopython.net/toc/index.html
Мені вона дуже допомогла, бо Лутц трохи водичку у своїй книзі ллє. Але варто зазначити, що «Занурення у Пайтон» 2004 року і деяких речей, що з того часу з’явились, там немає. Тому в таких випадках варто читати документацію, а щоб було зрозуміліше по стандартних бібліотеках: pymotw.com/2

Дійсно! Я ще сам її читав коли починав. Зовсім з голови вилетіло.

По PHP книги имхо совсем неактуальны, как и большинство других книг. Я бы порекомендовал внести следующие:

— PHP 5. Наиболее полное руководство в подлиннике (2-е издание) Дмитрий Котеров, Алексей Костарев. Книга в чем-то устарела, но из этой книги главы 1-3 имхо полезны всем, кто начинает программировать для Web.

— www.phptherightway.com — хороший ресурс, который отображает актуальное состояние программирования на PHP (стараются регулярно обновлять)

— PHP: Objects, Patterns, and Practice / PHP. Объекты, шаблоны и методики программирования. Мэтт Зандстра. Информация об ООП в PHP в данной книге немножко устарела, но очень хорошо описаны шаблоны программирование применительно именно к PHP (там нет современных Dependency Injection и Service Locator, но дается хорошее представление о том, как работают и строятся веб приложения)

— Если совсем новичок в программировании, то начать следуюет с Codeacademy наверное.

Кто еще порекомендует что-то хороше по PHP?

php.net/manual/en или php.net/manual/ru — по моему лучше книги по php не придумали, всегда актуально + комментарии.

Я с мобильного, по-этому только ссылка — www.amazon.com/...0&robot_redir=1

Я разделяю авторитетное мнение что человек начавший программирование не з C — безнадежно потерян для программирования.

А еще я всем советую Уильяма Ричарда Стивенса

Деткам в школе тяжеловато будет начинать с С, имхо. Мы начинали с Бейсика и Паскаля. А вначале вообще был язык Logo — рисовали черепашками на экране домики и солнышко :)

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

и чем же С на нулевом уровне сложнее (страшнее ))) бейсика?

sub hello()
msgbox("Hello")
end sub

int main(){
printf("Hello");
}

что должно испугать детское сознание больше?

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

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

Но хочется верить, что у тех, кто не начинал с С, есть шанс :)

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

Погоджуюсь. немає правильного варіанту вивчення. У кожного своя дорога. Хтось з Javascript в C, а хтось навпаки.

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

Выучить C, и никогда на нём не писать, лучше уже с javascript. А мы с Вами писали на Паскале и Бейсике — не от хорошей жизни. Я по причине того что у меня дисковод не работал, винда 3.11 слетела, и Norton c qbasic без справки было единственным что стояло на компе.

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

Ну а якщо щось складніше хеллоуворлда? Одразу вилізає пепячево з вказівниками. Та ж робота з рядками чого варта. Новачкам треба качать алгоритміку, декомпозицію та інше ололо, а не боротись з сегфолтами та протічками.

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

Не думаю, що можна придумать багато цікавих задач, які користуватимуть лише стек. Ну, пошук цілих чисел якийсь, фібоначі та факторіал. Але це перші дні. Далі можна масиви типу char[100500], але це знову-таки обмежена тема.

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

Ну, дітям все дно треба якісь цікаві задачі давать, а не вивесто 100500 раз рядок hello, якщо введене число парне. В ідеалі — написать свою невеличку іграшку. Пам’ятаю, довго не міг сприймати сі/плюси після турбо-паскаля, бо там таке занадто «складно» реалізовуваось.

c# ещё никто не отменял ))

Там насильно пічкають тонами ООП.
Краще вже пітон тоді.

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

Ну, по-перше, вказівник — це таки частинний випадок змінної, тому їх пояснювать треба після змінних. По-друге, IT — це не світ «дозорів», де як ініціюють тебе, таким назавжди і залишишся.

Юр, а ты попробуй. Ты откроешь для себя оччччень много нового :)

Що спробувать?

кому нибуть обьяснить указатели после переменных.

Ну, типу, вказівник — це змінна, яка зберігає адресу іншої змінної. Якщо робиш *x, то можеш отримать значення змінної, на яку посилається вказівник.
Мене більше цікавить, як пояснювать з самого початку вказівники, а потім змінні.

Юр, я это и так знаю. Ты лучше обьясни это какому нибуть джависту.

путем обьяснения модели памяти.

как-раз ща изучаю java после с++, одно удовольстивие... Хорстман как-раз написал так книгу, что она получилась для тех кто изучает джаву после с++, получилось как для меня писали ))

Жалко, випиляли ручне видалення об’єктів. Коли треба швирятись купою невеличких структурок, вони навантажують gc. В мене так жаба на ведроїді люто протікала.

А чочо з джавістами не так? В жабі об’єкти виключно через вказівники-то і передаються. Через «стек» — лише примітивщина.
Через пояснення моделі пам’яті же змінні і пояснюються. Типу, от у тебе є купа комірок. А змінна — це коли резервуєш собі їх трошки та наділяєш іменем для зручності доступу. Дуже грубо, але для дитини / абсолютного початківця покатить.

Починав програмувать з бейсіка, потім перейшов на паскаль, звідти на делфі. Ще в школі, звісно. Зараз втраченим себе не відчуваю абсолютно, як і друзі з подібним життєвим шляхом. Що я роблю не так? :-)

Все правильно робиш.

Відчуття втраченості то проблема того, хто його відчуває ))

Це як сказати, що якщо ти не народився в багатій сім’ї, тоді тобі ніколи не стати багатим :-)

Ніколи не мізно знайти правильний шлях. Головне бажання.

у 99% человек это «потом» не получается

Раджу глянуть рейтинг мов на DOU, секцію “первый язык” ;-)
Не знав, що у нас тут так багато “втрачених” людей.

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

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

Якщо людина не вміє в ембедед, це не значить, що вона втрачена для програмування. Мала кількість спеціалістів пов’язана, імхо, в тому числі з специфічністю галузі: так окрім програмування на сях треба вміти в асемблер та електроніку.

Юр, если человек не умеет С — то единственное место где он будет эффективен — это 1C ...

Рубісти, пітоністи, джава-сішарпери, жаваскриптери та навіть ті ж пхпшники здивовано дивляться на це твердження ;-)

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

Тому що дешевше та швидше написать програму на жабі з використанням ололо-фреймворків, які будуть зжирать три серверних стойки, аніж прострілювать коліна низькорівневими сі/плюсами. Там така канонада буде, що всім вуха позакладає :-)

а потом у компании увеличивается количество клиентов всего лиш в 10 раз но количество стоек — в 100 раз. А это уже повод задуматся и кого нибуть «заоптимизировать» ;-)

Та ті клієнти приносять стільки, що і на тисячу вистачить :-)
Якщо ж шось дуже сильно провисає і шкодить бюджету, то так, варто з мінімальною кількістю зусиль/прострілених колінок переписать боттлнеки. Наприклад, на Go.
Але то таке. Позиція вищезгаданих мов на ринку і взагалі, тонко натякає що подібні ситуації — скоріше виключення, аніж основне правило.

Я вижу ты не представляешь что значит содержать три сотни стоек.

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

Багато пам*яті там жруть фреймворки усілякі. Тож якщо хеллоуворлд розпегасило на три стойки, значить це якийсь нетривіальний хелловорлд.
Алсо: я більше ніж впевнений, що жава сеніори та навіть мідли вміють в оптимізацію жаби в плані пам*яті. Ну там кешування усіляке, фабріки та іже з ними, опції jvm.

Я не дуже розумію, яким чином знання С допоможуть мені у оптимізації Java, яке загалом базується на різних трюках с JVM та використанням WeakLink/Unsafe?

Видишь ли твоя Java машина крутится поверх системы с фон-Неймановской архитектурой. Это вносит определенные системные ограничения от которых невозможно абстрагироваться. Пришедшие в Яву с С чувствуют эти ограничения интуицией и в результате пишут код который ява-машина может выполнить околооптимальным образом. Люди начавшие с Явы обычно не понимают о чем речь.

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

Естественно — еще существует идейно-верный LISP.

Как человек, начинавший программировать с Prolog по книге Братко, я этого мнения не разделяю.

Но вот насчёт Стивенса согласен.

Мой подход к изучению.
По порядку.

Нужно все книги,туториали читать на англ.языке.
Я всегда так делаю.
Python:

Нужно все книги,туториали читать на англ.языке.
Полностью согласен. Переведённые книги/статьи — ацтой!

Загалом погоджуюсь.

Єдине що починати із офіційних доків... це може бути для частини людей занадто скучно і відбивати бажання. Особливо для тих, хто ще в школі і де все робиш тому, що треба.

В даний час ігровий момент в онлайн курсах дуже рулить!

Часом ментором для изучающих пайтон побыть не хотите?)

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

ну книги это конечно хорошо... но видео лучше (как для меня), по этому в продолжение темы книг, логично было бы создать подбокру видео... например:
youtu.be/...KeU5upePjEdyZTC (моя «любима» тема)))

З дублюванням прикладу із книги дуже класна техніка. Сам таке робив.

А от щодо відео — то ніколи не любив, швидкість освоєння зазвичай нижче ніж коли книжку освоюєш. Хоча знаю, що для більшості людей відео цікавіше і наглядніше.

Реляционная теория:
— Томас Коннолли, Каролин Бегг «БАЗЫ ДАННЫХ Проектирование, реализация и сопровождение, Теория и практика»

MS SQL Server:
— «Microsoft SQL Server 2005. Реализация и обслуживание. Учебный курс.» (именно по 2005)
— Кен Хендерсон «Профессиональное руководство по Transact-SQL» (несмотря на то что в названии есть слово «Профессиональное»)

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

На сайте DataArt в разделе «Практикантам» есть неплохая подборка пл разным языкам. И книги и онлайн-ресурсы.

По c# только Троелсен уместен, имхо. Второй книгой лучше рекомендовать что-то более специализированное.

Так. Другу книгу вступну немає змісту читати.

Хотів спочатку скласти список у вигляді: перша книга, друга книга. Але нажаль не назбирав достатньо провіреної інфи по усіх мовах, тому обмежився в основному «першими» книгами .

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

Наведені вище книги — це інструкції до інструментів. Як і інструменти вони старіють швидко, і список стає неактуальним. Я б теж радив читати такі книги у декілька підходів — спочатку швидко, а потім докладніше і, можливо, перечитувати.

А ось мій список книг, кожна з яких не вчить програмувати, але всі разом формують з людини інженера-програміста. В основному ці книги — класика інженерії та історія становлення IT.

Список для айтішника-початківся

Список для тих хто хоче йти і розвиватись далі

Моя рекомендація до читання цих книг (крім книг про історію) — швидко ознайомитись і з набуттям досвіду повертатись до них за необхідністю.

Странно что не посоветовали одну из лучших книг по PHP:
Matt Zandstra — PHP: Objects, Patterns, and Practice. 3rd.
Помогает писать нормальный код, после которого мало кто начнет холиварить по поводу php и быдлокодеров.

Я ж сам не перечитував усіх книг :-) Що вдалось назбирати, між знайомими розпитати, в соц мережах опитування трохи проводив також.

До речі, з коментарів до статті тепер можна список дуже класно оновити.

По mysql — High Performance MySQL, 3rd Edition
довольно хорошая книга — advanced techniques

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

не менее 20 примеров решить
потому и появилась например
Пол Локхард «Плач математика»

только плакать и остается от такого убийства духа математики...

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

Потом, Локхард писал о школе. Там тоже обязательно и долго надо набивать руку на арифметике и уравнениях. Но хотя бы иногда давали примеры, связанные с жизнью. В универе же у меня хватало где применить и понимать как применять.

А без зазубривания базовых навыков в математике никак. Это вроде взять и фантазировать, какой ты великий математик с рождения, а все это ремесло не для тебя )))

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

не кодируя — программистом тоже не стать.
но ведь программирование — это не только кодирование, верно?

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

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

нелепо противопоставлять практику и — суть дисциплины.
Я и не противопоставляю. Даже перечитал свои сообщения. Я только говорю, что практика — обязательная составляющая обучения. Без нее никакого духа даже не начнется.

Т.е. для духа это необходимая составляющая, но не достаточная

А что такое, простите, дух математики?

Также как невозможно написать «огробление корованов», пока if-then-else не пишется само собой, невозможно решать сложные задачи и «видеть» длинные выкладки (ну типа вывода формулы Стирлинга) пока не набьешь руку на базовых примерах.

Перепрошую, якщо зачепив. Я сам мех-мат закінчив, мат моделювання. І практики там було багато, але до мого приходу. Мабуть ще більше за радянського союзу :-)

На даний час, на скільки я знаю, спеціалісти математики більше задіяні в теоретичних дослідженнях та своїх теоріях. А ті, що застосовують на практиці свої знання, в більшості закордон повиїжджали.

Виправіть мене, якщо я помиляюсь.

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

Я просто обратил на это внимание. Т.е. штамп — теоретик/практик. Будто теоретики, это всегда такие сверхнепрактичные профессора, забывающие свой зонтик. А есть сверхпрактичные сантехники, которые могут починить при случае и космический корабль. Есть похожие: прагматик/романтик. Ум/мудрость. Особенно женская )))

1. Обов’язково повинен прочитати кожен професійний програміст (не обговорюється) — Мартін Фаулер «Рефакторинг».
www.amazon.com/.../dp/0201485672
www.ozon.ru/...ail/id/1308678

2. The best book for professional iOS developers I’ve ever met — Jack Cox, Nathan Jones, John Szumski «Professional iOS Network Programming»
www.amazon.com/.../dp/1118362403

3. Хороша книжка для вивчення ООП та C++ - Роберт Лафоре «Об’єктно-орієнтоване програмування в C++». Доступне подання матеріалу супроводжується тестами та завданнями.
www.amazon.com/.../dp/0672323087
www.ozon.ru/...ail/id/5410595
На CyberForum.Ru є гілка, де спілкуються «фанати» Лафоре, там викладає свої рішення завдань мій друг: www.cyberforum.ru/...read439212.html

4. Хочу звернути увагу на те, що «Мова програмування C++» Б’ярна Страуструпа — це явно не книга для початківців. Якщо ви хочете радити її, то треба розділити список на дві частини: книги для старту і для професіоналів.

дякую за свій список книг!

Стаття призначалась виключно для початківців. Погоджуюсь, деякі книги у списку не ідеальний варіант для них.

Думаю з коментарями до даної статті, можна буде скласти коректніший список тепер :-)

А що тоді читати початківцям в плюсах? Всі чогось рекомендують саме Страуструпа

Страуструп — автор мови, його ім’я — розкручений бренд, а його книга насправді найкраща по плюсах. Якщо ви початківець у C++, але не у програмуванні, вона для вас. Якщо ваші знання у програмуванні початкові, ви оціните доступність викладення матеріалу у книзі Лафоре.

По javascript: www.rsdn.ru/...m/web/4878902.1 (Стафанов есть на русском)

Разному уровню опыта и подготовки нужны разные книги (как правило, но не всегда).
Если мы говорим про джунов или скорее людей которые начинают изучать программирование (на сколько я понял), то тут можно совместить обучение и «экзамен»:
Книга должна быть как можно более справочной (в идеале туториал, но они как правило на английском, что может быть проблемой). Просмотрел и пошел х...чить. Если не получается х...чить, то это уже повод задуматься и тут с книгой особо не угадаешь, кому-то подойдет одна, кому-то другая.
.
Если «экзамен сдан», то можно переходить уже к настоящей литературе:
— для Джавы — Эккель (оригинал, бо первые переводы были просто справочниками)
— Фаулер и вся серия «с подписью»
— книги по алгоритмам и всякие SICP-ы
— книги по теории БД
.
И это как раз книги которые надо перечитывать по несколько раз. Сейчас еще раз читаю PEAA Фаулера, один и тот же текст несет немного разный смысл сейчас и 5 лет назад :)

Так. Статтю планував виключно для початківців. Заголовок статті не ідеальний у цьому випадку.

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

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

По плюсах те, що обов’язково:
— Скотт Мейерс: Effective C++, More Effective C++
— Andrei Alexandrescu: Modern C++ Design: Generic Programming and Design Patterns Applied

Александреску в обязательной литературе — крайне сомнительная рекомендация.

Javascript слід доповнити Крокфордом Javascript сильные стороны.

Можу запропонувати дві свої книги — leopard.in.ua/...and-chef-books Перша про PostgreSQL (на російській), друга — про Chef (на англійській).

Нульове правило для подібної літератури — читать в оригіналі, якщо він англійський.
Особиcто для себе використовую такий підхід. Читаю офіційний (зазвичай) туторіал, щоб розуміть основну м’якотку технології. Потім обираю якийсь проектик і починаю кодить, звертаючись за порадами до гугла та стаковерфлоу. Не можу читать 300+ сторінок від корки до корки, тому «технічна література» використовуюється як довідник, якщо в інтернетах нема потрібної статті. Але таке трапляється дуже рідко.

Алсо, підкину специфічної годноти:
Structure and Interpretation of Computer Programs // як засіб досягнення просвітлення
Algorithms : Dasgupta,Papadimitriou,Vazirani // як довідник

Якщо хтось захоче познайомитись з Go:
Caleb Doxsey. An Introduction to programming in go // основи
Summerfield M. Programming in Go // більш поглиблено

Ще є кльова українська книга про патерни: designpatterns.andriybuday.com/download

SICP — книга для начинающих. Крайне прискорбно, что очень мало начинающих знают о её существовании.

про дизайн патерни підтримую! дуже доступно все описано, шкода тільки, що на джаві все :)

Тільки тут проблема, що часто початківці в програмуванні також початківці в англійській мові ;-)

Так хай паралельно з програмуванням прокачують англійську. В IT літературі вона порівняно примітивна, це не Гаррі Поттер або Шекспір. І там лише читання. Розмовлять або слухать не треба, а запити в гугл — це не есе на філософські теми.

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

Мой список конечно не полон, и даже не претендует на лучшие книги :)
Но эти, или им аналогичные прочесть нужно.
Если конечно не изучали все это на стационаре.

Бертран Мейер «Объектно-ориентированное конструирование программных систем»
Карл И. Вигерс «Разработка требований к программному обеспечению»
Кент Бек «Шаблоны реализации корпоративных приложений»
Роберт Мартин «Быстрая разработка программного обеспечения»
Пит Гудлиф «Ремесло программиста»

Гради Буч и Мартин Фаулер — книги и статьи нагуглите

По алгоритмам:
Никлаус Вирт — «Алгоритмы и структуры данных»
или более толстая и математическая, а потому возможно — «ненужная» («Алгоритмы. Построение и анализ» Авторы: Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн)

Для вхождения в функциональное программирование
Э.Хювёнен, И.Сеппянен «Мир Лиспа»
Бенджамин Пирс «Типы в языках программирования»

Для промыва мозга настоящим ООЯ, если будет время
изучите Smalltalk. Рекомендую среду Pharo

Общеразвивающая:
Федерико Бьянкуцци, Шейн Уорден
«Пионеры программирования. Диалоги с создателями наиболее популярных языков программирования»

да забыл

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


The Programmers’ Stone Программистский камень

От это правильный список, в отличии от того что в статье. Хоть и «попахивает» старой школой.

Стив Макконнелл «Совершенный код» принимаете в список ?

а я могу удалить ваш пост? ;)

книг хороших много. даже прочитанных мной.

в списке есть аналогичная, Кент Бек «Шаблоны реализации корпоративных приложений»
перевод названия Implementation Patterns видать ради продаваемости так вольно перевели. а она — о коде :)

«Совершенный код» посему — не принимаю. Давайте книгу которой нет аналога :)

Обидва списки хороші. перший — для початківців, щоб спробувати трохи «покодити», другий — щоб досягнути дзену :-)

Стаття початково задумувалсь для початківців виключно. Заголовок статті не надто вдалий.

Треба буде другу статтю, вже для профіків. Там то ваш список — буде ідеальний.

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

Роберт Гласс. Факты и заблуждения профессионального программирования
Листер Демарко. Человеческий фактор
Тарасов Сергей. Дефрагментация мозга. Софтостроение изнутри
Карр Николас Блеск и нищета информационных технологий
Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz Object-Oriented Reengineering Patterns

факультативно, для беглого, выборочного прочтения
Джоэл Спольски «Лучшие примеры разработки» и проч книги, статьи
Уайт Т., Чего хочет бизнес от ИТ
Д.О’Лири — ERP Системы. Современное планирование и управление ресурсами предприятия

Якщо говорити про поєднання читання і кодингу, то особисто я для початківців рекомендував би такий формат, як в CodeAcademy. Я особисто там починав вивчати Python, і такий інтерактивний формат, коли поряд і теорія, і завдання в онлайн-інтерпретаторі, — дуже допомагають.

Звичайно, потім був PyCharm, купа статей на Хабрі, занурення в теорію і всередину бібліотек, але то вже зовсім інше. А от найпростіше (синтаксис, типи даних, основи ООП, оператори циклів та інше) — саме CodeAcademy. Вони там пропрацювали діалоги з користувачем, підказки. Тому сам процес зацікавлює до вивчання Пітону. По книгам, думаю, було б не так, важче.

Колись в 2000 році в університеті я так вчив Паскаль, по книзі, а тоді писав процедури :)
Снодійне ще те...

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

Это книги по кодированию. А где все таки программирование?

И да, если говорить о кодировании, то главное то и забыли:
Robert Martin. The Clean Coder — A Code of Conduct for Professional Programmers.

Стаття в першу чергу для тих, хто починає програмувати. Відповідно такі книги як Кнута не згадував. Думаю починати з нього — буде не практично як мінімум.

Гарно зауважено: кодити vs програмувати :-) Я прихильних радити «кодити» для швидкого початку, а далі вже програмувати. Починати з простішого іншими словами.

Если провести аналогию, то вы выложили инструкции по эксплуатации к автомобилям. Это, конечно, хорошо, но как ездить — не объясняет. Хотя, да, стоит признаться, что современные машины (как и ЯП) довольно просты в управлении, и научится ездить самому — можно. Особенно если у тебя есть какая-то заброшенная дорога, где никто не ездит. И куча времени.

Зачем я это прочел? И зачем тут книги 2002 года?

Must read для программистов C# и Java:

Jeffrey Richter — CLR via C#
Joshua Bloch — Effective Java

Рихтер бесполезен целевой аудитории этой статьи. Есть намного более простая и понятная литература по дотнету и языку

Почему? На собеседованиях на джуна часто спрашивают то, что отлично написано в рихтере

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

Почему бесполезен? Чтение Рихтера джуниором это конечно «doin’ it the hard way», но в целом вполне оправданный подход к обучению IMO.

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

От було б класно ця книги назвати

Альбахари и троелсен например.

Подписаться на комментарии