Чому люди використовують книги програмування? [зачинено]


94

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

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

Наприклад, я "потрапив" в програмування, тому що хотів запустити сервер для гри, в яку я грав, тому я гугл і читав підтримку саме цього сервера, і тепер я зайнятий програмним інженером, використовуючи лише навички, які я розвинув ( а потім далі розроблено) кодуванням скриптів C # для не дуже популярного серверного пакету.

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


3
книги тут не є первинними, але велика перевага, якщо ви читаєте книги, вони просто інші книги, які вам цікаві.
cnd

42
Ви говорите про те, як навчитися програмувати з самого початку або про більш досконалі речі? Існує величезна різниця між "Навчанням C ++ за 24 години" та гідною книгою про більш досконалі теоретичні речі - роботи Кнут не знайдеш в Інтернеті.
Андре Парамеш

78
Здається, ви ніколи не стикалися з хорошою книгою програмування.
Jaywalker

46
Це метафорично до питання "навіщо йти до школи?"
Джодрелл

8
Я ніколи не знаходив книги як основний інструмент навчання, але у мене є тонна їх, і я рекомендую їх постійно. Очевидно, що ти вчишся лише робиш. Однак книги є джерелом ідей і можуть бути використані як легкодоступні довідники. Ми не читаємо / не рекомендуємо книги, з яких слід вчитися. Ми читаємо / рекомендуємо книги, щоб поділитися ідеями, що містяться в них.
Джоель Етертон

Відповіді:


229

Ось як я навчаюсь, взагалі кажучи:

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

Примітка: третій момент іноді приходить перший.

Редагувати : відповісти на запитання "Чому?"

Google чудово дізнається, як щось зробити, але це не чудово, щоб дізнатися, що ви не знаєте. Чому б вам коли-небудь google "C # delegati", якщо ви вперше не знали, що C # має концепцію, яку називають delegate, і що це може бути корисно для вирішення проблеми, над якою ви працюєте?

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


19
Чудова відповідь, особливо редагування у відповідь на "чому". Нещодавно я почав вивчати ASP.NET, і зробив це за допомогою google. Я використовував C # для .NET 2.0 протягом багатьох років, тому подумав, що зможу обійтись. Кожного разу, коли я стикався з проблемою, мені вдавалося знайти відповідь, шукаючи google, але незабаром стало очевидним, що я лише б'є кінчик айсберга того, що можу зробити, і мені зовсім не вистачало великих шматок бібліотек. Книга забезпечує набагато кращий огляд технології та всього, що вона може зробити. Уникайте книг "вивчіть х за 24 години" і замість цього перейдіть до книг "просунуті х".
Гевін Коутс

44
+1 для "з'ясування того, чого ви не знаєте".
Ковар

2
Розширення до 5-ої точки: Коли книга виходить з ладу, у темі завжди є google та інші книги, в тому числі ті, які орієнтовані на не початківців .
Річард

5
+1 за "коефіцієнт сигнал-шум іноді може бути дещо високим. Якщо у вас в голові є груба ідея, як щось робиться, ви можете легко підтвердити, чи правильно читається стаття. Але якщо ви ніякої підказки ... ти можеш опинитися в більшому безладі ".
Tom Squires

9
"Там, де книга виходить з ладу, завжди є google." Ви маєте на увазі переповнення стека;)
Джорен

42

Деякі причини, чому книги все ще актуальні:

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

Але книга ніколи не переведе вас на всю дорогу, вона просто підштовхне вас у правильному напрямку.


2
+1 для великої картини Після деякого часу я програмував на новій мові / середовищі, я вважаю, що книги справді корисні для заповнення великої картини та речей, які я пропустив із власного дослідження.
Адам Морріс

