【外刊IT评论网】程序员的纹身

标签: 幽默讽刺 纹身 闭包 | 发表时间:2011-10-09 16:24 | 作者:Aqee Jacky
出处:http://www.aqee.net
本文是从 What? You tattooed code on your arm? 这篇文章翻译而来。

(function(){var k=[];return function j(){k.push(i);j();}})()();

这就是上周我在胳膊上刺的字。人们对这个纹身的反应先是不敢相信,后是觉得好笑,但我喜欢它。

为什么我会决定要让这样一段让人费解的JavaScript代码在我余下的一生中伴随在我的身体上?是这样,我想要一个只对我自己有意义的纹身。我想要一个跟我的工作和兴趣有关的纹身:Web开发相关的。我希望这个纹身是与众不同的。

我简单的在Google上查了一下“程序员纹身”和“开发者纹身”,希望能得到一点灵感,但唯一能找到的是你肯定见到过的</head> <body> 图案(很妙的纹身):

head-body-纹身

设计独特

在互联网上一无所获后,我想到,与其找什么东西来表现我对编程的喜爱,不如直接用代码来表现我的思想。

所用的语言很显然应该是JavaScript。它是我使用时间最长的语言。JavaScript也是web开发的核心基础,就目前的开发趋势来看,这种现状在短时期内也不会有任何改变。还有,它是一个开放的标准,我坚信,整个互联网也都该这样。

那么,我用代码表现些什么呢?我想,这种代码应该是能提醒我在每天工作中、生活中都努力追求的一种什么样价值和态度的代码。

(function(){var k=[];return function j(){k.push(i);j();}})()();

这种代码结构被称作闭包(closure)。如果你不知道闭包是什么,这里有个资料你可以阅读一下:什么是闭包。简单说:它是一个能返回另一个函数的函数。被返回的函数里可以访问到其父函数的有效变量访问范围内的所有变量——就像是面向对象语言,例如C#或Java,里的私有内部类。我决定采用这种结构体有两个原因:首先,我感觉这个东西非常的漂亮,第二,我希望这种编码方式能被更多的接受、更多的使用。

(function(){var k=[];return function j(){k.push(i);j();}})()();

这个 数组k 代表知识和经验。

(function(){var k=[];return function j(){k.push(i);j();}})()();

闭包返回的函数 j 是递归调用的。这用来提醒我,我需要保持我的动力和干劲——我应该不断的追求。

(function(){var k=[];return function j(){k.push(i);j();}})()();

每一次的调用,函数 j 就会把全局变量 i 里的内容添加到内部的数组 k 里。眼尖的人会发现,这段代码没有做异常检查,如果变量 i 没有定义,这段代码会报错,递归函数 j 将运行不下去。这是故意的。变量 i 表示来自其他人的输入,我要提醒自己,应该不断的向周围的人寻求建议和忠告。我知道我不能在与世隔绝中成长,因此,不从他人那里收集经验将会带来灾难的后果。正如我上面提到的,数组k 表示知识和经验,这部分代码还让我记住,我要不断的从获得的输入信息中学到东西。这并不是说我必须要接受和采纳所有收到的建议,我需要的是从中学到东西。即使不可用的建议也能让我们从忠告者身上学到很多事情。 ;)

(function(){var k=[];return function j(){k.push(i);j();}})()();

闭包和返回的函数 j 都是自我调用的。这表示,代码会自我驱动运行:函数并不一定需要别人来驱动。这是在提醒我,在工作和生活中,我应该主动行动,不要依赖由外界压力的影响才去做新的事情。

于是,这个纹身就诞生了。每次看见我的胳膊,都会让我想起它赋予的对我、对编程有重要意义的涵义。

我的纹身

我很得意戴着这怪异的纹身


本文来自外刊IT评论网(www.aqee.net),原始地址:程序员的纹身

相关 [it 程序员 纹身] 推荐:

【外刊IT评论网】程序员的纹身

