赵工的个人空间(玩主)


业余爱好部分转专业技术部分


 科技史话

首页 > 业余爱好 > 科技史话 > 从语言大战看市场竞争
从语言大战看市场竞争

世界上有多少种语言?有多种说法,有人认为有2000多种,也有人认为有5000种以上。不同的语言之间交流,广东人有个形象的说法:鸡同鸭讲眼碌碌。
前面讲的是自然语言,其实我讲的语言大战是指另外一类语言--计算机语言。自从有了电子计算机,人类就要面对另外一个问题,怎样与计算机交流,让计算机知道我要让它干什么,还要让计算机把计算出的结果告诉我们,这就需要语言。(本文会涉及一些专业知识及专业术语,虽然想尽量讲得通俗一些,但有一些确实难以避开。)

1.早期的计算机程序:
我们现在所说的计算机,与计算器是有明显区别的,一个主要的区别是可编程。计算机是指一种通用的装置,可以通过改变提供给它的命令序列,而让其完成多种不同的事情,这种命令序列被称为计算机程序(简称程序),而编写这种命令序列的工作叫做编程序(简称编程),负责编制程序的专业人员被称为程序员,也被戏称码农。编程序可以看做是与计算机进行交流,所以就借用了语言这种词汇,称为计算机编程语言,简称计算机语言或编程语言。通过计算机语言,程序员可以让计算机进行相应的操作,比如通过按键写一段文字并发送给某个人、把摄像头拍的图片发给朋友或打开一个视频进行观看等等,都是通过程序员编写的程序来实现的。程序与其他一些必要的部分(如图片、声音、视频等等)组合起来,称为软件,其实编程序与编写软件的含义基本是一致的。(需要说一下,现在的电子计算器其实也是有程序的,但是固定的,不能改变了,所以只能完成设定的加减乘除四则运算或更复杂的一些特殊函数计算。)
现在所称的计算机其实是电子计算机的简称,是从早期的机械式、继电器式、电子管式、晶体管式发展到现在的由集成电路(芯片)组成的计算机,而且集成度越来越高,速度也越来越快。最早的电子管式计算机ENIAC是一个庞然大物,30米,宽6米,高2.4米,使用了1.7万个真空管,占地面积约170平方米,重达30吨,耗电150千瓦,从规划到完成历时7年,造价48万美元,是为美国陆军军械部的"弹道研究实验室"研制的高精尖装备,可算大工程。而现在的几块钱的半截手指大小(其实内部更小)的微控制器芯片(MCU)其运算能力已超过它,而且是随便就可以买到的小零件而已,无论冰箱、空调、电视机、电磁炉、微波炉中都有这类芯片。
ENIAC现在被认为是计算机(当时的名字其实是计算器),是因为它可以改变程序,但改变程序的方式是改变接线板上的导线的接法,可能为了改变那些接线要花几天时间,编程序那时不仅是脑力劳动,同时也是体力劳动。其实,很早就有另外一种编程的方法,就是使用纸带或卡片,在上面打孔,位置不同就表示不同的命令或数值。这种使用纸带和卡片的方式持续了很长时间,后来才有了键盘及显示器,可以把程序一句句写出来给计算机来读。

