快手、孩子王、华为等专家分享大模型在电商运营、母婴消费、翻译等行业场景的实际应用 了解详情
写点什么

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

  • 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:44922

评论

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

IBM SPSS Statistics for Mac(spss数据统计与分析软件)v27.0.1中文激活版

iMac小白

Native Instruments Komplete Kontrol for mac(音源制作软件) v3.2.1版

Mac相关知识分享

MacBook Mac软件 mac软件下载 音乐制作软件

Linux设备驱动系列(17) —— 内核线程

Linux内核拾遗

C语言 Linux内核 内核线程 设备驱动

蓝易云 - node版本问题:Error: error:0308010C:digital envelope routines::unsupported

百度搜索:蓝易云

云计算 运维 服务器 Node 云服务器

拼多多API接口详解:自动化获取商品信息的高效指南

Noah

Proxyman Premium for Mac(网络调试和分析工具)v5.5.0激活版

iMac小白

Deskew Technologies Gig Performer for mac(现场控制乐器和声音机架 ) v5.0.9版

Mac相关知识分享

MacBook Mac软件 音乐软件 音频处理软件 图形图像软件

30天拿下Rust之深入Cargo

希望睿智

rust cargo

蓝易云 - gitlab配置webhook限制提交注释

百度搜索:蓝易云

Linux gitlab 服务器 云服务器 webhook

INFINI Labs 产品更新 | Easysearch 1.8.2 发布优化 CCR 性能

极限实验室

console Gateway agent easysearch 极限科技

Syncovery for mac(文件备份和同步工具)v10.14.9激活版

iMac小白

DBeaverUE for Mac(数据库管理软件) v24.1.0 版

Mac相关知识分享

数据库 Mac Mac软件 mac软件下载

蓝易云 - Mac部署Python语言json模块(Anaconda)

百度搜索:蓝易云

Python 云计算 运维 Mac 云服务器

蓝易云 - JS的循环、判断,选择语句

百度搜索:蓝易云

JavaScript Linux 运维 服务器 云服务器

MATLAB R2023a for Mac(商业数学软件)v9.14.0 (2337262)激活版

iMac小白

Axure RP 9 for Mac(交互原型设计软件)v9.0.0.3744中文激活版

iMac小白

PDF Reader Pro for mac(全能pdf编辑阅读软件)v4.0.2直装激活版

iMac小白

Video Cut Crop Join for Mac(mac视频剪辑合并软件 ) v3.9版

Mac相关知识分享

Mac软件 mac软件下载 视频编辑软件 视频处理软件

Aiseesoft Data Recovery for Mac(专业数据恢复软件)v1.8.22激活版

iMac小白

首季目标超额完成,生成式人工智能驱动交易和合作伙伴扩展助力

财见

CodeWF.EventBus:轻量级事件总线,让通信更流畅

沙漠尽头的狼

【脑图】技术选型的权衡因素

极客罗杰

mac电脑数据恢复软件Aiseesoft Data Recovery for Mac v1.8.22激活版

iMac小白

蓝易云 - GitHub配置SSH key

百度搜索:蓝易云

GitHub 运维 SSH 服务器 云服务器

强大的任务管理工具Tower for Mac v11.1 注册激活版

iMac小白

Tower下载 Tower mac版 Tower破解 Tower for mac

Video Cut Crop Join for Mac(mac视频剪辑合并软件 )v3.9激活版

iMac小白

批量图像水印添加实用程序Watermark Sense for Mac

Mac相关知识分享

图像处理 Mac软件 mac软件下载

AI并非万能,有效沟通是关键

Bruce Talk

AI 敏捷开发 Product Owner 提示词工程

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