预览
◆ 语言的发展趋势一定是动静结合、刚柔并济
◆ Perl凝练晦涩,Python优雅明晰,Ruby精巧灵动,PHP简明单纯
◆ 或许优雅正是来自对细节和规范的重视
◆ (RoR)与Ruby结合之后,便如一只猱身而上灵猫,立刻衬托出Java和.NET大象般的身影
提问
◆ Perl、Python、Ruby和PHP各自有何特点?
◆ 为什么动态语言多作为轻量级的解决方案?
◆ LAMP为什么受欢迎?
◆ Ruby on Rails为什么会流行?
◆ 编程语言的发展趋势是什么?
讲解
“剩下四种动态语言,我们将之归为后台脚本语言。”冒号说着画了张图表——
498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' border=0 alt=比较Perl、PHP、Python、Java和Ruby src="/uploadfile/201301/3/8D194243441.jpg" width=540 height=155>
引号听得仔细:“我记得您开始是把这些语言划分为C族静态语言、非C族静态语言和动态语言三类的。”
冒号解释:“那是按语法来划分的,偏重理论;现在是按应用来划分,偏重实践。”
句号旋即联想到:“这种分法貌似三层架构——前台语言对应表现层;平台语言和后台脚本语言对应业务逻辑层;系统语言对应数据层。”
“的确有几分神似,但千万不可混淆。”冒号提醒道,“三层架构(three-layer architecture)是模块设计上的逻辑划分[1];而这里是按语言应用范围进行的物理划分——与用户交互的是前台语言,与机器交互的是系统语言,介于其中的为前台提供服务同时又需要底层系统服务的是后台语言。”
逗号询问:“后台语言又细分成平台语言与后台脚本语言?”
“这是基于程序(program)与脚本(script)、静态与动态而分的。”冒号进行说明,“其实Perl,PHP,Python和Ruby都有自己的虚拟机(virtual machine),从这种意义上说它们也可作为平台语言。但在实际应用中,它们没有Java平台和.NET平台那种整合凝聚力和核心作用,通常作为轻量级的解决方案。”
问号想探个究竟:“这是由于它们都是动态语言的缘故吗?”
冒号回答:“理论上动态语言同样能承担大型应用,但实践上它们多作为粘合语言或用于中小型应用。用句时髦的话来形容,暂时还是主流的配角或非主流的主角。毕竟在运行效率、类型安全、可用资源、开发工具、技术支持等方面,它们与Java、C#相比尚有一定差距。另外它们同属‘草根’语言,虽有开源社区的大力支持,在影响力上与后者未可同日而语。”
叹号揣测:“说不定在不久的将来,动态语言也会成为主流的主角。”
“世易时移,殊难逆料。但有一点可以肯定,语言的发展趋势一定是动静结合、刚柔并济。”冒号断言,“一方面以Java和C#为代表的静态语言中嫁接了动态语言的枝条;另一方面以Java和.NET为代表的平台与动态语言的交壤地带也在逐步扩大。比如JRuby允许Ruby与Java之间互相调用,类似的还有Jython、IronRuby、IronPython等等。此外值得一提的是,动态语言最活跃的舞台当数LAMP,L-A-M-P。”
引号接茬:“L是Linux,A是Apache,M是MySQL,P是PHP。这四大组件形成了一个完整的开源网络开发平台。”
冒号补充道:“P也可指Perl、Python,甚至Ruby。”
逗号调侃:“可惜Ruby的‘R’比‘P’多了一根尾巴。”
“有人为了自圆其说,干脆让P表示‘Programming language’,这下所有语言都囊括其中了。老外就喜欢玩这种首字母缩略(acronym)的文字游戏,尤其LAMP正好还有‘灯’的含义,寓意开源世界的一盏明灯,他们一定更得意了。”冒号语带调笑,“前面我们曾提及,网络应用是生长动态语言最肥沃的土壤,而LAMP就是这块土壤上搭建的平台。作为网络平台,LAMP以其开放灵活、开发迅速、部署方便、高可配置、安全可靠、成本低廉等特色而与Java平台和.NET平台鼎足三分,尤其受中小企业的欢迎。LAMP中Linux是操作系统,Apache是Web服务器,MySQL是数据库系统,而我们当下最关心的是‘P族语言’:PHP、Perl、Python还有Ruby。