日期:2014-05-20  浏览次数:20779 次

论WEB之消亡,B/S之覆灭,错误的开发方向
PHP、ASP、JSP之罪

犹如.Net的笑话一样,跨平台的WEB开发应运而生,发展之路可谓神速。
朝夕之间,PHP、ASP、JSP、什么SP都出现了。
这些都是Http服务器的插件而已。
带来的,确实一种崭新的开发模式与软件架构。
对,就是WEB开发,就是著名的B/S架构。
名副其实的“跨”平台,完全可以不理会OS。
但是这个笑话不好笑。
取而代之的是依赖浏览器。
这也就是.Net的神奇之处,“跨”平台,能“跨”所有Window的系统,真神奇啊。
B/S更厉害,能“跨”任意的OS。
“跨”的真远,导致把脚给歪了,这个脚可以用来走路了,也就是著名的浏览器系列:
MS IE/Firefox/Opera等等。
对OS的依赖的解决方案就是改为对浏览器的依赖。
多么正确的决定啊。
或者说,是对网络的依赖。
对Http的依赖
对HTML的依赖
对JavaScript的依赖
对...对的依赖
总之就是除了本地,什么都依赖。
用B/S开发,能省太多了钱了。
OS不用掌握了、细节不用了解了。
傻瓜式的敲几个脚本,画几张图,一个WEB应用程序就出来了。
而这个“应用程序”不用考虑不同平台的事!
真牛逼。
反观需要本地编译的程序呢。
可移植啊、不同系统不同的API啊,什么什么杂七杂八一大堆啊。
这哪能忍受,这让生在Window系统长在红旗下得孩子怎么忍受?
这还是本地应用而已。
C/S就更麻烦了。
网络通信啊、协议啊、一大堆要处理的事。
哎呀真是太麻烦了。
你看B/S根本不用这么麻烦,一个函数就搞定了。
就是,C/S哪能跟B/S比?
纯粹胡扯!
真的以为不用关注系统底层就能开发出程序?
真以为“高层不需要考虑底层”是金玉良言?
真以为所谓“跨平台”是好东西?
错。
B/S,哪能和C/S相提并论?
性能/可扩展/可移植/可维护性哪点是WEB应用能比的?
C/C++/Java(no JSP)才是编程语言。
也只有编译型语言才称得上程序设计语言。
脚本只配称脚本。


C/S才是架构

无论是稳定性、健壮性、可靠性、维护、扩展、移植、性能、专业。
C/S的程序(应该说是本地二进制可执行程序)都是最佳的。
就是比“跨”,B/S可能都“跨”不起来。
怎么可能?
C/S要跨?每个系统移植一遍?笑话?
你才是笑话。
B/S“跨”吧,“跨”来“跨”去几百个系统,运行的还是那几种浏览器。
C/S“移植”,航空飞行器、导弹、电视机顶盒、冰箱、...
连计算机都“跨”出去了。
你能说B/S这叫“跨”?
一次编写、到处运行?
一点都不用改动?
放弃这种可笑的想法吧。
Java不是吗?
Java?
那是C/S,编译型语言。
同样的(本地二进制可执行程序),只不过换了种执行环境。
看看面向浏览器的B/S说“与平台无关”,“与系统底层无关”等等谎言。
千万别信。
事实上只不过变成了“与浏览器有关”。
就说JavaScript,跨平台吧。
你搞个AJax却要考虑IE/FireFox的不同的方法。
获取某个DIV的高度宽度,还要根据浏览器内核来调用不同的属性?
这“跨”的多厉害啊。
看看C/S,同样一个效果,就要对应每个系统不同的API调用等等。
所以呢?
所以这才是真正需要的架构。
只有真正深入到客服端,客服端的系统,才能对每个问题了如指掌。
所谓“跨”浏览器,不过是个世界级的笑话。
甚至准备把B/S当做程序设计、应用开发的,那已经无药可救。
B/S的程序(PHP、ASP、ASP、客服端JavaScript)都只是脚本。
不是编译语言,不是二进制可执行程序,甚至连中间码都没有。
不要真以为跨平台是好东西。
不要以为不了解一个系统也能让你的程序运行在这个系统。
不要以为开发如此轻松,敲几段脚本,点几个鼠标,拖几个控件,那是3岁小孩都不屑的。
最后告诫一下:
想开发,用Unix/Linux,MS系列对于开发没有任何帮助。

