新手学编程,从哪里开始?
英文原文:I want to learn programming,where do i start?
最近经常有亲戚朋友甚至陌生人问我,软件工程师的工作是什么样子的。在这一行,我们有很高的声誉,薪资高,工作中的乐趣很多——至少外人是这么想的。虽然这一行的薪水没有电影明星那么高(一些人甚至也将我们看做明星),但是因为不错的收入和声誉,依然很吸引人。
在我的学生生涯中,我们班的退学率是最高的,其中的主要原因是对软件工程师这项工作的误解。一些人退学是因为他们只想玩,不喜欢学习,无论选择什么专业都会退学;另一些则认为他们将来会整天地玩电脑。当然,我们的工作确实是“玩”电脑,只是比打游戏多费一些脑细胞。
亲戚朋友们经常问我:你到底在做什么呢?接下来经常是这个问题:哇,真了不起,怎么才能成为一个工程师?第一个问题的答案,取决于跟我说话的人。如果跟毫无技术背景的人谈,我就不会用像“累加”,“C#”,“Azure”这样的术语,我会用他们懂的东西解释。一般会使用一种通用的语言,无论是工作还是外部项目都用的。
那么,你的工作究竟是什么呢?我帮助顾客解决问题,通过开发软件,来提高他们的工作效率和营业额。通常,我要帮他们实现需求。
这是一个宽泛的答案,几乎可以来描述所有工作。但接下来的问题可以作很好的解释。人们经常使用手机的应用程序,所以谈论起手机应用来轻松地多。所以我就会跟朋友们说我在帮顾客写网页或者应用程序,解决他们的商业问题,让生活更便捷。
这个话题就到此为止了,如果继续讨论下去,有关“建网站”和“写应用”就要说远了。但是偶尔会遇到一些感兴趣的人会接着问:网页不就是一些文本和数值吗?做起来很难吗?当你试图给出一个例子解释的时候,基本上最后都会以好吧,我不知道 而告终。
我有很多科技通朋友,所以经常会被问到:我想学习编程,应该从哪里开始呢?
这是一个有趣的问题,但是又难以回答。当然,我可以甩给他们一本关于 .NET 编程的书,但是这样做真的好吗?对于初学者,推荐我偏爱的编程语言合适吗?可能不会。不要忘了他们问这个问题的真正的目标。他们是想了解计算机以及软件运 行的原理吗?还是写一些小程序来恶作剧?是要解决他们的问题,还是想来抢你的饭碗?
当我听到这个问题的第一反应,就是弄清楚他们为什么想学编程。这是一个很好地起点——弄清楚从中想要得到什么。我们可以根据他们的目的来回答这个问题。
当你发现自己在重复地做同一件事情的时候,就可以考虑自己写一个软件来完成这些事。
如果你有一个真实世界的问题待解决,或者有一个明确的目标,那么给你行动的建议就很简单了。写代码和学习代码不仅仅是重复,而且要花上很多的时间,这是事实,要牢记于心。事实上,当你学着写出你的第一个程序的时候,写第二个就简单多了,逐渐变得熟练,越写越快。
我想学习编程,应该从哪里开始呢?
简单地建议是鼓励他们尝试解决一个真实世界的问题,但这仍然没有告诉他们如何开始。首先,我要给他们推荐顺手的工具。说到工具,就不得不提语言 或者参考书,对于初学者来说,不能太高级,最好是简单几步就能运行一个 hello world 程序。如果不能很快看到自己的成果,他们就可能会放弃。编程不只是我们所写的代码,还有其他相关的东西。
我想让他们尽快的看见自己的成果,即使只是写了一行代码也没有关系,他们也会为此感到自豪。这么快看到自己的成果,他们就会有兴趣进行更深层次 的探索,并准备好学习一门真正的编程语言,可能是C#,Java,Python 或者其他的语言。早期你要教他们思维过程:if……this 我这样做,else 就这样,等等。
近几年兴起了教孩子编程的热潮,让有一些人问我如何学习编程的时候,我会告诉他们:像一个天真的孩子那样去学习。我们是如何教小孩子编程的呢?Code.org 是一个很好的资源,通过教你把浏览器里的代码块拼装在一起来教编程,使你能够很快看到自己的成果。甚至可以通过这个写出自己的 Flappy Bird。虽然这些课程不能解决你重复的工作,也不能解决你的业务需求。但是却给了你一个对编程的很好的印象。告诉你如何将代码组织在一起,如果将两个重要的代码块接在一起需要注意什么。
我想学习编程,应该从哪里开始呢?对于这个问题,没有同意的答案。根据你学习的热情和进度,可以给予一些指导。有数以万计的资料可以供你利用,在 Code.org 上做一些东西只是第一步,还有很长的路要走。如果你准备好了继续前行,首先应该有一本介绍编程基础的书。
真的吗?我已经准备好了学习编程,给我那些资源吧!
很多人想要别人拿勺子来一口一口地喂给自己知识,这是不现实的,编程要花很多时间,不断练习。你将会在错误中得到进步,并收获很多“哇,太棒了!”的时刻。如果你真的想要给你的电脑写一个软件,也有很多给初学者的好书供参考。即使最后没有完成你自己的软件,这些物价的知识也会让你受益匪浅。
我初学 Java 的时候看过一本Head First Java,对初学者来说是不错的一本书。很多人以前从没有写过什么程序,这本书中的介绍给了他们很大帮助。Help First是涵盖编程语言和技术的一系列书籍。想要走最少的弯路开始你的第一个 hello world 程序,我推荐 Head First Python。
不喜欢读书?推荐你看一下这个视频:Pluralsight’s Programming for Kids video.
如果你有孩子,和他们一起学习编程将使你们双方受益。孩子们有极高的兴趣和有趣的问题,可以拓宽你的思维。这也是和孩子们相处的一个好机会!坦白的说,我一直期待教我的孩子编程。
读一本书,再花些时间在 Code.org 上玩一玩,看一些 Pluralsight 上看的视频。这之后,你就会感觉你已经有了进步,想要更多的知识。如果你真的想学的更多的话,建议你去大学听一些课,或者上夜校学编程。为以后写真正的软件积累一些知识。
下面,是我为想要学习编程,又没有经验的人列的一些链接资源:
- Code.org
- Code Academy
- Code School
- Pluralsight’s Programming for Kids
- Head First Books
- Khan Academy
- Hour of Code
最后的建议,想象一下买一个小小的硬件,安装在你的车库里,当你的车开的离墙太近的时候,它就会发出信号——Arduino 可以将它变成现实。可能性是无限的,只要你抓住你脑子里出现的新奇的想法,不断体验到编程的乐趣。
如果你和朋友或亲戚讨论这个问题的时间和这篇文章这样长,他们一定会满意地离开,并期待写出自己的第一个程序。
你会怎么回答这个问题呢? ——如果我想学习编程,应该从哪里开始?