2
Блог Реймонда Чена або серія Going Deep на 9 каналі надзвичайно корисний для вивчення причини . Як тільки ви дізнаєтесь " чому " щось саме так, як це зробити, це стає тривіальною деталлю, яку можна гугл. Зазвичай автор книги може піти на другий план, щоб зрозуміти логіку того, що відбувається, замість того, щоб спробувати заблукати через обмотані разом рядки фрагментів коду, які ви знайшли в Інтернеті.
Ян Бойд

IMO, одна з великих переваг, яку мають книги, - це можливість стискати пальці в декількох місцях одночасно, щоб ви могли швидко перегортати розділи. Мені здається, що це безцінне, коли я намагаюся дізнатися щось нове, переглядаючи якийсь код, оскільки мені часто доводиться шукати щось інше (іноді кілька речей), щоб зрозуміти, на що я шукав. Навігація по екрану просто не однакова.
TMN

Домовились. Скачамо прямо в Asp.Net MVC, наприклад, ви можете зрозуміти, як це зробити. Але є так багато речей, які ви, ймовірно, помилитесь, що тонкі. Тоді вам залишається чухати голову, чому щось не працює.
Енді

28

Коли я вивчав програмування ще в книгах 1980-х років, де більш-менш єдине джерело інформації, доступне для повного вивчення мови програмування в цілому. Крім того, ви можете придбати комп'ютерні журнали, але їхній вміст був випадковими статтями, які, можливо, були цікавими та корисними чи ні.

Сьогодні ви можете знайти всю необхідну інформацію в Інтернеті. Хоча я б вважав повний підручник настільки схожим на книгу.

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

Перевага "повного тексту", якщо книга чи онлайн-підручник, полягатиме в тому, що він охоплює матеріал, який, хоча насправді не є необхідним, допоможе вам пізніше. Просто знати, що щось можливо, і знати, де його знайти. Особливо, якщо ви дізнаєтесь про складне середовище або про дуже складну мову, як C ++. Ви можете прочитати багато невеликих блогів про Ruby on Rails, не чуючи ніколи про Ajax або питання безпеки. Поки ви тільки граєте, це може не викликати проблем. Але якщо, як зі мною, ви хочете зайнятись професійною розробкою Ruby on Rails протягом декількох тижнів, тоді робота з текстом, який охоплює всі важливі моменти, допоможе дуже багато.

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

Особисто мені подобається читати, тому у мене немає відчуття, що книги сухі. Хоча, звичайно, важливо, щоб книга знаходилась на вашому фактичному рівні знань чи за її межами. Якщо ви вже освоїли всі основи C #, читати книгу для початківців не має сенсу.


7
+1 для згадування того, що я б написав: що "найкраща практика / методологія" книг сильно відрізняється від книг "як зробити X за допомогою Y". А перші - це справді цінна штука, адже вона вчить важко заробленому загальному досвіду вирішення проблем. Як тільки ви вивчите тестування одиниць, рефакторинг, оцінку тощо, ви можете застосувати та адаптувати його до безлічі мов / доменів / проектів.
Péter Török

1
Однозначно оцініть згадку про стилі, практики та візерунки. Це справді вигідні книги. Ви можете навчитися програмувати, просто маючи проблему для її вирішення та вирішення. Ви навчитесь добре програмувати, вивчаючи стилі, практики та шаблони. Проте найкраще місце для всебічного розуміння цих понять - це тексти.
Rig

+1 для "він охоплює матеріал, який, хоча насправді не є необхідним, допоможе вам пізніше" - хороші програмісти мають глибокі знання, на яких слід звернути увагу. Навіть якщо ви не пам’ятаєте всіх деталей, але ви знаєте, що нитка потрібно затягнути і вивчити її, коли вам це потрібно, це може бути цілком безцінним!
Jared Updike

22

Книга (або веб-документація, структурована як книга) - все ще є моїм бажаним способом вивчення більшості мов.

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

