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

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

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

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

评论

书籍并不是这里的主要书籍,但是如果您阅读书籍,这是一个很大的优势,它们只是您感兴趣的另一本书。

您是在谈论从一开始学习编程还是更多高级知识? “在24小时内学习C ++”与一本有关高级理论知识的体面的书之间存在巨大差异-您不会在网上找到Knuth的著作。

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

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

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

#1 楼

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


买书
不读封面就可以,但是知道在哪里可以找到所有内容
找到宠物项目进行研究
,从经验中学习,但是将本书作为参考书
,如果本书失败了,总有google

注意:第三点有时是第一位的。 />
编辑:要回答“为什么?”这个问题,

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

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

评论


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

–加文·科茨(Gavin Coates)
2011年7月28日在12:22



+1表示“发现您不知道的内容”。

–科瓦
2011年7月28日在12:24

扩展至第5点:当这本书失败时,总是有关于该主题的google和其他书籍,包括那些针对该主题的非初学者的书籍。

–理查德
11年7月28日在12:31

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

–汤姆·乡绅
11年7月28日在13:27

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

– Joren
2011年7月28日14:50



#2 楼

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


与标准的LCD屏幕相比,我发现在纸上阅读大量文字更容易,
也许是电子书上的电子书墨水显示将改变这种情况。
书往往会描述整体情况和一些好的做法,当您需要快速入门或更新视图时,这真的很好。
当您需要示例时,Google真的很好。特定的主题,但不是为了大局。

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

评论


大图+1。在使用某种新语言/环境编程了一段时间之后,我发现书籍对于填入大图和我自己的探索遗漏的东西确实很有用。

–亚当·莫里斯(Adam Morris)
2011年7月28日在14:05

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

–伊恩·博伊德(Ian Boyd)
11年7月28日在15:04



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

– TMN
11年7月28日在15:57

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

–安迪
11年7月28日在17:30

#3 楼

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

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

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

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

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

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

评论


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

–彼得·托克(PéterTörök)
2011年7月28日在7:49

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

–钻机
11年7月28日在13:12

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

–Jared Updike
2011年9月9日下午5:55

#4 楼

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

如果您只是沉迷于一种语言并为自己找到了东西,那么您很可能会错过有关重要方面的知识,一本好书本可以在适当的时候提供给您。

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

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

评论


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

– idbrii
11年7月28日在16:56

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

–BillThor
2011年7月31日15:49

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

–苗条
2011年8月4日15:05

#5 楼

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

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

所以我们开始读书。 “哦,是的,拿起《 Dive into Python》的副本。”“那是你的学习方法吗?” “不,”“嗯...”“我有点忙,但是如果您遇到困难,我会帮忙”“嗯...好吧,我想”

另一方面,当我学习时,我会珍视良好的阅读材料,以使我能够看到我试图解决的问题是如何由更有经验的作者解决的,或者仅仅是为了使我能够学习一些“入门”技巧

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

评论


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

–贾斯汀·希尔德(Justin Shield)
2011年7月28日在6:24

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

–乔里斯·蒂默曼斯(Joris Timmermans)
2011年7月28日在9:36

应该注意的是,我不反对阅读,我只是认为数字媒体通常更具流行性和吸引力。

– Alex Hope O'Connor
2011年7月28日在10:00

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

–cledoux
2011年7月28日在12:20

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

–zzzzBov
11年7月28日在13:55

#6 楼

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

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

尽管当我尝试解决一个问题时,我发现自己现在越来越“谷歌搜索”,复制和粘贴问题,我花了大量时间来确保要复制的内容(或受其启发:)是值得信赖的,可以将其放入代码中。只是因为我在网络上找到了解决方案,但这不一定是最好的解决方案。

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

#7 楼

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

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

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

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

评论


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

– Alex Hope O'Connor
2011年7月28日在7:59

#8 楼

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

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

评论


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

– idbrii
11年7月28日在17:01

