人们为什么使用编程书籍?[关闭]


94

我发现,当有人问什么是学习编程的最佳方法时,人们通常会向他们提供由不同作者撰写的一堆文本的参考。

但是我不相信有很多人会从书籍中学习编程。我发现他们通常面临挑战,然后使用编程作为克服挑战的工具。

例如,我“进入”编程是因为我想为自己正在玩的游戏启动服务器,因此我在Google上搜索并阅读了对该特定服务器的支持,现在我是一名受雇的软件工程师,仅使用我开发的技能(然后通过对不太流行的服务器程序包编码C#脚本进行进一步开发)。

所以我的问题是,人们通常发现从这些书中学习起来更容易吗?我知道我看过其中的一些,发现它们太“干”了,无法鼓励我完成。


3
如果你读的书本本是不是主要在这里,但很大的优势,他们只是另一种书你是有趣的。
来电显示

42
您是在谈论从一开始学习编程还是更多高级知识?“在24小时内学习C ++”与一本有关更高级理论知识的体面的书之间存在巨大差异-您不会在网上找到Knuth的著作。
安德烈·帕拉梅斯(AndréParamés)2011年

78
看来您从未碰过一本好的编程书。
Jaywalker

46
这是对“为什么要去学校”这个问题的隐喻。
Jodrell

8
我从未发现书籍是主要的学习工具,但是我有很多书籍,并且我一直都推荐它们。显然,您只能边做边学。但是,书籍是思想的源泉,可以用作现成的参考书。我们不阅读/不推荐不学习的书籍。我们阅读/推荐书籍以分享其中包含的思想。
乔尔·埃瑟顿

Answers:


229

一般来说,这是我的学习方法:

  • 买书
  • 不要阅读本书的封面,但要知道在哪里可以找到所有内容
  • 寻找一个可以从事的宠物项目
  • 从经验中学习,但可以将其作为参考
  • 如果书失败了,总有谷歌

注意:第三点有时是第一位的。

编辑:回答问题“为什么?”

Google很高兴发现如何做某事,但是对于发现您不知道的事情却不是很好。如果您首先不知道C#有一个称为“委托”的概念,并且对于解决您正在研究的问题可能有用,那么您为什么还要用Google搜寻“ C#委托”呢?

而且,信噪比有时可能会有点高。如果您对如何完成工作有一个粗略的想法,那么您可以轻松地确认您正在阅读的文章是否正确。但是,如果您一无所知……您可能会陷入更大的混乱。


19
很好的答案,尤其是针对“为什么”的编辑。我最近开始学习ASP.NET,并通过使用google进行了学习。我已经在.NET 2.0中使用C#多年了,以为我可以解决。每次遇到问题时,我都会通过搜索google来找到答案,但很快就发现,我只是碰到了我所能做的事情的冰山一角,而我却完全错过了很大一部分图书馆。一本书更好地概述了该技术及其可以做的所有事情。避免使用“ 24小时内学习x”的书,而应该选择“高级x”的书。
加文·科茨

44
+1表示“发现您不知道的内容”。
科瓦(Covar)2011年

2
扩展至第5点:当本书失败时,总会有google 和其他与该主题相关的书籍,包括针对该主题中非初学者的书籍
理查德

5
+1表示“信噪比有时可能会有点高。如果您脑子里有个粗略的想法,是如何做的,那么您可以轻松地确认所阅读的文章是否正确。但是,如果您已经毫无头绪……你可能会陷入更大的混乱之中。”
Tom Squire

9
“如果书失败了,总有谷歌。” 您的意思是堆栈溢出;)
Joren

42

书籍仍然有意义的一些原因:

  1. 我发现在纸张上阅读大量文本比在标准LCD屏幕上阅读容易,也许电子墨水显示器上的电子书会改变这种情况。
  2. 本书倾向于描述全局和一些好的做法,当您需要快速入门或有新的观点时,这确实是很好的。
  3. 当您需要有关特定主题的示例时,Google真的很棒,但是对于总体而言却不是。

但是,一本书永远不会把你带走,只会将你推向正确的方向。