Наприклад, деякі мої колеги пізнавали Java, пірнаючи без книги. Вони кілька років програмували в Java, коли я виявив, що вони регулярно маніпулюють масивами байтів [], перетворюючи масив у String, використовуючи .substring (), а потім перетворюючи String назад у масив. System.ArrayCopy () представлений на стор. 155 Java In Gutshell

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


2
+1 для вказівки на різницю між тим, як навчитися щось робити та навчитися робити це добре.
idbrii

Хороша книга - чудовий спосіб швидкого висвітлення місцевості. Хтось уже зробив дослідження для вас. Знайти хорошу книгу може бути складно. Був час, коли я мав шанс 50/50 отримати чудову книгу на тему, яка мене зацікавила (дійсно хороший покупець). Зараз я вважаю, що шанс знайти гарну книгу в книгарні менше 10%. Однак у мережі є багато хороших ресурсів, таких як книга. Підбір потрібного ресурсу може прискорити навчання.
BillThor

1
Я не впевнений, коли був той час. Нещодавно я подивився на мої старі книги CS. Стандарт значно покращився. Наприклад, я використовував "Функціональне програмування з Мірандою" років тому. Нещодавно я використовував "Реальний світ Хаскелл". Старіша книга містифікує сьогодні, незважаючи на те, що в основному використовуються ті самі поняття та парадигми, що і Haskell.
струнка

21

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

Можливо, люди, які навчаються таким чином, не просять допомоги; вони просто занадто зайняті, щоб це зробити (погано, але навчаються по дорозі). Люди, які хочуть бути програмістами (як призначено до першої групи), задають багато питань про те, як бути програмістом чи як програмувати, хоча вони не обов'язково мають вирішити проблему, і це не так запитання з прямими відповідями.

І тому ми запираємось на книги. "О так, візьміть копію" Занурись у Python "." "Так ти дізнався?" "Ні" "Гм ..." "Я зайнятий, але я допоможу, якщо ти застрягнеш"

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

TLDR : книги - це добре, вчитися - це добре, вчити - робити книги - це ???


1
+1: Я думаю, ти це прибив. Дізнайтеся, роблячи, що найцінніші книги, якими я володію, були специфічними для програми, яку я писав у той час.
Джастін Шилд

41
Будьте обережні, щоб не стати програмістом "самоучки", який тонко знають це все, тому що вони працювали через просту проблему, погано, і відчувають себе "занадто гарними", щоб читати книги.
Joris Timmermans

2
Слід зазначити, що я не проти читання, я просто думаю, що цифрові медіа зазвичай набагато актуальніші та цікавіші.
Алекс Хоуп О'Коннор

2
@Alex Про цифрові медіа. Це дійсно залежить від теми, якою займаються ЗМІ. Якщо засоби масової інформації звертаються до таких речей, як, як зробити x мовою y, або найефективніший спосіб кодування в z, тоді я погоджуюся з вашим твердженням. Однак інші теми (як правило, більш досконалі, теоретичні теми), такі як NP, P, аналіз алгоритмів тощо, IMHO, як правило, найкраще розглядаються підручником. Візьміть мистецтво програмування Кнут . Це досить старий текст, але все ще вважається однією з головних книг з програмування.
cledoux

16
Я думаю, що це випадок підтвердження упередженості. @ Алекс, здається, шукає певної відповіді. Я не кажу, що ця відповідь погана сама по собі, але це, звичайно, не найкраща відповідь, яку надає будь-яка ділянка уяви.
zzzzBov

15

Я люблю читати технічні книги. Не всі технічні книги, лише ті, що стосуються певного предмета, який мене цікавить, скажімо Sharepoint. Я пригадую першу книжку, яку я справді прочитав (кілька разів), програмування Windows від Чарльза Петцольда. Через це та багато інших мені вдалося написати програму Win32 з пам'яті. Мені навряд чи потрібно було шукати API, тому я зміг зосередитися на діловій частині.

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

