写点什么

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

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

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

关注

评论

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

Vue3常用代码块

青柚1943

LED显示屏近年来在中国的发展趋势

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

在生产环境中运行 grpc 服务所面临的挑战

蓬蒿

golang gRPC

折叠屏时代的全新故事,由华为领启

脑极体

华为

Django笔记三之使用model对数据库进行增删改查

Hunter熊

Python django model 增删改查

架构实战营模块 5 作业

白杨

失真的概念和定义

timerring

信息论 信息论与编码

Mac 无线网络扫描工具:WiFi Explorer 3.4.2 (57)激活汉化版

真大的脸盆

无线管理 wifi工具

【论文解读】不和谐区域定位

合合技术团队

人工智能 图像识别 图像处理

智慧污水处理厂Web3D管理系统 把“污水洗白”

2D3D前端可视化开发

智慧水务 智慧污水厂 智慧污水处理 污水厂三维可视化 数字孪生污水厂

王者荣耀商城异地多活架构设计

白杨

PreSonus Studio One 6 Pro最新版v6.1.1中文下载 (音乐创作编辑软件)

Rose

Studio One6 Studio One 许可证 Studio One 破解 音乐制作软件

“ONE”有引力,4月21日见!

博睿数据

智能运维 博睿数据 发布会 Bonree ONE

如何清理优化你的Mac?MacCleaner Pro系统综合清理释放磁盘空间!

Rose

磁盘清理 mac系统清理优化软件 MacCleaner Pro下载 如何清理苹果电脑

intellijidea卸载重装无法打开怎么办?IntelliJ IDEA彻底卸载教程

Rose

IntelliJ IDEA 2023下载 IntelliJ IDEA 2023破解 IntelliJ IDEA 2023最新 IntelliJ IDEA卸载

QEMU事件循环机制

Linux内核拾遗

Linux Kenel 虚拟化 事件和事件循环 qemu kvm

阿里云可观测 2023 年 3 月产品动态

阿里巴巴云原生

阿里云 云原生 可观测

LG电视如何投屏?Mirror for LG TV智能投屏工具轻松解决

Rose

mac软件下载 LG电视 投屏软件 Mirror for LG TV

Web & WebDav Server在Mac上创建Web服务器

Rose

Web 服务器 mac软件下载 Web & WebDav Server破解

封仲淹:OceanBase开源技术生态全景解析

OceanBase 数据库

数据库 oceanbase

macOS 网站下载和离线浏览工具:SiteSucker Pro中文版

Rose

苹果软件资源站 SiteSucker Pro中文 整站下载工具 SiteSucker Pro Mac版

上传了ipa但在苹果App Store中没有看到构建版本的问题

浪潮inBuilder低代码平台分布式微服务架构事务一致性技术解析

inBuilder低代码平台

分布式事务 低代码

用户需求挖掘与分析,某新零售快消品电商系统成功交付的秘诀

L3C老司机

产品 产品设计 需求分析 产品管理 用户画像

TypeScript常用代码块

青柚1943

IBM Semeru Runtime 17.0.6.0 在 Linux 下的安装

HoneyMoose

Drone CI 部署

流火

OpenTiny 的这些特色组件,很实用,但你应该没见过

Kagol

开源 前端 Vue3 组件库

AI日课@20230407:别为下一代过虑;现在多多体验产品

无人之路

ChatGPT

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