2
大图+1。在使用某种新语言/环境编程了一段时间之后,我发现书对于填入大图和我自己的探索中遗漏的东西非常有用。
亚当·莫里斯

2
雷蒙·陈(Raymond Chen)的博客,或者说是第9频道上的“深入”系列,对学习“ 为什么”特别有用。一旦知道了“ 为什么 ”的样子,如何做就变成了可以查询的琐碎细节。通常,一本书的作者可以进入背景来了解正在发生的事情的逻辑,而不是试图弄乱您在网上找到的拼凑在一起的代码片段的字符串。
伊恩·博伊德

IMO,书籍的一大优点是能够一次将手指放在多个位置,因此您可以在各个部分之间快速切换。当我尝试通过一些代码来学习新知识时,我发现这是无价的,因为我经常会查找其他内容(有时是几件事),以便首先了解我查找的内容。在屏幕上导航不一样。
TMN

同意 例如,直接进入Asp.Net MVC,您可能会发现如何做到这一点。但是,有很多事情你也可能​​会犯错,这些都是微妙的。然后您会挠头,为什么有些东西不起作用。
安迪

28

当我早在1980年代的书中学习编程时,那里或多或少是唯一可用来整体上全面学习编程语言的信息源。此外,您可以购买计算机杂志,但是它们的内容是随机的文章,可能有趣或没有帮助。

如今,您可以在Internet上找到所需的所有信息。尽管我认为完整的教程与一本书足够相似。

学习方式可能取决于您的个人喜好或实际需求。

如果是书籍或在线教程,那么“全文”的优势在于,它涵盖的材料虽然实际上不是必需的,但以后会为您提供帮助。只是知道有可能,并知道在哪里可以找到它。特别是如果您了解复杂的环境或非常复杂的语言(例如C ++)。您可以通读许多有关Ruby on Rails的小型博客,而无需了解Ajax或安全性问题。只要您只玩耍,这可能就没有问题。但是,就像我碰巧的那样,如果您想在几周内进入专业的Ruby on Rails开发,那么使用涵盖所有重要内容的文本将大有帮助。

其他书籍则涵盖了有关编程风格,最佳实践,设计模式或某些算法组的详细信息。您可以使用它们,也许在所有设计模式中,您只会应用很小的一部分。尽管如此,了解它们并在哪里找到它们还是有帮助的。而且,这只是一种将思维过程训练成对“构建解决方案”比“使解决方案以某种方式运行”更感兴趣的方向的方法。

我个人喜欢阅读,所以我没有书本干燥的感觉。当然,这很重要,但本书要符合您的实际知识水平或更高水平。如果您已经掌握了C#的所有基础知识,那么阅读初学者的书就没有多大意义了。


7
+1是我要写的内容:“最佳实践/方法论”类型的书与“如何使用Y做X”这类书有很大不同。前者是真正有价值的东西,因为它教会了来之不易的一般问题解决经验。一旦学习了单元测试,重构,估计等,就可以将其应用并适应多种语言/领域/项目。
彼得Török

1
绝对感谢提及样式,实践和模式。这些都是真正有益的书。您可以通过解决一个问题来学习编程。您将通过学习样式,实践和模式来学习编程。尽管如此,对这些概念有全面理解的最好地方是文本。
钻机

+1代表“它涵盖了虽然实际上不是必需的材料,但以后会帮助您的材料”-好的程序员具有深厚的知识基础。即使您不记得所有的细节,但是您知道要学习的线程并在需要时学习它,它可能是非常宝贵的!
Jared Updike

22

一本书(或结构类似一本书的网络文档)仍然是我学习大多数语言的首选方式。

如果您只是学习一种语言并为自己找到东西,那么您很可能会错过重要的方面,而这本好书本可以在正确的时间交付给您。

例如,我的一些同事是通过精读本书而学习Java的。他们已经用Java编程了几年了,当我发现他们通常通过使用.substring()将数组转换为String,然后将String转换回数组来常规操作byte []数组时。System.ArrayCopy()在Java概述中的第155页上介绍