Хоча зараз я все більше «гуглю» та копіюю та вставляю, коли намагаюся вирішити проблему, витрачаю гарний шматок часу, переконуючись, що те, що я копіюю (або надихаюсь :), - це щось надійне, що я можу ввести мій код. Тільки тому, що я знаходжу рішення в Інтернеті, це не обов'язково найкраще.

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


14

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

Ви можете розглядати книги як структурований збір інформації з певної тематики. Перевагою є те, що хтось доклав зусиль, щоб створити кожну главу один для одного, щоб зрозуміти тему легко. Зазвичай вам також кажуть, які межі інформації (що висвітлюється та що ще є, що вам потрібно шукати деінде). Прочитавши та працюючи з ним, ви можете бути впевнені, що досягли певної майстерності. Якщо ви хочете навчитися натисканням кнопки швидкого перемотування вперед, книга може змусити вас працювати над усіма аспектами, не пропускаючи нудні частини, принаймні, якщо довіряти структурі книги. Збірка під назвою "книга" найчастіше корисна і як довідка.

Використання Інтернету, блогів, "обмацування навколо" тощо, як правило, потрапляє у вид неструктурованої інформації. Ви отримуєте безліч шматочків і мудрості, але вам потрібно зробити більше пошукової роботи, щоб набути своїх знань, тому що ніхто не керуватиме вами, кажучи: "Навчіться цього спочатку, або ви не побачите заслуги того, що ви Google вже зараз ". Ви можете пропустити певні частини, оскільки вони занадто нудні або ніхто не сказав вам, що вони важливі. Ви можете навчитися чомусь неправильно, адже не все, що написано в Інтернеті, є першокласною. Ви можете витратити багато часу на фільтрування марних результатів пошуку. Ви можете витрачати дні, намагаючись виконати щось самостійно, тільки тому, що ви не знали певного шаблону дизайну чи програми програмування, і ніхто вам не сказав. Чим менше ви знаєте,

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


Моє запитання можна трактувати як чесне, але останнє було моїм загальним консенсусом.
Алекс Хоуп О'Коннор

10

Якщо ви програміст на C, як ви розраховуєте вивчити Python без книги чи вчителя?

Якщо ви просто вивчите основний синтаксис і зануриться прямо, ви в кінцевому підсумку напишете код C на Python і прийдете до помилкового висновку, що Python такий же багатослівний і болісний, як і C.


Це перебільшення Якщо ви почали програмувати Python, ви можете отримати відповіді на проблеми в google і знайти такі речі, як рецепти Python, що описують пітонічні рішення конкретних проблем.
idbrii

6
@pydave: Якби це перебільшення, тоді не було б так багато С-коду, записаного в Python на SO (приклад)
BlueRaja - Danny Pflughoeft

4
Я читаю ваше запитання на прикладі, читаю вашу відповідь, і я розумію, що ви маєте на увазі: Вивчення основного синтаксису - це не те саме, що вивчення мови. (Я навіть не думав не вивчати мовні конструкції.) Якщо ви навчитеся достатньо Python, щоб написати код C на Python, то ви все ще не навчилися програмувати в Python.
idbrii

Це серйозна проблема, яка заслуговує на більшу увагу. Всі мови програмування є Turing завершеними, що означає, що ви можете вирішити будь-яку проблему, написавши C-подібний Python-код або Java-подібний Ruby-код. Там немає блокування дорожнього руху, яке змусить вас відповідати zeitgeist мови, якою ви програмуєте. Гірше, ви навіть не можете відчути біль вашої неефективності кодування, оскільки це буде приблизно таким же болісним, як це було в рідному C або рідному Java, рівень болю, який ти прийняв як звичайний.
Клин

не можу погодитися більше - я програміст C в PHP, коли пишу будь-яке: - |
warren

9

Google, як правило, корисний лише для пошуку невеликих фрагментів коду або бібліотек з відкритим кодом. Документація для деяких бібліотек / програм у кращому випадку є ненадійною (якщо вона існує, вона показує лише прості або звичайні приклади.)

