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


94

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

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

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

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


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

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

78
Кажется, вы никогда не сталкивались с хорошей книгой по программированию.
Jaywalker

46
Это метафорически вопрос "зачем ходить в школу?"
Джодрелл

8
Я никогда не считал книги основным инструментом обучения, но у меня их много, и я все время их рекомендую. Очевидно, что вы учитесь только на практике. Тем не менее, книги являются источником идей и могут быть использованы в качестве легкодоступной ссылки. Мы не читаем / не рекомендуем книги учиться. Мы читаем / рекомендуем книги, чтобы поделиться идеями, содержащимися в них.
Джоэл Этертон

Ответы:


229

Вот как я учусь, вообще говоря:

  • Купить книгу
  • Не читайте это от корки до корки, но знайте, где все можно найти
  • Найдите любимый проект для работы
  • Учитесь на собственном опыте, но используйте книгу как справочник
  • Где книга терпит неудачу, там всегда гугл

Примечание: третий пункт иногда приходит первым.

Изменить : Чтобы ответить на вопрос "Почему?"

Google - это замечательно, чтобы узнать, как что-то сделать, но он не очень хорош для того, чтобы узнать, чего вы не знаете. Зачем вам когда-нибудь гуглить "C # делегаты", если вы сначала не знали, что в C # есть концепция под названием делегаты и что это может быть полезно для решения проблемы, над которой вы работаете?

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


19
Отличный ответ, особенно редактировать в ответ на «почему». Я недавно начал изучать ASP.NET, и сделал это с помощью Google. Я годами использовал C # для .NET 2.0, поэтому думал, что смогу обойтись. Каждый раз, когда я сталкивался с проблемой, мне удавалось находить ответ с помощью поиска в Google, но вскоре становилось очевидным, что я только поражаю верхушку айсберга в том, что я могу сделать, и мне совершенно не хватает больших кусков библиотек. Книга дает гораздо лучший обзор технологии и всего, что она может сделать. Избегайте книг "изучи х за 24 часа" и вместо этого выбери "продвинутые" книги
Гэвин Коутс

44
+1 за "выяснение того, чего не знаешь".
Ковар

2
Расширение до 5-го пункта. Когда книга выходит из строя, в этой теме всегда есть Google и другие книги, в том числе предназначенные для начинающих .
Ричард

5
+1 для "отношение сигнал / шум иногда может быть немного высоким. Если у вас в голове есть приблизительное представление о том, как что-то делается, вы можете легко проверить, является ли статья, которую вы читаете, правильной. Но если вы понятия не имею ... вы можете закончить в большем беспорядке ".
Том Сквайрс

9
«Где книга терпит неудачу, там всегда гугл». Вы имеете в виду переполнение стека;)
Joren

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». И первые действительно ценные вещи, потому что они дают с трудом заработанный опыт решения общих проблем. Как только вы изучите модульное тестирование, рефакторинг, оценку и т. Д., Вы можете применить и адаптировать его к множеству языков / доменов / проектов.
Петер Тёрёк

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

+1 за «он охватывает материал, который, хотя на самом деле не нужен, поможет вам позже» - хорошие программисты имеют глубокие знания, на которые можно опираться. Даже если вы не помните все детали, но вы знаете, какую нить потянуть, и изучите ее, когда вам это нужно, это может быть очень ценным!
Джаред Апдайк

22

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

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

Например, некоторые мои коллеги изучили Java, погрузившись без книги. Они программировали на Java в течение нескольких лет, когда я обнаружил, что они обычно манипулируют массивами byte [], преобразовывая массив в строку, используя .substring (), а затем преобразовывая строку обратно в массив. System.ArrayCopy () представлен на странице 155 Java в двух словах

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


2
+1 за указание на разницу между умением делать что-то и умением делать это хорошо.
idbrii

Хорошая книга - отличный способ быстро охватить область. Кто-то уже сделал исследование для вас. Найти хорошую книгу может быть сложно. Было время, когда у меня был 50/50 шанс получить отличную книгу по интересующему меня предмету (действительно хороший покупатель). Теперь я нахожу, что шанс найти хорошую книгу в книжном магазине составляет менее 10%. Тем не менее, в сети есть много хороших книгоподобных ресурсов. Выбор правильного ресурса может ускорить ваше обучение.
BillThor

