如何快而好的学习编程

作者:刘铁猛    编辑:张·布兰登   翻译:九幽科技

当我写这个话题的时候,我感觉我正在和整个世界对话,就像我在写我的第一个程序“Hello,World”。希望这个话题可以帮助那些想学编程的人(包括你自己)获得一个良好的开端。

关于我

我的名字叫刘铁猛,如果你愿意可以叫我蒂姆。当我在大学的时候,才开始学习计算机编程,在此之前,电脑对我来说就仅仅是一台打印机或者游戏机。但是,当我开始编程,三个因素使我在计算机领域中受益匪浅。分别是:

1.相当迅速地打字

2.知道一些磁盘操作系统命令,并且知道一些编程语言:Basic和Pascal

3.一些热爱电脑的志同道合者

我为什么要提这个?因为这些使我不再对电脑有一种恐惧感,也不再害怕和其他人互动。我依稀记得,当我还是一个小男孩,做在一个不是很舒服的椅子上,面对着屏幕,完全不知所措。那是一种多么怪异而别扭的糟糕感觉!所以,当你决定学习编程的时候,问你自己一个简单的问题--你对电脑有多熟悉?你经常使用电脑吗?你能熟练地运行Windows/Linux系统吗?你可以使用多少软件?当然,即使你不是非常熟悉电脑,这也不意味着你不能学习编程。不过,在你征服计算机的旅途中,无论在心理上还是生理上都应该会比那些已经熟悉计算机操作的人来说,遇到的困难多得多了。

我在大学自学了VB,Delphi和Flash编程。在我毕业之后,我成为了一名软件工程师。然后,有机会去教大学生。也许因为我父母都是老师的原因,我总能非常轻松地将事物有逻辑而清楚地描述出来。所以,学生都非常喜欢我的课。这也鼓励我一步一步地走得越来越远。我开始翻译并写书,出版在线的培训视频等。之后,我搬到了美国,我开始做一些小业务来帮助更多的人来学习电脑编程。到现在为止,我已经在美国教了上百人如何来学习编程。所以,我认为这是一个非常好的时间点来总结一些我的经验并分享给大家!

在这些年的教学中,我主要的教学理念就是如何快而好的学习编程。你必须从“心理学之路”和“求知之路”做好准备。

心理学之路

最近,我进行了一个学习实验:如何快速地学习编程语言?当我说到“学习”,我的意思是这门语言必须足够强大到可以通过有下面三个话题类型的面试:

1.征服语言本身,比如:语法,关键字,运算符和表达式,语句,面向对象,基本库等等。

2.算法知识,比如:常用的集合和算法(排序,递归)。这包括了经典的算法问题,比如动态规划

3.面向对象的知识和技能,比如网页和移动开发(基于这种语言的),工具和框架

最后,我发现大概还需要6个小时来完成项目1,另外的6个小时来完成项目2。我没有测试项目3,因为当你获得该企业的职位后,他们大多都愿意给你机会来学习这些东西。
 我一共要花12个小时--是不是相当快?我猜想你一定迫切想知道我是如何做到的--在这个过程中,如下的三个重要的事情早已刻在了我的脑海中了:

1,主动学习--我对要学习的编程语言充满了好奇与兴趣,并对它发自内心的热爱。不管怎样,要确保你自己是主动来学习的。有时候,压力的确可以促进学习,但是它不可以持续很长时间也不可以使你快速掌握该语言。

2,明白我要学习什么--我没有老师,没有练习资料,也没有考试,但是我可以测试我自己来看自己有没有理解正在学习的内容。我知道在新的领域,有很多限制,所以我在笔记本上写下了一些问题,在以后再回答他们(一般都是几个小时后)。你会发现记笔记,进行网络搜索,尽可能的收集参考书等对你的学习是非常有帮助的。

3,迁移知识--因为我是一个非常有经验的软件工程师,我可以迁移老知识来帮助我理解新的语言。在大多数情况下,都可以行的通,尤其对算法和理念屡试不爽。但是有些情况,知识迁移是错的,我必须做一个“迁移->测试(代码)->理解”的检查。