2.机器语言及汇编语言:
其实,所有的电子计算机,都只懂机器语言,也就是一长串的0和1组成二进制串(ENIAC是十进制的)。所以早期的计算机专家们为了让计算机干活,就要与这样的一堆0和1打交道,用不同的个数及排列顺序表示不同的数值或不同的指令,当然很容易让人头昏脑胀而犯错,而且很慢。后来,为了使用方便,就根据指令的含义用特定的符号来表示,这就是汇编语言。其实,机器也看不懂汇编语言,这就需要预先编写一段程序,把汇编语言翻译成机器语言,这就是编译器。有了编译器的翻译工作,人就可以使用汇编语言把自己的想法告诉计算机了,工作效率也就大大提高了。一般来说,学习计算机都要先学至少一种汇编语言,这样能深刻了解计算机是怎样工作的,使逻辑清晰程序效率高,科班都是这样教的。我最初学的是Z80(Zilog公司的)的汇编,后来还学了8051(Intel公司)的,8086/8088的汇编当时太热门,想选修都没有座位。
但汇编语言有很大的缺陷,就是与运行的计算机主芯片有关,早年生产计算机芯片的如Motorola、Intel、Zilog等等公司,各有自己的一套汇编语言,甚至不同的系列都不一样,辛辛苦苦在一种芯片上编写的程序,如果需要换另一种,基本就要重新来过,费时费力,互换性很差。学另一种汇编非常辛苦,所以很多使用汇编语言编程序的工程师都不愿换芯片,甚至有的十多年都坚持只干一种,所谓“择一事终半生”,到那些芯片都买不到了就什么也不会了,也只能下岗了。
当时的编程语言大战其实就是芯片厂家之间的战争,而且血流成河。让乔布斯成名并风靡世界的Apple II使用的主芯片是Mostek公司的6502,但现在基本已无人知了,只有在维基百科英文版中才能查到部分资料。就是上世纪80年代哪场芯片大战的赢家,Zilog也倒了,Motorola也已被收购了,而Intel早已从4位、8位升级到了32位、64位高端芯片,汇编语言也不同了,当然大多数程序员也早就不用汇编来编写软件了。
但即使现在,其实还有一些人一些场合要使用汇编语言。一种是做最底层软件的。无论多高端的芯片,一开机运行的一部分程序,往往还是要用汇编来写,因为与硬件密切相关。当然做这部分汇编的往往都是芯片制造商或专用计算机的设计者,搭建起一个基本环境,然后让其他程序员来使用。还有一种是对成本敏感的产品,如遥控器这类,要采用便宜的芯片,就只能用汇编来写程序,但这种芯片也越来越少了,好像现在主要是台湾部分厂商还有造。看国外的一些计算机语言排行榜中,常常还能看到Assembly language(或ASM)的名字,并且常常排位并不低,可见无论何时都是必不可少的。