У мене не багато книг програмування, але я можу вам сказати зараз, що у мене є книга про OpenGL, і в ній є більшість кодів для двигуна 3D, який ви можете просто скопіювати, але ви можете також читайте теорію - вам просто потрібно перегорнути кілька сторінок, і пояснення коду є саме там, чекаючи, коли його прочитають. Сьогодні, можливо, ви можете знайти в мережі деякі двигуни з відкритим кодом, але якщо вам потрібно істотно змінити код, ви, мабуть, у певних проблемах - зазвичай не існує довідкового форуму, і люди на SO не знають відповідь на ваше запитання, якщо вона дуже спеціалізована. Якщо мова йде про дійсно спеціалізовані речі, лише кілька десятків людей у ​​всьому світі зможуть відповісти на ваше запитання, не витрачаючи годин, аби з'ясувати достатньо, щоб мати можливість відповісти. Якщо ви запитаєте, як реалізувати зв'язаний список у C #, ви отримаєте 5+ відповідей на SO протягом перших 10 хвилин, але якщо ви запитаєте, який найкращий спосіб реалізувати складний алгоритм затінення в tri.js , ваше запитання зійде з першої сторінки, як скеля.

Крім того, книги написані майже виключно з точки зору, що читач хоче дізнатись про теорію, що займається, тоді як Google просто створює випадкові фрагменти сміття - код, архівовані дискусії про тему, в якій ніхто не знає, про що вони говорять. і т. д. Джерела в Інтернеті стали набагато кращими: SO, Moz Dev Network, веб-сайт Microsoft, блоги тощо, але історично книги були набагато кращими, тому що джерела Інтернету зараз наздоганяють.


1
+1 для вказівки часу, який потрібно розібрати у випадкових барахлах методом "навчання за допомогою гуглінгу"
Рей

1
+1 для "заархівованих дискусій щодо теми, в яких ніхто не знає, про що вони говорять тощо". - ROFL.
5аркс

7

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

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

Іноді це можна знайти і в Інтернет-довідниках, але через низький бар'єр для входу в Інтернет багато інформації є надто базовим, відсутні в деталях або просто прямо неправильні. Це може трапитися і з книгами, тому переконайтеся, що ви тільки відверто вірите тим книгам, які є класикою, з незмінно хорошими відгуками. Інші книги також можуть бути корисними, але лише як одне з джерел, вам все одно доведеться перевірити інформацію шляхом перехресних посилань або спробувати себе.


1
+1000 «просто відверто неправильно» В Інтернеті є багато прикладів коду, написаних «кращими програмістами», які не користувачі-компілятори і не знають, про що говорять. Плюс до того, буде написана хороша книга з педагогічною моделлю, яка запроваджує та зміцнює зміст послідовно та легко читає.
jqa

6

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

Я фактично не читаю книги з фізичної паперу - поруч є електронний зчитувач, і у мене на ноутбуці є програмне забезпечення Kindle, яке дає мені доступ до інформації, яку я шукаю.

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

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


4

Книги корисні, якщо ви хочете заглибитись у тему. Впевнений, що я навчився C # робити кілька підручників і писати деякі (домашні) проекти. Але глибина C # все ж корисна, щоб побачити, що відбувається внизу, і дізнатися кілька нових речей.

Також я можу взяти книгу програмування і прочитати її у своїй ванні або надворі на сонці. Я не можу цього зробити зі своїм настільним ПК.


4

Тому що це зручний спосіб вчитися у інших програмістів.

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

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


3

Книги дозволяють засвоювати набір інформації «пасивним» способом. Вам не потрібно шукати, що можливо, вам подається підмножина можливостей. Коли я вивчав C #, книга справді допомагала вказувати на можливості та цікавитись, які були еквіваленти C ++. Звичайно, мастеринг відбувся при використанні його в (реальному розмірі) проекті. Але книга справді допомогла вказати на відмінності та можливості.


