不要用面向对象编程分散新手程序员的注意力

编者按:原文作者James Hague是一位修复性程序员(recovering programmer),从上世纪80年代起开始设计视频游戏,属于发烧友级别,用汇编语言编写过任天堂的游戏。

当有人问我“要教我的儿子/女儿/其他没有编程经验的人,哪种编程语言是首选?”,我的回答在最近五年多都没有改变,那就是:Python.

这个回答也许有点意外,它是属于某些人谈论的非主流的编程语言,但是我支持Python。

Python广泛地适用于那些简单有趣,但用C语言做起来却很费精力的问题。(认真的讲,一个基础的拼写检查程序可以用几行Python代码来实 现。)有些关键点非常容易解决,但是与核心语言特性之间却有棘手的不匹配问题。Erlang有两大特性。例如,根据适当的数组更新来尝试所有算法是最自然 的表现。在Python中一帆风顺。数组、字典和配置占据了很大一部分。

使用Python作为入门编程语言有一点需要注意:避开它的面向对象特性。你不可能完全避免,因为会关联基本数据类型中一些有用的方法,不过没关系。只要利用已经提供的方法,并且不要谈论如何创建类,尤其要避免任何把数据包含在类中的面向对象设计思想。

从面向过程到面向对象的变化,带来了从思考问题与解决方案到思考架构的改变。看起来似乎只是面向过程的Python程序和面向对象的程序那么简单。 但后者总是更长,充满了额外的接口、缩进和注释。而魅力就是要把零散的代码放进类中,加入所有的小方法,并且预先设计好那些不知道什么时候能用得上的方法。

当你试图帮助某人去学习如何从一个问题出发,去编码实现的时候,你最不想看到的就是他们在人造工程作业上折腾。有些人守着面向对象知识的残羹,创建疯狂的类体系,却不专注于他们该学习的东西。另外一些人因为一个额外的层让程序变得更复杂而失去兴趣。

从某些方面看,确实是这样,你需要讨论如何在Python中创建对象,但是要尽可能的忍耐。

你可能感兴趣的:(面向对象)