3.大型机与小型机时代:
电子计算机虽然最初是为了军事目的而研制的,但在英美这样工商业发达的社会,很快就有投资者看到了其中的商机,变成了成批建造和出售的民用品。但用户各种需要这时只能让了解这种计算机型的专业人员来编制汇编程序,对一个用户编写的汇编可能对另一个用户就要重新写,虽然往往很多功能是类似的,比如算三角函数、显示一串字符等。所以,早期的程序员就总结编程经验,把那些通用的功能用常用的数学符号或自创的一些符号来表示,然后再用一种翻译程序变成特定计算机的汇编语言,接着再把汇编语言翻译成机器语言来让计算机来运行。经过不断完善,形成了计算机高级语言。使用计算机高级语言编写的程序有通用性,不需要了解程序在什么计算机上运行,只要上面安装了相应的翻译软件就可以正常工作,这种翻译软件称为编译器或解释器。
以当时的技术水平,制造一台计算机成本很高,有条件购置使用的主要是政府机构、一些大学及科研机构和大型的商业或金融公司,针对这些领域的需要,分别发展出Fortran和COBOL两种高级语言。
Fortran是Formula Translation的合成,原意是公式翻译。因为大量的科学工程计算,常常就是把专业的数学公式翻译成计算机可以识别的一系列指令。Fortran语言的专业计算能力非常强,它是IBM公司开发的,于1957年在IBM704计算机上运行成功,后来逐渐扩展开来。我上学时学习的高级语言就是Fortran,但毕业后就没有再用过,因为没有了编译器,学校时是在一台DEC的小型机上运行的。
与此不同,COBOL用于商业领域,主要是银行、零售商等大企业使用,日常需要处理的数据量很大,但计算并不复杂。为了满足这种需要,美国国防部召集,企业与计算机厂商参加,形成了一个组织,于1961年发布了COBOL。后来,COBOL在美国商业软件中占有70%的份额,据称已积累了2千亿行代码,国内一些工商学院教授的就是COBOL。
Fortran语言比较早,甚至还有一些跳转指令,这种方式被一些研究高级语言编程的计算机专家所诟病,他们提出了一种结构化编程方式,并设计出经院类的语言,最著名的就是Pascal,于1971年推出。它有着严格的语法结构,所以很受计算机专业的人推崇,我上学的时代,国内一些计算机专业的学生就是学Pascal,现在不知是否还这样。
还有一种从实用中发展出来的语言--C语言,是贝尔实验室的一位研究员在开发Unix操作系统时设计出来的,1977年正式发表。虽然C语言的设计者肯·汤普森也是科班出身,但实干的与搞纯理论的就不太一样,一些指令像通用的汇编,因而被很多经院学者批评,但程序员们却很喜欢,特别是那些熟悉了解并经常使用汇编的程序员,因为代码效率很高。1988年,keil公司推出了用C语言开发Intel 8051上程序的软件,这是一款当时最流行的控制芯片,过去只能用汇编来写。从此之后,C语言就成为开发低成本控制芯片程序的流行语言,推广到很多厂家及型号的芯片上,使用率非常高。
当时的电子计算机主要分为两类,一类是IBM为代表的大型机,一类是DEC公司为代表的的小型机。大型机的数据处理能力很强,主要用于大型商业公司、大型科研机构等,成本也比较高。1965年,DEC公司推出小巧的PDP-8,称小型机,以较低的价格进入市场,广受欢迎。特别是后续系列有了Unix操作系统后发展更快,使很多规模不太大的公司也能使用计算机,而更多科研机构及高校也都购进,中国的很多高校都曾经有过这类小型机。
当时的高级语言其实已出现了很多,比如ALGOL、Euler、Haskell、PL/I、Prolog、APL、J、Simula、Smalltalk、LOGO、BASIC等等,因为后来不再有人使用,所以很多已无法查到名字了。经过了几十年的演变,现在还有影响力的主要是Fortran、COBOL、Pascal、C及BASIC等几种,还有一些是专用于某个领域(如人工智能等)。这些主要的高级语言,大都已成为工业标准,甚至是国际标准,但标准的目的并不是排他性,主要是避免用同一种高级语言编写的程序在不同机器上运行的差异。
这个时代,虽然是小型机冲击大型机的市场,但编程语言的使用主要是根据行业,并没有太多正面竞争。先出现的语言占尽先机,虽然有些先天不足,但还能站稳脚跟。后来出现的虽然更完善、更有优势,但还没有被广泛接受,尚需积蓄人气等待时机。在里面其实还有一种竞争,就是理论研究与实际应用者之间的,主要体现在Pascal和C语言之间,当时Pascal的影响力要大一些,经院派占了上风,但随着使用Unix为操作系统的小型机的流行,其内置的C编译器使C语言普及开来。

