在Clojure里我应当使用什么web框架?

摘要:在Clojure里有大量的web框架,但是初学者应该把他们自己的服务器栈移动到Ring生态系统。

我经常被Clojure的初学者问到的一个问题是“我应该使用什么web框架?”这是一个好问题。Python有Django。PHP有Drupal。当然Ruby有所有web框架之王,Ruby on Rails。

在Clojure里你应该使用什么框架?实际上这个问题是难以回答的。外面有很多web框架了。有人把Compojure叫做框架,虽然它真正是一个类库。lib-noir为你做了大量工作。然而有属于你的真正框架,像PedestalHoplon,它们提供基础功能和解决web开发的抽象。所有这些项目是伟大的,但是对于初学者,我不得不推荐建立你自己的web栈,从Ring开始。

Compojure实际上只是一个路由类库,而不是框架。虽然有playnice, bidi, Route One gudu等其它替代品,但是你能够用它满足路由需要。如果你不想下决定,那就使用Compojure。它使用广泛、表现优秀。如果你想深入,可以看看其他文档。它们针对不同的场景各有优点。

程序员生产力悖论

程序员好像是比较有生产力的人群。

你总是看到他们在桌子上打字;他们反感会议因为他们想回到桌子前继续写代码。当被询问的时候,他们会说没有足够时间写代码,他们越早开始写代码,就越早完成工作。

因此写代码必须是最重要的事情,对吗?

如果程序员平均每天写50行生产代码。一个50,000行的程序将需要1,000个人天来完成。这个50,000行的清单能够被一名程序员以每天1,000行的速度或大约50个人天来完成。

那么开发人员在剩下的950天里到底在做什么?

在提出这个问题之前,先做一个简单的观察。Capers Jones已经就成千上万个项目比对了很多方法论(RUP, XP, Agile, Waterfall等)和编程语言,得出结论,认为程序员每个月写325-750行代码,低于上面建议的每月1000行。即使程序员每天不能达到平均的50行代码,下面也是明显的:

怎样成为一名心智健全的程序员

《商业内幕》【注1】今天发布了一篇名为《成为一名计算机程序员的压力确实让大部分人发疯了》的文章。它阐述了经典问题:骗子综合征【注2】,工作时间长,精力耗尽等等,还指出当工作压力通常处于糟糕管理之下时,它越来越多地来自于程序员社区本身,因为它作为决定某个程序员奉献精神等级的、某种文化意义上的、强加的试金石。换句话说:如果你在闲暇时间没有埋在代码里,那么你就不是。这个压力与新技术、类库、语言、平台、框架、SDK和文本编辑器的发布速度交织在一起,就像用飞机燃油去灭火。

但是有个困难。编程,和写作、画画和音乐一样,首先是一种创新而非技术努力。作为一种学习工具和技巧的手段,使用任何技术或语言是有用的,但是它不能使你在本质上成为一名优秀的程序员。它只会使你在工具上更有效率。让你成为一名优秀程序员的条件是学习如何思考问题,因为最终你要把你自己的思考过程转换成一系列的指令,计算机会执行这些指令来解决问题。学会正确地思考——关于抽象、关于组合、关于信心、关于思考本身——来源于除编程之外的很多地方。Paul Graham在他著名的文章《黑客与画家》里提到了:

我已经发现想法的最好来源不是名字里带有“计算机”的其他领域,而是居住着制作人(maker)的领域。画画是一个比计算理论要丰富得多的想法源泉。

扩大范围到其他领域,拥有编程之外爱好,能够给你的日常工作带来巨大好处。你不需要花费大量时间写代码。花时间写作、或阅读、或喝着咖啡(或你喜欢的苏格兰威士忌)与某人聊天。花时间跑步、lifting,或两者都有。物理运动把氧气输送到大脑,有利于给你的器官提供营养。我3年前开始跑步。实际上当我用数公里长跑来减慢节奏、放下家庭喧嚣时,新鲜空气和阳光让我拥有一个强健的体格,也让我有时间在脑中反复打磨想法。

根据自身理由来投资你自己的想法会使你成为一个更好的程序员。你总是可以学习新语法、工具、或任何东东,但如果你做的所有事情都是编程,事实上你会使你自己厌烦工作。有时候在紧急情况下,你不得不投入数小时,但这应该是例外而不是规则。如果你总是处于紧急情况,你就需要找到另一种情况。有时候为了使你的个人激情变成现实,你需要埋头数周甚至数月。然后休息一下。始终不变的努力只会导致越来越小的回报,这恰恰是使你变成优秀程序员的对立面。去年11月我参加了NaNoWriMo(全国小说写作月),一种非正式的竞赛,参加者要求在30天内些一篇50,000字的小说。我早点起床,写作几个小时,工作8个多小时,然后我的晚上时间也被写作占去了。每天如此。整整30天。月底因为过度劳累我病了,但对于我来说去完成我的人生清单中的一项是必要的:写一部小说。我还没有用数月时间写一部东西。为了恢复状态,我需要休息,改变节奏。开发软件没有什么不同。

《商业内幕》也总结了有意思的观点“女性程序员经常坦白受到了骗子综合征的困扰……但是很多男性程序员越来越多地说他们也感觉到了。”刻画了20世纪和21世纪的性别角色波动最终抓到了男性。女性亲自看到了珍藏的、强加给男人的“一次性男人(disposable male)”心态,特别是在工作场所,一个角色,我认为是起源于生存需要,但是在更加富裕灵活的社会,它被废弃了。男人正在看到女人对于男性角色缺少人性的一面的反应,开始表达他们对现状的不满。随着更多的女人进入技术领域,她们会带来一个外来者的视角,男人需要留意,女人需要理解 她们发现的没有吸引力的系统 已经被男人不得不共存、接受了很长时间。但是在一起我们不必再这样了,那是强大的东西。

为了成为一名优秀的程序员,你不要耗费所有精力。做你喜欢的,喜欢很多东西。你会因此而变得更优秀。

原文地址:http://www.nicholascloud.com/2014/03/how-to-be-a-sane-programmer/ 注1:《商业内幕》,http://zh.wikipedia.org/zh-cn/商业内幕 注2:骗子综合征:http://www.businessinsider.in/Programmers-Are-Suffering-From-A-Bunch-Of-Syndromes-That-Are-Driving-Them-Crazy/articleshow/32149278.cms

...