计算机世界里一直存在着夸平台的说法,一般说来夸平台总是好的,但也难以实现的。所谓的平台也有很多种说法,包括硬件,OS,编程语言等。其中以跨语言最强。比如java是跨操作系统的,但是jdbc不是跨语言的, sql 是跨语言的; jsp 不是跨语言的,html 是跨语言的。
试想当年VB,VC,Delphi,PB哪个不是有自己的界面框架。以至于程序员大喊:学语言不是难题,几十个关键词罢了,难的是其框架。所谓的框架,主要是图形界面库。甚至语言被淘汰就是因为其界面库太差。比如叫你用java开发个程序你没问题,如果说要在智能手机上用呢?你就不敢说了,因为界面库不一样,什么qt,tk都是想做夸平台的界面库。但如果说手机支持浏览器了,你又来劲了,b/s还是好做的。多年前,我发现一些嵌入设备比如无线AP都是从telnet方式转向了web界面了。可见html真是个好东西,能把文本变成图文并茂的界面,技术门槛那个低啊,是个语言都支持。
sql能成为数据库语言,固然不错。但是其返回的结果集却不是文本的,导致每个编程语言都要有驱动程序。就算有odbc,jdbc,dbi之类的所谓的标准,但仍然百花齐放,标准太多等于没有标准。数据库驱动程序成了“小”语言的困扰,没有驱动就不能连数据库,就像没有办法做界面一样,实用价值大大减少。为什么不把数据集用文本表示呢?那样一来问题不就解决了吗。无论用csv格式还是xml格式,只要是文本,我想任何语言都能解析了。事实上,主流数据库产品都已经有这个功能了,通过http://my_server/sql=select * from foo forxml auto 得到文本格式的结果集。然后可以做Object XmlMapping(OXM)映射到领域对象,也可以XSLT转化到HTML输出。
如此一来,计算机语言回归其特长领域,做数值计算和逻辑判断。界面和数据库不再是新型编程语言的跨入实用阶段的门槛。编程语言身上的包袱小了,可以更加自由的演化。咱学新语言也就可以专心学关键字了。不必考虑其如何连数据库,如何画界面。学生学语言也可以轻松许多。
(我正想试一试此方法在smalltalk里连接关系数据库。)
机器能识别文本和二进制,但人脑只能识别文本。这场战争的主人公是人类。所以,最后必然向着文本倾斜。REST和WS*之争正是文本与二进制之争,我想随着机器性能的提升,文本的领地也将越来越大。毕竟机器是为人类服务的。
试想当年VB,VC,Delphi,PB哪个不是有自己的界面框架。以至于程序员大喊:学语言不是难题,几十个关键词罢了,难的是其框架。所谓的框架,主要是图形界面库。甚至语言被淘汰就是因为其界面库太差。比如叫你用java开发个程序你没问题,如果说要在智能手机上用呢?你就不敢说了,因为界面库不一样,什么qt,tk都是想做夸平台的界面库。但如果说手机支持浏览器了,你又来劲了,b/s还是好做的。多年前,我发现一些嵌入设备比如无线AP都是从telnet方式转向了web界面了。可见html真是个好东西,能把文本变成图文并茂的界面,技术门槛那个低啊,是个语言都支持。
sql能成为数据库语言,固然不错。但是其返回的结果集却不是文本的,导致每个编程语言都要有驱动程序。就算有odbc,jdbc,dbi之类的所谓的标准,但仍然百花齐放,标准太多等于没有标准。数据库驱动程序成了“小”语言的困扰,没有驱动就不能连数据库,就像没有办法做界面一样,实用价值大大减少。为什么不把数据集用文本表示呢?那样一来问题不就解决了吗。无论用csv格式还是xml格式,只要是文本,我想任何语言都能解析了。事实上,主流数据库产品都已经有这个功能了,通过http://my_server/sql=select * from foo forxml auto 得到文本格式的结果集。然后可以做Object XmlMapping(OXM)映射到领域对象,也可以XSLT转化到HTML输出。
如此一来,计算机语言回归其特长领域,做数值计算和逻辑判断。界面和数据库不再是新型编程语言的跨入实用阶段的门槛。编程语言身上的包袱小了,可以更加自由的演化。咱学新语言也就可以专心学关键字了。不必考虑其如何连数据库,如何画界面。学生学语言也可以轻松许多。
(我正想试一试此方法在smalltalk里连接关系数据库。)
机器能识别文本和二进制,但人脑只能识别文本。这场战争的主人公是人类。所以,最后必然向着文本倾斜。REST和WS*之争正是文本与二进制之争,我想随着机器性能的提升,文本的领地也将越来越大。毕竟机器是为人类服务的。