写点什么

多语言和 DSLs 会使 Java 成为最后的大语言吗?

  • 2008-05-24
  • 本文字数:1126 字

    阅读完需:约 4 分钟

Ola Bini 说这个世界不会再有新的大(big)语言了,因为开发者要根据其问题域来选择不同的语言。同样,Martin Folwer 说开发者选择语言的根据是它能做什么,就像他们选择框架一样。另一方面,Joe Winchester 说你只能精通一种语言。

Ola Bini 在一篇最近发表的文章中详细分析了 Haskell、Java 和 Ruby 的类型系统的优劣,对这些语言进行比较并非不可能,但却很难

现在我们有三种语言。一种静态检查较强,比如 Haskell。一种静态检查较弱,比如 Java。还有一种是动态检查的,如 Ruby。从我的角度来说,他们分别善于不同的方面。甚至在同一个领域里他们都不会互相竞争。对他们进行比较真的没有什么太大意义。

Ola在多语言中找到了希望

一个优秀的程序员通过其判断来提供最佳值。这包括为工作选择最佳的语言。如果 Ruby 使你能用比 Java 快 5 倍的速度完成同样的功能,你需要考虑一下这是否可接受。另一方面,Java 的 IDE 使得维护变得很简单,但是通过使用 Ruby 代码,你需要维护的代码量只有 Java 的五分之一。这种交换可接受吗?有些情况下,是的。

最后他建议:

成为优秀的通晓多种语言的程序员。这个世界不会再有新的大语言了,你需要调整思维适应这个环境。

Joe Winchester 在 Java 开发者杂志上给出了一个不同的视角。他相信:

你只可能精通一门语言——如果什么都会,那其实就是什么都不会。

Joe 回想起 Smalltalk 社区所做的尝试:让 Java 运行在他们的虚拟机上(Universal Virtual Machine——UVM),这一切简直就是一场噩梦。

最后他说:

我们需要完善 Java,而不是对 VM 做一些手脚,更不是仅仅为了适应几年前就已不存在的语言而徒增复杂性。

如果我们不把 Java 看做一门语言,而仅仅看做是一些“Java 技术”之类的东西的话,那么我们正在用其他语言来减弱 Java 的能力,并提高了构建优秀软件的成本。

另一方面,Martin Folwer 也提到我们可能正在走进这样一个时期:

我们看到项目中使用了多种语言,开发者选择语言的根据是它能做什么,就像他们选择框架一样。

他说自从 SmallTalk 之后已经发生了很多变化

我们难道回退到 80 年代晚期和 90 年代初期那种语言争论的时代了吗?我想我们将看到多语言的争论,但这有一个很重要的区别。在 80 年代晚期,语言之间很难实现紧密的交互。现在人们将很多精力放在使得不同语言能紧密交互的环境构建上。脚本语言本来就与 C 有着密切的关系。人们投入了大量精力实现 JVM 和 CLR 平台的交互。人们在库的构建上花费了大量时间以使语言能忽略它们的不同。

去年在 InfoQ 上有一篇文章讨论到 DSLs 是否会终结单语言开发

你的想法如何?多语言和 DSLs 会占据主导地位,从而不给新的“下一代的大语言”留下任何余地吗?

查看英文原文: Will Polyglotism and DSLs make Java the Last Big Language?

2008-05-24 08:271035
用户头像

发布了 88 篇内容, 共 269.1 次阅读, 收获喜欢 8 次。

关注

评论

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

web安全之挖掘Linux内核漏洞

网络安全学海

Linux 网络安全 渗透测试 WEB安全 漏洞挖掘

Go学习笔记——复合数据结构之结构体

为自己带盐

Go 学习笔记 3月月更

一款开源监控和警报平台:Prometheus

Ethereal

中兴ZXR10 160智能集成多业务路由器快速安装指南,图文并茂!

Ethereal

文章是“自己的”好

BY林子

技术写作

低代码实现探索(三十五)模型页面vs工程化方式好

零道云-混合式低代码平台

基于STM32设计的森林火灾预警系统

DS小龙哥

物联网 3月月更

系统学习 TypeScript(六)——认识接口

编程三昧

typescript 前端 3月月更

C语言中如何输出汉字;如何用C语言汉字编码输出汉字(超全版)

北极的大企鹅

c 问题处理

我的第一个 Flutter 应用之旅

岛上码农

flutter ios 安卓 移动端开发 3月月更

容器化和编排有什么区别?

Ethereal

【架构训练营-模块四】

默光

架构训练营5期 存储架构

重学架构之千万级学生管理系统的考试试卷存储方案

陈华英

架构实战营 #架构实战营

Lyft微服务研发效能提升实践 | 4. 基于自动验收测试的部署门禁

俞凡

研发效能 大厂实践 lyft 3月月更

c语言结构体中的一个char数组怎么赋值?

北极的大企鹅

c 问题处理

2022 C语言学习最强干货分享,值得收藏

C语言与CPP编程

程序员 C语言 编程‘

作业四

Geek_f3e842

架构实战营

从头梳理,看看中国的 ICP 备案制度

白宦成

备案

kube-scheduler源码分析(2)-核心处理逻辑分析

良凯尔

Kubernetes 容器 源码分析 Kubernetes, 云原生, eBPF

千万级学生管理系统的考试试卷存储方案

「架构实战营」

蚂蚁金服-财富编码军规

Beaver

编码规范 编码军规 蚂蚁金服-财富编码军规

命令行管理 Linux服务器困难?别怕,今天介绍一款基于 Web 的Linux管理神器:Webmin

Ethereal

高并发是一种架构思维模式

陈俊

高并发 技术架构 技术认知

java如何对接企业微信

经典鸡翅

3月月更

c语言怎么避免打印空数据?

北极的大企鹅

c 问题处理

电商秒杀系统

swallowluo

架构实战营 #架构实战营 「架构实战营」

【高并发】两种异步模型与深度解析Future接口

冰河

Java 并发编程 多线程 高并发 异步编程

站点可靠性工程之旅

俞凡

研发效能 SRE 3月月更

Linux 中的 BusyBox 是什么?如何使用它?

Ethereal

智慧车行预约小程序设计方案

CC同学

假如让你来设计SSL/TLS协议

元闰子

网络安全 TLS 操作系统 ssl SSL/TLS协议

多语言和DSLs会使Java成为最后的大语言吗?_Java_Dio Synodinos_InfoQ精选文章