4.个人计算机时代:
随着集成电路技术的发展,1970年代,Intel等半导体公司已经生产出了处理器芯片CPU和外围的存储器等,足以实现计算机的功能。一些电子爱好者也就制作出了一些使用这类芯片的装置,并逐渐建立起组织以交流经验,但影响主要在这些小群体中,并没有受到社会关注,当然也没有多少商业影响。第一个获得商业成功的产品是Apple II,1977年推出就迅速走红,因为这是一个开机后就能运行的商品,而不再是电子爱好者们的大玩具。1980-1990年代,Apple II成为美国教育系统实际采用的标准电脑,而且中国的一些学校也购买了很多台,我当时上的中学就有几台,但我并没有资格去使用。
苹果公司的商业奇迹及对计算机行业的冲击,让当时美国计算机行业的霸主IBM也坐不住了,1981推出了IBM PC,使用了Intel的8086芯片(从此奠定了Intel在这个行业的龙头老大地位),其中PC是个人计算机的英语缩写。过去的计算机,因为价格高昂,都是一个机构购买并让很多人共同使用,而现在的这类计算机则是为个人设计的,当然也就意味着更大的市场。因为个人计算机体型比小型机更小,所以也被称为微型机,简称微机。IBM以自己在计算机行业的影响力,推出的个人计算机很快成为行业标准,但也成为仿制的样板,Compaq等兼容机公司(很山寨啊)随之兴起,大量生产个人计算机,并迅速吞噬了大部分小型机的市场,而IBM的大型机市场也开始萎缩,世界从此进入了个人计算机时代。个人计算机,让更多人有机会接触和使用,所以对很多人来说,一提计算机就认为是这种。因为IBM PC的进入,苹果公司受到的冲击最大,从独领风骚变成只有10%的市场份额,多年间一直低迷,几乎到了破产边缘。
随着个人计算机的迅速扩张,编程语言之间的战火也开始燃起。最初的Apple II及IBM PC,因为是一种低价产品,在大型机及小型机上的那些编程软件无法运行,而且当时更多还是一种业余爱好者型的产品,只能做一些简单的操作,所以只把一种易用的编程语言BASIC引入了。
BASIC,原意是初学者通用符号指令代码,1965年由一位教授研制出来,为了向初学者传授使用计算机,语法相对比较简单,让非计算机专业的人员编写一些不大的程序比较合适。比尔·盖茨就是以售卖BASIC并引入各种系统开始了自己的软件事业并建立起微软公司的,以后也一直致力于把BASIC语言引入各种系统,而且为其扩展各种功能,图形界面后有了Visual Basic,网络时代还有VBScript,不抛弃不放弃,哪怕已经是专业软件霸主,当然拥趸者也众多。
开始能在个人计算机上运行的软件不多,主要是一些办公软件,文字、表格这类,是专业软件公司开发的。后来,随着技术的进步功能的增强,用户希望能运行更多软件实现更多功能,而Basic这种语言无法胜任这个任务,为了适应这种市场需求,Borland公司与1983年率先推出了开发软件Turbo Pascal和Turbo C,并迅速流行起来。Turbo Pascal使Pascal从一种经院语言变成了实用语言,Turbo C则使过去Unix系统的编程语言在个人计算机中流行开来。这两种软件一直是DOS界面下个人计算机上的最佳开发软件,连比尔·盖茨的微软也甘拜下风,直到现在还有一些人在使用。其实Borland公司当时还推出过Turbo Basic和Turbo Prolog,但基本没有多少影响力,后来也不再售卖。
IBM PC个人计算机开始就是一种开放的结构,可以让用户选择自己的操作系统。所谓操作系统,是开机后自动运行的一些软件,用来搭建一个操作环境,让普通用户也能比较简单地去使用。最早流行的MS-DOS虽说是微软提供的,其实是外购的,并不是自己开发出来的,是靠免费提供而获得的市场占有率,而当时技术更出色的几种操作系统,因为要付费而逐渐被市场淘汰,形成微软一家独大的局面。微软其实是靠售卖DOS系统上的一些应用软件而获利的,其成功靠的是市场策略。
但DOS系统是一种命令行式的,用户需要用键盘输入相关命令,非常不方便,也不美观,对普通用户来说也比较繁琐。当微软在个人计算机市场一家独大后,就借鉴了施乐Xerox的PARC研究中心最早开发,后来苹果公司后续产品也采用的图形界面,开发了Windows操作系统。有了真正自己的操作系统,微软公司也就有了核心竞争优势,1991年开始推出应用于这种图形界面的编程语言开发软件Visual系列,从Visual Basic、Visual C++到后来的Visual J++、Visual FoxPro等,完全战胜了Borland公司。后来,为了应对图形界面的程序开发,Borland先后推出Borland C++、Delphi、C++ Builder、JBuilder等,但只能居于微软之后,分一杯羹。
这一时期最主要的特点就是图形界面,打开计算机之后的界面上会出现很多图标,用户只需要用鼠标点击就可以打开一种应用软件,操作简单方便,普通人也能很快学会,普通家庭也就有了购置和使用的愿望。但在这种图形界面上编制程序,就要采用一种新的编程理念--面向对象编程。其实,这种编程理论在70年代就已经出现,如Simula、smalltalk等,被称为带有类(class)的编程语言,后来被翻译成面向对象,但并不是要程序员对着自己女朋友或老婆编软件的意思。这时,C语言已逐渐成为个人计算机上进行专业编程的首选,很多程序员已非常熟悉,所以就对C进行了扩展,形成了复杂的C++语言,以满足图形界面编程的需要。同样,Pascal被扩展成为Delphi,是Borland公司在力推,而微软则扩展了Basic。在个人计算机上,经过20多年的竞争,微软借拥有操作系统的优势,已经牢牢占据头把交椅的位置,成为了绝对的霸主,而C++也在市场竞争中成为专业编程的首选语言。但微软并没有高兴太久,很快就遇到了麻烦。