1
Я не уверен, когда это было время. Я недавно посмотрел на мои старые книги по CS. Стандарт значительно улучшился. Например, я использовал «Функциональное программирование с Мирандой» несколько лет назад. Я недавно использовал Real World Haskell. Старая книга сегодня загадочна, несмотря на то, что она использует те же концепции и парадигмы, что и Хаскелл.
стройное

21

Я думаю, что вы можете быть к чему-то. Для меня, по крайней мере, большинство моих навыков пришло от желания / необходимости программы, которая делает «Х».

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

И поэтому мы разбираемся с книгами. «О, да, возьми копию« Погружения в Python ».« Это то, как ты научился? » "Нет" "Гм ..." "Я немного занят, но я помогу, если ты застрянешь" "Э-э ... хорошо, я думаю"

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

TLDR : книги - это хорошо, учиться на практике - это хорошо, учиться на практике - это ???


1
+1: думаю, ты это прибил. Учитесь на практике, самые ценные книги, которые у меня есть, были специфичны для приложения, которое я писал в то время.
Джастин Шилд

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

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

2
@ Алекс О цифровых медиа. Это действительно зависит от темы, которую рассматривают СМИ. Если средства массовой информации обращаются к таким вещам, как, как делать x на языке y, или как наиболее эффективный способ кодирования на z, то я согласен с вашим утверждением. Однако другие темы (обычно более продвинутые, теоретические), такие как NP, P, анализ алгоритмов и т. Д., IMHO, обычно лучше всего рассматриваются в учебниках. Возьмите Knuth's Искусство программирования . Это довольно старый текст, но до сих пор считается одной из передовых книг по программированию.
cledoux

16
Я думаю, что это случай смещения подтверждения. @ Алекс, похоже, ищет определенный ответ. Я не говорю, что этот ответ плохой сам по себе, но это, конечно, не лучший ответ, представленный любой натяжкой.
zzzzBov

15

Я люблю читать технические книги. Скажем, не все технические книги, а только те, которые касаются конкретной темы, которая меня интересует, скажем, Sharepoint. Я вспоминаю первую книгу, которую я действительно прочитал (несколько раз), «Программирование Windows» Чарльза Петцольда. Благодаря этому и многим другим я смог написать приложение Win32 из памяти. Мне не нужно было искать API, поэтому я смог сосредоточиться на бизнес-части.

Я чувствую, что книги предоставляют «авторский» способ сделать что-то, возможно, кем-то, кто знает правильный способ сделать что-то лучше меня. Я верю, что то, что я изучаю, это, я бы сказал, лучший способ решить мою проблему. Это, конечно, если я доверяю автору (должен любить область обзоров в Амазонке).

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

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


14

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

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

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

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


Мой вопрос можно истолковать как честный, но последний был моим общим консенсусом.
Алекс Хоуп О'Коннор

10

Если вы программист на C, как вы собираетесь изучать Python без книги или учителя?

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


Это преувеличение. Если вы начали программировать на Python, вы могли бы найти ответы на проблемы в Google и найти такие вещи, как рецепты Python , описывающие решения Pythonic для конкретных проблем.
idbrii

6
@pydave: Если бы это было преувеличением, то не было бы так много написанного на Python C-кода на SO (пример)
BlueRaja - Дэнни Пфлугхофт

4
Я прочитал ваш пример вопроса, прочитал ваш ответ и понял, что вы имеете в виду: изучение основного синтаксиса - это не то же самое, что изучение языка. (Я даже не думал не изучать конструкции языка.) Если вы выучите достаточно Python для написания кода на C на Python, то вы все равно не научитесь программировать на Python.
idbrii

Это серьезная проблема, которая заслуживает большего внимания. Все языки программирования являются тьюринговыми, что означает, что вы можете решить любую проблему, написав C-подобный код Python или Java-подобный код Ruby. Там нет контрольно-пропускного пункта, который заставит вас соответствовать духу языка, на котором вы программируете. Хуже того, вы можете даже не чувствовать боль неэффективности своего кодирования, потому что это будет примерно так же болезненно, как это было в нативном C или нативном Ява, уровень боли, который вы привыкли воспринимать как нормальный.
Клин

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

9

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

