转:编程的艺术:漂亮的代码和漂亮的软件

标签: Misc | 发表时间:2012-02-23 19:13 | 作者:gouki
出处:http://www.neatstudio.com/

最近在转一些装波一文,发发牢骚而已。现实中除了那些API和一些开源软件,真的很少看得到漂亮的代码,不过有一天帅朱给我看过一段代码,不错。。。Sun也能我看过一些,也不错。看看自己写的,一泡污啊

原文来自:http://kb.cnblogs.com/page/132236/

  英文原文: Beautiful Code and Beautiful Software
译者:legendsland

  2007-10-29

  编程很有意思,是因为我可以做一些很酷的东西,但是实际上让我着迷的却是那一行行代码的语法和语义。保持对好代码和坏代码之间差异的敏感相当激 励人,同时,去寻找编写高效、自文档化和经过深思熟虑良好组织的代码的方法将会永远吸引着我。这便是我对所在领域钟爱的原因 —— 编程的艺术 —— 这种奇妙的复杂物(complex craft)将会让你花费一生的时间去成为大师。

  续Ruby之后,我学习了Java和Objective-C,我开始享受到底层软件开发的乐趣。我是在一个讨厌繁缛语言开发的社区(Rails 社区)成长起来的,但是当我第一次接触这类语言之后,发现我喜欢上了它们。它们(和Ruby比较起来)是不同的语言,但仍然具有它们特有的乐趣。以 Java 里面的for循环为例,当以我的高级程序语言的背景,编写了一些这样的基础代码后,发现这种代码可以更好地帮助我理解面向对象的一些实践,但同时我也对 for循环本身产生了兴趣。这不仅仅是优美的语言吸引了我,也是语法背后的逻辑和不同语法形式让我着迷。计算机语言,以及它们之间的差异,本身就极具魅 力。

  当这学期我在学校学汇编语言的时候,获得了相同的满足感。汇编很繁琐,有时相当痛苦,但是让我去思考使用这种新的方式去实现基本的程序功能,跟痛苦相比,是完全值得的。当然,意识到自己编写的代码如此底层,也让我享受到了极客(Geek)的快感。

  情况变得更糟了!在今年的早些时候,当我读到Wolf的 程序员不喜欢编码时, 我经历了一个很不错的自我发现过程。我确实是喜欢在编码过程中解决问题,进行优雅地创造,以及通过编码来学习,但实际上我意识到我也是因为喜欢编码而编 码。至少,这就是我享受CSS和XHTML的方式。我拥有大量的Web前端开发经验,并且最近没怎么碰到新的问题(事实上,难搞的问题和我从没有见过的 Bug会让我异常兴奋)。尽管如此,我仍然喜欢这些东西。比如,整理一下我完全理解的代码让它变得好看点,就像是在我的笔记本上重复地画一些卡通猫,或者 是坐在钢琴前重复地弹三个相同的音调一样,这让我感到放松。甚至仅仅去阅读漂亮的CSS(我自己写的CSS),上面每一样东西都整齐有序、缩进良好,并且 进行了正确的层叠(CSS里面很重要的一种技术)而感到心情舒畅;相反,当我看到某些论坛的样式表里面混乱的缩进、多余的空行、被注掉的一些老代码,以及 通过故意使用错误的属性名来屏蔽掉的样式的时候,我感到难受,就像是生病了一样。

  当你可以如此轻易地被激起兴趣 ,就是上面这个结果。仅仅是墙上的影子就足够让你继续生活下去(译注:看来,她对柏拉图很有兴趣)。你得不断地重新审视自己的敏感度,以便让你的声色品味与你口袋里的钞票相匹配。(你对代码或者软件的品味来自于你自己的能力水平)

  这样来讲吧,这些天我一直在思考(整个)软件开发中的软件部分。特别是软件中的用户界面设计。今年在BARcamp,我喜欢Aza Raskin的一个实验,他让所有的开发人员举起手,然后是设计人员,接着他说那些第一次举手的人在第二次也应该举手。所有的开发人员必须是设计人员。至 少,幸运的是,所有的开发人员在他们的工作中可以对软件设计发表自己的意见。

  我越来越对软件开发中设计部分的重要性感到兴奋,尤其是当我反思我对过去所做的事情在不同方面的热情与心得的时候。在Web应用领域,开发和设 计一般是分离的。有时候,设计部分的工作在项目中被最少化了,这是因为客户是为软件的特性买单,而不会为漂亮的设计付帐。在一个项目中,我同时扮演了开发 和设计的角色,回想起来,我对只分配了两天时间来完成可视化的设计感到耿耿于怀。这决不是两天的事情。这是一个很复杂的应用软件,需要花上几周的时间与客 户交流和迭代设计。不幸的是,客户并不会因此而买单。相反,客户对我花了几个小时的原型感到无比满意,就这样,我们有了这个产品的第一个版本。

  在今年的C4上我有了另一次觉悟。好像很多Mac下的开发人员都在(私下)做自己的产品。这样,他们真的必须既是设计师又是开发人员。事实上, 设计是最重要的部分,并且用户体验和制造了不起的产品看起来要比代码本身更具有热情。在C4的一个晚上,有人在向我描述他的工作的时候,无意中帮助我看到 了这一点:编码这个基本要素是最容易的部分。那仅仅需要几周而已。真正困难和耗费时间的是搞定UI的规格。

  哇噢,我在想,为什么这看起来如此正确?为什么对我而言是这么的酷?哦,是的,那是因为我是从设计人员开始的。我享受开发、设计和艺术的方式绝然不同,这就导致了这三种享受之间巨大的差别。我一直在尝试整合开发和艺术(这两个方面),但是我其实应该整合这三个方面。

  毕竟,我的天啊!我们想要漂亮的代码或者是漂亮的软件吗?我生活中的另一个观点是:由于我的思想极具开放性和强吸收性,我发现我自己可以接受各 种相互矛盾的观点,有时候甚至是相反的观点。这种问题目前不会困扰我,因为我正处在探索模式的阶段,而不是在只接受我所相信的阶段,但是,当然啦,为了保 持我思想自身的一致性,当它们有点头绪的时候必须要好好的整理一下。

  所以,为了后续的考虑,我按照软件开发给人们带来的由内至外的收获,简单地列出了这个清单。我没有选择其他一些极好的介质,比如社区、开源和挑 战等等,是因为这些都很难按顺序列到里面去,不过我相信你可以领会到其中的要点。这个顺序对我而言是极度重要的,因为心理学家讲过,内因的力量更为强大, 更能让你坚持。比如,一个为了想从击打和踢腿中感觉到力量和兴奋而参加空手道训练的人,肯定要比仅仅为了健康的人更容易达到黑段水平。

  编程也是如此吗?

  * 代码感(译者:还记得圣斗士里面的第六感吗?)