5.移动终端:
手机与PDA(个人数字助理)本来是两种毫不相干的产品,虽然都有可以随身携带的特性。手机用来打电话、发短信,具有对外联系的功能;而PDA则主要用来作为记录本、日程表、计算器、录音机、词典等。但随着集成电路技术的发展,到了本世纪初,出现了体积很小的32位的高端芯片,而且耗电也很少,在此基础上发展起来兼有二者功能的新产品--智能手机。智能手机使用的主芯片与个人计算机上的主芯片在功能上基本一致,所以也是一种计算机。
过去,手机的主要竞争点是硬件技术,特别是无线技术,所以拥有无线技术优势的Motorola一直处于优势地位,但当进入智能手机时代,在高端芯片上的软件能力变为竞争点,市场也因此风云突变。Intel公司曾经是个人计算机主芯片的霸主,主要关注的是怎么更快,但因此忽略了移动设备市场对耗电的需求。而英国一家名不见经传的小公司ARM异军突起,逐渐占领这一领域。其实ARM公司并不生产芯片,而是设计芯片核心,然后出售给专业做芯片的半导体公司,世界上最著名的那些芯片大厂(包括Intel)在移动领域的主芯片大都是使用ARM公司的芯片核,外加自己设计的一部分功能模块。
个人计算机领域,有所谓Wintel说法,就是微软与Intel公司的联盟,两家公司分别掌控软件及硬件,而在移动领域,Intel不再有优势,软件方面更是战国时代,Palm OS、Symbian等为主,但主要是PDA的技术,功能有限。在智能手机还因为价格高昂而曲高寡合时,在个人计算机行业一直被压抑而边缘化的苹果公司敏锐看到了其中的商机,依靠公司几十年积累的软硬件综合能力,2007年推出的iPhone引领了智能机的时代,乔布斯再次创造奇迹。苹果公司使用自己开发的手机系统,编写软件则使用Object-C,是另一种对C语言的扩展。
其实,同样看到智能手机市场商机的还有在搜索引擎中独领风骚的谷歌公司,2005年就收购了Android软件,并对其性能进行了升级改造,然后在2007年正式推出。与苹果的封闭系统不同,谷歌采取了建立开放手机联盟的方式,吸引手机制造商、软件开发商、电信运营商及芯片制造商加盟,是一个庞大的朋友圈,到2011年已占有智能手机市场的半数,并强势攻入平板电脑市场。在中国的手机市场,Android系统更是独霸,几乎所以中国厂商制造的(不包括富士康代工的苹果)都属于Android阵营,无论怎样起小名。其实,微软早在2006年就推出了Windows CE攻入手持设备市场,并挤占了Palm OS的部分市场份额,但在与苹果、谷歌及Symbian的对阵中就败下阵来,只有百分之几的市场占有率。后来也屡次改版软件出击,是屡战屡败,屡败屡战。
Android系统是运行在Linux系统上的,使用Java语言编程。Java语言是1995年由Sun公司推出,为了在网络时代兼容当时存在的各种计算机而推出,定位为跨平台的高级语言。Android的成功,使Java迅速流行起来,成为Android系统的开发语言。而Android阵营与苹果之间的移动终端大战,同样也是Java与Object-C之间的大战,目前仍然非常激烈,而且看来战火还会延续很长一段时间。苹果已经推出了新的高级语言Swift,或者将来会接替Object-C来对抗Java。