我希望您认识到,与老师一起学习比单独学习更容易。一本好书可以便宜地代替一位好老师。它将以精心计划的顺序介绍概念,因此您可以建立透彻的了解-不仅够了解。


2
+1指出学习做某事与学习做某事之间的区别。
idbrii 2011年

一本好书是快速覆盖该地区的好方法。有人已经为您进行了研究。找一本好书可能很困难。曾经有一段时间,我有50/50的机会获得一本关于我感兴趣的主题(真正的好买家)的好书。现在,我发现在书店里找到一本好书的机会不到10%。但是,网上有很多类似资源的好书。选择正确的资源可以加快学习速度。
BillThor

1
我不确定那是什么时候。我最近看了看我以前的CS书。该标准已大大提高。例如,几年前我使用了“使用Miranda进行功能编程”。我最近使用了“真实世界Haskell”。尽管基本上使用了与Haskell相同的概念和范例,但是这本旧书今天仍然是个谜。
苗条

21

我认为您可能会遇到一些麻烦。至少对我来说,我的大部分技能来自想要/需要一个执行“ X”的程序。

也许以这种方式学习的人并没有寻求帮助;他们太忙了(可怜的,但是一路学习)。想要成为程序员的人们(与第一类相对应)会问很多关于如何成为程序员或如何编程的问题,即使他们不一定要解决问题,而这些问题并没有有直接答案的问题。

因此,我们喜欢读书。“哦,是的,拿起《 Dive into Python》的副本。”“那是你的学习方法吗?” “不,”“嗯...”“我有点忙,但是如果您卡住了,我会帮忙”“嗯...好吧,我想”

另一方面,当我学习时,我会珍视优质的阅读材料,以使我能够看到我想解决的问题是如何由熟练的作者解决的,或者仅仅是为了使我能学到一些在此过程中,我可能没有掌握过“入门”技术。

TLDR:书籍是好书,边做边学是好事,边做边学是???


1
+1:我认为您已经做到了。边做边学,我拥有的最有价值的书专门针对我当时正在编写的应用程序。
贾斯汀·

41
小心避免成为一个“自学成才”的程序员,以为他们知道这一切,因为他们解决了一个简单的问题,表现不佳,并且觉得自己“太好了”无法读书。
Joris Timmermans

2
应该注意的是,我不反对阅读,我只是认为数字媒体通常会更加流行和吸引人。
Alex Hope O'Connor

2
@Alex关于数字媒体。这确实取决于媒体所讨论的主题。如果媒体正在解决如何用语言y来执行x或使用z进行编码的最有效方式等问题,那么我同意您的说法。但是,其他主题(通常是更高级的理论主题),例如NP,P,算法分析等,恕我直言,通常最好通过教科书来解决。以Knuth的“编程艺术”为例。这是一个很古老的文本,但是仍然被认为是编程方面最重要的书之一。
cledoux 2011年

16
我认为这是确认偏差的情况。@Alex似乎正在寻找某个答案。我并不是说这个答案本质上是不好的,但是这绝对不是任何想像力所能提供的最佳答案。
zzzzBov

15

我喜欢阅读技术书籍。Sharepoint说,并不是所有的技术书籍,只是我感兴趣的某个特定主题的书籍。我想起了我真正读过的第一本书(多次),作者是Charles Petzold的《 Programming Windows》。由于这个原因以及其他许多原因,我能够从内存中编写Win32应用程序。我几乎不需要查找API,因此我能够专注于业务部分。

我觉得书为做某事提供了一种“权威”的方式,也许是由一个知道做某事的正确方式比我做得更好的人提供的。我敢说,我所学的是解决问题的最佳方法。那当然是,如果我信任作者的话(请务必喜欢亚马逊的评论区域)。

尽管在尝试解决问题时,我现在发现自己越来越“搜寻”并进行复制和粘贴,但是我还是花了很多时间来确保要复制的内容(或受其启发:)值得我信赖可以输入我的代码 仅仅是因为我在网上找到了解决方案,所以它不一定是最好的。

尽管我像许多其他程序员一样,现在只是在谷歌上搜索答案,但我仍然发现自己在挑选知名作家的书。我觉得这些内容是由擅长解释(教学)的人带来的,它使我不必从Google搜索结果中过滤掉所有垃圾。