У меня не так много книг по программированию, но я могу вам сказать прямо сейчас, что у меня есть книга об OpenGL, и в ней есть большая часть кода для 3D-движка, которую вы можете просто скопировать, но вы можете Прочитайте также и теорию - вам просто нужно перевернуть несколько страниц, и объяснение кода уже здесь, ожидая, чтобы его прочитали. В настоящее время вы, вероятно, можете найти в сети несколько 3D-движков с открытым исходным кодом, но если вам нужно существенно изменить код, у вас, вероятно, возникнут некоторые проблемы - обычно никакого справочного форума не существует, и люди в SO не узнают ответьте на свой вопрос, если он очень специализированный. Когда дело доходит до действительно специализированных вещей, только несколько десятков человек во всем мире смогут ответить на ваш вопрос, не потратив часов, чтобы выяснить, достаточно ли для того, чтобы найти ответ. Если вы спросите, как реализовать связанный список в C #, вы получите 5+ ответов по SO в течение первых 10 минут, но если вы спросите, как лучше всего реализовать сложный алгоритм шейдинга в three.js, это , твой вопрос уйдет с первой страницы, как камень.

Кроме того, книги написаны почти исключительно с точки зрения того, что читатель хочет узнать об этой теории, в то время как Google просто создает случайные фрагменты ненужного кода, архивные обсуждения предмета, по которому никто не знает, о чем они говорят. и т. д. Источники в Интернете стали намного лучше: SO, Moz Dev Network, веб-сайт Microsoft, блоги и т. д., но исторически книги были намного лучше, и интернет-источники только сейчас догоняли их.


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

1
+1 за «архивные дискуссии на тему, в которой никто не знает, о чем они говорят и т. Д.» - ROFL.
5

7

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

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

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


1
+1000 «просто неправильно». В Интернете есть тонна примера кода, написанного «лучшими программистами», которые не используют компиляторы и не знают, о чем говорят. Кроме того, будет написана хорошая книга с педагогической моделью, которая вводит, а затем усиливает содержание последовательным и читабельным образом.
JQa

6

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

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

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

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


4

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

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


4

Потому что это удобный способ учиться у других программистов.

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

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


3

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


3

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


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

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

Другие книги хороши для уточнения ваших знаний. Я думаю, что книга Скотта Мерфи «Эффективный C ++» - хороший пример. Хотя эта книга на самом деле не очень хороша для изучения C ++, она помогает вам увидеть проблемы в алгоритме / интерфейсе / дизайне наследования, с которыми вы еще не сталкивались (пока) или не работали. Возможно, было бы легко найти простое решение (которое может вызвать другие проблемы позже), но, лучше понимая язык, вы можете спроектировать свое программное обеспечение, чтобы в первую очередь избежать этих проблем.

Конечно, не факт, что книги напечатаны на бумаге, делает их стоящими. Забота и усилия, которые прилагаются для их создания, и стремление дать строгое образование - вот что дает книгам ценность. Часто в качестве побочного эффекта вы получаете полезные онлайн-ресурсы, такие как C ++ FAQ Lite, или электронные книги, такие как Dive into Python . Есть также интерактивные учебные пособия, которые являются подробными и полезными инструментами обучения (например, документация для некоторых платформ / языков / библиотек).

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


3

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


3

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

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

Затем в какой-то момент я решил изучать C ++ ... (примерно через 2 года после начала изучения C). Так что я прочитал единственную книгу C ++, которая у меня была, C ++ For Dummies Book. Я прочитал около 3/4 этой статьи, выполняя очень мало «дел» в течение этого времени ... и в результате, когда я действительно запрыгнул в свой первый проект, вместо того, чтобы освоиться с этими 15 строками грязного кода, я понял, что более простой способ сделать это (хотя мне, возможно, пришлось искать это).

Я сделал то же самое, когда я изучил C # / ASP.NET. Я почти ничего не делал, только читал, пока не закончил с 3/4 книги. И за то, что я не изучил, я просмотрел Stack Overflow для интересных вопросов C #. Когда я вошел в свой первый проект, я бы сказал, что большая часть моего кода была относительно чистой, и с тех пор ее нужно было «сильно» реорганизовать только один раз.

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


2

Это меньше о том, что ты читаешь, но сколько. Мне нравится иметь несколько книг по программированию на ходу, пока я работаю над проектом. Время от времени (чаще, чем вы думаете) вы будете читать о технике, которая может быть применена к вашему текущему проекту.

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


2
Я на самом деле нахожу тот случай, когда отвечаю на вопросы на таких сайтах, как SE. Я часто нахожу, что комментарии приводят меня к информации, имеющей отношение к решению проблемы, над которой я либо работаю, либо знаю, что скоро над ней поработаю.
Леа Хейс

2

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

В книгах часто объясняется, «почему» это решение решает проблему, в то время как онлайн-документы обычно копируются.

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


2

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

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


1

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

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

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

Иногда понимание множественных представлений позволяет вам создавать более неясные связи.


1

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

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

Обучение точно в срок может очень легко пострадать от проблемы удовлетворения: когда вы идентифицируете проблему, которую хотите решить, вы переходите к первому решению, которое кажется работающим, а затем вы убегаете к сетям, чтобы выяснить, как его реализовать. , Однако часто это может привести к неприятностям, если бы вам удалось поговорить с опытным программистом о вашей проблеме, они бы не сказали вам «вот как сделать X», вместо этого они сказали бы «не делайте» X, сделай Y вместо этого ". И это тот тип знаний, который вы стремитесь получить из лучших книг. Действительно, некоторые книги полностью посвящены такого рода вещам, например, Javascript: The Good Parts .

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

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


1

Я думаю, что я иду на чтение книг. Особенно скачивая электронные книги. Читая каждую часть главы. Скопируйте их код! Вставьте в свой программный редактор и посмотрите, что получится. Затем попытайтесь изменить логику этого. Я упомянул загружаемые электронные книги, потому что они работают быстрее. Книги действительно великолепны. Я не вру, но с ноября прошлого года по сегодняшний день. Я закончил около 20 книг. Все это требует любви, чтобы читать. Что новички делают, так это то, что они решают конкретную проблему, принимая форму помощи в Интернете. Но когда им дается очень сложное задание, они сдаются. Причина, никаких знаний о задании и Например, я ограничил элементы управления с помощью datatable и не знаю, что делают наборы данных, и мне была поставлена ​​задача установить отношения между резидентными копиями таблиц базы данных, которые я не могу сделать.


0

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

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

Кроме того, обучение работе в качестве эффективной части команды - это своего рода поворот.

Так как же книги помогают решить эти «настоящие» проблемы программирования так, как поиск ссылок в Интернете - нет?

Ну, две из моих любимых книг - «Шаблоны проектирования» и «Рефакторинг».

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

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

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


0

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

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

Я всю жизнь испытывал проблемы с поступлением в колледж, но сейчас я учусь на третьем курсе. На первом курсе я встретил людей на 4-м курсе и магистров, и смог провести продуктивные беседы о теориях разработки AI, HCI, ассемблера и компиляции. Но все же со всеми этими знаниями я не смог создать разумную программу. Чего мне не хватало ... Единственное, чего вы не можете получить ни в одной книге, ни в Интернете.

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

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

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

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


Где сказано выше: «Я не закончил свой первый настоящий проект. Теперь я считаю себя программистом». Должно быть написано: «Я завершил свой первый настоящий проект. Теперь я считаю себя программистом». Извините за опечатки.
Джек Спратт

0

Я понятия не имею. Я против книг по программированию. В большинстве случаев вам все еще нужно исследовать Интернет для поиска дополнительной информации.

Вы хотите выучить язык программирования? Гугл за это. Я ненавидел JQuery, потому что это выглядело тяжело. Затем я пришел в Stack Overflow, и из этого я многое знаю. Без помощи каких-либо книг.

  • Google для этого
  • Посмотрите на некоторые профессиональные, полностью открытые приложения
  • Просмотрите этот код и попробуйте, чтобы узнать, что происходит.
  • Попробуйте написать какое-нибудь быстрое / простое приложение из фрагментов существующего кода.
  • Попробуйте переписать это для себя.
  • Найти больше учебников в Интернете
  • Взять опыт
  • Больше опыта
  • Вы только что выучили новый язык! (Я не говорил, что вы будете экспертом, но основы выучатся за несколько часов или дней)

Наличие книги в качестве ссылки очень полезно - вы извлекаете пользу из опыта других. «Книга» может быть даже обширной онлайн документацией / учебными пособиями, такими как django или jquery . Но только метод проб и ошибок + чтение оставят серьезные пробелы в ваших знаниях. Теперь, если вам нужно всего несколько строк jQuery, ваш метод работает, но вы не изучали язык. Но если вы хотите изучать C, я бы рекомендовал использовать K & R в качестве справочного материала. Конечно, большинство информации где-то в сети, но разбросано по многим постам в блоге.
Доктор Джимбоб

0

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.