现在该你上场了!即使你没有任何的编程经验,也需要准确无误地进行下面的三样事。

1,成为一个主动学习者--不管什么原因,你就是想学习这些语言。我认为你对这个科目的喜爱,你想成为一个专业人士,或者你仅仅是好奇,都是非常好的理由。它们会确保你不会退缩。因为学习这条路,并不是一条康庄大道,会被各种障碍堵塞。各种曲折困难在这路上,包括难以理解的各种复杂内容,有待解决的大难问题,被人嘲笑等等。通过我多年的经验,我发现保持高度的自信是保持主动性的最好方法。我有三分之二的学生没有编程经验,变成主动学习者之后,却做得非常好。而且,我发现那些表现非常好的学生往往都有一个积极乐观的亲密伙伴(妻子/丈夫/男朋友/女朋友)。因为他们鼓励我的学生留在了正确的轨道上,这将最终使他们在计算机领域中取得成功!

2,通过请教老师,做练习,海量敲代码等,确保你可以完全理解。编程是一个特殊的技能,你所有的知识在编码中都有作用和价值--如果你不知道如何写代码,那么你什么也没学到。衡量你已经学到了多少最有效的方法是--在写代码的时候能够有多顺畅,你就学到了多少。顺便说一下,通过我的观察,当为自己不能理解知识点而感到内疚的学生在最后反而取得更多的成就。这是因为他们会更倾向于理解,同时更加努力去实现他们的目标。

3,迁移你的知识--我知道你还没有任何的编程知识来转移,但是不要担心忧虑。编程语言只是一种简单的自然语言,被用来描述我们看到的世界。除非你刚刚从其他星系着陆到地球,否则一切在你大脑里面的东西都可以转化为计算机编程语言!对于一个新的学习者,知识转移还有另一个功能,你可以使用你刚刚学到的知识来解决你从未遇到的问题。这是非常常见的,尤其当你遇见一个算法问题的时候。你很快就会发现,理解和迁移知识总是绑在一起的。简单地说,理解知识就是迁移知识,反之亦然。

求知之路

老是有人问我“学习编程难吗?”,我的回答是:不知道。这是因为不同的人在学习的过程会遇到不同难度的问题。当我还是学生的时候,常常会觉得无聊或者感兴趣,沮丧或者开心等等。但是,从来不会觉得难。我的一些学生认为编程非常简单,然而有些学生认为非常难。在整个学习的过程中,学生很难改变他们的最初对编程的观念(简单或难),即使材料变得越来越复杂了。这是什么意思呢?就是编程取决你的态度。简单的说,知识就是知识,你的态度决定了难易程度。

学习任何知识体系,我们必须遵循一些顺序。如果你遵循了这些顺序,你最终将在你的大脑里,建立起属于你自己的结构化的信息系统。在我15年的软件工程职业生涯和10年的编程培训师生涯,我一直在微调这些顺序。我使用这个顺序已经教了成千上万的学生,包括我自己,仍然在不断在改进它。下面就是这个顺序的简介:

1.准备一个相对好的运行速度快的电脑,然后安装一个操作系统(建议Windows操作系统)。不要让一台速度缓慢的电脑浪费你的时间。

2.选择一个正确的打字指法。此外,还要熟悉一些Windows快捷键和文本编辑器。

3.学习计算机科学,第一步就是学习一门编程语言。下面就是这种语言的利弊:

a.C语言
 【优点】:你可以学习到许多底层的知识,给你夯实基础。
 【缺点】:C语言不支持面向对象编程,你很难使用它直接找到一份工作

b.C++
 【优点】:很多用法和C一样,但是却支持面向对象编程
 【缺点】:有太多的知识点要学习,相对比较复杂的语言,有多个版本要选择

c.Java/C#/Python/JavaScript
 【优点】:简单的语法,隐藏了低层次的知识点,可读性强,学好它容易找工作
 【缺点】:你将丢失很多底层的知识点

d.HTML和CSS不是编程语言

e.汇编语言不适合初学者

4.如果你想选择一门语言的话,我建议你选择Java/C#/Python。你只要选择一个并学好它,那么其他的语言你将在一个月之内学成。

5.找到一个老师或者一个导师。他们至少要具备5年以上的经验。

6.找到官方语言来规范你的语言,和所有相关书籍。但要确保你不是在盲目花钱

7.要注意什么时候去阅读书籍或者文档,什么时候去搜索,什么时候去写代码或者调试Bug,什么时候并如何请教老师(导师)。千万不要把你的老师或者导师当成你的“bug调试小能手”。

8.当你学习语言的时候要使用并遵循如下顺序:

a.这门语言支持多少种数据类型?它们的文字值是什么样的?

b.如何声明变量和常量?数组怎么定义?

c.如何调用和声明一个函数?

d.学习一点库函数,比如输入和输出

e.有多少操作系统支持这个语言?如何使用它们来构建表达式?

f.什么是判断语句和循环语句?如何把它们放在一起使用?

g.这个语言支持面向对象吗?如果支持,你如何建立一个类,并封装成员(变量和函数)?

h.这门语言支持多少个标准形式的集合?(数组,列表,栈,队列,集合等等)

i.这门语言如何实现继承和多态?

j.如何实现接口和SOLID法则是什么?

k.如何实现回调函数?

l.是否支持函数型程序设计法?

m.尽可能的多熟悉标准库。不同的语言有不同的库函数,所以在这点上请教专业人士

n.使用这门语言来学习算法。实现经典算法,并破解难题

o.使用这门语言来写像网站,手机app等软件

9.全日制学生通常花3个月的时间完成a到m,再花2个月的时间完成n。这个完全取决于你对之前的项目的理解。如果你发现你卡在一个项目上,然后重新回过来理解一下。记住要有耐心。

10.一旦你学习了新的知识点,写代码,一定要联网保存在Visual Studio的GitHub上。

结束语:

还有两天就是圣诞节了。这个小话题就是给我的学生和他们父母的圣诞礼物。期望我的学生在新的一年里可以取得更大的成就,特别感谢我的编辑布兰登·张,他的纠正和建议使得这个话题更具有可读性。如果你有任何问题或者建议,欢迎发送邮件到[email protected]中。

希望这个话题可以帮助大家学好编程。祝好运!圣诞快乐,新年快乐!

原文地址: http://www.timliu.net/Portals/0/Topics/HowToLearnProgrammingWellAndQuick.pdf

开发者交流群:53078485,期待您的加入

时间: 2024-10-26 04:41:59

如何快而好的学习编程的相关文章

20多岁学习编程晚吗?看看56岁的大叔如何克服自我怀疑学习编程

原文地址:http://mp.weixin.qq.com/s/zzoPGDS5eELxEeO_zfG20w 版权声明 本文首发自微信公共帐号: 学习学习再学习(xiaolai-xuexi) 无需授权即可转载, 甚至无需保留以上版权声明: 转载时请务必注明作者. 我 56 岁了,正在学编程. 为什么?因为我喜欢编程,现在也算得上是老司机了. 但是编程并不简单,学编程很难,不过我还可以接受. 我喜欢沉浸在算法带来的挑战中,也愿意挤出几分钟多进行一次测试,更爱"也许这一次就成功了"之后&qu

码农-如果当初学习编程时能有人给我这些忠告该多好

在你学习编程之前思考一下你的目标 要知道编程大多时候就是在创造,当你有最终目标感时道路会更加的清晰.如果你的目标是"学习编程"而不是更具体的学习哪种程序及如何让你的生活更好,那么你可能会发现这不过是一次令人沮丧的实践. 我有点惭愧地承认我学习计算机科学的部分动机是为了证明我聪明,及我想干"聪明人"的工作.我也喜欢思考数学和理论(<哥德尔.艾舍尔.巴赫:集异璧之大成 >这本书在我易受影响的年纪进入了我的脑海),编程是一个不错的选择.当然这并不足以使我坚持这

零基础如何学习编程

零基础如何学习编程 心得笔记 自学编程2年来,加过n多群,泡过n多论坛,接触过心怀激情的编程新人,遇到过沉着冷静的技术大牛--编程,吸引了一批又一批的热血青年,或许是为了理想,或许是心中的爱好,不断有新人的加入,也不断有人从编程中退出.编程的入场入口只有一个,出场的出口却很多.自学编程的新人,有很大一部分卡在了入门上,对此,我想写下对编程入门的一些拙见,权当抛砖引玉,或对或错,还望同学们自己鉴定.1.零基础,打算自学编程,应具备哪些的知识?答:对于入门阶段,对知识水平的要求并不算高,或者说很低,

Java图像处理最快技术:ImageJ 学习第一篇

ImageJ是世界上最快的纯Java的图像处理程序.它可以过滤一个2048x2048的图像在0.1秒内(*).这是每秒40万像素!ImageJ的扩展通过使用内置的文本编辑器和Java编译器的ImageJ的开发插件.500多插件可用. 数据类型:8位灰度或索引色,16位无符号整数,32位浮点和RGB色彩. 文件格式:读写所有支持的数据类型为TIFF(非压缩)或原始数据.打开和保存GIF,JPEG,BMP,PNG,PGM,FITS和ASCII.打开DICOM.使用URL打开的TIFF.GIF文件.J

学习编程最好的方法

刚开中学习编程,很多人都不知道怎么样才能学习的更好,学的更快. 到底学习编程,有什么样的秘诀呢? 今天看到一句话:学习编程语言,学习技术,一定要多练习,练习,练习,再练习,没有代码量,一切都是扯淡. 看为,不管学习哪种编程语言,尽可能多写一些代码,才是了了的方法. 以后自己确实需要多写代码,多多动和.

程序员学习编程需要攻克的8个障碍

大多数学习者同样碰到过相同的障碍,但是,一旦克服了这些壁垒,那么好处立马就来: 更享受学习经历 进步更快 碰到难题更执着,不轻言放弃 写代码时更独立 那么,这些障碍究竟是什么呢,我们又该如何攻克它们? 1.不正确的学习动机 在谈及壁垒之前,我想先着重说明学习动机的重要性.不要只是为了编程而学编程,也不要因为听说它很酷,很划得来就来学编程. 你得因为要解决问题而学习编程,你得因为想要自动化和改善生活而学习编程,你得因为想要构建应用程序以造福社会来学习编程. 如果你只是喜欢编程,并希望以此作为职业的

我是怎么学习编程的?

2014年11月14日 这是一个真实的故事,关于我自己的. 一个理智的生命个体是怎么一步步走向疯狂? 我穿着西装,坐在办公室里,脑子里有一个模糊的创业想法.然后,我决定学习编程. 我曾经无意中听到过几个人在那吹牛说自己怎么使用一种叫Ruby的语言轻松实现自动办公.我想"呵,Ruby".我回到家,谷歌Ruby.15秒之后,我随机选择了一个Ruby教程,开始学习. 一周以后,我参加人生中的第一次黑客聚会.在场的每个人都在讨论什么Scala,Clojure,Go.我想,他们学得还真是多.转身

为什么你应该让你的孩子尽早学习编程

点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 本文大概 3367 字 读完共需 9 分钟 Tips 参与文末话题讨论,即有机会获得异步图书一本. 什么是编程,为什么编程很适合孩子 计算机编程是每个孩子都应该学习的一项重要技能.我们使用计算机解决问题,玩游戏,帮助我们更有效地工作,执行重复性的任务,存储和查找信息,创建新的内容,同时与我们的朋友和世界联系.理解如何编写代码,将会把这一切力量付诸于我们的指尖. 每个人都能够学习编程,这就像是求解一个谜题或一个谜语.你可以

gogo闯SEO快排教程及应用编程(同步官方)

https://www.zygx8.com/thread-11604-1-1.html 授课内容简介: 两个模块:「SEO套路」和「SEO应用编程」 「SEO套路」模块,分 "域名.内容&模板.关键词.链接.点击" 五个章节,所有的SEO动作都是从这5个点中入手 多一些思路和实战,即:经过分析,出于前提条件X(思路),对网站做Y这个动作(实战),可以大概率提升排名&流量.其中实战部分,大站和灰色站的套路居多 「SEO应用编程」模块,分"基础.SEO数据分析.快