14

我认为您的问题不是“为什么要像印刷书一样使用旧技术,而不是HTML页面”,而是“为什么要阅读由一位或几位作者撰写的有关编程的较长文章”。

您可以将书籍视为关于特定主题的结构化信息收集。这样做的好处是,有人已经努力将每一章彼此叠加,以使对主题的理解变得容易。通常,还会告诉您信息的边界是什么(涵盖的内容以及您需要在其他地方注意的其他内容)。阅读并使用它之后,您可以肯定已经掌握了一定的技能。如果您想通过按下快进按钮进行学习,那么一本书可以迫使您在不忽略无聊部分的情况下完成各个方面的工作,至少在您相信本书的结构的情况下。名为“ book”的收藏集也经常作为参考。

使用Internet,博客,“摆弄”等通常属于非结构化信息。您会获得很多零碎的智慧,但是您需要做更多的搜索工作才能积累知识,因为没有人会指导您说“先学习这一点,否则您将看不到这些东西的优点”。现在用谷歌搜索”。您可能会错过某些部分,因为它们太无聊或没人告诉您它们很重要。您可能会学到错误的东西,因为并非Internet上编写的所有内容都是一流的。您可能会花费大量时间过滤掉无用的搜索结果。您可能会浪费几天时间尝试自己完成某件事,只是因为您不知道某种设计模式或编程构造,而且没人告诉您。你知道的越少

有点挑衅:如果他告诉我他从未读过有关桥梁建筑或结构分析的书,而只是通过摆弄和使用Google来学习,我将永远不信任建筑师来建造一座我每天必须跨越的桥梁。 ...


我的问题可以解释为是诚实的,但后者是我的普遍共识。
Alex Hope O'Connor

10

如果您是C程序员,那么您如何期望在没有书或老师的情况下学习Python?

如果您只是学习基本语法并深入学习,最终用Python编写C代码,并得出一个错误的结论,即Python与C一样冗长而痛苦。


太夸张了。如果您开始对Python进行编程,则可以搜索问题的答案,并找到描述特定问题的Python解决方案的Python配方之类的东西。
idbrii 2011年

6
@pydave:如果夸张的话,那么在Python上用C语言编写的Python代码就不会太多了(示例)
BlueRaja-Danny Pflughoeft

4
我阅读了您的示例问题,阅读了您的答案,并且我理解您的意思:学习基本语法与学习语言不同。(我什至没有考虑过不学习该语言的构造。)如果您只学习了足够的Python以用Python编写C代码,那么您仍然没有学会用Python编程。
idbrii 2011年

这是一个严重的问题,值得更多关注。所有编程语言都是图灵完整的,这意味着您可以通过编写类似C的Python代码或类似Java的Ruby代码来解决任何问题。那里没有障碍会迫使您遵循所用语言的时代精神。更糟糕的是,您甚至可能不会感到编码效率低下的痛苦,因为它与本机C或本机中的痛苦差不多Java,这是您正常接受的痛苦程度。

我完全不同意-当我写任何:-|时,我是PHP的C程序员。
沃伦

9

Google通常只适合于查找少量代码片段或开源库。某些库/程序的文档充其量是不可靠的(如果存在,则仅向您显示简单或常见的示例。)

我没有很多编程书籍,但是我现在可以告诉你,我有一本关于OpenGL的书,其中包含了3D引擎的大部分代码,您可以简单地复制它们,但是您可以还要阅读理论知识-您只需要翻几页纸,然后在那里等待对代码的解释。如今,您可能会在网上找到一些开源3D引擎,但是如果您需要实质性地更改代码,则可能会遇到一些麻烦-通常没有帮助论坛,SO的人们也不知道回答您的问题是否非常专业。当涉及到真正专业的东西时,全世界只有几十个人能够在不花时间的情况下回答您的问题,以便弄清楚是否有能力提出答案。如果您问如何在C#中实现链接列表,那么您将在前10分钟内获得5个以上的SO答案,但是如果您问在Three.js中实现复杂的阴影算法的最佳方法是,您的问题将像一块石头一样沉入首页。