6.网络领域:
Java推出时,其实是为了网络应用。当时互联网已经开始普及,但网络上的计算机却五花八门,有过去的IBM、DEC等公司生产的大型机、小型机,也有IBM PC及各种兼容机公司生产的个人计算机,还有苹果公司生产的个人计算机,以及用于网络的工作站、服务器等,无论硬件与软件都差别很大,但这些设备之间联网后就面对着怎样使用同一种服务的问题,比如收发邮件、即时通信及打开网页等。开发这些网络应用就需要一种跨平台特性。Java一开始就用于开发网络应用,还推出过HotJava浏览器,网页运行的Java applet也曾经流行过一段时间,但很快就被废弃了。
我们用浏览器打开网页,其实这个网页是放在网络上的一台计算机上的,被称为Web服务器,这就涉及两部分程序,一部分是在服务器上运行的,一部分是在用户计算机的浏览器上运行的,这两部分分别称为后端及前端,相应的也就分为后端编程语言及前端编程语言。
目前,前端编程语言经过混战之后,唯一存在的是JavaScript,它是昙花一现的Netscape(网景)公司的产品,1995年推出,并很快流行起来,并随着Netscape的辉煌而迅速成为事实上的浏览器标准。但Netscape的浏览器是要付费的,微软公司利用自己占据的操作系统的优势地位,提供免费的IE浏览器,几年之内就取得了绝对的胜利。网景公司虽然在商业运作上失败了,但其推出的JavaScript却成为经典,甚至逼迫微软也要使用类似的程序语言,最终形成了一种行业标准,所有的浏览器都大致支持。
这里只能说是大致支持,因为这种行业标准并没有强制力,各家浏览器厂商使用时都有一些不同的扩展或更改。为了解决浏览器对同一个网页打开时呈现出不同效果的问题,1994年就成立了一个组织W3C,后来发展到400多家会员,包括政府、标准化组织、科研机构、企业等,涵盖互联网、出版、电视媒体、金融、航空等很多行业和领域,目的是解决Web应用中不同平台、技术和开发者带来的不兼容问题。
但设计及使用Web涉及大量的技术和标准,这个组织也没有什么强制力,而且越是大佬越不当回事,所以总是存在各种各样的差异,需要通过市场竞争来慢慢解决。微软的IE浏览器就一直是执行W3C标准比较慢、比较差的,所以虽然在第一次浏览器大战中完胜,逼迫对手退出市场,但网景公司走前把源代码开放了,后来建立起Mozilla基金会,并有了Firefox浏览器。虽然浏览器已无钱可赚,但有一些组织及公司还是加入开发。微软稍一打盹,谷歌的浏览器就高歌猛进,影响力排到了第一,何况其借助Android平台还拥有手机浏览器的天然优势(主要在国外,你懂的)。而苹果公司开发的Safari浏览器也是其计算机及手机的首选。移动终端上微软就基本没有影响力了。
W3C也有犯错误的时候。超文本标记语言HTML是编写网页的基础,也一直是W3C组织制定的大量标准中的一项重要内容。但W3C在1999年底解散了HTML工作组,转而开发XHTML,因不能兼容已存在的大量网页,浏览器厂商长期不接受。2004年,来自Apple、Mozilla和Opera的员工开始以个人名义研究规范,建立了WHATWG(网页超文本技术工作组),目的是创造出可以向后兼容的代码,其实就是造反了。2006年,W3C决定以WHATWG当时所完成的工作为起点来开发新版的HTML,WHATWG的工作就转给W3C,这就是2014年推出的HTML5。当然,这个标准目前还有浏览器兼容问题,还需要数年时间才能逐步得到较好地实现。(HTML是一种标记语言,一般只能实现静态的内容,动态的就需要JavaScript及后端程序。)
其实,互联网上的大量规范及标准,大都是以RFC方式发布的。RFC是Request For Comments的缩写,意思是请求注解。通常,当某家机构或团体开发出了一套标准或提出某种标准的设想,想要征询外界的意见时,就会在网络上发放一份RFC,对这一问题感兴趣的人可以阅读该RFC并提出自己的意见。以RFC方式开始,经过大量的论证和修改,最后再由主要的标准化组织所确定。这是互联网时代聚集众人智慧的一种方式,不会维护权威,权威是靠远见卓识而不看年龄、职衔。
对于后端编程语言,目前是三国时代,ASP(包括.net)、JSP和PHP。ASP是微软推出的,使用VBScript,后来因为功能有限,发展到ASP.net、C#等;JSP使用Java语言,编程难度比较高,相对比较复杂;PHP(原意是个人主页)最初只是个人编写的一种统计网站浏览数据的小程序,1995年在网上公开后获得广泛传播,并逐渐发展起来,现在已成为使用非常广泛的一种后端编程语言,占用网站数量的第一位,主要用于中小网站。微软是软件巨头,拥有巨大的话语权,但能够负担起其软件使用费用的网站非常少,主要是一些大企业、大机构,而对众多的网民来说,使用成本比较高,何况大多数网站都非商业网站,基本不盈利,就不原意付出太多费用来使用,所以开源、免费的软件最受欢迎。网络时代,使很多小公司异军突起,使很多个人一夜成名,而曾经的行业巨头则失去霸权。微软为了继续维持其软件地位,开放了软件开发平台Visual Studio,现在又要开放SQL Server数据库,不得不低下高傲的头,面对芸芸网民。