* 编码的知识
* 享受计算机逻辑
* 享受计算机语言
* 优雅的语法
* 优美的语义
* 学习代码
* 问题求解
* 了解问题
* 获得可用性
* 完成一个产品
* 优雅的软件
* 解决人的问题
* 解决商业的问题
* 满足市场需求
* 赚钱
* 有一个稳定的职业

  哪个是最能持续激励人的收获?更重要的是,哪种动机可以制造出最好的软件?有时候我很想在这个话题上做一个很正式的研究,当我们希望软件既满足 可用,又具备可维护性,同时还叫买,而且还要满足一些其他的目标的时候,我很确信这个答案就是清单上面各种条目之间健康的平衡。我同时还很确信这种平衡性 是因情况和人而异的。现在,我已经勾画出了一条钟形曲线(正态分布),那些可以促成最佳的软件的动机位于曲线的中间部分;但是,我想实际上所有的动机在某 些方面都是有益的,并且当程序员有她自己的优先级的时候,动机自然是越多越好。

  我们领域的悲哀在于大多数程序员并不会欣赏上面大部分的收获,尤其是那些更为重要的。这个清单很有用,因为大多数编程的工作无法满足那些关心所 有这些事情的人。同样地,我很好奇,如果我们每个人都从内心关心我们做的东西,并且不会有人为了稳定的工作而去选择计算机科学者个专业,那么这个(软件) 领域将会成为什么样子呢?我好奇这样会对整个世界产生什么影响?

  我想我每年都应该反思一下这种问题,以便成为一个更好的软件开发人员。尽管如此,我还是觉得我的信念已经固定下来了:越是成长,就越希望能够在 一个足够自由的环境里面创造美妙的东西。值得注意的是,美妙和自由都是模糊和主观的概念,可以任意地去理解。我只知道,在大多数的编程工作中对代码之美和 软件设计之美的妥协永远会让我感到不满。如果到最后,我选择成为一个自由开发者去做Web设计,以满足这种自我的生活风格,我不会对此感到意外。

  最终我会从计算机上面退休,并且用我剩下的时间在国外美丽的农场里面画画。或者是,过上在街头涂涂抹抹和牢房之间互动的感性城市生活。想象一 下,当我觉得技术玩完了的时候,接下来要去哪里将是很有趣的。但愿永远不要发生这种事情,因为我希望成为一个酷酷的guru奶奶,到时候给孩子们上一些编 程的必修课呢!(Fantastic guru girl !!)

----------

看完到最后的时候,我在想guru是什么,有道告诉我,这是专家的意思。哦,

