ArchSummit全球架构师峰会门票9折倒计时中~ 了解详情
写点什么

Java、Ruby 和持续负担

  • 2007 年 10 月 09 日
  • 本文字数:789 字

    阅读完需:约 3 分钟

最近在 ActiveRecord 与 Hibernate 之间的争论当中,Google 的 Bob Lee 用了“持续负担(continuous tax)”这个词,来形容使用 Ruby 这样的动态类型语言相对于 Java 这类静态类型语言的优缺点:

一般来说 Java 的学习曲线比 Ruby 要陡峭,特别是如果你考虑到泛型和学习最大限度地发挥语言的能力。Java 的类型系统对长期的可维护性和可用性有好处。而利用 Ruby 你可以抄捷径省掉这些步骤,更快地顺利得到结果,但你也要付出持续负担(continuous tax)。

Google 员工以及 TestNG 的作者 Cedric Beust 也注意到了这个词:

“持续负担”这个词是说,当你需要维护或使用用 Ruby 或 Python 这样的语言编写的 API,你能够得到的信息很少,即便你通过查看测试代码理解了 API 的含义(有谁这样做过吗?),这种理解和知识也是短暂的,一年之后你需要再次修改同一段代码的时候,你还要再重复一次这样的过程……

Brian Doll 将讨论引向了测试与“持续负担”的关系,Beust对此回应说

实际上我并不认为编写测试属于我先前提到的持续负担。虽然我同意用静态类型语言的时候比用动态类型语言通常要少写一些测试,但是代码行数或者测试数量的差异还没有大到能够真正影响开发过程。持续负担是由代码明确性方面的损失引起的,动态语言写出来的代码通常要蒙受这种损失。虽然看起来无关痛痒,实际上丢失类型信息对代码的可维护性和可读性有可怕的影响,因为你看不出传给方法的一个对象到底是什么类型,更糟的是使得连最简单的自动重构也没法应用,比如重命名一个公开方法。

Dion Almaer 根据他自己使用动态和静态类型语言的经验进行了反击

  • 动态语言编写的项目代码较少,团队维护起来更容易。
  • 动态语言项目的团队较小,因此我们更容易维护(我们可以用更少的人做更多的事)。
  • Java 项目通常是过度设计的(不是 Java 本身的问题,而是传染了社区中很大一部分人的流行病)。

查看英文原文: Java, Ruby, and the Continuous Tax

2007 年 10 月 09 日 18:31510
用户头像

发布了 225 篇内容, 共 54.4 次阅读, 收获喜欢 42 次。

关注

评论

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

【LeetCode】单词长度的最大乘积Java题解

Albert

LeetCode 5月月更

集成底座项目实施规程

agileai

主数据管理 集成底座 企业服务总线 项目实施 统一身份

新思科技探究保护供应链安全需要考虑的六个因素

InfoQ_434670063458

软件 新思科技 软件供应链

OpenHarmony 3.1 Release版本关键特性解析——ArkUI框架又有哪些新增能力?

OpenHarmony开发者社区

Open Harmony

开发技术指南 | 最全 Substrate 与 Polkadot 技术文档、教程、课程

One Block Community

区块链 技术 波卡生态

解读ICDE'22论文:基于鲁棒和可解释自编码器的无监督时间序列离群点检测算法

华为云开发者联盟

数据挖掘 数据库 时间序列 自动编码器

手把手教你打造一套最牛的知识管理系统

小炮

能够发现零日漏洞模糊测试威力几何?

极狐GitLab

security DevSecOps

Apache APISIX v2.14.1 探索性版本发布,进军更多领域

Apache APISIX 中国社区

服务注册与发现 API网关 Apache APISIX APISIX 网关

Serverless JOB | 传统任务新变革

Serverless Devs

Serverless SAE

phpstorm 配置 Xdebug 调试

CRMEB

查询语句写了limit 1,为什么依然很慢?

华为云开发者联盟

后端 开发 计算引擎 limit 1

第一次读 “Clean” 系列,并没有觉得这是一本多好的书

博文视点Broadview

低代码构建物联网平台,让物联网项目更简单

AIRIOT

物联网 低代码开发

GitHub 3.1K,业界首个流式语音合成系统开源!

百度开发者中心

昆仑芯科技加入龙蜥社区 ,赋能智慧开源,共筑AI芯生态

OpenAnolis小助手

芯片 龙蜥社区 CLA 昆仑芯科技

全自动、可视化开发,成为敏捷转型落地关键词

SoFlu软件机器人

AI+工业互联网:百度AI专利讲述“中国智造”

百度开发者中心

陆奇:“黑客精神”过时了吗?答案是永远不会

图灵教育

nginx 程序员 服务器 计算机

架构实战营 第 6 期 模块七课后作业

火钳刘明

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

在进行行情 tick 数据存储时,哪种数据结构查找起来更快?

TDengine

数据库 tdengine 时序数据库

名师开团,倾力指导!CCF GitLink 编程夏令营来袭,亚马逊云科技开源专家携丰厚奖金,与你相约!

亚马逊云科技 (Amazon Web Services)

亚马逊云

软件开发模型有哪些?

源字节1号

软件开发

七天玩转 PolarDB-X 开源训练营 完成任务更有AirPods大奖等你拿!

阿里云数据库开源

数据库 阿里云 开源 分布式 PolarDB-X

银行应将低代码能力作为在评估厂商综合能力的一个维度

易观分析

低代码 银行

2022云原生安全发展24个洞见

青藤云安全

网络安全 容器安全 镜像安全

国内首个纯数字藏品元宇宙世界“ADAMeta”星城宇宙开启公测

最新动态

2022年第1季度中国跨境进口零售电商市场规模为983.1亿元

易观分析

跨境电商

深入浅出Nginx实战与架构原理

C++后台开发

nginx 架构师 后端开发 Linux服务器开发 C++后台开发

视频直播技术干货:一文读懂主流视频直播系统的推拉流架构、传输协议等

JackJiang

实时音视频 直播技术 即时通讯IM

AI在游戏反外挂中的应用与实践

AI在游戏反外挂中的应用与实践

Java、Ruby和持续负担_Java_Scott Delap_InfoQ精选文章