程序员的纹身

点击上面  免费订阅本账号!

本公众号主要推送javaweb开发相关技术,基础知识点,同时会深入剖析复杂的问题,分享一些优秀的框架,大型项目经验,当今最流行的Javaweb技术,热点科技新闻,招聘信息,生活乐趣等等。点击上方的蓝字,这样您每天可以看到更多的java知识和资讯!完全是免费订阅,请放心关注

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

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

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


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

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

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

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

这种代码结构被称作闭包(closure)。如果你不知道闭包是什么,这里有个资料你可以阅读一下:什么是闭包 (网页链接(computer_programming)。

简单说:它是一个能返回另一个函数的函数。被返回的函数里可以访问到其父函数的有效变量访问范围内的所有变量——就像是面向对象语言,例如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 都是自我调用的。这表示,代码会自我驱动运行:函数并不一定需要别人来驱动。这是在提醒我,在工作和生活中,我应该主动行动,不要依赖由外界压力的影响才去做新的事情。

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


点击阅读全文查看 【持久化框架】Mybatis与Hibernate的详细对比

有人用微信聊天,有人却在微信中学习,成长。下面是2016最HOT IT公众号,赶快试试新的关注方法吧!


关注方式
★长按二维码,选择“识别图中二维码”进行关注。

 没看够?更多好文在阅读原文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值