编译语言永远是主力

不了解二进制,不深入ELF/PE,不深入系统底层,你永远都不可能对编程有真正的认识。
如果只知道生活在Win的温床,点点鼠标,拖拖图标,所有程序都有GUI界面,所有的安装、
配置都是傻瓜式,用着Ghost XP,连个那么容易的红帽都不知道安装,一用Linux就说
这界面怎么这么垃圾,操作怎么那么麻烦.......
对于这些情况,甚至还出现在程序员身上,这可以是耻辱。
学C时的指针是煎熬,C++的模板也可以挺过去。
为什么一到环境就坚持不来?
IDE?自动完成?向导?
这些都不是必须
有个编辑器就够了。
make都不会用?
也对,生活在WEB世界的程序员。
连编译都不用的。
是的,需要的只是那没用的界面。
和一大堆特效。
真正的核心早就消失了。
这个CSS模板怎么样?
我开发了一个留言薄。
我用PHP写的XX管理系统。
...
是的,这些就是WEB程序员所面临的。
不需要了解底层。
连CPU是什么,内存是什么都可以不知道。
Oh No.
不要这样做。
别为了界面而忽视核心。
别为了可见到的而无视见不到的。
为什么呢。
这就是因为脚本。
因为不用编译。
不编译,使得修改起来十分方便。
使得一大堆错误、漏洞得以苟活。
使得不用费精力在系统/底层上面。
比C/S本地开发要轻松容易的多不是吗?
是的。
你随意用一堆泡沫搭建一栋楼,
肯定比分析-设计-原料-施工-...容易的多。

WEB开发是个笑话

在WEB上运行你的程序,编辑并存放你的文档怎么样?
我肯定会吐。
十分糟糕的设计。
我这么用一下几点来说明我的观点,我绝不会提性能这两个字:
  1.受制于应用级别
  简单的说,ELF/EXE(本地二进制可执行程序)等本地程序,所基于的是CPU的体系。
  OS也不能加什么东西搞什么特性。本地程序是直接作用在CPU上的最理想的程序。
  你在Linux用GTK写的程序,虽然编译过elf不能运行在win上,但是用同一个源码,
  只要在win上再编译一次,就能实现可移植。
  “可移植”胜过“跨平台”万倍。
  可移植一开始就知道不同系统不同的实现,所以不强调一次编写,到处运行。
  而跨平台,不过是个皇帝的新衣。
  特别是B/S的跨浏览器,之所以垃圾,是因为其受制于软件,而不是硬件,WEB程序
  架构不是基于CPU、OS等,而是基于浏览器。
  硬件体系-浏览器结构,这就相差了十万八千里。
  不是一个级别的。
  2.犹如MFC的笑话
  我曾看到过一个贴,说他用MFC写的程序,要用到托盘效果,结果他用了MFC的方法,
  然而MFC给他的是先显示主界面然后迅速隐藏,然后显示托盘。改不就是吗?
  改不了,这是被固化在MFC中的垃圾实现。
  WEB程序更加,一个函数,隐藏的实现过于多,自动做好的事情太多了,能细微控制的
  太少了。
  然而这却是必须的,不然怎么让那些拖控件点鼠标的人生产,这是他们赖以生存的资本。

最佳模式

仅仅说我认为的最佳开发模式:
编译型语言(C/C++/..Java) + 面向计算机的真正的OS(Linux) + 敢于面对底层的勇气

至于脚本那些什么乱七八糟的东西,搞搞配置文件、批处理就不错了,还能怎样?