前一段时间,我决定开始编程。我真的,只是跳入一种语言(Perl),然后从那里去了。我感到遗憾的是,我刚刚加入:
我没有学习基础知识(如果您将其称为基础知识)。
我没有学习计算机科学。
我认为,这个问题使我无法发挥自己的真正潜力。我应该在哪里“重启”?我应该阅读任何书籍,文章等吗?有经验的程序员应该知道什么主题吗?您有什么建议?
前一段时间,我决定开始编程。我真的,只是跳入一种语言(Perl),然后从那里去了。我感到遗憾的是,我刚刚加入:
我没有学习基础知识(如果您将其称为基础知识)。
我没有学习计算机科学。
我认为,这个问题使我无法发挥自己的真正潜力。我应该在哪里“重启”?我应该阅读任何书籍,文章等吗?有经验的程序员应该知道什么主题吗?您有什么建议?
Answers:
我会这样做:
路径A:半典型方法
学习具有更正规语法的语言,例如Java,C#或Python。Perl是一个非常有用的工具,但是就如何让您做事而言,它也是非常自由的形式。我列出的其他语言要少得多。
用所述语言获取有关数据结构的书。
用所述语言获得一本有关算法的书。
获得完整,有效的代码Java / C#/ Python的任何版本。
路径B:乔尔·斯波斯基(Joel Spolsky)的《启蒙之路》(或死亡,请选择)
获取书籍“代码”
获取K&R的“ The C Programming Language”
获取计算机编程的结构和解释
就方法而言,方法1将教您以更规范的方式进行编程。计算机科学的概念在一定程度上(还没有复杂性理论,请相信我),并为您提供一种更适合与其他人一起工作并开发更大应用程序的语言。
方法2更严格,它更多地是一种基本方法,其中“代码”解释了基础知识,K&R介绍了机器级内容,而SICP介绍了更高级别的概念。这是一条困难得多但更具针对性的道路。
无论哪种情况,都要给自己一些时间。罗马不是一天建成的,也不是编程技能,即使您天才。彼得·诺维格(Peter Norvig)十年的《编程》是我经常向人们指出的文章。
附录:
就可用的免费软件而言:如下所列的Python困难之路是一个好的开始,从那里开始,如何像计算机科学家一样思考是一个合理的延续。
那里有很多关于算法的资源,说实话,您可能可以无问题地切换步骤3和4。请记住,这是数学真正开始出现的地方,因此在进入此阶段时不要害怕寻求帮助。这似乎是一个合理的免费指南。
虽然说像Pythonista的代码看起来相当扎实,但实际上并没有一个相当于Code Complete的内聚免费版本。最重要的是,一旦您掌握了基本原理,便集中精力使代码可读。它与正确使用所有代码语法的方式不是“必需的”,但是一旦您超出了小型程序的范围或长期从事某些工作,它将使工作变得更加轻松。
您可能会发现我主要专注于Python,这是因为这是找到写得很好的免费内容中最简单的三个。我认为Oracle编写的Java教程很好,但它们有些枯燥,对初学者来说并不好。C#处于类似情况,尽管它们都缺少文档。
另外,您的第一个CS开玩笑/双关语:您想“重构”您的学业,而不是“回溯”。
我想说的是努力学习Python ; 这是一个好方法。从那里去 这将花费足够长的时间,使您有时间查找其他资源。
我认为,另一个答案中提到的“路径B” 在此阶段不合适。
好吧,我起初的原因与我对硬件方面的了解相同,并且对编程很感兴趣。我喜欢学习新事物。
我从DOS Batch文件开始,然后是QuickBasic,然后是Visual Basic,VBA,MASM,并使用Access进行数据库工作,然后才找到我的第一份工作。对我而言,这是最好的道路,从简单开始,然后从那里开始。
我会说确定您最喜欢的编程知识,然后选择该路线,脚本编写,Web开发,Windows编程等。如果您不知道,则开始使用某些语言来查看您喜欢的语言。但是您将需要时间。要真正熟练使用Java或C ++,恕我直言这样的语言,大约需要5年的时间。
作为帮助学习Web开发的语言,JavaScript无疑是流行的,PHP是Python的流行,但是恕我直言。假定您将了解或学习HTML / CSS。我确实低估了javascript,尽管我从2001年就开始使用它。我对CSS也做了同样的事情,但并不认为它很重要。我也改变了看法。
当我尝试确定趋势时,请访问 http://www.indeed.com,然后单击页面左上角的趋势链接。然后,我输入了诸如PHP和Python之类的关键字,然后看看哪些关键字针对互联网上的实际职位空缺。
但是,这是从职业角度出发的,并且基于为我带来最大价值的客户(雇主)。不只是从学习的角度。