写点什么

可伸缩性:动态和静态程序设计语言

  • 2008-02-25
  • 本文字数:1667 字

    阅读完需:约 5 分钟

紧随着个人信息管理项目 Chandler 的消亡,在 TSS 上展开了一场关于动态语言可伸缩性潜力(scalability potential)的讨论。Ted Neward 试图跳出语言之争,就此问题提出一些结构性的见解

首先,Neward 强调一种语言的可伸缩可以按照“项目大小,就像代码行数”或者“处理能力(像‘需要达到每秒处理10 万请求’)”来理解。这两者是需要 加以界定的,因为即使两者都很重要,但它们并不总是齐头并进的:比如使用汇编语言或者C,有助于性能的伸缩性,而不是(项目)大小的伸缩性。

Neward 根据“语言扩展或者增强项目复杂度预算(complexity budget)的能力”来定义大小的伸缩性。他引用了 Mike Clark 的概念,意指“每个项目都有着自己固定的复杂度预算,你在基础架构(infrastructure)和工具上花费的精力越多,那用在业务逻辑上 的精力就越少。”按照 Neward 的观点,这正是关于静态语言和动态语言可伸缩性能力争论的核心。

静态语言的拥护者辩论道,类型安全检查结果减少了程序员的工作量,“作为一个自动化工具运行一系列不需要程序员手写的测试”。此外 IDE 的支持为这些语言 提供了强大的重构工具,这“被广泛认为对动态语言平台来说是不可能的。”然而,动态语言支持者拿出了这样的事实——“这些语言的动态性意味着减少在创建和 维护代码时的工作量,结果便是相对静态语言少的多的代码行数 [……],因而含蓄地提高动态语言的可伸缩性”。

按照 Ted Neward 的观点,“使用动态语言的程序员每行代码可以典型地产出比他使用静态语言的同事更多的工作”,但是他极有可能需要对没有编译器的动态语言编写更多的单元测试,在某种程度上,来确保一定数量的系统测试。

就 IDE 重构方面,Neward 引用为 Eclipse 引入重构支持的 Dave Thomas 的意思。比如,由于动态语言直到运行时才能确定类型信息,所以其给出的信息是有限的。可是,Thomas 强调“简单地搜索和替换整个文件,这 是任何一款非凡的编辑器所提供的,其效果与 Eclipse 或者 IntelliJ 提供的重构功能有很多相同之处,因为类型不再是个问题。”Neward 强调 说他期望 IDE 提供商开发针对动态语言而设计的工具:

[……] 相对容易地想到,IDE 可以主动地去“运行”正在编写中的代码,这与 Eclipse 在整个编辑过程中执行常量编译(constant compile)、跟踪类型信息是相似的。

此外不应该忘记“最初的重构浏览器是为了 Smalltalk(世界上最老的动态语言之一)并使用其构建的”,这是在 TSS 的争论中突显出来的。

至于处理能力的可伸缩性,Ted Neward 强调它是重要的,因为“不能在使用高峰期间处理预期用户负荷的项目实际上是失败的,正如从来没有被安装过的项目一样。”

动态语言反对者争论道,动态语言无法在处理能力方面缩放,因为它们是“构建在其自己的运行时(runtime)之上的,这可以说在工程效果上大大逊色于 JVM Hotspot 或者 CLR 实现中的垃圾收集装置。”而动态语言支持者回应道“现在有许多 web 应用和网站在 MRV(Matz 的 Ruby VM?)解释器(与 Ruby 一同安装,‘开箱即用’)之上具有‘很好的’伸缩性”。

轮到 Ted Neward 时,他指出“随着 JRuby 的发布,以及像 IronRuby 和 Ruby.Net 这样的项目的运作,完全有理由相信动态语言必会运行在像 JVM 和 CLR 这样的现代虚拟机之上的”:

虽然动态语言运行在针对静态类型语言而设计的 VM 上通常会带来一定的性能和内存的损失,但工作在 DLR 和 MLVM(译注:多语言 VM)之上,以及对底层平台的增强将更有利于动态语言场景(scenario),而这将减少性能和内存的损失。

Ted Neward 似乎认为这是一个机会,在项目大小和处理能力两个方面通过配合工具并针对其特征优化运行时环境来改善动态语言的可伸缩性。更一般而言,他相当 反对将静态语言和动态语言对立的做法。他强调一个事实,就是一些应用(例如 Excel)成功地将两者结合起来,“通过创建一个核心引擎,和围绕它的一个脚 本引擎——非编程人员可以通过有意义的方式运用这个引擎。”

Neward 以改撰马克思的一句话作为总结:“各尽语言所能,按项目需要分配。”

查看英文原文 Scalability: Dynamic and Static Programming Languages

2008-02-25 00:441205

评论

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

MySQL数据一键同步至ClickHouse数据库

RestCloud

MySQL 数据库 数据同步 ETL Click house

系统整容纪:用知识来“武装“自己~认识MySQL的锁与事务

京东科技开发者

一行代码性能翻倍?Rust开发者不可不知的“内存黑科技”!

Yeauty

rust malloc Wasm memory jemalloc

Academic Pages - 学术个人网站模板

qife

Jekyll 学术网站

在 AWS 上重构数据中台,这家出海企业选择了数栈

袋鼠云数栈

大数据 数据中台 运维 数据治理 大数据产品

HarmonyOS安全与隐私分论坛举行,全面展示星盾安全2.0生态创新实践

最新动态

用 AI 解锁技术调研的新姿势

京东科技开发者

啥时候上RAG?啥时候上微调?丨实战笔记

阿星AI工作室

AI 产品经理 rag 微调

什么是低代码?低代码的技术发展、技术领域及对比纯代码的优劣势

优秀

低代码 低代码平台 低代码技术

高并发系统的艺术:如何在流量洪峰中游刃有余

京东科技开发者

Meta 成立超级智能实验室,多名顶尖语音科学家加入;TEN VAD 开源 ONNX 模型,GitHub 破 700 星丨日报

声网

“念念不忘,必有回响” 与 “着力即差”

酱紫的小白兔

DolphinScheduler 社区喜讯:两项学生项目入选“开源之夏 2025”!

白鲸开源

大数据 开源 数据集成 Seatunnel 开源之夏

华为OceanProtect跻身Gartner®备份与数据保护平台魔力象限"挑战者"

财见

【7 月 5 日北京】还有 4 天见面,为你整理大会现场还需要知道的事!

Apache IoTDB

对话 Wispr Flow 创始人 Tanay:语音输入,如何创造极致的 Voice AI 产品体验

声网

DistillQwen-ThoughtY:通过变长思维链蒸馏,全面提升模型推理能力!

阿里云大数据AI技术

人工智能 数据分析 数据处理 模型应用 #大数据

财会创新智启未来,2025年ACCA华南区年度峰会成功举办

财见

真正的生产力来了!Docker迁移部署两步搞定!

不在线第一只蜗牛

Java Docker 容器

白鲸开源双项目齐中选,助力“开源之夏 2025”再结硕果!

白鲸开源

开源 DataOps 开源之夏 白鲸开源

2025第三届中国SRE大会成功举办

雅菲奥朗

国产数据库StarRocks在数栈轻量化数据开发的全流程实践

袋鼠云数栈

大数据 运维 数据治理 数据管理 数栈

DolphinScheduler 社区月报(5-6 月):修复优化齐发力,贡献者高光时刻回顾!

白鲸开源

大数据 开源 Apache DolphinScheduler 贡献者 Apache基金会

我对 AI 写作的一些思考:Writing in the Age of LLMs

Baihai IDP

人工智能 AI Baihai IDP AI 写作

DolphinScheduler 6 个高频 SQL 操作技巧

白鲸开源

sql 大数据 开源 Apache DolphinScheduler 任务调度

基于StarRocks的指标平台查询加速方案

袋鼠云数栈

数据库 运维 数据管理 指标管理 指标管理平台

SeaTunnel 社区月报(5-6 月):全新功能上线、Bug 大扫除、Merge 之星是谁?

白鲸开源

大数据 Clickhouse 数据集成 Apache SeaTunnel 版本发布

数栈 × AWS EMR On EC2 适配实践:打造出海企业可落地的云上数据中台解决方案

袋鼠云数栈

大数据 数据治理 AWS 数据运营 数栈

零代码打造专业级工业数字孪生

袋鼠云数栈

数字孪生 数据应用 数字孪生城市 易知微 3D场景

SeaTunnel 社区 2 项目中选“开源之夏 2025”,探索高阶数据集成能力!

白鲸开源

数据库 大数据 开源 Apache SeaTunnel 开源之夏

【HarmonyOS】鸿蒙使用仓颉编程入门

GeorgeGcs

可伸缩性:动态和静态程序设计语言_编程语言_Sadek Drobi_InfoQ精选文章