3

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


Книги, безумовно, мають свої недоліки. Моя копія програмування Python охоплює Python 2.0, але час виконання я використовую 2.6.

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

Інші книги корисні для вдосконалення ваших знань. Я думаю, що ефективні книги С ++ Скотта Мерфі - хороший приклад. Хоча ця книга не дуже хороша для вивчення мови C ++, вона допомагає побачити проблеми в дизайні алгоритмів / інтерфейсів / успадкування, з якими ви ще не стикалися (поки не працювали) та не працювали. Можливо, легко знайти просте рішення (що пізніше спричинить інші проблеми), але розуміючи мову краще, ви можете розробити своє програмне забезпечення, щоб уникнути цих проблем.

Звичайно, не факт, що книги друкуються на папері, робить їх вартими. Дбайливість та зусилля, які входять у їх створення та прагнення дати сувору освіту - це те, що надає книгам значення. Часто в якості побічного ефекту ви отримуєте корисні Інтернет-ресурси, такі як C ++ FAQ lite або електронні книги, такі як Dive into Python . Існують також підручники, що працюють лише в Інтернеті, які є ретельними та корисними інструментами навчання (як-от документація для деяких платформ / мов / бібліотек).

Фрагменти в Інтернеті - це хороший спосіб відповісти на ваше запитання, але вони рідко говорять про те, що ви повинні запитувати.


3

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


3

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

У будь-якому випадку, я думаю, що найкраще вчитися з книг програмування - це основна мова. Наприклад, моєю першою справжньою мовою був C. Я засвоїв це, написавши ОС (я не рекомендую цього). Як результат, мої знання C були досить каліками навіть після двох-трьох років програмування в ньому. Я ніколи не здобув хорошого основного знання мови. Я не знав, що можу перетворити ці 15 рядків безладного коду в чисті два рядки коду. Тож я міг би вирішити проблеми, але я не використовував C повною мірою.

Тоді я в один момент вирішив вивчити С ++ ... (приблизно через 2 роки після того, як почав вивчати С). Тож я прочитав єдину книгу C ++, яку я мав навколо, книгу C ++ для манекенів. Я читав близько 3/4-х частин прямо через це, роблячи дуже мало "робити" за той час .. І як результат, коли я стрибнув у свій перший проект замість того, щоб мені було зручно з цими 15 рядками безладного коду, я знав, що там простіший спосіб зробити це (хоча мені, можливо, довелося це шукати).

Я робив те саме, коли вивчив C # / ASP.NET. Я майже нічого не робив, але читав, поки не закінчився з третьої четвертої частини книги. А для того, чого я не дізнався, я переглянув переповнення стека для цікавих запитань C #. Коли я вступив у свій перший проект, я б сказав, що більша частина мого коду була відносно чистою і з тих пір лише після цього довелося "відновлювати" величезний ремонт.

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


2

Це менше про те, що ти читаєш, а скільки. Мені подобається мати кілька книжок програмування на ходу, коли я працюю над проектом. Раз і знову (частіше, ніж ви думаєте) ви читатимете про техніку, яку можна застосувати до вашого поточного проекту.

Після того, як ви реалізуєте рішення у реальному світі, інформація залишиться.


2
Я фактично вважаю, що це стосується відповідей на запитання на таких веб-сайтах, як SE. Я часто виявляю, що коментарі призводять мене до інформації, що стосується вирішення проблеми, над якою я працюю або знаю, що незабаром працюватиме.
Lea Hayes

2

Я вважаю за краще використовувати книги, бо відчуваю, що вони дають короткий огляд стану технології, над якою ви працюєте. Автор констатує, що з XX версією мови / бібліотеки Y саме так ви вирішуєте проблему Z. Може підручники веб-сайтів не перераховують, які версії вони використовують, або надають приклад коду, який вони використовують, коли книги часто роблять.

