QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

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

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

关注

评论

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

week10-

未来已来

面试又不会JVM?阿里P8总结出25道JVM面试解析(基础+进阶+实战)

Java架构之路

Java 程序员 架构 面试 编程语言

week6-homework

J

论区块链技术与数字货币的发展

CECBC

数字货币 区块链技术

Week11作业

lggl

介绍一个新库: Norns.Urd.HttpClient

八苦-瞿昙

C# HTTP aop

架构师训练营 4 期 第一周

引花眠

架构师训练营 4 期

架构训练营第十三周作业

Geek_ce484f

架构师训练营第 1 期

三面百度,四面字节跳动。我是怎么被百度吊打,又是怎么拿下字节offer的?(Java开发岗)

Java架构之路

Java 程序员 架构 面试 编程语言

人工智能开始改变生活方式,区块链在人工智能时代的作用

CECBC

区块链

架构师训练营第一期大作业

Leo乐

架构师训练营第 1 期

公司上市失败,投资方险被CEO和CTO坑 | 法庭上的CTO(27)

赵新龙

CTO 法庭上的CTO

我花费一年的时间明白大厂面试的残酷!也最终拿到蚂蚁金服offer,定级P7职位。

Java架构之路

Java 程序员 架构 面试 编程语言

智慧社区安防系统解决方案,智慧社区建设

13530558032

区块链溯源解决方案----产品实现全程追溯

13530558032

第一周 ARTS打卡

Aelous

侵犯老东家“专利权”的技术总监 | 法庭上的CTO(26)

赵新龙

CTO 法庭上的CTO

架构训练营大作业2

Geek_ce484f

架构师训练营第 1 期

week6-conclusion

J

再见,2020

Rayjun

年终总结

SSM框架进阶笔记,阿里达摩院分享必是精品

Java架构师迁哥

week10-根据当周学习情况,完成一篇学习总结

未来已来

大作业一

架构师训练营第 1 期

简历造假的CEO和工作不满60天的CTO| 法庭上的CTO(28)

赵新龙

CTO 法庭上的CTO

架构训练营大作业

Geek_ce484f

架构师训练营第 1 期

Python进阶之Monad

正向成长

Python Monad

架构2期 - 第十一周作业(1)

浮生一梦

2组 第十一周作业

架构师训练营第一期思维导图

Leo乐

架构师训练营第 1 期

51 张图助你彻底掌握 HTTP 协议

Java架构师迁哥

2021年最新Github星标73.7K的性能优化PDF也太完美了

Java架构追梦

Java 学习 架构 面试 性能优化

区块链技术在智慧城市领域有五大应用价值

CECBC

区块链

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