设为首页 | 加入收藏 | 网站地图 | 在线报名 | 联系我们
首 页   我们的服务   培训的行业   短期培训   就业培训   企业培训   师资介绍   项目承包   开发实验室   技术交流
培训课程: VS.NET | ASP.NET | VB.NET | Ajax | C# | Java | J2ee | Jboss | Jsp | Struts | Hibernate | Eclipse | Spring | WebSphere | Asp | C/C++
   VC++ | PowerBuilder | Delphi | SQL Server 2000/2005 | Oracle 9i/10g/11g | Sybase | Linux | Unix | Sun Solaris | IBM Aix | 软件项目管理 | 配置管理
关于思源培训
中心简介
组织机构
企业文化
经营理念
新闻动态
媒体评价
技术支持
常见问题
位置示意
精品课程
在职短期进修提高培训 更多>>>
  VB.NET与.NET框架核心开发技术
  VS.NET企业级分布式技术
  J2EE企业级应用开发
  Hibernate/Eclipse/Spring等框架
  SQLServer2005系统管理、设计与开发
  Oracle 9i/10G管理、优化与开发
  VC++深入编程(含COM)
IT高端实用技术培训 更多>>>
  软件项目管理
  软件配置管理
  ITIL/ITSM Foundation
  网络信息安全
  HP Unix 操作系统管理
  IBM AIX操作、系统管理与维护
  Linux环境下嵌入式开发技术
项目实战、面向就业工程师培训
  JAVA软件工程师就业培训班
  微软.NET工程师就业培训班
  Java软件工程师暑假培训班
团体包班/内容定制/上门培训
 
    
首页 > 新闻动态
新闻动态
编程语言:功能越强自由越少?

 

C#最近一直在增加新特性以变得更加强大,Java也在步其后尘。当它向开发者提供更多的自由时,其是否会变得越来越强呢?一种语言是否需要提供高度的自由和灵活性才能变得强大?

Reg Braithwaite深信未必如此。在回应Azubuko Obele的论调“希望语言变得强大的人们实际上是希望有更多的自由”时,Braithwaite声称强大与自由之间根本没有因果关系,即使在很多语言中这两者都是相互关联的,比如Ruby。根据Reg所述,Python是“一个比Java强大的多的语言”,尽管这两者都是“根据如下哲学构建的:适当去除开发者的自由会生成更好的程序”。在Python中,特性之所以被去除不是因为他们可能被误用,而是由于他们被认为是不必要的。这既可能是因为已经存在了“一个完美的方案”来获得期望的结果,也可能是因为这些特性关心的是“不重要”的东西,比如“缩进”。但是如果这些特性能“适合 Python的风格和设计艺术”,这种方式并不会阻止向语言中增加新的特性。

 

以下是引用片段:
一些函数式语言也增加了严格的规则,但这并不意味着他们就不强大:通常情况下,Haskell可能是限制最严格的语言:一种方式可以做所有的事情,这就是数学上纯函数式语言。你有强大、富有表现力的静态类型
   […]
   同样,Factor编程语言对开发者施加了一种单一的约束规则集:转向Factor的开发者必须放弃本地变量以获得Factor的更高层次的编程能力。

因此,Reg认为“语言可以提供更强功能的同时也(自相矛盾地)提供了更多的规则以及更少的自由”。按照他的说法,真正重要的事情是遵循指导理念而且保持语言一致性的精心设计。那么语言就能以事半功倍的效果提供更多的能力,同时它还可以不断成长而不会“抛出更多[通常是不相关的]的特性”。

以下是引用片段:
在任何领域,好的设计都会做到事半功倍。而在差的设计下,增加新的能力将需要添加更多的检查框、更多的特性、更多的做事方法(彼此间还会产生干扰)。

在分享Braithwaite的能力与自由并没有必然联系的观点时,评论员之一Daniel认为一种语言的能力不依赖于它施加到开发者上的规则,而是依赖于它所提供的“计算机语言定理”:

以下是引用片段:

计算机语言并不类似于规则,而是类似于数学。[…]所以可以将其与代数相比。你拥有的定理越多,你就会变得更强大。定理是自由的吗?当然不是。定理是基本的原理,我们可以将其组合起来以获得更多的成果。

根据Daniel所述,造成语言之间差异性的原因在于他们所提供的定理在多大程度上是人脑便于处理的结构:

以下是引用片段:
例如,机器码中并没有我们所熟知的“for”循环。你可以使用的仅仅是基于CPU标志的条件跳转。
   然而由此我们发明了一个非常有用的结构,这就是“for”循环。
   现在,尽管“for”循环是一个非常强大的结构,但它也经常被滥用。很少有人真正能在他们脑子中模拟“for”循环,因此该结构中的错误不胜枚举。
   现在,“foreach”(list iterator或者mapper)结构可能不像“for”结构那样灵活,但它更容易理解。
  

Daniel提倡使用这种容易理解的结构,因为它降低了误用的风险并且使得语言更加“容易编写出正确的程序”。尽管这些结构可能“既强大又易用”,但事实并非总是如此,一些容易被误用的“定理”实际上更加强大。所以,自由与强大之间不但没有必然联系,而且我们很有可能为了代码质量而放弃一些强大的功能。

如果不考虑概念上的差异,这两种方式并不是截然对立的。基于Reg和Daniel的论点,我们可以得出如下结论:语言需要精心设计以保证不同特性之间的一致性,并且提供对人脑有意义的结构来降低误用的风险以及提升代码质量,这样的语言才是真正强大的语言。查看英文原文:Programming Languages: More Powerful with Less Freedom

 
 
返回主页 | 关于我们 | 培训课程 | 在线报名 | 技术论坛 | 企业培训 | 资讯中心 | 承接项目 | 新会员注册 | 资料下载 | 招聘信息| 友情链接 | 网站地图| 联系我们
 
 

报名咨询地址: 北京石景山区杨庄路110号华信大厦401室(每天早晨8:30到晚上7:30全天提供咨询和报名服务,周末照常服务)
IT培训/计算机培训/电脑培训/计算机上门培训 地址: 北京石景山区杨庄路110号华信大厦401室 邮政编码:10004
计算机培训/软件开发培训 报名咨询电话:010-51945271  51945272  51945273
电脑培训/IT培训团体/企业培训联系电话:010-51282934  51945272
QQ:174629429 MSN: bjcosun#hotmail.com(注:"#"改成"@")
**我要网上报名** || Email: abc#ciitc.com(注:"#"改成"@")
htttp://www.ciitc.com 备案序号: 京ICP020244
广告合作请联系:010-51945280