飞天发布时刻:2024年 Forrester 公有云平台Wave™评估报告解读 了解详情
写点什么

多语言和 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:27900
用户头像

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

关注

评论

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

阿里,快手,拼多多等7家大厂Java面试真题,Java面试题高级

Java 程序员 后端

主机安全是什么意思?安全体检包含哪些方面?

行云管家

运维 服务器 主机 主机安全 安全体检

Percolator模型及其在TiKV中的实现

vivo互联网技术

数据库 Percolator 分布式,

iOS开发面试拿offer攻略之数据结构与算法篇附加安全加密

iOSer

ios 数据加密 iOS面试 iOS逆向 iOS算法

JavaScript进阶(七)call, apply, bind

Augus

JavaScript 9月日更

玩转TypeScript工具类型(下)

有道技术团队

typescript 大前端 网易有道

阿里,快手,拼多多等7家大厂Java面试真题,Java笔试题及答案详解

Java 程序员 后端

乘着汽车智能化的浪潮,“汽车人”的职业方向选择(三)

SOA开发者

软件定义汽车 车载控制单元

Alibaba内部“Java架构核心宝典”来袭,全新技术限时开源

Java 编程 程序员 架构 面试

深入理解掌握零拷贝技术

Linux服务器开发

网络协议 零拷贝 Linux服务器开发 Linux内核 用户态

mydumper备份工具介绍与使用

Simon

MySQL

低代码应用:软件开发的一体化最新形态!

优秀

低代码

测试开发之前端篇-CSS层叠式样式表

禅道项目管理

CSS html

一部好看过武侠小说的热血互联网史!

博文视点Broadview

千万级数据迁移与分表的技术方案-企业产品实战

谙忆

Java 后端 分库分表 引航计划

幻读是啥,会有什么问题?如何解决?

Java MySQL 数据库 面试 后端

网络攻防学习笔记 Day144

穿过生命散发芬芳

高可用 9月日更

金融级分布式事务解决方案DTC

tom

为什么不推荐Python初学者直接看项目源码

Felix

Python 编程 开发 Programing 阅读代码

堡垒机作用之事后审计详细讲解-行云管家

行云管家

运维 网络安全 运维审计 事后审计

作为一线技术人员,如何更好地提升自己

谙忆

管理 成长 引航计划

基于Tensorflow + Opencv 实现CNN自定义图像分类

华为云开发者联盟

tensorflow KNN OpenCV CNN

2021年公有云市场的5大趋势

云计算

国庆高质量出行,可视化开启智慧旅游

ThingJS数字孪生引擎

大前端 物联网 可视化 旅游 数字孪生

CSS 轻松制作 SVG 动画

devpoint

css3 SVG 9月日更

对Python爬虫编写者充满诱惑的网站,《可爱图片网》,瞧人这网站名字起的

梦想橡皮擦

9月日更

Linux用户密码管理

在即

9月日更

FunTester框架Redis性能测试之list操作

FunTester

redis 性能测试 测试框架 压力测试 FunTester

与springcloud整合的框架源码读取入口

Java 编程 架构 微服务

二十不惑的年纪,我简直走了狗屎运(4面拿字节跳动offer)

Java 程序员 架构 面试 计算机

Tapdata 实时数据中台在智慧教育中的实践

tapdata

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