7.其他一些计算机语言:
数据库也是一种常见的计算机软件,金融、商业公司都需要,其实我们手机的通讯录就可以看作是一个数据库,网站中也常用。最早,为了满足商业金融等公司的管理需求,IBM公司就发展了DB2数据库,后来还出现一些非常出名的数据库软件公司,像ORACLE、SYBASE等,其中很多都是大型机、小型机上运行的大系统。出现个人计算机后,首先能在上面运行的数据库是dBase,一些公司曾使用dBase开发了管理企业员工档案及工资的软件,后来发展到FoxBase。进入图形界面后,FoxPro开始流行起来,我还曾在一家公司用Foxpro编写过物料管理程序。后来微软公司收购了Fox公司,推出了Visual FoxPro。其实,微软也开发了自己的小型数据库Access和大型数据库SQL Server。但个人计算机上的这些早期数据库大都是单机版,不能联网使用,随着计算机性能的提高,ORACLE、SYBASE等公司开始进入联网的个人计算机领域,曾经单机运行的一些数据库往往就成了昨日黄花。
而到了Web时代,因为很多数据库都是付费的,比如微软的Access或SQL Server,所以一些小型开源的数据库就流行起来,其中MySQL最为知名,是用PHP开发网站的首选,其他还有PostgreSQL、SQLite等。但MySQL已被ORACLE收购,不知是否会在将来造成使用费用上升。不过,在这个网络时代,收费后就会给其他一些还不太知名的软件以出头机会。
但以上所有这些数据库,基本都属于关系数据库,大都支持IBM最早开发的SQL语言,只是支持程度不同而已。因为网站开发的需要,又出现了NoSQL(Not Only SQL),这是一种新技术,虽然新,但已经出现了像BigTable、Dynamo、Membase、MongoDB、Hypertable、Cassandra、CouchDB等多种软件,未来一段时间内将是混战时代,将来会怎样无人敢妄加推测。
前面说过科学工程计算领域常用的是Fortran语言,但那是大型机与小型机时代,后来Fortran也移植到了个人计算机上,但因为应用领域比较狭窄,而且这种语言也比较古老,使用者其实并不广泛。现在做科技计算最常用的是MATLAB,这其实是MathWorks公司的软件名称,专注于科技领域的计算,经院派搞科研的很多都在用它。而且可以用一个地方的MATLAB的使用率看出这里理论研究的水平与氛围。
还有一类计算机语言比较特别,称为硬件描述语言HDL。前面介绍的那么多计算机语言都属于软件范围,但随着半导体技术的发展,出现了PLD、CPLD和FPGA这类可以编程的硬件,随之就出现了相应的设计语言,比较出名的是VHDL和Verilog HDL,其实还有ABEL、AHDL、System C、SystemVerilog等,很多都有大公司支持的背景。连如此偏门的计算机语言都有很多种,这就是市场经济的特色。

