速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

  • 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:36744
用户头像

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

关注

评论

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

DataOps不是工具,而是帮助企业实现数据价值的最佳实践

袋鼠云数栈

如何在BI中增加“路线地图”并进行数据分析?

葡萄城技术团队

开源大数据调度系统Taier技术公开课——Taier数据开发介绍

袋鼠云数栈

袋鼠云申杭:数雁EasyDigit,致力成为金融行业数据洞察平台供应商的“领头雁”

袋鼠云数栈

自动化测试-存储测试用例,哪个更好

和牛

Python 自动化 测试 8月月更

开源技术交流丨批流一体数据同步引擎ChunJun数据还原-DDL功能模块解析

袋鼠云数栈

开源技术交流丨一站式全自动化运维管家ChengYing入门介绍

袋鼠云数栈

用 manim 写一个排序算法动画

ooooooh灰灰

算法 前端 后端 动画 排序

开源项目丨一文详解一站式大数据平台运维管家ChengYing如何部署Hadoop集群

袋鼠云数栈

流批一体开源项目ChunJun技术公开课——ChunJun同步Hive事务表

袋鼠云数栈

大数据开源项目,一站式全自动化全生命周期运维管家ChengYing(承影)走向何方?

袋鼠云数栈

开源项目丨Taier1.2版本发布,新增工作流、租户绑定简化等多项功能

袋鼠云数栈

开源一夏 | layui时间控件 laydate 重置失效

六月的雨在InfoQ

开源 layui 8月月更 laydate

袋鼠云思枢:数驹DTengine,助力企业构建高效的流批一体数据湖计算平台

袋鼠云数栈

想要精准营销,从学习搭建一套对的标签体系开始丨DTVision分析洞察篇

袋鼠云数栈

从洞察到决策,一文解读标签画像体系建设方法论丨DTVision分析洞察篇

袋鼠云数栈

活动报名| MongoDB 使用规范及最佳实践线上直播来啦!

MongoDB中文社区

mongodb

走好数据中台最后一公里,为什么说数据服务API是数据中台的标配?

袋鼠云数栈

数据资产为王,如何解析企业数字化转型与数据资产管理的关系?

袋鼠云数栈

开源交流丨批流一体数据集成工具ChunJun同步Hive事务表原理详解及实战分享

袋鼠云数栈

跨平台|融云 React Native IM SDK 全新改版上线

融云 RongCloud

IM sdk

【接入指南 之 云云接入】快速接入HONOR Connect平台(下)

荣耀开发者服务平台

开发者 IoT 新手指南 荣耀 honor

培训预告 | 企业应用现代化实用教程——微服务治理与开发篇

York

容器 微服务 云原生 数字化转型 应用现代化

基于开源流批一体数据同步引擎ChunJun数据还原—DDL解析模块的实战分享

袋鼠云数栈

老忘记带伞,自己动手做一个雨天提醒打伞小工具

华为云开发者联盟

云计算 开发 aPaaS

当我们在聊「开源大数据调度系统Taier」的数据开发功能时,到底在讨论什么?

袋鼠云数栈

开源技术交流丨ChengYing部署Hadoop集群实战

袋鼠云数栈

“阿里爸爸”最新总结的303页Spring全家桶高级笔记,都是面试必问的知识点

Java工程师

Java spring Spring全家桶

1分钟创建3000台云电脑 阿里云无影发布多款千人协同生产力方案

Lily

全新升级!《云原生架构白皮书 2022 版》重磅发布

阿里巴巴云原生

阿里云 架构 云原生 白皮书

数据资产为王,解析企业数字化转型与数据资产管理的关系

袋鼠云数栈

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