NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

未来系统中的编程语言

  • 2008-01-07
  • 本文字数:1794 字

    阅读完需:约 6 分钟

今天,有一种趋势正日渐清晰;在未来的几年内,人们会越来越多地采用新的编程语言。当然,这并不意味着当前所用的语言会被取代,而是要结合不同的语言,并且针对特定问题选择恰当的语言。

对于特定的问题,什么才是恰当的语言呢?JRuby 开发者 Ola Bini 在最近的一篇 blog 上表示,他正从一个新的角度来审视这个问题。尽管 InfoQ 在很早以前就探讨过多语言编程(Multi-lingual programming,也被称为混合语言编程 polyglot programming),但是 Bini 预言了如何构建未来系统的场景;我们将会使用哪种语言——目的何在?

Bini 描述了三种不同的层和语言——或者说语言类型,它们分别适用于不同的层。当然,这里可不是老生常谈的表现层、业务层和数据层;Bini 以不同的方式进行了分割:

  • 稳定层(stable layer)–不包含大量的应用程序功能,可以使用静态语言构建
  • 动态层(dynamic layer)- 包含大量的应用程序功能,使用动态语言构建
  • 领域层(domain layer)- 包含大量的应用程序功能,使用领域特定语言构建

Bini 这样描述稳定层: > 第一层我称其为稳定层。尽管从功能性的角度上讲,它只占整个应用程序的很小一部分。但是程序的其他部分都是构建在它之上的,因此它是非常重要的一部分。所以,静态类型安全在这一层中将会大有裨益。

大部分应用程序的功能都存在于动态层: > 第二层是动态层。也许程序中一半的代码都集中在这一层。这一层中用到的语言主要是动态的、强类型的语言 […]

对于动态层,Bini 还说道: > 它绝对是有趣且多产的一层。很明显,由于我对 JVM 语言的痴迷,我相信这层与稳定层之间的交互绝对会产生非常强大的功效。

在领域层中,Bini 相信日渐火爆的 DSL 会成为主流。 > 第三层是领域层。它应该由 DSL 实现。根据系统的不同需求,可能需要一种或多种 DSL。大多数时候,将领域层实现为一种动态层内的内部 DSL 就足够 了,在这种情况下,第二层和第三层是很难区分的。但是有时候,我们的确应该拥有一个外部的 DSL,并可以与之交互。一个典型的例子就是规则引擎 (rules engine,比如 Drools)。

David N. Welton 随后回复了 Bini 的文章,在此他表达了对Bini 的观点的质疑: > 我对此表示怀疑,不知道他是否考虑了在驱动这一变革的过程中,处于基础层面的社会和经济因素。归根结底,编程语言是很多人得以生存的依赖,所以要理解语言未来会走向何方,你必须考虑到人的因素[…]

Welton 援引了一篇他写于几年前的文章,文章分析了编程语言的经济学。在文章中,Welton 指出大多数语言实现在今天都是免费的,因此,想要判断采用一种新语言是否能够获得更好的经济价值,就要看它是否能令代码:

  • 简单易用 – 有更多的人可以使用它
  • 效率更高 – 节约资源
  • 质量更佳 – 减少 bug 修复
  • 生产力更强 – 降低完成复杂工作的难度

Ola Bini 通过下面的解释进行了最后的总结,他表示不会信任下一代重要语言(译者注:The Next Big Language,源自 Steve Yegge 的一篇博客——下一代重要语言,很多人都确信 Steve Yeggie 所说的 Next Big Language 就是 Javascript 或者 ECMAScript),即使在同一层内也如此:

但是我必须要澄清一件事——我相信,在任何一层中,都不会有哪种语言会成为绝对的赢者。事实上,我认为倘若有一种语言在任何一层上战胜了其他语言, 都肯定是一件坏事情。或者说,我预见的未来是,我们可以看到 Jython、JRuby 和 Rhino 等许多其他语言会在同一层中共存,而且不必为此引发任何 对立和语言之争。

通过在 JRuby 以及其他语言上类似的工作,Bini 已经为虚拟机层次上的语言混合做出了大量的贡献。在另一个庞大的虚拟机平台上,通过提供在公共 语言运行时上的 VB.NET,C#和 C++ 的实现,Microsoft 也为多种语言做好了充分的准备。最近,Microsoft 还发布了动态语言运行时 (Dynamic Language Runtime),IronPython 和 IronRuby 就是构建在它之上的。这些都强调了一点,.NET 是一个多语言的平台。