最重要的是,书籍几乎完全是从读者希望了解所涉及理论的角度来撰写的,而google只是产生随机的垃圾-代码段,关于该主题的存档讨论,其中没人知道他们在说什么等等。Internet上的资源已经好得多了:SO,Moz Dev Network,Microsoft的网站,博客等,但是从历史上看,书籍已经好得多了,Internet的源头正赶上来。


1
+1指出您需要使用“通过谷歌学习”方法清理随机垃圾的时间
Ray,

1
+1代表“关于没人知道他们在说什么的主题的存档讨论,等等。” -ROFL。
5arx 2011年

7

最好的书的写作质量使您在开始之前就已经提出了许多非显而易见的问题。具有丰富经验的作者会告诉您一些类似的信息:意外的副作用,长期的影响,未记录的功能,典型的使用场景...

基本上,您会从一位经验丰富的作家中受益,他会带您逐步解决问题并指出真正有趣的地方。

有时,您也可以在在线参考资料中找到此信息,但是由于进入在线信息的门槛低,很多信息太基础,缺少详细信息或完全错误。书本也可能发生这种情况,因此请确保您只完全相信那些经典且好评如潮的书。其他书籍也可能有用,但是仅作为参考资料之一,您仍然必须通过交叉引用或尝试自己来验证信息。


1
+1000“完全是错误的”在网上有大量由“最好的程序员”编写的示例代码,这些代码不使用用户编译器,也不知道他们在说什么。另外,将以教学模型编写一本好书,该教学模型以一致且易读的方式介绍然后加强内容。
JQA

6

书籍往往会以结构化格式附带大量信息。Google往往会提供大量信息,这些信息并非总是经过特别结构化,很难根据您的需要进行组织。

我实际上不再阅读实际的纸质书籍-我旁边有一个电子阅读器,而且我的笔记本电脑上装有Kindle软件,可以访问所需的信息。

如果您不是在寻找结构化的编程概述,但需要有关如何对特定任务进行编程的详细信息,则Google会为您提供帮助。某个人几乎总是为此任务写过代码,或者至少是类似的东西。

我认为学习编程和学习编程特定任务之间是有区别的。我会质疑那些只从谷歌搜索特定任务中学到一点点零零零碎东西的人的代码质量,如果他们从来没有真正了解过如何编程的体面知识。这不是特定于语言的,而是更具概念性的。


4

如果您想深入研究某个主题,书籍会很有用。当然,我从做一些教程和编写一些(宠物)项目中学到了C#。但是,深入了解 C#仍然有用,它可以用来了解底层内容以及学习一些新知识。

另外,我可以拿一本编程书,在浴室或阳光下阅读。我不能用台式机做到这一点。


4

因为这是向其他程序员学习的便捷方式。

书籍是补充。您只能自己这么快地完成工作。谁会比只看书更愿意与一个更好的程序员乐于教您一些东西的项目?

我倾向于将它们更多地用作参考,而不是“任何您需要了解的编程知识”。


3

书籍使您能够以“被动”方式吸收一组信息。您无需查看可能的情况,您就会看到其中一部分可能性。当我学习C#时,这本书确实帮助指出了各种可能性,并且想知道什么是C ++等效项。当然,在(实际大小)项目中使用母带时会进行母带制作。但是这本书确实有助于指出差异和可能性。


3

简而言之,我认为书籍在更高层次上更有用。他们可以为您提供设计指导,并帮助您预防问题而不是解决问题。


书当然有其缺点。我的《Python编程》涵盖了Python 2.0,但是我使用的运行时是2.6。

但是,我认为书籍的重要方面是您可以找到自己不会迷失的东西。Google可以帮助您解决特定问题,但是书籍可以帮助您进行设计。不仅是设计书籍。如果您读了一本可以帮助您理解某种语言设计的好书,您将更好地了解如何使用该语言。