Книги часто висвітлюють "чому" це рішення вирішує проблему, тоді як онлайн-документи, як правило, копіюють пасту.

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


2

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

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


1

Коли я вивчав С ++, я вважав, що більшість літератури є досить марними, поки щось у мене не клацало. До сьогоднішнього дня я не впевнений, що це було, але все почало мати сенс. Книги та веб-сайти тоді мали набагато більше сенсу. Мені знадобилося 2 книги, щоб навчитися програмувати на C ++, і жодна з них не була справжньою книгою C ++ (це були книги Visual C ++, орієнтовані головним чином на MFC).

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

Для деяких програм програмування мені здається читати кілька книг, проводити дослідження через Google та експериментувати. Я дуже часто робив це, коли працював над алгоритмами AI, коли працював над грою в шашки з J2ME. Я також виявив це робити, коли вивчав, як створити компілятор-компілятор для спеціальних синтаксисів. Існує так багато різних варіацій та поглядів.

Іноді розуміння кількох поглядів дозволяє встановлювати зв’язки, які в іншому випадку є більш незрозумілими.


1

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

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

Точне своєчасне навчання може дуже легко постраждати від проблеми задоволення, коли ви виявите проблему, яку хочете вирішити, переходите до першого рішення, яке, здається, працює, тоді ви біжите до інтервебу, щоб дізнатися, як його реалізувати. . Однак часто це може зашкодити вам, якби вам вдалося поговорити з досвідченим програмістом про вашу проблему, вони б не сказали вам "ось як зробити X", вони б сказали вам замість "не робіть X, замість цього зробіть Y ". І це такі знання, які ви, як правило, отримуєте з кращих книг. Дійсно, деякі книги повністю про подібні речі, наприклад, Javascript: хороші частини .

Інша проблема, яку може мати навчання в JIT, - це набагато повільніша крива навчання. Завдяки навчанню JIT, ви прагнете вивчати лише те, що вам потрібно знати. Але часто просто базове ядро ​​знань може прискорити вивчення нової мови чи основи. Замість того, щоб спотикатися за основи, ви починаєте з міцного фундаменту, а потім будуєте звідти. Хороший фрагмент матеріалу, який ви можете охопити, читаючи книгу, може бути не для вас відразу корисним, але наявність цих базових знань може бути корисним для керівництва вашим рішенням і особливо для розуміння нового коду, до якого ви піддаєтеся. Звичайно, є компенсація, і є погані книги, які просто купують непотрібні факти, які ви не пам’ятаєте після того, як прочитаєте їх, але є і хороші книги, які дають вам хорошу основу в основах та чому.

Є також книги на більш високому рівні, ніж окремий технологічний предмет, який, на мою думку, є вирішальним для розвитку в якості розробника. Книги, такі як Code Complete , Refactoring , ефективно працювати зі спадщинним кодом тощо. Ви не збираєтеся брати знання з цих книг лише через JIT-навчання.


1

Я думаю, що я ходжу для читання книг. Особливо завантажую електронні книги. Читаю кожну частину глави. Скопіюйте їх код! вставте до свого редактора програмування, а потім подивіться, який вихід. Потім спробуйте змінити логіку цього. Я згадав завантажувані електронні книги, тому що працювати швидше. Очікує дійсно чудово. Я не брешу, але з останнього листопада до сьогодні. близько 20 книг. Для всіх потрібна любов до читання. Що для новачків - це те, що вони вирішують конкретну проблему, беручи довідки з Інтернету. Але коли їм дається справжнє складне завдання, вони здаються. Причина, ніяких знань про завдання та Наприклад, я обмежив елементи управління таблицями даних і не знаю, що роблять набори даних, і мені поставлено завдання встановити співвідношення між резидентними копіями пам'яті таблиць баз даних, я не можу це зробити.


0

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

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

Крім того, навчитися працювати як ефективна частина команди - це трохи крива.

