Clojure是一种运行在Java平台上的Lisp方言,它的出现有助于将比较复杂的表述定义成简洁的呈现。与此同时,Clojure也具备诸多的工具来解决程序员经常需要面对的难题。
不过随着对该语言的深度学习与应用之后,Clojure开发社区中开始出现一批对使用框架有着强烈反感的程序员群体,而这到底是怎么回事?框架对Clojure编程语言来说是否真的多余?
作者
DanielHigginbotham
译者
苏本如,责编
屠敏
以下为译文:
似乎Clojure开发社区对使用框架有着强烈的反感。其它语言可能需要框架,但我们Clojure不需要!因为我们有无所不在的函数库!
这种态度并非毫无理由。首先,我们当中的很多人都是在深受像Rails这样的神奇框架荼毒后选择使用Clojure编程语言的,因为在那里我们不得不花费大量的时间来处理这些框架的缺点。另外,像Luminus这样的Clojure开发工具和它捆绑在一起的顶级Web开发库提供给开发人员一种富有成效的体验,框架对Clojure编程语言来说似乎是多余的。
尽管有各种各样的理由,但是我对Clojure开发社区这种对待框架的主流观点不太认同。我认为框架对Clojure开发是有用的。首先,让我解释一下什么是框架。我还没有读过任何让我满意的框架定义,我认为针对框架的一些仇恨源于对它们究竟是什么缺乏明确的定义。它们只是对开发库的名称上的美化吗?它们必须具备魔法吗?有没有强制要求它们的价值必须大过它们制造的麻烦呢?所有这些问题都将在本文中阐明。
我认为,要想让一个框架的效用容易被大家理解,就必须对这个框架所服务的目的,以及如何实现这一目的,作一个清楚地描述,并且这个描述还应该阐明什么是一个好的框架,而坏的框架为什么最终会伤害我们。我希望你会发现这个讨论有趣而且令人满意,并且能够为你提供一个崭新的,有帮助的视角,不仅仅是从框架方面,更是从总体编程方面。即使你读完本文后仍然不想使用框架,我也希望你能更好地理解一个框架所要解决的问题,这会帮助你更好地设计应用程序。
框架具有二级优势,本文也将介绍这些优势。概括来说,框架使得可重用组件的生态系统得以存在。框架使编程变得更加有趣。并且框架使初学者更容易出成果。
在本文的最后,我将对Clojure编程语言特别适合创建真正了不起的框架的特性作一个介绍。
什么是框架?
框架是一组开发库的集合,它们的职责是:
管理对编写应用程序所需资源进行协调的复杂性…通过提供这些资源的抽象...以及在这些资源之间进行通信的系统...在一个环境中...使得程序员能够专注于编写特定于其产品的业务逻辑。下面我将以Rails框架和操作系统(可以称其为终极框架)作为例子,详细介绍上面的每一点。
你可能会想,操作系统怎么会是一个框架呢?当你查看上面的框架职责列表时,你会注意到操作系统不但处理了所有这些职责,而且处理得非常好。简而言之:操作系统为硬件资源提供虚拟抽象,这样程序员就不必