其他书籍也有助于完善您的知识。我认为Scott Murphy的《 Effective C ++》一书就是一个很好的例子。虽然这本书对于学习C ++而言并不是非常好,但是它可以帮助您了解尚未遇到(或尚未解决)的算法/接口/继承设计问题。找到一个简单的解决方案可能很容易(以后会引起其他问题),但是通过更好地理解语言,您可以设计软件来避免这些问题。

当然,并不是因为书本印刷在纸上才值得。创造书籍所付出的努力和努力以及对严格教育的渴望才是书本的价值所在。通常,作为副作用,您会获得有用的在线资源,例如C ++ FAQ lite或电子书,例如Dive into Python。还有仅在线教程,这些教程是详尽而有用的学习工具(例如某些平台/语言/库的文档)。

网络上的代码段是回答您问题的一种好方法,但是它们很少告诉您您应该问什么。


3

我想成为一名程序员,所以我正在使用编程书籍。书籍将使我成为精通编程的专业人士。


3

我已经很长时间没有真正阅读过编程书籍了。我曾经将它们用作参考指南,但现在我认为大多数语言和框架的Internet都更容易。

无论如何,我认为从编程书籍中学到的最好的东西是核心语言。例如,我的第一种真实语言是C。我通过编写OS来学习它(我不推荐这样做)。结果,即使经过2到3年的编程,我对C的知识也大大削弱了。我从没对语言有很好的核心知识。我不知道可以将这15行凌乱的代码转换为干净的两行代码。所以我可以解决问题,但是我没有充分利用C。

然后我决定学习C ++ ...(开始学习C大约两年后)。因此,我读了唯一一本有关C ++的书籍,即C ++ For Dummies书籍。我直接阅读了大约3/4的内容,在那段时间内几乎没有做任何事情。因此,当我跳入第一个项目而不是习惯于那15行凌乱的代码时,我知道一种更简单的方法(即使我可能不得不查找它)。

当我学习C#/ ASP.NET时,我做了同样的事情。我几乎什么也没做,只剩下看了本书的3/4分就读完了。对于我没有学到的东西,我浏览了Stack Overflow以查找有趣的C#问题。当我进入我的第一个项目时,我会说我的大多数代码都相对干净,从那以后只需要“大量”重构即可。

因此,我想说书对于学习框架或语言的功能非常有用。除此之外,除了互联网,它们几乎毫无用处,当然还有强大的理论书籍和专门设计的参考书籍。


2

这与阅读的内容无关,而是多少。我喜欢在进行项目时随身携带一些编程书籍。时不时地(比您想像的要多得多),您将了解一种可以应用于当前项目的技术。

一旦您将其部署到现实世界的解决方案中,信息就会保留下来。


2
在SE等网站上回答问题时,我实际上发现了这种情况。我经常发现,这些评论使我获得了与解决我正在解决的问题或即将解决的问题有关的信息。
Lea Hayes

2

我更喜欢使用书籍,因为我觉得它们提供了您正在研究的技术状态的快照。作者将指出,使用XX版本的Y语言/库,这便是解决问题Z的方式。可能网站教程无法列出其使用的版本或提供书本经常使用的示例代码。

书籍通常会介绍此解决方案解决问题的“原因”,而在线文档通常是复制粘贴。

您也经常会丢失指向所有参考的链接,它们可能会移动或掉下。我会像保护投资一样保护和照顾我的书本。


2

您可以不用看书就能解决问题,但是您真的知道解决该问题的程序背后发生了什么吗?

您需要了解正在发生的事情以及什么可能是更好的选择。为此,您需要好的编程书籍。仅仅阅读书籍当然是不够的,您需要了解内容,浏览其他书籍,考虑解决问题的不同方法等等。不论有没有书籍,学习都会继续。


1

当我学习C ++时,我发现大多数文学作品都毫无用处,直到脑海中有些东西响了起来。直到今天我仍不确定那是什么,但是一切都变得有意义了。书籍和网站变得更加有意义。我花了2本书来学习如何用C ++编程,但都不是真正的C ++书籍(它们是主要针对MFC的Visual C ++书籍)。