不过,文章的最后仍然留下了一些有趣的问题:

  • Ola Bini 关于不同层和语言的观点真的是未来的游戏规则么?
  • 在一个虚拟机上实现多种语言的混合,其利与弊如何?
  • 其他潜在的混合语言的方式是不是更好的选择?(比如像面向服务的应用程序,其每个服务都由最稳定的语言实现,或者实现为一个简单的 Web 应用程序;将它在 url 级别上垂直地分为多个小的应用程序。)

一言以蔽之,如何在未来的系统中利用不同的编程语言呢?

查看英文原文 Programming languages in future systems

2008-01-07 10:022759
用户头像

发布了 53 篇内容, 共 12.6 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

这还不够全?阿里P8架构师耗时八年时间才整理出来这“Java核心知识PDF(Java高岗)

Java 程序员 架构 面试 后端

Android 资源溢出崩溃轻松解

字节跳动终端技术

字节跳动 移动开发 Mars 火山引擎 MARS-APMPlus

Java集合核心内容之葵花宝面,搞定90%以上的技术面!建议收藏

程序员小呆

Java 程序员 架构师

面试巨作!13万字!腾讯高工手写JDK源码笔记 带你飙向实战

收到请回复

Java jdk 面试 后端

Kubernetes 中的应用参数配置案例详析

Zilliz

数据库 Kuber k8s Helm

从简历被拒到收割8个大厂offer,我用了3个月成功破茧成蝶

收到请回复

Java 程序员 面试

理论+实例,带你掌握Linux的页目录和页表

华为云开发者联盟

Linux 内存管理 寄存器 页目录 页表

2021金九银十阿里Java岗7轮技术面经历,险幸上岸

Java 程序员 架构 面试 计算机

保持高效学习的 7 个方法

Phoenix

学习方法

封神总结!蚂蚁金服+滴滴+美团+拼多多+腾讯15万字Java面试题

收到请回复

Java 程序员 面试 微服务 大厂Offer

手把手带你做LiteOS的树莓派移植

华为云开发者联盟

树莓派 系统 LiteOS arm 树莓派移植

Zookeeper 集群部署的那些事儿

牧小农

zookeeper

JS的深浅复制,原来如此!

华为云开发者联盟

js 序列化 深复制 浅复制

极客架构营2期模块5作业

Ping

阿里P8手抄本惨遭泄露,并出现病毒式传播,致28人斩获大厂offer

收到请回复

Java 面试 阿里 大厂Offer

从互联网“后来者”到“引领者”:这场IPv6大会上,我读懂了中国式创新

脑极体

相约 DTCC 2021 | Tapdata 受邀分享:如何打造面向 TP 业务的数据平台架构

tapdata

GitHub上首本IntelliJ IDEA操作手册,标星果然百万名不虚传

Java 架构 面试 程序人生 编程语言

程序员常用的工具软件推荐

程序员小呆

Java c++ 程序员 架构师 Go 语言

马萨卡!阿里大佬珍之若宝的最强高并发pdf,竟然被上传GitHub开源

Java 架构 面试 编程语言

网络安全产品之堡垒机应用于金融行业案例讲解

行云管家

云计算 网络安全 等保 堡垒机

网易云信 NERTC 高清画质体验之 H.265的工程实践 | 体验共享技术专题

网易云信

Java 测试 音视频 视频

汇纳科技数据科学团队研究商场活动效果并优化的论文被ISR期刊接收

会声会影和剪映在音频处理功能上的比较

懒得勤快

我凭借这份pdf拿下了蚂蚁金服、字节跳动、小米等大厂的offer

Java 编程 程序员 架构

2022年最新Java小白学习路线总结,从零基础跟着学习不掉队(PDF+视频分享篇)

Java 编程 程序员 计算机 java面试

惊!HUAWEI高工熬夜赶出这本20W字的图解计算机操作系统指南手册,竟被我偶然发现!

Java 架构 面试 程序人生 编程语言

为什么网络 I/O 会被阻塞?

编程 架构 操作系统 计算机

英特尔举办第十四届物联网峰会,携手中国生态伙伴迈向融合边缘新时代

科技新消息

惊了!网易架构大牛熬夜手敲千页网络协议笔记,竟在Github上标星百万!

Java 架构 面试 程序人生 编程语言

Qcon 免费报名 | 融云「实时通信技术专场」议题抢鲜看

融云 RongCloud

开发者 通信云 场景化

未来系统中的编程语言_JVM_Niclas Nilsson_InfoQ精选文章