`
varsoft
  • 浏览: 2508313 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

动静兼济总相宜——Java与.NET之外的语言视界

阅读更多

去年的这个时候,我写了一篇文章来总结C++的2003年,题目是《波澜不惊》。其实当时我预料,C++的“波澜不惊”不仅会是2003的主题,恐怕也是之后很多年的主题。不过这个预料在仅仅一年之内就被打破,今年微软推出的C++/CLI着实翻起了一些波澜,给本已平静的C++世界涂抹了一缕亮色。按照Stan Lippman的说法,C++/CLI是一座桥梁,将原本属于静态世界的C++与动态的CLI联系起来。动静结合,自然不同凡响。C++/CLI大致将于2005年推出第一个正式版,而大约要到2007年才能够完全成熟。
目前的C++/CLI语言,从设计上来讲可为是毁誉参半。赞誉之词不必多说,至于社群里的反对意见,大致是来自两种情绪。其一是觉得C++/CLI对C++进行了专属的改造,使得自己熟悉的C++代码面目全非。其二是觉得C++/CLI将C++的复杂性与CLI的复杂性统统暴露出来,令人望而生畏。依我看来,第一种责难其实出于一种不必要的宗教虔诚,并不足以为据。倒是第二种看法,颇值得我们担忧,如果得不到很好的解决模型,我们也可以认定C++/CLI只是一小撮专家们手中的屠龙术,而很难产生更广泛的影响。
如果把C++/CLI的喧嚣拨开,看看传统的C++,那么2004年就不仅仅是“波澜不惊”了,甚至可以说是“水波不兴”。我甚至要颇费一番思索,才能够列出一两件事情,来代表C++社群这一年的所作所为,还要担心读者怪罪我小题大做。
Boost库在2004年改进了两版,加入了一些很棒的组件,比如序列化库等等。标准委员会也开会接纳了几个小玩意进入C++ 0X标准。C++社群自2000年以来,倾心于基础库的建设,这对于C++来说的确是必须,但是对于这个迅速变化的世界究竟能起到多大的影响,现在还很难说。其实一直以来,Boost库的精致程度就已经非常高,但是对外界的影响力还不够。我当然乐于看到“三年不鸣,一鸣惊人”的局面,但是对此并不乐观。总的来说,C++社群要加油。
与之相对应的,在实际工程中,C++的应用还是非常稳定地发展着。只不过,人们固执地使用着传统的、基于对象或者面向对象的风格,至多掺入少许的STL。从1998年以来,C++领袖们一直号召使用者转向新风格,现在看来这么多年过去了,效果并不很理想。其中主要的原因,固然是因为通往“新风格”之路的艰辛,也一定程度上是因为新兴动态语言的替代作用。“动静兼济”之美,未必要通过C++自身的涅磐来达成。事实上,类似Python和Ruby这样的动态语言,一方面提供了远远超越Java和C#的动态能力,另一方面又能够方便地与C/C++交互。用它们与C/C++混合开发,毫无疑问是开发应用系统的极佳组合方案。
2004年12月1日,Python升级到2.4。从语言本身来说,2.4与2.3的差别很小,对一般开发的影响几乎可忽略不计。但是,就在12月1日当天,ActivePython、PyWin32等主要Python实现包均同步升级到2.4版,此后数日,各主要Python软件包均升级兼容2.4版,动作之整齐划一,有如一家纪律严明的公司,充分体现了Python社群的成熟,令人震撼。
然而,对于Python来说,本年度最令人振奋的消息是IronPython的横空出世。IronPython不仅向Python社群证明了.NET平台,也向.NET证明了Python。其开发者Jim Hugunin已经被微软招入麾下,专职研究.NET平台上动态语言的实现技术。Python等动态语言有望将软件的开发效率在Java和C#的基础上进一步提升2-5倍,所以,毫无疑问的,我们当然希望Python能够进入.NET,成为一等公民。不过一般来说,2005年恐怕还不可能。微软还是非常热衷于推销自己发明的语言,而对于开源社群的贡献保持着一种官方的矜持。也许Java社群在这方面反而要更积极一些。
日本人Yukihiro Matsumoto发明的Ruby语言,以其更纯粹的面向对象支持、更一致的类型系统和为人津津乐道的block/iterator结构而迅速崛起,逐渐呈现与Python分庭抗礼之势。对于熟练的Python开发者来说,Ruby的吸引力并不是很大。但是对于刚刚踏入动态语言世界的C++/Java程序员来说,Ruby似乎比Python有更大的魅力。2003年8月,Ruby发布了1.8版,这是一个比较大的升级。而2004年,Ruby再接再厉,连续推出1.8.1和1.8.2,同时,Ruby社群成立了RubyForge网站,实现了力量的大整合,其发展势头更加迅猛。
脚本语言老将Perl今年把精力投入到了Perl 6上。虽然距离Perl 6的成形还很有一段路要走,但是Perl 6已经成为热门话题,O’Reilly甚至已经出版了一本书。而源于巴西的动态语言新丁Lua发布了5.1版,以其独特而小巧的设计、出奇的高效令世人惊讶。
总的来说,在动态语言领域里,老将的优势是支持库丰富,新丁的特长则是语言设计优美,新老各有优势,让人难以取舍。如果能新老结合,岂不是很美好?这就是Parrot项目的初衷——为动态语言提供最优化的基础运行平台。在2004年,其版本号升级到0.1.1。我们已经可以憧憬一个这样的未来,即Python、Perl和Ruby自由协同,互相无拘束地调用。因此可以说,Parrot VM是比任何单个动态语言发展都更为意义深远的事件,如果动态语言家族实现大统一,整个编程世界将被非常深刻地影响,今天任何一个执迷于Java或.NET世界而无暇四顾的人,在不久的未来都将为此而深感震撼。
事实上,动态语言本身的能力是有局限的,一般而言其效率也是较差,但是与C/C++的相互结合,使得程序员在开发时得以动静兼济,取长补短。很多人都相信,动态语言是编程技术发展的新方向。纵观2004,展望2005,这种预测是很有希望成为现实的。

2004年1月26日 Boost 1.31.0发布
2004年3月22-26日 C++标准委员会在悉尼召开第33次会议
2004年3月23日 Lua 5.1 work 0发布
2004年4月11日 微软发布Visual C++ Toolkit 2003
2004年4月20日 GCC 3.4.0发布
2004年5月27日 Python 2.3.4发布
2004年8月 Linux Standard Base 2.0加入一个C++ ABI标准
2004年8月 微软发布Visual C++ 2005 Express Beta,展示新的C++/CLI
2004年10月1日 Ruby语言的权威著作《Programming Ruby》第二版问世
2004年10月 C++标准委员会在微软总部雷蒙德召开第34次会议
2004年11月8日 Ruby 1.8.2 preview 3发布
2004年11月19日 Boost 1.32.0发布
2004年10月29日 Parrot 0.1.1发布
2004年12月1日 Python 2.4发布

分享到:
评论

相关推荐

    《Lanota》:Noxy的独立音游——初响,_文档视界.docx

    《Lanota》:Noxy的独立音游——初响,_文档视界.docx

    摄影师的视界——迈克尔弗里曼摄影构图与设计

    ### 摄影师的视界——迈克尔弗里曼摄影构图与设计 #### 知识点一:摄影构图与设计的重要性 在摄影领域中,构图与设计是决定一张照片是否吸引人的重要因素之一。迈克尔·弗里曼在其著作《摄影师的视界》中深入探讨...

    Java-Java网络编程教程

    Java网络编程是Java开发中的重要组成部分,它允许Java应用程序通过网络进行通信,实现数据的传输。本教程将针对Java的网络编程进行详细讲解,旨在帮助Java学习者掌握这一核心技术。 一、TCP/IP基础 在Java网络编程...

    毕业设计java微信小程序车视界小程序+ssm源码含文档含教程

    毕业设计java微信小程序车视界小程序+ssm源码含文档含教程 后台是ssm框架,后台的页面是vue,微信小程序,数据库mysql,jdk1.8,开发工具用ecplise、myecplise、sts、idea都可以 本系统的使用用户包括管理员和注册...

    全息互动投影——微光视界.docx

    深圳市微光视界科技有限公司提供了一套完整的5G应用解决方案,旨在通过这种技术搭建沉浸式虚拟体验空间,用于产品推广、业务展示和企业宣传等目的。全息互动投影系统由硬件产品、软件平台和仿真内容三大部分组成。 ...

    新视界——“2015上海音乐学院数字媒体艺术学院(筹)毕业作品展.docx

    总的来说,“新视界——2015上海音乐学院数字媒体艺术学院(筹)毕业作品展”是一次里程碑式的事件,它见证了数字媒体艺术与音乐的完美碰撞,也为我国艺术教育和文化创新开辟了新的道路。通过这样的实践,我们可以期待...

    大数据-算法-数学课堂学习动力系统研究——实践视界中的数学教学.pdf

    首先,该研究提出了数学课堂学习动力系统的六大特征,即“流变的特征——意向性”、“障碍的特征——穿透性”、“环境的特征——情境性”、“本质的特征——实质性”、“动力的特征——问题性”以及“方法的特征——...

    星耀视界2018——如何使用深度学习技术搭建机器视觉解决方案.zip

    以下是对"星耀视界2018——如何使用深度学习技术搭建机器视觉解决方案"的详细解析。 首先,构建一个基于深度学习的机器视觉系统通常包括以下几个步骤: 1. 数据收集:这是任何深度学习项目的基础。对于机器视觉,...

    “视界”风向标——信息时代下的视觉之旅.pdf

    【“视界”风向标——信息时代下的视觉之旅】主要探讨了信息时代背景下,视觉艺术创作和传播的变革,特别是在互联网技术和计算机软件技术的推动下,视觉艺术呈现出的新特点和无限潜能。以下是对这些知识点的详细阐述...

    .net core, Grpc实例

    .NET Core和gRPC是现代应用程序开发中的关键技术,尤其在构建高性能、可扩展的微服务架构时。这篇内容将深入探讨这两个技术以及如何在Visual Studio 2022中结合使用它们。 首先,让我们理解.NET Core。它是一个开源...

    ICT新视界期刊

    教程名称:ICT新视界期刊课程目录:【】ICT新视界ISP特刊【】ICT新视界医疗特刊【】ICT新视界第2期【】ICT新视界第4期【】ICT新视界第6期【】ICT新视界第8期【】ICT新视界第9期【】ICT新视界第10期【】ICT新视界第11...

    java-使用java开发的视频播放器videoplayer

    Java开发的视频播放器VideoPlayer是一款基于Java技术构建的软件,它允许用户在各种操作系统上播放多媒体文件。本文将深入探讨使用Java进行视频播放器开发的相关知识点,包括核心技术、架构设计、多媒体处理以及用户...

    Java-Java函数式编程教程

    Java函数式编程是一种编程范式,它强调使用函数作为程序的基本构建块,将计算视为函数的组合,并且尽可能避免改变状态和可变数据。在Java 8及更高版本中,函数式编程得到了官方的大力支持,引入了Lambda表达式、...

    海阔视界 v8.5.rar

    《海阔视界 v8.5》是一款专为安卓用户设计的多功能软件工具,它集成了丰富的功能,旨在提供便捷的手机使用体验。这个版本(v8.5)的更新可能包括性能优化、新功能添加或者对现有功能的改进,以满足用户日益增长的...

    北航软件系统分析与设计课程项目实践——学术共享平台 Academic-Vision学术视界.zip

    大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发...

    Java毕业设计-基于SSM+微信小程序的车视界汽车销售购买 数据库+使用文档+演示视频+开题报告+任务书(高分优秀项目)

    Java毕业设计-基于SSM+微信小程序的车视界汽车销售购买 数据库+使用文档+演示视频+开题报告+任务书(高分优秀项目) 该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到97分,在window10/11...

    “美丽”新视界——从双十一看2021美妆社媒投放新趋势-微播易x中国美妆网-202011精品报告2020.rar

    报告标题:“美丽”新视界——从双十一看2021美妆社媒投放新趋势 这份报告由微播易和中国美妆网联合发布,聚焦于2020年双十一购物狂欢节后,对2021年美妆行业的社交媒体营销策略进行深入分析。报告的核心在于揭示了...

    新视界大学英语综合教程3 unit1PPT课件.pptx

    本资源是新视界大学英语综合教程3 Unit 1的PPT课件,主要针对大学英语教学的需求,旨在培养学生的语言能力和思维能力。通过对PPT课件的分析,可以总结出以下几点关键知识点: 1. 个人品质的重要性:PPT课件中强调了...

Global site tag (gtag.js) - Google Analytics