如果您找到正确的书,那么它可能真的很有用。我的一个朋友正在大学读一些迪特尔的书,我发现这些书写得非常好。我从未发现有用的“ ...傻瓜书”,因为它们没有以正确的方式为我解释事情。最好的建议是去书店买书,然后品尝一下,这样您就不会浪费大量金钱来购买那些往往非常昂贵的书。

对于某些编程主题,我发现阅读几本书,通过Google进行研究和进行实验非常有用。当我使用J2ME制作跳棋游戏时,我发现自己在做AI算法时做了很多事情。当我学习如何为自定义语法创建编译器时,我也发现自己正在这样做。有很多不同的变体和视图。

有时,了解多个视图会使您建立起更加晦涩难懂的连接。


1

我倾向于从书籍和“及时”资源(如网络)中学习(编程)。两者都可以很好,但是总的来说,我更喜欢从书本上学习,原因如下:

当您仅学习需要立即知道的知识以完成项目的一部分时,有时会错过大局。最好的书不仅是参考书,而且在某种意义上说,它通过提供全面的技术概述和很多有关常见问题最佳解决方案的经验丰富的建议,使学徒制更接近学徒制。

即时学习很容易会遇到满足感问题,当您确定要解决的问题时,跳到第一个似乎可行的解决方案,然后开始使用互连网以了解如何实现它。但是,这通常会给您带来麻烦,如果您能够与经验丰富的程序员就您的问题进行对话,他们不会告诉您“这是X的方法”,而是会告诉您“不要这样做” X,请改为Y”。这就是您往往从最好的书中获得的知识。确实,有些书完全是关于这种事情的,例如Javascript:The Good Parts

JIT学习可能遇到的另一个问题是学习曲线慢得多。通过JIT学习,您倾向于只学习需要了解的内容。但是通常只有拥有基本的知识核心才能加速学习新的语言或框架。与其绊倒基础,不如从坚实的基础开始,然后从那里开始。读书时可能涵盖的大量内容可能对您没有立即的帮助,但是拥有背景知识可能有助于指导您的决策制定,尤其是对您所接触的新代码的理解。当然,这是一个折衷方案,有些坏书只是堆积了无用的事实,您在阅读它们后将不会记得这些事实,但也有一些好书可以为您提供基本的知识和扎实的基础。

我认为还有一些书籍比单个技术主题的水平更高,对于我成长为开发者而言,这是至关重要的。诸如《代码完成》,《重构》《与遗留代码有效地工作》之类的书。您不会仅仅通过JIT学习从这些书中学习知识。


1

我想我会去读书,尤其是下载电子书,阅读本章的每一部分,复制它们的代码!粘贴到您的编程编辑器中,然后查看输出是什么。然后尝试更改其逻辑。我提到了可下载的电子书,因为它可以更快地工作。这些书真的很棒。我从不撒谎,但是从去年11月至今,我已经完成大约20本书。所有这些都需要阅读的爱。新手所做的是他们通过互联网的帮助来解决特定的问题。但是当给他们一个真正复杂的任务时,他们却放弃了。原因是,他们对任务和任务一无所知例如,我已将控件与数据表绑定在一起,但不知道数据集做什么,并且我已获得在数据库表的内存驻留副本之间建立关系的任务,而我无法做到这一点。


0

对于新程序员来说,要理解真正的编程是多么困难,深度如何。

任何人都可以编写程序告诉计算机去做-几乎不需要什么学习就可以完成任何事情,这并不难!困难的是要开发一个可支持且可以被团队其他成员迅速理解和深刻理解的程序,这部分需要花费数年甚至数十年的时间。

此外,学习如何成为团队的有效部分有点曲折。

那么,书本如何通过在网上查找参考文献的方式帮助解决这些“实际”编程问题呢?

我最喜欢的两本书是“设计模式”和“重构”。

重构是一本很棒的书,告诉您如何识别错误的代码。如果您通过查找编码参考资料而学到的,这本书(是许多重构书之一)非常重要。

设计模式并没有真正提供好的程序员无法理解的功能,但是确实为每个人在代码中已经使用过的各种模式提供了名称。这使程序员能够更有效地进行交流,并帮助一些程序员找到了解决问题的新方法。尽管您可以在网上找到设计模式,但是用Google搜索设计模式的名称要比搜索您要执行的操作容易得多。

