限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

语言是如何影响框架设计的?

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

    阅读完需:约 4 分钟

是 Ruby 语言使得 Rails 这样高生产力的框架如此容易使用吗?是 Java 语言的特性阻碍了高生产力框架的创建吗?Frank Sommers 写道,框架是开发人员生产力背后的核心驱动力,而且他对是不是某些语言的土壤可以生长出优秀的框架而有些语言却不能这个问题进行了一番研究。他的帖子引起了大规模争论,其中有针对闭包是否会引出更好的Java 框架的相关讨论。

Sommers 参考了 Cay Horstmann 将 Java 的样板式语法和它缺少“合适的Web 框架”视为遗憾的帖子。Sommers 拿Java 和Ruby 进行对比后说到,Ruby 的代码很优雅整洁,容易学习,写一个典型的Rails 应用也用不着像Java 需要那么多的代码。Rails 利用了Ruby 的元对象协议和模块系统来把开发人员隔离于众多复杂性之外。

Sommers 还拿 Flex 和 ActionScript 与 Rails 和 Ruby 进行了对比:

在 Flex 身后的是 ActionScript 3 语言。它是逐渐成型的 EcmaScript 4 规范的一个版本,它合并了 Java 语法中最丑陋的部分和 JavaScript 最离奇孤僻的一些特性。ActionScript 3 试图在一锅汤里面同时加入动态型别和静态型别这两味主菜,此外还有函数式编程和面向对象编程。这锅汤已经没法喝了,看一眼都会让人眼花缭乱、头晕目眩。 但是 Flex 的设计者把这些复杂性都隐藏起来了——就像 Rails 一样——Flex 应用只是由一些简短的 ActionScript 代码片段、小段函数,与一个基于 XML 的 UI 布局语言混合而成。学习 Flex 比学习 ActionScript 3 高级特性的难度低多了,不过要掌握 Flex 框架如何实现某些关键性功能也绝非易事。

Flex 和 Rails 都选择了它们所尊崇的语言中相对容易掌握的某些方面,而且在它们的设计意图中也在强烈建议开发者使用这些特性。这正是每一个框架都应该做的。

Sommers 随后讨论了可扩展性语言的设计思想。Java 的可扩展性很强,但是处理小问题却不是那么得心应手。Ruby 的可扩展性也许不是那么好,但 Rails 为 Ruby 完成了这一切。Sommers 认为 Scala 具有优秀的伸缩性,或许可以在它的基础上创建出简单的框架。

在这场讨论之外,Bruce Tate曾经撰文介绍过 Seaside ——一个拥有可与 Rails 的生产力相媲美的基于 Smalltalk 的 Web 应用框架:

我并不是说在未来 10 年里我们都将使用 Smalltalk 编程。那列靠站的火车已经锈痕斑斑。不过我认为如果有足够吸引人的经济利益驱动的话,语言的问题就会消失得无影无踪。给我一个用凌乱无序荆棘丛生的语言编写的应用,要是它能比流行语言所写的应用快上 5 倍,还容易维护,我每天所消耗的时间精力也能减少 2/3,我才不去管你用的是哪门子语言呢。

Appcelerator 这个 Web 框架走了一条不一样的路。它是与语言无关的,为 Java、Ruby、PHP、.NET 和 Python 都提供了 SDK。

也许 Tim Berners-Lee 的最小能力原则(Rule of Least Power)是人们应该记住的:“在适合用来表示万维网中的信息、约束或是程序的语言中,请使用功能最少的那一个”。

查看英文原文 How Does Language Impact Framework Design?

2008-02-25 04:361005
用户头像

发布了 197 篇内容, 共 60.0 次阅读, 收获喜欢 21 次。

关注

评论

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

仿真驱动创新丨Altair仿真+AI如何赋能轨道交通数字化升级列车创新?

Altair RapidMiner

数字孪生 仿真 CAE physicsAI 轨道交通

DeepSeek 谈运维:AI 时代运维资源升级,从数据资产到智能能力的进阶之路

嘉为蓝鲸

AIOPS 智能运维 DeepSeek

TextIn ParseX重磅功能更新:支持切换公式输出形式、表格解析优化、新增电子档PDF去印章

合合技术团队

人工智能 算法 #大数据

互联网人离职空窗,我该怎么回答HR最认可?

测试人

面试

行业分享丨虚拟原型技术:颠覆传统,引领矿业装备设计新纪元

Altair RapidMiner

AI 数字孪生 仿真 CAE 离散元仿真

用低代码打造企业AI中台,真的可行吗?

天津汇柏科技有限公司

人工智能 低代码

EI与MCP的故事

京东科技开发者

中国主场!“世亚人工智能展·世亚智博会”重塑科技版图

AIOTE智博会

智博会 人工智能展 世亚智博会

信息化、数字化、数智化之间的区别和联系

积木链小链

数字化 信息化 智能制造

AI智能体:大模型之后的下个技术革命?

测试人

人工智能

KET口语陪练APP的功能

北京木奇移动技术有限公司

软件外包公司 AI口语APP KET考试

CST软件如何将Altium的PCB板子导入CST

思茂信息

cst仿真软件 CST软件 CST Studio Suite

“一键登录“变”一键沦陷”?小心高校统一认证平台成黑客“后门"!

权说安全

网络安全 统一身份认证

工单智能化应用有哪些,工单管理系统选型推荐

云智慧AIOps社区

用小猫的视角看世界——关于「小猫相机」的一点浪漫构想

花十君

小猫相机 浪漫视角 柔软镜头 猫咪视角

什么是数据集市(Data Mart)?

镜舟科技

数据仓库 OLAP 数据集市 多维数据模型 在线分析处理

VMware ESXi 8.0U3e macOS Unlocker & OEM BIOS 集成 AQC 网卡驱动定制版

sysin

esxi

嘉为蓝鲸受邀出席 2025 GOPS全球运维大会·深圳站

嘉为蓝鲸

GOPS全球运维大会

信创BeeWorks-国产化企业级im即时通讯软件

BeeWorks

即时通讯 IM

迭代器失效:99%的C++程序员都会踩的坑 !

秃头小帅oi

财务合同MCP实践

京东科技开发者

LangChain4j如何自定义文档转换器实现数据清洗?

王磊

Uniapp开发鸿蒙应用教程之自定义导航栏

幽蓝计划

鸿蒙跨平台开发

大模型技术跃迁,容联七陌开启智能客服新纪元

人称T客

小支同学华为鲲鹏微认证——鲲鹏软件迁移实践、鲲鹏软件性能调优实践

巴库一郎

鸿蒙 HarmonyOS 鲲鹏 DevKit harmoyos 实践分享

AI编程新时代,CodeBuddy 带你来体验

六月的雨在InfoQ

AI编程 CodeBuddy CodeBuddy首席试玩官 AI 代码助手

为Java虚拟机分配堆内存大于机器物理内存会怎么样?

电子尖叫食人鱼

Java

Web3软件系统的技术架构

北京木奇移动技术有限公司

区块链技术 软件外包公司 web3开发

ITSM运营:降低变更风险的自动化与流程优化实践

嘉为蓝鲸

ITSM 智能运维

大模型辅助科研编程实录分享:效率飙升!“分分钟搞定”,智能体编排如何加速工作流

ModelWhale

Web3应用的上线流程

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

语言是如何影响框架设计的?_Ruby on Rails_Michael Bushe_InfoQ精选文章