BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Michael Bushe 关注 0 他的粉丝 ,译者 李剑 关注 1 他的粉丝 发布于 2008年2月26日. 估计阅读时间: 4 分钟 | ArchSummit北京2018 共同探讨机器学习、信息安全、微服务治理的关键点

是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?

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT