成长日记Python学习教程T Part

学习编程的方式

2018-01-01  本文已影响14人  ErlichLiu

Two Approaches to Learning Programming: Top-Down and Bottom-Up

如何开始学习编程?

「 湾区日报评语 」:「 学习编程的方式 」自顶向下:上来就开始做酷炫的项目,边做边学,容易有成就感,但基础不牢固、多是胶水浆糊代码;自底向上:系统地学概念、做课后习题,耗时长、容易失去兴趣而半途而废;混合型:做项目与系统学习不断交替。

大学里的教学多是自底向上式的,学概念、做题,学生往往几节课下来就对编程失去兴趣了;社会上的编程培训班多是自顶向下式的,复制出来的代码做炫酷的网站、App,学员出来后都有个漂亮的作品集,但实际工作下去相当不靠谱。

「 原文连接:Programming for Beginner's Book


两种学习编程的方式:自顶向下和自底向上

一般有两种学习编程的方式,但各有利弊。

自顶向下的方式

关于自上而下的编程学习方式,它的目标就是去创造一件真实重要的软件产品。

大多数自我驱动的学习者在开始学习编程的时候都是自顶向下的学习。想直接做出来炫酷的东西,3D 游戏或者一个好看的交互网站。

那么最快的做出一件作品的方式就是跟着一份特别详细的教程做下去,如果你跟着教程一步一步地做,就可以做出来一些东西。

自顶向下的优势

这么做最大的优点就是你能很快的做出来一些东西,并且会有靠自己指尖创造作品的愉悦感。你可能会对这种感觉上瘾,从而推着你继续学习。

自顶向下的劣势

这种方式的问题在于它并没有教授你基础知识。

一段教程做到最后,你可能并没有领会你做的一切是如何运转的。如果一段教程不够详细的话,你可能还会因此 “ 入坑 ” 而苦苦挣扎。如果你稍微偏离教程,可能就会遇到程序崩溃,而你也没有能力去诊断问题出现在哪里。

这就像在你还没学会游泳的时候,把你丢到深水池里一样。

Arne Brasseur 回想起自己的自顶向下的教学方式中说道:

我教过很多人 Ruby on Rails,Rails 非常复杂,但是在几节课中,你还是可以教会一个人创建一个由数据库支持的交互式网站。因为你仅仅需要紧跟着步骤走,这让教学变得很心烦。不需要偷看下文,也不需要关注什么坑。但是那种立即产生效果的感觉还是吸引人,让他们想的是:” 嘿,也许我能做到这一点 “。

自下而上的方式

这种方式的目标就是学习所有编程的概念。

自下而上的方式在编程课堂上更加的普遍,比如大学和学院。它需要一段时间从零开始地学习概念。这个过程是为一般的编程技能打下坚实的基础,在以后可以编写任何类型的软件。

自下而上的优势

这个过程是在学习真正的普遍编程技能,无论是编写 3D 游戏还是交互网站,这些编程的基础概念都会被用上。

每个单独的概念都比较容易学习,以为你可以独立地研究它。如果你采取的自下而上的方式良好,你也不会一次被 1000 个不同的概念所轰炸。你应该一次给出一个新的概念,并且以易于理解的消化的顺序列出。基本概念 ( 比如值和变量 ) 应该放在更复杂的概念 ( 比如函数 ) 之前。

自下而上的劣势

采用这样的方式会很慢,在实现一样东西之前,要花很长的时间来学习必要的技能。一个典型的自下而上的时间表可能是这样:

1.首先学习字符串、整数和变量。

2.然后学习布尔类型、分支和循环。

3.然后学习数组和数据结构。

4.然后是方法和控制流程。

5.然后老师告诉你大部分专业人士如何编码。

6.所以你开始学习类、实例、实例变量、方法、继承以及其他面向对象的编程概念。

7.然后尝试去学习你最初学习编写代码的方式,并学习以新的面向对象的方式编写代码。

这可能要花费你数月或者几年才能完成这些,但依旧不能给你一个可以实现 2D 游戏或者交互网站的技能。

当你完成这一切,但还是没有创造任何有趣的东西,它就变得无聊了。很多人发现,研究一周的控制流程并不像一天内制作一个网站那样愉快。如果你没有那种成就感,就不太可能继续学习。

什么才是最好的方式呢?

这两种方法都不够好,想要学习编程技巧,你需要两者都进行。

你要有创造软件的体验,即便你还不能完全理解。需要有动机让你继续学习,那么成就感就则有所帮助。只学习概念和理论也不足以胜任真实的软件项目。

你也需要有基础的编程技能,你需要有能力理解并解决代码中的 Bug,不只要理解你自己写的代码,还要理解其他开发者的代码。你要有能在前所未见的情况下编码的能力,因为不是你遇到的每一个待解决的问题都有教程。

所以,最好的办法是两者之前交替进行。

感觉被淹没,这些代码到底是在做什么?这样就切换到自底向上的方式,回到基础部分,精确地学习这些代码是如何发挥作用的。尝试填补你的知识与知识之间的空缺。

对研究抽象的编程概念已经感到厌烦?这时就切换到自顶向下的方式,做一些小东西,比如一个简单的网站或者游戏。尝试去练习你所有学习过的概念,试着做,做一些小东西,比如一个简单的网站或者游戏。尝试去练习你所有学习过的概念,获得一些成就感。

最终,这两种方式会在中间碰面。你学会了代码是如何运作的,也给你自信心去解决任何问题。并且你也学会了如何把编程的概念和理论应用在现实世界中的项目,哪里可以用,哪里不能用,怎么用更好。

学无止境啊,软件开发是如此的复杂,以至于没有一个人能理解所有东西,这意味着总有一些新东西需要学习。也不必太过担心你还不知道这些,这些是需要时间的。我的建议是放轻松,享受过程。

编译: by Erlich Liu

上一篇下一篇

猜你喜欢

热点阅读