关于PHP教和学的一些感想
星期三, 5月 12th, 2010最近在写一本PHP入门方面的书,面向初学者,估计8月份付梓。对我来说,写一本PHP编程方面的教程可能要比物理实验或者网页配色方面的图书难度要小很多。毕竟这么多年一直在做相关的开发和教学工作,去年还做了一个PHP的教学视频,手头的资料积累了很多,短期内完工应该不成问题。所谓厚积薄发,如何能把这本书写好是我要考虑的问题。
但稍一转念,这本教材并不如想象的那么容易。早有行内的朋友劝我只要快点写完拿稿费就ok了。道理明摆着:PHP入门教程太多了,加上PHP普遍给人适合自学的印象——想要凭借己力,写出不一样的东西,着实不易。
这么多年来,PHP从面向个人开发业余网站的工具,到全球广泛使用的主流语言,一直也没有摆脱“野路子”。比如很多人是这样学习PHP的:首先学习dreamweaver,顺便学习一下html和css,接下来学习PHP的标签嵌套和函数的编写,然后明白可以用include将函数库集中在若干个文件重用;接下来就是数据库操作,MySQL和PHPMyAdmin,MySQL连接,SQL语句;最后结合表单做几个实例,基本上就可以宣称会PHP了。然后呢,这种选手就应聘到各式公司搞开发去了。如果他去的是一家小公司,比如做企业建站这样的小项目,没有问题。这样的公司很多,可以包容很多PHP“程序员”。可是,做企业建站,需要程序员么?答案是不需要。大马路上一块砖头下去打到十个人,有九个摆弄过CMS,他们都是程序员么?你可以管自己叫站长、网页设计师、前端开发工程师什么的,但千万不要自称程序员。
其实在复杂程度上,PHP和其它语言并没有太大的不同,只是长期的面向过程的编程惯例给人以PHP容易入门的误解。其实不过是PHP既可以这样、又可以那样,从本质上说要比其它语言灵活而不易掌握。比如asp.net,初学就直接要面向“面向对象”了,面向过程的asp.net根本不予考虑,所以学习的时候只要选定了语言种类,其它的事情,像ide的选择,应用平台的选择,数据库的选择,都不用你考虑了。而且vs又是比较容易入门的 ide,可以用拼积木的方法三下五除二完成一个简单应用。从这个角度看,.net的学习甚至要比php简单一些。因而PHP的优势不在于易学,对于web项目来说,免费、敏捷、灵活的开发成了最重要的特性,而PHP在这写方面占尽了优势。这才是PHP流行的原因。
所谓学习成本的高低,实际上是衡量学习目标的标准,和容不容易学关系不大。如果你想成为一个业余的PHP程序员,那么尽可以读《21天学会PHP》,但如果真想“21天学会PHP”,恐怕也还要学到老再穿越回来。同样,如果你要成为一个业余级的.net程序员,自然也可以学几个控件就实现你的目标了。只是比较而言,学习PHP的人数远没有学习.net的多,所以PHP的入门级程序员可以找到工作,.net就只能学习到更高的程度了。这也解释了为什么很多CTO认为多数PHP程序员不专业的原因。PHP的优势和遭受的批评,归根到底,在于PHP的教育,而不在于PHP本身。
主观上很多人认为PHP就是短平快,根本不需要用高级特性;然而随着PHP5面向对象特性的广泛应用和大量框架的涌现,PHP的架构越来越复杂,又导致了初学者的迷茫。因此.net和java比起PHP的优势,除了在平台上的之外,最主要的就是教学过程都要比PHP清晰和系统。中华读书报就评论说:如果非要让我选择一个Java图书在Web开发方面胜出的原因,我想这与Java技术在大学里得到了更好推广有关系。
顺便说一句,中华读书报09年4月解释榜单上唯一的PHP书籍时还说PHP老态呈现,而8月份就说PHP与Java类图书打成了平手,11月份则专门写了一篇名为《 PHP崛起的势力有多强》的评论,而今年则“把PHP类图书列入第二等的崛起者” 。我倒不认为中华读书报出尔反尔朝三暮四,毕竟PHP去年的进步的确有些出人意料。关键是大家已经承认PHP的崛起了,下面就要看这把火能烧到多高,烧到什么时候!



