写点什么

为什么说框架是新的编程语言

2015 年 4 月 10 日

软件框架(Software framework)通常指是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范,而提供规范所要求之基础功能的软件产品。近日,JavaWorld 的特约编辑 Peter WaynerWayner 发布了一篇题为《框架是新编程语言的 7 个原因》的文章。在文章中,Wayner 首先指出在 20 世纪 80 年代,开发者很容易针对一个语言的优劣展开激烈的争论,而当前争论的话题却变成了框架的优劣。接着,Wayner 总结了软件框架是新编程语言的 7 个原因,现对这些原因进行一个全面的归纳和整理,以供开发者学习和参考。具体内容如下:

  1. 大部分代码通常由 API 调用组成
    过去,编写软件意味着开发者调用自己对编程语言的所有技能,而如今,自动化为开发者处理了大多数事情,如垃圾回收、智能编译等。此外,大部分代码现在都是由 API 调用组成,所以深入理解 API 就显得更加重要,而关于编程语言及其语法就显得没有那么重要了。
  2. 站在巨人的肩上,看地更远
    当面对那些艰难的工作时,框架相对于编程语言来说,它给开发者带来了很大的改变,尤其是继承框架代码库里的所有精华显得更加容易和高效。使用自己喜欢的新语言编写所有功能,而不采用某种更受欢迎的框架,这是一种强悍的方式,而只有简单地遵循框架及其 API 才会让开发者快速享受到新选择的乐趣。
  3. 理解架构是做什么的,而非语法
    因为大多数代码是由许多 API 调用组成,所以学习语言的特征已没有太大益处。此外,虽然搞清楚语言细节能够给开发者带来一定的帮助,但是进一步学习框架原理能够获得更多的回报。尽管开发者可以变成 Java 对象静态成员变量初始化的专家,但是最好自己能够弄清楚如何充分利用 Lucene、JavaDB 和其它框架。开发者可以花费数月时间来彻底了解 Objective-C 编译器的运行时,但是彻底学习苹果最新的核心 Lib 将真正能够使得开发者的代码更加高效。
  4. 算法主宰
    算法的学习只能帮助开发者处理存储在变量里的数据,而重新实现标准算法和数据结构又具有一定的风险,且比较浪费时间。实际中,框架已经定义和实现了正确的算法,并且框架已经经历了多年的广泛测试和使用,代表着开发者在软件基础实施上的共同投资。所以开发者不应该抛弃别人努力的成果和完全靠自己的双手构建起算法库,而应该研究框架和学习使用框架。
  5. 纠正语法的编译器和聪明的 IDE
    IDE 和编译器帮助开发者处理了许多问题,如语句结尾符号等语法问题。IDE 的自动化处理已经把开发者从编程语法的单调乏味中拯救出来,它不仅对框架有很大的帮助,而且还能够提醒开发者函数调用的参数、检查数据类型等。
  6. 可视化编程语言的出现,语言的语法也该消失了
    有些编程正变得可视化,这意味着计算机语言正变得不是那么重要了。GUI 构建器(如 AndroidBuilder)就是很好的例子,开发者只需拖拉用户界面部件即可实现编程,而相关细节已经封装在可视化组件里,开发者无需关心它是 C、Java 或其它语言。
  7. 编码即法律 / 规则
    计算机语言被设计为开放、可无限延展的,而框架的设计却有很强的规则和规范,其设计师可以决定什么被允许以及本质上什么要禁止。如果设计师不想让某些东西发生,那么函数调用将从 API 中消失;如果设计师喜欢某种想法,那么通常会有多个函数调用以及许多支持工具。

感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流。

2015 年 4 月 10 日 07:063297
用户头像

发布了 46 篇内容, 共 46.4 次阅读, 收获喜欢 10 次。

关注

评论

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

南海将打造“区块链+”金融科技产业高地

CECBC区块链专委会

区块链 金融

MYSQL数据类型

少林寺三毛

MySQL

架构师入门学习之感悟六

莫问

架构师训练营第一期第十周作业

Leo乐

极客大学架构师训练营

哪些数据将成为区块链系统的关键数据?

CECBC区块链专委会

区块链

训练营第十周作业2

仲夏

极客大学架构师训练营

第六周作业

晴空万里

第十周作业

Meow

诗意地栖居在赛博世界:人间烟火中的EMUI设计美学

脑极体

week10作业

追风

架构师一期

Logstash使用

Rayzh

ELK

架构师训练营第十周作业

架构师训练营第 1 期 week10

张建亮

极客大学架构师训练营

架构师训练营 - 第十周 - 作业一

行者

极客时间架构师训练营 1 期 - 第 10 周总结

Kaven

第六周大作业

小兵

训练营第十周作业 1

仲夏

极客大学架构师训练营

微服务架构及Dubbo 微服务调用的时序图

garlic

极客大学架构师训练营

互联网络上遇到数据延迟维护清算中取不出该怎么解决?

Geek_a6658e

第六周-作业一

ray-arch

DDD中的模型

zamkai

领域驱动设计

架构作业--第十周

Nick~毓

第十周总结

Meow

区块链将如何改变住房市场

CECBC区块链专委会

区块链 住房记录

第六周总结

小兵

架构师系列之7:分布式领域的CAP理论

桃花原记

CAP原理

Sandman

极客大学架构师训练营

极客时间架构师培训 1 期 - 第 10 周作业

Kaven

五千字长文带你学习二分查找算法及其变体

与你一起学算法

Python 算法

用例与架构

zamkai

架构 领域驱动设计

微服务架构的认知思考

橘子皮嚼着不脆

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

为什么说框架是新的编程语言-InfoQ