突然想到需要好好总结毕业之后的学习,工作的经验了。我有些批判精神,不喜欢傍粗腿,捧臭脚,跟着起哄,就想把自己走过的弯路说说,希望后来的人能快点成长,不要重蹈我的覆辙。本人最反感的就是忽悠,而且是用人家欧美玩儿剩下的来忽悠我们。
今天先讲第一个话题:跨平台
曾几何时, 跨平台要求被奉为军规,还被当作考题来考,标准来执行,尤其是C++甚嚣尘上的时候,那些狂热的programmer们不管是装傻还是被忽悠,都在吹嘘C++代码跨平台,可移植性好,重用律高等等...
然而历史的发展出乎大部分人(确切得说都是些被忽悠的傻瓜)的意料,真正跨平台做得最好的居然是当时大家最看不起的C!这时候我们这些傻程序员们终于明白 了:原来跨平台做得好不好和我们的代码屁关系都没有,主要是和编译器有关的,大家也终于明白了为啥linux成为史上最牛的跨平台软件了,根子在gcc做得牛啊!
所以以后写程序的时候不要再幻想什么我的软件应该能在Unix和Windows都能跑,那样的代码不是人看的!维护的成本够新开发出一套 的了,要想Unix和windows都OK用Java好了!看看现在的需要安装的软件发行版,基本都是分unix/linux, windows, mac os的,谁开发了一个跨三个平台又用一个安装包的浏览器?
不要再争论我的软件应该支持little endian 和big endian, 那样的代码无非是让看的人脑子绕个弯子!即使以后需要改起来又有多大难度?况且需求这玩意儿简直是女人的脸,一会儿流行圆的,一会儿流行尖的,谁说得准吗呢?
不要在底层软件都不跨平台的时候,要求上层软件跨什么平台,一句话:空中楼阁!
真正要写跨平台软件的时候必须搞清楚:为什么要跨平台,这个问题基本没有人能准确回答的话,后面的可以不用了,呵呵.
需要跨哪些平台?unix,windows, mac os?搞不清跨什么平台怎么确定软件需要注意什么呢?
不同平台的区别是什么?是硬件?内核?还是操作系统,浏览器什么的,区别都不知道就奢谈跨平台不是装大尾巴狼吗?
所 以我的建议是:安安心心把我们的软件在一个平台上做好了,做精了,做牛b了,人气做旺了,到时候跨平台的需求来了,能实现也就改,不能就重新写一套,反正 核心是一样的,工作量就是个时间问题!就像firefox,apache发源于linux平台,现在windows上不一样挺火?