@pydave:如果是夸张的话,那么在SO上用Python编写的C代码就不会太多了(示例)

– BlueRaja-Danny Pflughoeft
11年7月28日在17:22



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

– idbrii
2011年7月28日在17:38

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

–楔
2011年7月28日在20:45

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

–沃伦
2011年7月28日在22:56

#9 楼

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

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

最重要的是,图书的写作几乎完全是从读者希望了解所涉及理论的角度出发的,而google只是产生随机的垃圾-代码段,关于该主题的存档讨论(没人知道他们在说什么)等。Internet上的资源变得更好了:SO,Moz Dev Network,Microsoft的网站,博客等。 ,但从历史上看,书本要好得多,互联网资源才刚刚开始流行。

评论


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

–雷
2011年7月28日在7:51

+1为“关于该主题的存档讨论,其中没人知道他们在说什么,等等。” -ROFL。

– 5arx
2011年7月28日在8:36

#10 楼

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

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

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

评论


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

– jqa
11年7月28日在13:46

#11 楼

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

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

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

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

#12 楼

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

此外,我还可以拿一本编程书,在浴室或阳光下阅读。我无法使用台式机做到这一点。

#13 楼

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

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

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

#14 楼

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

#15 楼

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


书当然有其缺点。我的《 Python编程》涵盖了Python 2.0,但我使用的运行时是2.6。但是,我认为书籍的重要方面是您可以找到自己不会发现的东西。 Google可以帮助您解决特定的问题,但是书籍可以帮助您进行设计。不仅是设计书籍。如果您读了一本可以帮助您理解某种语言设计的好书,那么您会更好地了解如何使用该语言。

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

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

网络上的摘录是回答您问题的一种好方法,但很少告诉您您应该问什么。

#16 楼

我想成为一名程序员,所以我正在使用编程书籍。
书籍可以让我变得精通编程。

#17 楼

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

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

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

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

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

#18 楼

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

一旦您将其实施为现实的解决方案,信息就会棒。

评论


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

–Lea Hayes
11年7月28日在16:29

#19 楼

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

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

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

#20 楼

您无需阅读即可解决问题,但是您真的知道解决该问题的程序背后发生了什么吗?

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

#21 楼

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

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

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

有时了解多个视图可以使您进行更加模糊的连接。

#22 楼

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

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

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

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

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

#23 楼

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

#24 楼

对于新程序员来说,要理解真正的编程是什么,很难理解它的深度。

任何人都可以编写一个程序来告诉计算机去做-几乎任何学习很少的事情,这不难!困难的是要制定一个程序,该程序可被团队其他成员快速理解和理解,并且可以支持并且需要理解,这部分需要数年甚至数十年的时间。

此外,学习作为有效部分的工作团队的工作有点曲折。

那么书如何以不通过网络查找参考的方式帮助解决这些“实际”编程问题?

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

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

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

我在访谈中被要求描述这些设计模式。两本书以及他们要完成的工作,我认为这是一个非常有效的面试问题...我想注意一个程序员,除非他申请了一个非常初级的职位,否则他们都不了解这两本书。 。

#25 楼

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

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

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

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

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

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

书本很好,互联网更好,谷歌和您管晶圆厂,但在我看来,没有什么能比老式的老牌大学更胜一筹了。而且我怀疑是否会有大量的谷歌搜索和Youtubing,而且我知道第一手资料是不会有任何书籍。

评论


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

–杰克·斯普拉特(Jack Spratt)
2011年7月28日在21:09

#26 楼

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

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


使用Google进行搜索
寻找一些专业的,完整的开源应用程序
浏览该代码,然后尝试一下就可以了。继续。
尝试从现有代码段中编写一些快速/简单的应用程序。
尝试自己重写它。
在Internet上查找更多教程
体验
/>获取更多经验
您刚刚学习了一门新语言! (我并不是说您将成为专家,但基本知识将在几个小时或几天内学会)


评论


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

– jimbob博士
11年7月29日在14:15

#27 楼

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

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