对计算机感兴趣应该说很早,上小学的时候在《劳动技术》的课本上看到basic语言编写的做算术运算的很简单的句子,十分向往,但是根本就没有计算机那时候,连个电视机都没有。
真正接触计算机是上了大学以后,因为不是计算机专业,所以有关课程老师不教编程,先是练习键盘打字,然后学了DOS,然后学了DOS版的WPS,学了DOS倒是还是有用的,接触到一些接近底层的东西,但学的DOS版WPS基本就没用了,因为等我本科毕业后,发现街上的打印店里的电脑都是用的一种不认识的程序,其实那是word。看来单纯学习一种程序的使用,而你没有了解这个程序的基本原理和发展趋势,甚至能够自己编写出部分功能,将会比较被动,甚至像WPS那样,大学刚学完,毕业之后就发现没人用了,是很可笑的。
真正开始编程那是工作之后了,首先发现一个可以拖动式编程的authorware,就用它做了一些演示的程序。不过幸亏没有局限于此,authorware看来优势不大,adobe对它的力度也不够。因为如果你接触了真正的编程语言之后,就没有必要用authorware了,比如vb,delphi都可以更有效的完成它的效果。
然后接触vb和delphi,发现还是delphi好用,数组、指针之类的也逐渐学会了。感觉会用数组就算自己入门了。最基本的文本、图片的操作,也照着有关的教程认真练习了,什么双缓冲之类的。我学delphi是结合了一本计算机地图制图的书学的,所以练习了用数组来画地图。后来还做了个activeX的实验,也都运行起来了。不过感觉这些难度就比较大了。因为我对图形兴趣更浓,照着一本计算机图形学的书,用delphi把透视变换来实现了,等于不用OpenGL,能够画出真正3d的图形,旋转移动的变换都能实现。
delphi毕竟感觉还是听说不算很专业嘛,就找了Borland c++来学,之前也略微练习了一下Torbo C什么的,但是练习可以做东西看来是不行了。刚开始学Borland C++,就发现那c++语言果然是看不懂啊,难度很大,但是不管怎么着,还是练习做了一些东西。对于char [],* char,总算有所了解了。
但是要做实用的软件,看来没必要用c++啊,delphi基本就够用了。关于编程语言的基本知识,什么函数啊,重载啊,基本是在delphi上学的。
后来开始练习做网络,总算发现了一个更广阔的应用领域,静态网页没啥意思啊,至少要学Javascript,实现一些页面效果觉得有点意思。无形中就学会了ajax,后来才知道那就是传说中的ajax。用来异步加载一些网页的内容,感觉还是效果不错。当然xml和数据库在网络的使用也是在这个过程中了解了。asp,.net也就逐渐摸索着有所掌握了。
那时候对flash还不是很了解,flash as2中的一些语句觉得很难理解。通过《computer graphic》这样的杂志看到一些基本的用flash 做小游戏的例程,刚开始还真是掌握不了。从什么时候开始,as2没学会,听说as3出来了,幸亏as2没学会吧,所以不像人家说的从as2转as3还有问题什么的,不知不觉就对as3很熟练了。首先用as3把我以前用delphi编写的3d图形的程序写了一遍。flash的好处是可以放到网上给大家看,在网络时代就更有实用价值了。
于是我就基本用as3来“写作”了,首先练习图形学的一些基本算法,感觉收获颇丰。像基本的透视变换,颜色的转换,法线的计算,四元数,矩阵,根据光照的角度计算亮度,基本实现了画3d图形的一些功能。后来听说的一些在flash上的“伪3d”引擎,像什么away3D之类的,也许也是用这样的算法写的吧。
可是公元2011年左右,flash player 11开始真正支持显卡绘制3D图形,效率大增,也不用自己写透视变换了,但是练习了总是有好处的。于是补课,很快滴学习了flash 的stage 3d,原来代号Molehill。刚开始觉得有点难,熟练了就发现其中的结构还是很明晰的。无形中又了解了显卡编程,用类似汇编的写法写AGAL,flash调用它来进行基于显卡的渲染。发现调用显卡那真是效率高,像素级别的处理不在话下。最近adobe推出的starling其实就是基于Stage3d的AGAL的。
adobe公司的产品就是很厉害,不用说photoshop之类的,它竟然把flash变成了一个很大的编程平台。所以这两年我基本围绕着flash来学习。其中一个值得一提的是alchemy,能够把c语言编译成flash,通过这个我又练习了一通c语言,颇有收获。
逐渐地,服务器和客户端的通讯提上日程,发现了adobe也已经有一套了。首先接触的是amf,开始是amfphp,后来发现.net平台下也有一个fluorinefx。amf3的效率还是很高的,二进制编码,直接能够传送各种数据类型,客户端的flash直接接受。
实时信息的传递比如聊天和网络多人互动游戏,服务器主动地更新推送内容,这方面就开始研究adobe的rtmp协议,发现fluorinefx也有这一部分功能。就很快滴学了这一部分,fluorinefx是开源的,所以可以研究一下它的实现方法。