我在面试中被要求描述这两本书以及它们要完成的工作,我认为这是一个非常有效的面试问题...我想关注一个不了解这两本书的程序员。除非他正在申请一个非常初级的职位。


0

我直接从书本上学习编程。大约20年前,谷歌和网络尚未普及。我认为它们是很棒的资源。但是,大多数现代书籍只是引用制造商的技术文章。所以我现在同意最好在网上学习。如下警告:

即使我读了很多书,并且几乎可以上网,因为这在经济上可行。我从来没有能够完成任何大型项目。当然,我可以在许多高级书籍中进行许多大型项目,这些项目需要20章来逐步完成,但是当涉及到我自己的真实项目时,我总是无能为力。我要告诉你,我读了一些沉重的书。

我一生都在上大学时遇到困难,但是现在我已经进入第三年了。在我的第一年,我认识了四年级的人和大师,并且能够就AI,HCI,汇编器和编译器开发等理论进行富有成效的对话。但是,尽管有了这些知识,我仍然无法创建一个合理的程序。我想念的是...从任何一本书或在线上都无法获得的一件事。

结构体。在第一年,我没有学到任何技术性的知识(Allready知道全部知识,并且没有几天的学习,执行数学和设计,因为对我来说这是很新的东西,我便精疲力尽了),但是我确实学习了结构和团队合作。在我的第一个暑假中,我比以往更加接近完成我的第一份真正的工作。

在第二年的学习中,我学到了很多新技术(仍然将基础知识与我所知道的相提并论,但是我将所学的理论付诸实践)。这再次强调了结构的重要性。我尚未完成我的第一个实际项目。我现在认为自己是程序员。

我不认为阅读本书来学习编程是必要的。但这是一个帮助。但是,我确实相信,即使是两年的大学学习,也没有书籍或网站可以教给您或教给您什么。如果您没有上过大学就可以完成项目,公平竞争,但是无论年龄如何,我强烈建议您这样做。

书本很好,互联网更好,谷歌和你管都是晶圆厂,但是在我看来,没有什么比老牌老字号大学更胜一筹了。我怀疑是否会有大量的谷歌搜索和Youtubing,而且我直接知道没有书籍会。


上面写着“我还没有完成我的第一个实际项目。现在我认为自己是程序员”。它应该显示为“我现在已经完成了我的第一个实际项目。我现在认为自己是程序员”。抱歉,拼写错误。
杰克·斯普拉特

0

我没有任何线索。我反对编程书籍。在大多数情况下,您仍然必须在Internet上进行研究以搜索其他信息。

您想学习编程语言吗?Google。我讨厌jQuery,因为它看起来很难。然后我来到了Stack Overflow,从中我了解了很多。没有任何书籍的帮助。

  • 谷歌
  • 寻找一些专业的,完整的开源应用程序
  • 浏览该代码,然后尝试获取最新信息。
  • 尝试从现有代码段中编写一些快速/简单的应用程序。
  • 尝试自己重写它。
  • 在Internet上找到更多教程
  • 体验
  • 取得更多经验
  • 您刚刚学习了一门新语言!(我并不是说您将成为专家,但是基本知识将在几个小时或几天内学会)

有一本书作为参考非常有用-您会从他人的经验中受益。“书”甚至可以是广泛的在线文档/教程,例如djangojquery。但是仅凭试错和阅读源就能在您的知识上留下很大的空白。现在,如果您只需要几行jQuery,则您的方法可以使用,但您无需学习该语言。但是,如果您想学习C,我建议您以K&R作为参考。当然,大多数信息都在某处在线,但散布在许多博客文章中。
jimbob博士2011年

0

我认为,不能仅从书籍中学习编程是正确的(正如大多数人所提到的那样),您需要进行大量练习,并且互联网上有很多可用资源(文章,视频,示例等)。

但是一本好书填补了您的知识空白。阅读书籍封面后,您可以确信自己对本主题的知识没有任何漏洞。尽管挑战是要找到有关该主题的好书。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.