如何 0 成本启动全员 AI 技能提升?戳> 了解详情
写点什么

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

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

评论

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

外贸电商网络与普通网络的差异

Ogcloud

企业组网 企业网络 外贸网络 海外网络专线 海外网络连接

JDK8到JDK17都升级了那些新特性?又有哪些能常用好用的?

不在线第一只蜗牛

Python jdk

商家智能助手:多智能体在电商垂域的技术探索

京东科技开发者

探索无界:践行科学家精神与工程师文化

京东科技开发者

找到你的小众市场,打造你的专属产品几个步骤

Immerse

产品 创意 独立开发

TikTok视频0播放量怎么办?六步教你解决

Ogcloud

TikTok 云手机 海外云手机 tiktok运营 tiktok限流

告别焦虑,天润融通AI机器人托管为客服团队一键减负增效

天润融通

人工智能

英特尔酷睿 Ultra 9 275HX 成为 PassMark 上最快的笔记本处理器

E科讯

AMD 锐龙 7 9800X3D 处理器被曝看视频时烧毁

E科讯

一键部署+限免体验!盘点如何在华为云上体验DeepSeek

华为云开发者联盟

AI 华为云 大模型 昇腾云 DeepSeek

【YashanDB知识库】如何从内存中获取SQL语句的执行计划

YashanDB

数据库 yashandb

普惠AI 如何在 Anolis OS 8 上部署生产可用的 DeepSeek 推理服务

OpenAnolis小助手

AI 操作系统 龙蜥操作系统 Anolis OS DeepSeek

普通人也能轻松掌握的20个DeepSeek高频提示词(2025版)

不在线第一只蜗牛

DeepSeek

云电脑:快速部署无限制、可联网、带专属知识库的私人 DeepSeek 大数据模型

京东科技开发者

飞算 JavaAI:开发界的 “机器人”,为你打工不是梦!

飞算JavaAI开发助手

低代码+AI!DeepSeek新时代,老板们坐不住了!

引迈信息

BRASS管乐器演奏插件Arturia Augmented BRASS for mac激活版

小玖_苹果Mac软件

Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计

Apache Flink

大数据 flink 实时计算 实时湖仓 paimon

Agent应用实战:从广告智能助手落地到平台化赋能

京东科技开发者

优秀的词典工具Eudic欧路词典 for Mac中文激活版

小玖_苹果Mac软件

【YashanDB知识库】使用DataX工具迁移yashan数据到maxcompute

YashanDB

数据库 yashandb

AI+智能财务 | 选择智能月结,即刻获得丝滑结账体验!

用友智能财务

财会

人工智能丨个人如何用DeepSeek做副业

测试人

人工智能

沉浸式演示:在新老项目中如何快速上手通义灵码 AI 程序员

阿里云云效

阿里云 云原生 通义灵码 AI程序员

案例 | 跨越语言边界:20+种语言的AI图像生成挑战

澳鹏Appen

多模态 大模型 图像生成 小语种 LLM

飞算JavaAI:AI+时代下的行业趋势引领者与推动者

飞算JavaAI开发助手

沉浸式演示:在新老项目中如何快速上手通义灵码 AI 程序员

阿里巴巴云原生

阿里云 云原生 通义灵码

基于人工智能技术的图像处理软件Topaz Photo AI for mac激活版

小玖_苹果Mac软件

实用的iPhone数据恢复软件PhoneRescue for iOS中文激活版

小玖_苹果Mac软件

【YashanDB知识库】从PostgreSQL迁移到YashanDB如何进行数据行数比对

YashanDB

数据库 yashandb

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