开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

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

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

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

关注

评论

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

关于 Apache Flink 和实时计算的最新动态、未来方向,你想知道的都在这里

Apache Flink

大数据 flink 编程 后端 实时计算

大数据SQL优化之数据倾斜解决案例全集

安第斯智能云

数据

呼和浩特市等保测评公司在哪里?联系电话多少?

行云管家

等保 等级保护 等保测评

构建测试的体系化思维(基础篇)

BY林子

软件测试 测试思维

荣获中国专利金奖!百度连续四年AI专利申请和授予量全国第一

百度大脑

人工智能

使用JDBC进行openGauss的读写分离及负载均衡

openGauss

深度揭秘openGauss分区表如何实现大数据量的快速转移

openGauss

Linux之目录结构

入门小站

linux学习零基础教学课程:Linux文件系统结构

侠盗安全

Linux 运维 运维工程师 云计算架构师

盘点2021 | 也无风雨也无晴-转行三年,再度出发

Geek_rze78a

程序员 转行 人生修炼 盘点2021 盘点 2021

云基华海正式加入openGauss社区

openGauss

鸿鹄元数正式加入openGauss社区

openGauss

程序员非常实用的十个工具网站,值得收藏

AlwaysBeta

谈B端产品技术团队的核心价值(1/100)

hackstoic

团队建设

性能提升一个数量级,Java大杀器来了!Java冷启动问题的成因与解决

华章IT

Java

全新缓存组件,大幅加速云上飞桨分布式训练作业

百度开发者中心

飞桨

MariaDB 到 MySQL 整库迁移(qbit)

qbit

MySQL MariaDB 数据导入 数据导出

在线JSON转HTML,TABLE表格工具

入门小站

工具

微服务架构 | 如何让接口权限继续继承下去?

李尚智

Auth2 OAuth 2.0 SpringCloud Alibaba spring aop Java 开发

开源堡垒机是什么?开源堡垒机的优缺点是什么?

行云管家

开源 网络安全 堡垒机 开源堡垒机

邮储银行新一代个人业务核心系统国际汇款业务上线,openGauss核心应用再创新高度

openGauss

神州新桥正式加入openGauss社区

openGauss

7.3万字肝爆Java8新特性,我不信你能看完!(建议收藏)

冰河

程序员 java8 编程基础 Lamdba表达式 Stream API

格创东智选择TDengine,实现海量数据实时全生命周期管理

TDengine

数据库 大数据 tdengine

政法委多部门联防联控平台,重点人员联防联控平台建设

a13823115807

GBASE南大通用加入openGauss社区

openGauss

图解MongoDB集群部署原理(3)

Tom弹架构

注意,你所做的A/B实验,可能是错的!

字节跳动数据平台

大数据 测试 AB 增长黑客

多种网络设备的优缺点及网络故障的排除方法

恒生LIGHT云社区

故障 网络设备

书单 | 2021年度经典畅销佳作盘点!

博文视点Broadview

2021年我读过的52本书

SkyFire

c++ 个人成长 总结 读书 计算机

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