相关 [编程 艺术 漂亮] 推荐:

转:编程的艺术:漂亮的代码和漂亮的软件

- - 膘叔
最近在转一些装波一文,发发牢骚而已. 现实中除了那些API和一些开源软件,真的很少看得到漂亮的代码,不过有一天帅朱给我看过一段代码,不错. 原文来自:http://kb.cnblogs.com/page/132236/. 译者:legendsland.   编程很有意思,是因为我可以做一些很酷的东西,但是实际上让我着迷的却是那一行行代码的语法和语义.

40个漂亮的咖啡泡沫艺术

- emilo - 创意悠悠花园
如果你喜欢喝咖啡相信你一定对咖啡上面的泡沫艺术不陌生,今天分享:40个漂亮的咖啡泡沫艺术,希望其中有你喜欢的. Read the rest of 40个漂亮的咖啡泡沫艺术 (0 words). © emilo for 创意悠悠花园, 2011. Post tags: 咖啡, 泡沫, 漂亮, 艺术. 如果你喜欢创意悠悠花园的文章,可以收听我们@emilo,或者订阅我们的rss.

43个创意漂亮的纸张艺术作品

- emilo - 创意悠悠花园
纸绝对是我们日常生活中最常见的物品之一,那么对于纸作艺术品你会有什么好的想法呢. 今天分享:43个创意漂亮的纸张艺术作品,相信其中会有你喜欢的,或者挑战一下自己的手艺也尝试一下. Read the rest of 43个创意漂亮的纸张艺术作品 (55 words). © emilo for 创意悠悠花园, 2011.

漂亮的钢管舞[10P]

- Hector - 乐淘吧
如果您的阅读器看不到图片或视频,请移步原文链接:漂亮的钢管舞[10P]. 欢迎订阅乐淘吧:http://feeds.letaoba.info. 每日淘宝,淘宝商城促销打折团购信息. 10种叫床方式吗,你比较喜欢哪种.

是弟弟漂亮还是姐姐漂亮? [囧人糗事]

- Liqun - 经典网文_来福岛爆笑娱乐网
  今天去我朋友家玩,她有一可爱的弟弟,想逗逗他,就问,姐姐漂不漂亮,还算他懂事,点了个头,我再问他,那小弟弟漂亮还是姐姐漂亮啊. 他忽然振住,掏出JJ看了看,又看看我,一副很难抉择的样子,我当场风化…….

[原]程序员编程艺术第二十三~四章:杨氏矩阵查找,倒排索引提取关键词

- - 结构之法 算法之道
  第二十三、四章:杨氏矩阵查找,倒排索引提取关键词.      本文先来回答一个何谓编程,何谓算法的问题(同时,本文会少许论述编程与算法的关系). 所谓编程,就是把心中的想法用程序实现;所谓算法,就是思考如何把心中的想法更好地实现. 只有先把心中的想法实现了以后,才会去考虑如何更好地实现,才会去考虑效率,改进,优化.

隐形艺术

- Zoe - 玩意儿
国内艺术家刘勃麟以自己充当画布,将自己画成与身后场景一摸一样,变成一个隐形人,很神奇的作品,也是他的成名作,上图是他在北京某超市与饮料融合,点击这里查看他的更多作品. 本文原始链接:http://www.cngadget.cn/camouflage-art.html.

轮胎艺术

- Kione - 设计|生活|发现新鲜
轮胎这种会被你放在后备箱遗忘的家伙,你会想到它还有这么唯美的一面吗. 任何东西都有美的一面,就看你是不是那个伯乐啦. 「设计,生活,发现新鲜」在新浪微博,更即时地获读更新,更直接地交流沟通. © 设计|生活|发现新鲜 | 原文链接 | 投稿 ! | 新浪微博 | 逛逛我们的在线商店. Veggie art: 叹为观止的蔬果艺术.

人骨艺术

- fang - 东西
“停止暴力(Stop The Violence)”是由一个才华横溢的艺术家Francois Robert完成的艺术品. 据Francois透露,他于90年代中期从一个古老学校的拍卖会中购买了一具人体骨骼. 2007年随着经济的衰退Rober有了更多闲暇的时间,因此他决定将注意力转向他衣橱中的骨骼. 整副骨骼的每个部分都是用铁丝连接完好的,但为了达到教育的目,Francois认为他需要一具可以分解成碎片的骨骼.

「脏」的艺术

- -_- - YesKafei Daily
不是油画,不是水墨画,不是沙画,这幅作品来自中国一个车友洗车时的灵感. 他的画笔只是一块抹布,画布是自己脏兮兮的爱车. 这位荣威550的车友,让我想起了Scott Wade.. 街头怪诞的行为艺术,你明白了多少.