程序员的纹身

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

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

我的纹身

[英文原文:What? You tattooed code on your arm? ]
分享这篇文章:

11 Responses to 程序员的纹身

  1. Jruv says:

    很有创意,就是纹的字体太难看了

  2. 随卡卡 says:

    有点不低调。

  3. metalupmyballs says:

    手表系的这么紧不难受么。。?

  4. ww says:

    闭包不是什么值得推荐的好方法,他也许过几年会后悔的 🙂

  5. Darcy Yang says:

    Good~ 很有创意。第一次没看到这个i ,一看解说,原来如此。

  6. benjamin says:

    传说中的考试小抄~!

  7. Snoopy says:

    明显是个web程序员,
    自以为很牛叉的代码工人,
    在boss的眼力和民工无差异

    • pz says:

      你的评论基本上表达了这样一种观点:开发应用程序的都不是“真正的程序员”,“真正的程序员”编写的是有难度的东西,跟复杂的数学算法相关的东西。

    • Leo says:

      如果你是这种BOSS,那祝你的公司早点倒闭!如果你是个“代码民工”,那祝你永远做“代码民工”!

  8. yy 对这篇文章的反应是敬佩
  9. 周华争 对这篇文章的反应是赞一个

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据