- Jacky - 外刊IT评论网
人们对这个纹身的反应先是不敢相信,后是觉得好笑,但我喜欢它. 为什么我会决定要让这样一段让人费解的JavaScript代码在我余下的一生中伴随在我的身体上. 是这样,我想要一个只对我自己有意义的纹身. 我想要一个跟我的工作和兴趣有关的纹身:Web开发相关的. 我简单的在Google上查了一下“程序员纹身”和“开发者纹身”,希望能得到一点灵感,但唯一能找到的是你肯定见到过的 图案(很妙的纹身):.

普通程序员、文艺程序员、2B程序员

- 可可 - 宇宙的心弦
希望能引起广大苦逼的正在学或者已经学过c++人的共鸣和会心一笑吧. 如何辨别自己在现实还是虚拟世界.

如何面试程序员?

- bluesnail - 阮一峰的网络日志
你要面试一个程序员,应该问他什么问题. 有人在Hacker News的讨论区里,请求指点,怎么才能在面试中发现合格的人. 众人纷纷出主意,有很多高质量的回帖,我觉得挺有启发,就整理出了下面这篇文章. 首先,最重要的是,你自己一开始就应该想清楚:. 哪些途径和方法可以发现这样的人. 只有明确这些根本性的问题,才能正确高效地完成面试.

程序员的本质

- Allen - 译言-电脑/网络/数码科技
来源What do programmers really do?.   很多人(包括我岳母)认为计算机变得如此智能,所以在不久的未来将不再需要程序员. 另外一些人认为程序员是天才,他们在电脑前能不断地解决复杂的数学难题. 甚至不少程序员对他们是做什么的都没有清晰的概念.   在这篇文章中,我想给不知情的人解释一下程序员到底是做什么的:.

程序员人生之路

- myartings - 博客园-首页原创精华区
   程序员人生之路(强烈推荐,分析的透彻. ),某程序达人的人生感悟,估计没有半个甲子的时间,是绝对不可能感悟出来的.    相对同时刚出校门同学从事其它行业而言优厚的薪水,以及不断学习更新的专业知识不仅仅让你感到生活的充实,更满足了你那不让外人知的虚荣心. 在刚出校门的几年中,你经常回头看看被你落在后面的同学们,在内心怜悯他们的同时,你也会对自已天天加班的努力工作感到心里平衡:“有付出才会有回报”这句话在那几年中你说的最多,不管是对自已的朋友们还是自已的爱人.

程序员装B指南

- Qing-Run - 博客园-首页原创精华区
1.电脑不一定要配置高,但是双屏是必须的,越大越好,能一个横屏一个竖屏更好. 一个用来查资料,一个用来写代码. 总之要显得信息量很大,效率很高. 2.椅子不一定要舒服,但是一定要可以半躺着. 3.大量的便签,各种的颜色的,用来记录每天要完成的事务,多多益善. 沿着电脑屏幕的边框,尽量贴满,显出有很多事情的样子.

程序员收入报告

- diaoxsh - cnBeta.COM
最近,波兰的程序员Chris(也叫KreCi)公布了他的第十四期程序员收入报告. 数据显示,上月是目前为止他收入最多的一个月. Chris的收入并不是指他的工资或薪水,Chris是一个自由职业者. 他的收入也不是来自个人承包软件工程的收入,他更像是一个果农,种了优良的果树,只要不断的给这些果树施肥浇水,这些果树会给他带来源源不断的财富.

程序员的利器-SourceInsight

- Alex - 博客园-首页原创精华区
作为程序员,大部分时间是在已有的代码上代码工作. 要对已有的代码进行调整,首先就要搞清楚当前代码中蕴含的逻辑关系. 所以常常有程序员调侃说花了大半天时间看代码,最后写代码的时间只有几分钟. 所以,对已有代码的分析质量将影响(甚至会决定)最终代码修改的质量. SourceInsight在代码分析上给予程序员极大的帮助.

程序员?还是小丑?

- Vingel - cnBeta.COM
和你从不认识的人坐在一起,试图弄清楚他是个程序员还是个小丑. 我没有想侮辱任何人的意思,而且,我是第一个要感谢这么多年的教育和努力终于把我变成一个专业小丑的人. 对于程序员新手,我充满怜悯,为了和缓的帮他热热身,我给了他一道温和的问题来消解我们之间的陌生. 我让Ada写一段程序,在纸上,打印出“hello“这个词10次.