回溯我的“教育”


13

前一段时间,我决定开始编程。我真的,只是跳入一种语言(Perl),然后从那里去了。我感到遗憾的是,我刚刚加入:

我没有学习基础知识(如果您将其称为基础知识)。

我没有学习计算机科学。

我认为,这个问题使我无法发挥自己的真正潜力。我应该在哪里“重启”?我应该阅读任何书籍,文章等吗?有经验的程序员应该知道什么主题吗?您有什么建议?


我不清楚你的问题。因此,当您决定开始编程时,是要找到一份新工作还是仅仅是为了完成工作中的某些管理任务,还是为了娱乐?我需要了解您的来历,以帮助您为什么后悔以这种方式开始工作以及该问题对您造成什么阻碍?我不喜欢做假设。

@JamesDrinkard:只是为了学习!我不是为了谋生。
动态

你的背景是什么?您对科学一无所知吗?数学?工程?木材工作?:-)您对哪种编程感兴趣?没有这些细节,很难给出有用的答案。此外,不要后悔-太好了!
Guy Sirton

@GuySirton:我是一名中学生。我真的没有理由去编程,我只是去做!
动态

Answers:


21

我会这样做:

路径A:半典型方法

  1. 学习具有更正规语法的语言,例如Java,C#或Python。Perl是一个非常有用的工具,但是就如何让您做事而言,它也是非常自由的形式。我列出的其他语言要少得多。

  2. 用所述语言获取有关数据结构的书。

  3. 用所述语言获得一本有关算法的书。

  4. 获得完整,有效的代码Java / C#/ Python的任何版本。

路径B:乔尔·斯波斯基Joel Spolsky)的《启蒙之路》(或死亡,请选择)

  1. 获取书籍“代码”

  2. 获取K&R的“ The C Programming Language”

  3. 获取计算机编程的结构和解释

就方法而言,方法1将教您以更规范的方式进行编程。计算机科学的概念在一定程度上(还没有复杂性理论,请相信我),并为您提供一种更适合与其他人一起工作并开发更大应用程序的语言。

方法2更严格,它更多地是一种基本方法,其中“代码”解释了基础知识,K&R介绍了机器级内容,而SICP介绍了更高级别的概念。这是一条困难得多但更具针对性的道路。

无论哪种情况,都要给自己一些时间。罗马不是一天建成的,也不是编程技能,即使您天才。彼得·诺维格(Peter Norvig)十年的《编程》是我经常向人们指出的文章。

附录:

就可用的免费软件而言:如下所列的Python困难之路是一个好的开始,从那里开始,如何像计算机科学家一样思考是一个合理的延续。

那里有很多关于算法的资源,说实话,您可能可以无问题地切换步骤3和4。请记住,这是数学真正开始出现的地方,因此在进入此阶段时不要害怕寻求帮助。这似乎是一个合理的免费指南

虽然说像Pythonista的代码看起来相当扎实,但实际上并没有一个相当于Code Complete的内聚免费版本。最重要的是,一旦您掌握了基本原理,便集中精力使代码可读。它与正确使用所有代码语法的方式不是“必需的”,但是一旦您超出了小型程序的范围或长期从事某些工作,它将使工作变得更加轻松。

您可能会发现我主要专注于Python,这是因为这是找到写得很好的免费内容中最简单的三个。我认为Oracle编写的Java教程很好,但它们有些枯燥,对初学者来说并不好。C#处于类似情况,尽管它们都缺少文档。

另外,您的第一个CS开玩笑/双关语:您想“重构”您的学业,而不是“回溯”。


谢谢!您会碰巧有任何免费的在线书籍吗?除此之外,这是一个了不起的答案!
动态,

5
+ 1用于计算机编程(SICP)的结构和解释,可以在这里在线找到:mitpress.mit.edu/sicp
NWS

了解Perl,Python会给我带来很多麻烦吗?
动态

1
在Perl之后,大多数语言都将是一个艰难的过渡。Python非常简单,因为本质上只有一种方法可以完成1件事情,而不是50种方法可以完成1件事情,就像Perl一样。Python的最大技巧是确定要使用哪种语言版本:2.7或3.x。无论您选择哪种教程,我都会使用并从那里开始。一旦您擅长于此,就可以在项目进行时适应其他情况。
世界工程师

1
@kevincline:实际上,在执行了一些Python练习之后,这给我带来了很多麻烦。恕我直言,在Perl中非常简单的某些事情,在Python中是困难的。
动态


1

好吧,我起初的原因与我对硬件方面的了解相同,并且对编程很感兴趣。我喜欢学习新事物。

我从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之类的关键字,然后看看哪些关键字针对互联网上的实际职位空缺。

但是,这是从职业角度出发的,并且基于为我带来最大价值的客户(雇主)​​。不只是从学习的角度。


如果我说我想学习一种对Web开发有帮助的语言,但仍然可以做很多事情,那么您会推荐什么?
动态

-1

以最基本的形式了解算法,暂时不用语言。对向量,单词等进行排序。Freepascal是一门不错的语言,我喜欢Perl,但由于它具有所有的快捷方式和出色的功能,因此您常常会忽略该程序的固有算法。

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.