进化论
回忆一些没用的
我是 1998 年上的大学。小的时候就对各种电子产品比较感兴趣,当然其实没有什么机会的,当时主要就是游戏机,但是我家里是没有的。高中的时候曾经借同学的回家玩过,和我弟弟一起玩的挺嗨,但是对于增长知识应该是没啥用的。
高考完毕之后,其实最想要报的还是计算机系,记得暑假的时候在电视里面看电脑相关的讲座,讲的最多的好像就是五笔,那会 windows 用户也不多,都是用的 dos。ucdos 是最常用的。那会电脑最大的用途感觉就是打字输入,然后打印。
当时没有报计算机,因为闭塞的农村人认为计算机会和财经一样(当时财经类专业曾经火过一些时间,但是介于毕业的人都没啥靠谱工作,所以就认为一般了),过段时间就不行了,所以没有报这块,报的是应用物理专业(当然了,这个专业更屎)。
那个假期去我舅舅的办公室去玩玩电脑。我舅舅是微机专业毕业的,毕业后回我们那边做类似一个打字的工作(其实我也不知道具体做什么….)。我当时去那边就是熟悉各种 dos 命令,学习一下 foxbase。
当时我记得有一本 foxbase 的书,看里面东西看不懂,没有现在的论坛和方便的网络,没有人可以交流。我记得印象最深的是有一道题需要算 1+2+3+…+100 等于多少,不懂编程完全不知道怎么做这个事情,但是看了答案看不懂,因为不懂 i=i+1 是什么意思,那会不明白为什么 i 还可以在右边。现在看来,生在那个年代那个地方真的很悲哀。
进入大学之后,选修了一门 word 之类的课,开始接触 windows。然后宿舍同学熟悉之后,就计划一起买了一台电脑,每个人 1200,我们总共 6 个人,7200 一台电脑,包括音箱电脑桌。当时要上网只能是拨号,56k 猫,开始是用不起的,大概到了大2,3 才开始拨号。然后 6 个人轮流用。那是我们班的地一台电脑,当时辅导员要求大家写保证书,保证不玩游戏才允许买。当然,你们懂得,保证书有个卵用,所以后来某天被发现玩游戏之后,给我们把电脑格式化了。但是之后大家还是会玩。
上了大学之后,就有网络中心,第一次去网络中心的时候,有点懵逼,和 xh 两个人对着电脑不知道该干啥。旁边的人都在玩 mud,当时不懂,就是看着一个绿窗口觉得很神奇。当然后来我们玩 mud 到昏天黑地就不多说了。玩 mud 玩的多了,慢慢了解到了 mud 的机制,有时候自己搭一个开始研究里面的编程,不过还比较粗浅。当时学的也就是 fortrun,c 语言这些。
那会的搜索引擎是目录式的,就和黄页一样,除了去看一些门户,就是翻这些东西,希望发现一些有意思的东西。那会学习也基本是靠买书和看自带的文档(不如 msdn),和通过网络靠一些小论坛里面的一些交流。那会写的比较多的是 vc vb 这些,php 之类学的人不多,java 我记得好像也不多。我的毕业论文是一个 vb 的程序,现在看写的比较烂,也就是能用。
开始讲网站开发
前面废话太多,又不太舍得删掉,就分一下块吧,下面讲讲网站开发技术的进化。
dreamwaver & frontpage 时代
那会做网页比较多的应该是 asp,用 frontpage 写,用 iis 发布,都是图形界面的,linux 没有什么人会用。linux 下面那会各种问题,驱动输入法这些都得花费很大的精力去解决。我装的第一个 linux 应该是 xterm linux,11 张光盘,因为他把一些软件也刻录到光盘了。第一次装 linux 就把宿舍的电脑搞挂了,没选对直接重新分区了。不过也就当年折腾这些弄明白了分区表 mbr 这些东西。
那会还攒了一些书,有一本就是讲怎么用 dreamwaver 的,当时觉得这个东西真牛逼,抛弃了 frontpage。我还记得我用 frontpage 做的第一个自我感觉良好的网页给别人看的时候,人家的那个表情,基本就是想吐的那种。我现在想,典型的那些花背景底色,大字体,图片按钮,来回滚动的一些内容等等,都是很烂的。
基于对 dreamwaver 的熟悉,当时还去联想实习了一段时间,给他们解决了一些问题。
那会做网页一般也就是收个表单,存到数据库什么的,不会有太复杂的东西。做个论坛是最常见的了。那个年代 javascript 是忌讳的东西,一般也就是用来滚动个页面标题什么的,没人拿他做特牛逼的东西。
毕业之后,就进了出版社。那个时代桌面程序很流行,因为大部分电脑都不能上网的,我到了出版社凭着自己的兴趣,用 vb 做了一个库存管理的软件,其实就是入库多少,出库多少登记一下,简单的很。
后来也是自己的兴趣,找了一台没人用的电脑,windows 上面跑起了 java web 服务,那会还流行搞一些 java applet 跑。出版社最早的网站就是这么跑起来的。
在后来装了一个 linux,开始在上面跑 qmail,跑 apache,开始熟悉 linux。同时也有了 php 的网站,不是我开发的,跑在我那个 linux 机器上面。
ajax & mvc
后来大概有几年没有接触这些了,大概 08 年左右接触到了 ajax,javascript 算是就那几年走上神坛。当时老何演示了一个跑在本地浏览器里面的留言本程序,服务器端不用提供任何 html 相关的服务,只需要保存数据返回数据就好,逻辑都跑在本地浏览器里面。
不过那个时候我写的比较多的还是那种古老的表单方式,自己没去仔细了解这种新技术。后来大概 09 年左右有机会开始写 javascript 的时候了解了一些机制,感觉这种方式很有意思,渲染逻辑跑在浏览器,这样节省了一些服务器端的压力,并不是什么操作都需要提交到服务器让服务器去判断下一步怎么办。那会用到了 jquery,感觉真的好方便,并且他还提供一些 css 的效果,让不太熟悉的人也可以很方便的搞起来。而服务器端那会用 php 比较多。
php 当时也接触了一些框架,名字是不记得的。我这种野路子程序员,根本不明白人家的一些设计思路,代码和模板分离,mvc 这些都不懂,不过代码看多了也能明白一些。
我记得 09 年写这些的时候,一个遗留的 php 网站,需要增加一点功能,发现需要我一个人在 n 个文件里面修改,楞要把一个功能分散个 n 个文件让我很不理解,不是蛋疼么。当然后来明白这么做是为了分工合作为了灵活扩展,那么如果就一个人写的时候,我们是不是也需要这么做呢?
emberjs & angular & react & django & spring
后来大概 10 年左右的时候,我写代码还是用 jquery 的方式来做,因为当时觉得很好用。再后来接触了一些 emberjs angular 的一些知识。学习到了 emberjs 里面的命名惯例,比如一个路由叫 posts 那么就有对应的 PostsController,不用你显式的去让他们产生关系。学习 angular 学到了双向绑定的概念,你在定义了一个模型之后,在模板里面用到变量的地方会自动跟着这个模型的数据变化而变化,这就比用 jquery 的时候需要你自己去替换 dom 里面的内容方便多了。然后到了现在的 react 又提出了 virtual dom 的概念,让你不需要关心 dom 结构,你只需要操作你的虚拟 view 就好了。
当然前端其实还有好多的进步,比如 coffee script 来解决 javascript 这个语言本身的一些问题,哪里不严谨,一些最佳实践什么的就不用你操心了,只需要写 coffee script 就好了,编译成 javascript 之后,会自动处理好。
还有比如 css 不能 include,import,很多方案来解决这个问题。
后端这块,最近接触了 django,spring 这些。程序员要分 2 类的话,那就是 java 的和非 java 的,要分三类的话,就是 java ,javascript 和其他,呵呵。看过之后感觉 spring 真是不错的东西。难怪 java 程序员不去了解其他的,入了 java 坑就不用搞其他的了,库类很方便。并且类似 spring 这种东西,好多年前就有了,可以极大的方便 web 开发(不止 web 开发可以用)。如果能很好的驾驭 java,驾驭 tomcat jvm 这些东西,那么使用 java 其实是很不错的方案。通过 java 的 oo 特性,比如继承,重载 interface abstract 这些,可以很方便的定义好一些规范,也可以很好的把大家的工作划分开,架构,定义模型定义接口的人大家协同工作。
以前文件路径就是网页路径,现在有了 route 的概念(这个概念在 angular, emberjs 里面也有),做了 route mapping 之后,可以很方便的把不同的 route 映射到相同的方法上面,可以很方便复用代码逻辑。
总结下
上面讲了很多,整个就是个进化史。以前弄个网站出来需要花不少时间,还很难看。现在基于 bootstrap 还有这些开发框架,做一个出来很快外观还好看。这就是进步。
计算机技术的颠覆是很快的,如果打算一直从事这块工作,建议还是得保持一颗持续学习的心态,也得扩展自己学习的广度,这样可以吸收到各种技术的长处。
现在学习的手段也多了很多,我看视频直播网站都有开始讲课的了(不一定靠谱),还有各种学习视频,更别说各种可参考的学习文档了。实在是太方便了,只要愿意花时间,进步速度绝对很快。