8.高级语言的新发展:
看国外的计算机语言排行榜,就发现一批未曾用过的高级语言,很觉汗颜,其中很多都是近些年随着网络技术的发展而兴起的,比如Python、Ruby、Perl,在国外很流行。而谷歌公司还推出了Go和Dart两种新语言。更多公司则是推出一些使用某些语言的模块或框架,比如Python、JavaScript和PHP的就比较多,特别是游戏开发领域。因为JavaScript很流行也很受欢迎,就有开发者把这种语言扩展到服务器端编程,甚至还有人在做使用到手机、个人电脑甚至嵌入式系统中的项目,去抢占PHP、ASP、Object-C、Java、C++等语言的传统地盘,看来战火不但不会平息,还会愈演愈烈,在美国市场打成一团。
在这个互联网时代,不仅传统的Fortran、COBOL逐渐没落,曾经经典的Pascal、C++也在丧失地盘,反而是一些被专家认为非驴非马、不伦不类的混乱语言PHP、JavaScript、Basic很受欢迎,快变成业余编程者的天下了。以我们的文化传统,总希望传承、稳定、权威、规范、一统,看到纷乱、动荡、民粹就很反感,认为浮躁。既然有了那么多语言了,学都学不过来,还要造新的,而且很多只是小人物,并不是大专家,不知天高地厚,是想法太多。
美国市场的编程语言到底有多浮躁,有个资料可见一斑。鉴于当时美军系统中运行的程序语言太多,美国国防部建立了工作组,经数年研究,于1983年推出了Ada语言,并使军方项目中所用的高级编程语言数量从1983年的450种减到1996年的37种。1991年国防部还要求所有软件必用Ada,但1997年被撤回。作为这么强势的国家机构,是美国工业的助推器及重大项目的投资者,请来的专家也绝对够权威,但面对五花八门的编程语言也有些束手无策,镇不住那些浮躁者。其实,这也正常,因为没有任何语言是完美的,专家也不是神明,都无从预知未来哪种语言会是下一匹黑马。
看计算机的发展史,就是一个浮躁成就的历史。电子计算机的出现,能让制作打孔机的小公司IBM变成行业巨头;个人计算机时代,从推销一个很低级的语言Basic起步能创建起后来微软这种软件业霸主;移动时代到来,一家只设计而不制造芯片的小公司ARM会成长为这一领域发展的引领者。互联网时代,则更浮躁,Web就开始于个人的创意,JavaScript则来自一家小公司,MySQL和PHP开始都是个人开发,通过众多网络爱好者的加入而形成组织逐渐发展起来,并能抗击住软件巨头。美国电影中,经常能够看到个人拯救地球的奇幻故事,当然那都是幻想;但在现实中,却能屡屡出现个人创造行业奇迹的范例,当然这只能在西方那种奉行个人主义的文化氛围下才能出现的。我们这里,大老板进入一个领域就想着要放火烧荒,让一片大地干干净净寸草不生。浮躁的乔布斯向IBM竖了中指,IBM并没有能灭了它,现在苹果公司再次辉煌,而IBM则退出设备制造市场,专注软件和服务,大小关系已经颠倒。这才是市场经济,浮躁的经济,而不是集权的经济。
浮躁中的美国仍在不断创新,而集中于少数大企业的日韩却在一点点沉寂。其实,不要管是不是浮躁,只需要撸起袖子干起来,或者就可能有奇迹发生。

Copyright@dwenzhao.cn All Rights Reserved   备案号:粤ICP备15026949号
联系邮箱:dwenzhao@163.com  QQ:1608288659