Тож як книги допомагають вирішити ці "реальні" проблеми програмування таким чином, щоб пошук посилань в Інтернеті не був?

Ну дві мої улюблені книги - "Шаблони дизайну" та "Рефакторинг".

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

Шаблони дизайну насправді не пропонують багато, що хороший програміст не може зрозуміти, але він дав назви широкому спектру моделей, які всі вже використовували в коді. Це дало змогу програмістам ефективніше спілкуватися та допомогло деяким програмістам знайти нові способи нападу на проблеми. Хоча ви можете знайти шаблони дизайну в Інтернеті, набагато простіше в Google назвати шаблон дизайну, ніж - google, що ви намагаєтеся зробити.

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


0

Я навчився програмувати з книжок безпосередньо. Близько 20 років тому раніше Google і мережа коли-небудь стали популярними. Я думаю, що вони - чудові ресурси. Однак більшість сучасних книг лише цитують технічні статті виробників. Тому я згоден, що краще вчитися в Інтернеті. Із попередженням:

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

У мене все життя було проблеми з вступом до коледжу, але зараз я переходжу на третій курс. На своєму першому курсі я познайомився з людьми на 4 курсі та магістрах, і міг вести продуктивні розмови про теорії AI, HCI, асемблера та розробника компілятора. Але, маючи всі ці знання, я не зміг створити розумної програми. Що мені не вистачало ... Єдине, чого ви не можете отримати ні з книги, ні в Інтернеті.

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

На другому курсі я навчився багато нових технічних речей (все ще основи у порівнянні з тим, що я знав, але я вкладав теорію, яку я знав, на практиці). Це ще раз підкреслювало важливість структури. Я не завершив свого першого реального проекту. Зараз я вважаю себе програмістом.

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

Книги - це добре, Інтернет - кращий, Google і ви - труба, але в моєму стані нічого не перемагає старий добрий фашистський коледж. І я сумніваюся в будь-якій кількості гуглінгу та ютубінгу, і я знаю з перших рук, що жодної кількості книг ніколи не буде.


Там, де сказано вище, "я не завершив свій перший реальний проект. Зараз я вважаю себе програмістом". У ній повинно бути написано "Я завершив свій перший реальний проект. Зараз я вважаю себе програмістом". Вибачте за неправильне написання.
Джек Спратт

0

Я поняття не маю. Я проти книг програмування. У більшості випадків для пошуку додаткової інформації вам все одно доведеться досліджувати Інтернет.

Ви хочете вивчити мову програмування? Google для цього. Я ненавидів jQuery, тому що він важко виглядав. Потім я прийшов до Stack Overflow, і багато чого знаю з цього. Без допомоги жодної книги.

  • Google для цього
  • Подивіться навколо професійних, повних програм із відкритим кодом
  • Перегляньте цей код і Спробуйте, щоб дістатись.
  • Спробуйте написати швидку / просту програму з фрагментів існуючого коду.
  • Спробуйте переписати це для себе.
  • Знайдіть більше навчальних посібників в Інтернеті
  • Скористайтеся досвідом
  • Візьміть більше досвіду
  • Ви щойно вивчили нову мову! (Я не казав, що ви будете експертом, але основи засвоюються через кілька годин або днів)

Мати книгу в якості довідника дуже корисно - ви отримуєте досвід інших. "Книга" навіть може бути обширною онлайн-документацією / навчальними посібниками на зразок джанго чи джикері . Але спроба та помилка + лише джерело читання залишить значні прогалини у ваших знаннях. Тепер, якщо вам потрібно лише кілька рядків jQuery, ваш метод працює, але ви не вивчили мову. Але якщо ви хочете вивчити C, я рекомендую мати K&R в якості орієнтиру. Звичайно, більшість інформації десь є в Інтернеті, але вони розкидані по багатьох публікаціях блогу.
д-р Джимбоб

0

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.