AI实践哪家强?来 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:36995
用户头像

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

关注

评论

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

【行云流水线】满足你对工作流编排的一切幻想~skr

京东科技开发者

一键擦除手写笔迹,试试这款省时省力的学习利器

合合技术团队

学习 手写识别 文字擦除 人工智能】

CodeRunner for Mac(多功能代码编辑软件)v4.4注册激活版

小玖_苹果Mac软件

16.迭代器模式设计思想

杨充

企业数字化转型现状

芯盾时代

数字化转型 iam

商业开源服饰电商大模型-摹图

摹图

AI AI大模型 AI 图像生成

俯瞰 Monorepo,别一番风景!

蛋先生DX

前端 前端架构 前端工程化 Monorepo

从 Llama 1 到 3.1:Llama 模型架构演进详解

Baihai IDP

程序员 AI LLM llama Baihai IDP

打造个性化的Allure2报告:定制Logo和样式的软件测试报告

测试人

软件测试

套娃嵌入:如何优化向量搜索成本,并兼顾延迟与召回

Zilliz

Milvus 向量搜索 套娃嵌入 向量存储

【HarmonyOS NEXT】实战——登录页面

帅比九日

鸿蒙 arkui ArkTS HarmonyOS NEXT

多客校园圈子小程序源码 校园生活综合服务平台 校园服务小程序源码

DUOKE七七

Go语言中的加解密利器:go-crypto库全解析

左诗右码

Go

项目申报评审系统(源码+文档+部署+讲解)

深圳亥时科技

社区论坛小圈子小程序源码系统:自定义小程序管理社区圈子软件圈子系统系统开发-做社区圈子丨圈子论坛社区交友系统开源版小程序源码丨

DUOKE七七

php 源码 开源软件

HyperWorks基于几何投影的网格变形

智造软件

仿真 altair hyperworks

拼多多商品详情数据接口(Pdd.item_get)丨拼多多API接口指南

tbapi

拼多多商品详情接口 拼多多API接口

2025山西晋中等保测评机构地址在哪里?电话多少?

行云管家

等保 等保测评 晋中

FL Studio提速这样做!告别卡顿、闪退,畅快编曲

阿拉灯神丁

音乐制作 编曲软件 FL Studio2024 FL水果

2024 都要过完了,我不允许你在 Go 中还不会解决 CORS 跨域问题

江湖十年

Go 面试 后端 CORS 跨域

CST软件如何将平面结构弯曲贴到另一个结构上

思茂信息

仿真 cst CST软件

记录一次RPC服务有损上线的分析过程

京东科技开发者

反向 Debug 了解一下?揭秘 Java DEBUG 的基本原理

京东科技开发者

如何把苹果电脑里的照片导出至U盘 Mac照片批量拷到移动硬盘

阿拉灯神丁

存储 拷贝 硬盘 Tuxera NTFS教程 mac 效率工具

行政人员必备!如何快速生成一批人员信息卡?

草料二维码

公共事业信息系统怎么定义?需要过等保吗?

行云管家

信息系统 等保 等保测评 公共事业

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