关于语言的一点看法

 语言

 

       《设计模式》中对框架的定义是:框架就是一组相互协作的类,对于特定的一类软件,框架构成了一种可重用的设计。使用开发框架可以减少重复开发工作量、缩短开发时间,降低开发成本。同时,框架的引入和使用还可以使程序设计更加合理和稳定,利于二次开发和维护。

  • Ruby是一门因开发框架而走红的语言。没错,是Rails框架才使Ruby变得如此热门。目前,Ruby on Rails已经进阶主流Web开发技术,使用其开发的各种网站不计其数,详细可以参考51CTO之前的报道《TOP 50 用Ruby on Rails开发的网站》。
  • PHP每次HTTP请求都要初始化资源,这个过程的开销非常大。
  • 比如对Java而言,Hibernate专注于数据层的持久化,Struts则精于业务逻辑的处理。
JavaScript方面,Dojo面向对象功能强大,提供丰富的库及UI控件;jQuery则以简洁、快速著称,对DOM对象和事件处理尤为擅长;prototype则显得更为轻量,善于处理Ajax的交互过程。

首先第一点,语言是设计出来给人看的,各种语言最终会通过某些工具变成机器可以执行的形式。语言设计出来也是为了进行大规模的开发,否则使用机器码01来编写不现实。此外,语言也带来了一些新的设计思路,比如java的面对对象设计等思想。

 

我这里把除了语言规约外语言实现的其他方面统称为“平台”。因此,这个平台其实包括多种东西,例如:

  • 将程序文本转化为二进制形式的:编译器(包括解释器,Linker等等)。打个比方,主流C++编译器有VC++,GCC;C#编译器也有微软实现的CSC及Mono上的MCS。同样的源文件交由不同的编译器,得到的结果会有不同,而最终也会影响程序性能等因素。但是,我们可以简单认为,这些编译器最终生成的结果是符合一个统一标准的,也就是说它们得到的结果可以用相同的规则来识别与执行。
  • 运行时也是平台的重要组成部分。例如,使用微软的CSC编译出的程序集可以在微软的CLR或Mono提供的运行时上执行,同样Sun的Java编译器生成的Byte Code也可以在Sun和IBM两种JVM上运行。由于运行时实现不同,所涉及的标准库也有不同,其程序执行的性能和稳定性都会有所区别。

当我们谈论到一门语言“能做什么”,“性能如何”时,往往就是在讨论的就不(仅仅)是语言,而是平台了。

语言中的很多部分也在真切地影响其平台相关的部分,例如C语言的目标是系统语言,因此便尽可能的接近计算机体系结构,没有高级的语言特性,要把很多细节都交由程序员去控制。而如C#或Java这样的语言,从语言特性上就注定了其执行环境需要GC能力,这样对于一些空间密集型的场景可能就比不上如C语言般精细控制所带来的性能;同样,C/C++这样的语言可能并不适合高性能计算,因为它的语言设计注定了会遇上“别名检测(alias detection)”方面的问题,于是编译器便无法像一些无副作用的函数式编程语言那样进行自动并行,或者生成充分利用系统缓存的高性能指令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值