从今天起将开始的这个系列来自一位宅男程序员,这个系列是他写给老婆的电脑课程,后来经他老婆的建议,决定在51CTO这个平台上公开出来与你们分享。java
在系列开始以前,先介绍一下两位主人公——python
男主角:Wuvist(新浪微博),真名翁伟,自称胖程序员一个,幸亏已婚。学习.net
女主角:Katze,Wuvist的老婆,女程序员,
技术宅的你,想看看他们到底是如何使人发指吗?如下,开始本系列的第0篇——认清本质。编程
×××大学计算机系有两门课:CS 1101 / 1102。设计模式
几乎全部的大学计算机系课程都有两门相似的课程;但几乎全部的学生都误解了这两门课;觉得前者是教C,后者是教Java;但实际上前者是 Programming Methodology 后者是 Data Structure and Algorithm。服务器
因此这两门课能够有选择,1101c 或者 1101s,使用不一样的语言做为媒介。语言并不重要。数据结构
只要掌握了编程的思想、数据结构、算法,使用不一样的语言去表达是很容易的。架构
会了不少种电脑语言后,学一门新的编程语言,几乎只要花一个晚上看看官方的语法文档就能够马上开始使用作东西了。最多就一个星期。
基本上,那些说长时间说本身在学C#,学java的程序员,都是2B程序员,他们彻底不懂得程序开发中“思想”、“数据结构”、“算法”的本质,而将大量的时间耗费在语言实现的细枝末梢中,纯粹浪费本身时间。
不一样的语言会有不一样的特性,有一些特性是比较重要的,广泛存在于多种语言当中的,“学习”一种新语言,实际上仅须要查看文档,看这种语言是以怎样的语法支持这些特性而已。
=========
OO是影响很广的编程概念,基本上,是Enterprise Developer(注:企业级开发者)的圣经、法则。
ED认为,越OO越好。
基本上,计算机业界有两批人,一批是真正的程序员,或者说hacker,一批就是ED。
ED其实是企业的工具,他们不多有本身创新的想法;企业说啥米,就作啥米。因此,会有大量的vender,提供工具、支持、新技术,去train这些ED。
典型的vender有微软、IBM、Oracle等等;这些vender为了向企业推销产品,他们就常常会鼓吹一些新的“技术”,而后打包成为解决方案,推销给企业。
为了鼓吹、宣传这些技术,还有一批企业是专门在“布道”的,他们是所谓的“咨询公司”。
这样的咨询公司,他们会专门聘用一些所谓“Evangelist”,屁事不作,成天四处布道,名头都很牛逼,如XX金牌讲师。
他们实质上,就是推销员,只是,他们推销的产品,是所谓的“新技术”而已。
微软在新加坡好像就招了很多Evangelist 。每隔几年,微软所推广的技术就会“革新”一次,Evangelist们就不断的四处去宣传新技术改变了一切,可以提升效率无数倍。
Evangelist自己的技术,不少是不好的;就好像推销员自己,是不会作产品开发、不懂技术的。他们仅仅是会宣传、鼓吹新技术而已;满口各类新技术名词,但他们自己,可能仅仅只是会使用这些技术写一个Hello World。
由于他们自己素质不好,因此,他们是没法分辨他们所推广的技术自己是否好,他们只是复读机。有时候,vender自己在推的技术也其实不错,但复读机们也会把它夸张到荒谬的地步。
OO就是一个典型。
OO仅仅是无数编程模型中的一种而已,但它被过分的夸张,诠释。
Hacker们写程序,基本不会去追求程序自己是否符合OO规范。Hack这个词的意义自己就在于打破规范。
可是,大多数的ED是很笨的,他们缺少独立思考的能力,他们须要被Train,而没法自学。Hacker的那套,他们接受不来。
因此,才会有vender / consultant / 培训学校一系列的产业,去鼓吹:
OO、XML、SOAP、Web Service、Silverlight等等一系列伪技术。
有的ED,一生都没法意识到他们其实是中了vender的圈套;没法掌握真正的编程技术,而沉迷于vender们所鼓吹的“新技术”,一代接一代。
而后,只要有其中的一代技术ED没能掌握,ED就马上被淘汰了;由于这种ED,穷其一辈子都没有学会真正的编程;他们仅仅是学会了一代又一代的被封装的伪技术使用技巧而已。
伪技术的典型特征是封装。
它自己没有任何新的东西,只是把旧的技术封装一下,换汤不换药而已。
OO是最好的封装技术;因此它被无底线的推崇。
封装很重要;可是,对于程序员来讲,掌握封装技术自己,跟学习使用别人封装好的技术工具;是两回事。
“程序员今后再也不须要关心XXX”,这是evangelist最经常使用的宣传语句;2B ED,看了就很高兴,而后拼命去学习新的“技术”,把他们曾经掌握的XXX底层技术给忘掉。
微软所宣传的理念被Hacker理解为“Even monkeys can code”。ED被evangelist鼓吹的新技术洗脑,最终就是成为monkey而已;所作的工做,毫无技术含量;很容易被淘汰。
所谓的程序员30岁必须转行这种说法,即是源于ED被洗脑。
这种ED,从未掌握真正的编程技术,是必然被淘汰的。
=========
而这种ED,在大学时,就是把cs 1101 / 1102理解成为教 c / 教 java的那群人。
他们,从一开始就走错了。
=========
做业(编辑说明:在技术宅和他老婆的故事中,只有女主人公完成做业以后,男主人公才会发出新课程。固然,身为看客的您能够无需完成这些做业,但若是您还是学生,或者您正在带学生或小弟的话,却是能够作个参考):
1. 用500字讲述什么是Programming Methodology?
2. 列举10种Data Structure.
3. 列举10种Algorithm.
【做者声明】Katze其实是正宗计算机系科班出身,并且大学成绩甩开Wuvist九条街,这其中还包括算法、计算机架构等传统上被技术宅男垄断的科目。Katze毕业后长期于投行从事Unix服务器运维工做,故研发编码水平会被Wuvist嘲笑;但Wuvist不会写shell脚本时,绝对是第一时间向Katze求助。
Wuvist写的这系列教程以及做业安排,是为Katze量身定作的,像第1课的做业便所以会出现Perl这门研发中不经常使用,但在运维中却很是广泛的语言。这系列Wuvist是写给老婆的私人课程,其中充满了各类主观偏见,有缘发布到51CTO来,各位看官若看得不爽,请尽管抛砖头狠踩,可是请尽可能喷得准确、到位、凶狠一些~
51CTO系列: