优秀程序员眼中的整洁代码[转]

有多少程序员,就有多少定义。所以我只询问了一些非常知名且经验丰富的程序员。

image.php_-57.gif

Bjarne Stroustrup,C++语言发明者,C++ Programming Language(中译版《C++程序设计语言》)一书作者。

我喜欢优雅和高效的代码。代码逻辑应当直截了当,叫缺陷难以隐藏;尽量减少依赖关系,使之便于维护;依据某种分层战略完善错误处理代码;性能调至最优,省得引诱别人做没规矩的优化,搞出一堆混乱来。整洁的代码只做好一件事。

Bjarne用了“优雅”一词。说得好!我MacBook上的词典提供了如下定义:外表或举止上令人愉悦的优美和雅观;令人愉悦的精致和简单。注意对“愉悦”一词的强调。Bjarne显然认为整洁的代码读起来令人愉悦。读这种代码,就像见到手工精美的音乐盒或者设计精良的汽车一般,让你会心一笑。

Bjarne也提到效率——而且两次提及。这话出自C++发明者之口,或许并不出奇;不过我认为并非是在单纯追求速度。被浪费掉的运算周期并不雅观,并不令人愉悦。留意Bjarne怎么描述那种不雅观的结果。他用了“引诱”这个词。诚哉斯言。糟糕的代码引发混乱!别人修改糟糕的代码时,往往会越改越烂。

务实的Dave Thomas和Andy Hunt从另一角度阐述了这种情况。他们提到破窗理论4。窗户破损了的建筑让人觉得似乎无人照管。于是别人也再不关心。他们放任窗户继续破损。最终自己也参加破坏活动,在外墙上涂鸦,任垃圾堆积。一扇破损的窗户开辟了大厦走向倾颓的道路。

Bjarne也提到完善错误处理代码。往深处说就是在细节上花心思。敷衍了事的错误处理代码只是程序员忽视细节的一种表现。此外还有内存泄漏,还有竞态条件代码。还有前后不一致的命名方式。结果就是凸现出整洁代码对细节的重视。

Bjarne以“整洁的代码只做好一件事”结束论断。毋庸置疑,软件设计的许多原则最终都会归结为这句警语。有那么多人发表过类似的言论。糟糕的代码想做太多事,它意图混乱、目的含混。整洁的代码力求集中。每个函数、每个类和每个模块都全神贯注于一事,完全不受四周细节的干扰和污染。

image.php_-58.gif

Grady Booch,Object Oriented Analysis and Design with Applications(中译版《面向对象分析与设计》)一书作者。

整洁的代码简单直接。整洁的代码如同优美的散文。整洁的代码从不隐藏设计者的意图,充满了干净利落的抽象和直截了当的控制语句。

Grady的观点与Bjarne的观点有类似之处,但他从可读性的角度来定义。我特别喜欢“整洁的代码如同优美的散文”这种看法。想想你读过的某本好书。回忆一下,那些文字是如何在脑中形成影像!就像是看了场电影,对吧?还不止!你还看到那些人物,听到那些声音,体验到那些喜怒哀乐。

阅读整洁的代码和阅读Lord of the Rings(中译版《指环王》)自然不同。不过,仍有可类比之处。如同一本好的小说般,整洁的代码应当明确地展现出要解决问题的张力。它应当将这种张力推至高潮,以某种显而易见的方案解决问题和张力,使读者发出“啊哈!本当如此!”的感叹。

窃以为Grady所谓“干净利落的抽象”(crisp abstraction),乃是绝妙的矛盾修辞法。毕竟crisp几乎就是“具体”(concrete)的同义词。我MacBook上的词典这样定义crisp一词:果断决绝,就事论事,没有犹豫或不必要的细节。尽管有两种不同的定义,该词还是承载了有力的信息。代码应当讲述事实,不引人猜测。它只该包含必需之物。读者应当感受到我们的果断决绝。

image.php_-59.gif

“老大”Dave Thomas,OTI公司创始人,Eclipse战略教父

整洁的代码应可由作者之外的开发者阅读和增补。它应当有单元测试和验收测试。它使用有意义的命名。它只提供一种而非多种做一件事的途径。它只有尽量少的依赖关系,而且要明确地定义和提供清晰、尽量少的API。代码应通过其字面表达含义,因为不同的语言导致并非所有必需信息均可通过代码自身清晰表达。

Dave老大在可读性上和Grady持相同观点,但有一个重要的不同之处。Dave断言,整洁的代码便于其他人加以增补。这看似显而易见,但亦不可过分强调。毕竟易读的代码和易修改的代码之间还是有区别的。

Dave将整洁系于测试之上!要在十年之前,这会让人大跌眼镜。但测试驱动开发(Test Driven Development)已在行业中造成了深远影响,成为基础规程之一。Dave说得对。没有测试的代码不干净。不管它有多优雅,不管有多可读、多易理解,微乎测试,其不洁亦可知也。

Dave两次提及“尽量少”。显然,他推崇小块的代码。实际上,从有软件起人们就在反复强调这一点。越小越好。

Dave也提到,代码应在字面上表达其含义。这一观点源自Knuth的“字面编程”(literate programming)5。结论就是应当用人类可读的方式来写代码。

image.php_-60.gif

Michael Feathers,Working Effectively with Legacy Code(中译版《修改代码的艺术》)一书作者。

我可以列出我留意到的整洁代码的所有特点,但其中有一条是根本性的。整洁的代码总是看起来像是某位特别在意它的人写的。几乎没有改进的余地。代码作者什么都想到了,如果你企图改进它,总会回到原点,赞叹某人留给你的代码——全心投入的某人留下的代码。

一言以蔽之:在意。这就是本书的题旨所在。或许该加个副标题,如何在意代码。

Michael一针见血。整洁代码就是作者着力照料的代码。有人曾花时间让它保持简单有序。他们适当地关注到了细节。他们在意过。

image.php_-61.gif

Ron Jeffries,Extreme Programming Installed(中译版《极限编程实施》)以及Extreme Programming Adventures in C#(中译版《C#极限编程探险》)作者。

Ron初入行就在战略空军司令部(Strategic Air Command)编写Fortran程序,此后几乎在每种机器上编写过每种语言的代码。他的言论值得咀嚼。

近年来,我开始研究贝克的简单代码规则,差不多也都琢磨透了。简单代码,依其重要顺序:

能通过所有测试;

没有重复代码;

体现系统中的全部设计理念;

包括尽量少的实体,比如类、方法、函数等。

在以上诸项中,我最在意代码重复。如果同一段代码反复出现,就表示某种想法未在代码中得到良好的体现。我尽力去找出到底那是什么,然后再尽力更清晰地表达出来。

在我看来,有意义的命名是体现表达力的一种方式,我往往会修改好几次才会定下名字来。借助Eclipse这样的现代编码工具,重命名代价极低,所以我无所顾忌。然而,表达力还不只体现在命名上。我也会检查对象或方法是否想做的事太多。如果对象功能太多,最好是切分为两个或多个对象。如果方法功能太多,我总是使用抽取手段(Extract Method)重构之,从而得到一个能较为清晰地说明自身功能的方法,以及另外数个说明如何实现这些功能的方法。

消除重复和提高表达力让我在整洁代码方面获益良多,只要铭记这两点,改进脏代码时就会大有不同。不过,我时常关注的另一规则就不太好解释了。

这么多年下来,我发现所有程序都由极为相似的元素构成。例如“在集合中查找某物”。不管是雇员记录数据库还是名-值对哈希表,或者某类条目的数组,我们都会发现自己想要从集合中找到某一特定条目。一旦出现这种情况,我通常会把实现手段封装到更抽象的方法或类中。这样做好处多多。

可以先用某种简单的手段,比如哈希表来实现这一功能,由于对搜索功能的引用指向了我那个小小的抽象,就能随需应变,修改实现手段。这样就既能快速前进,又能为未来的修改预留余地。

另外,该集合抽象常常提醒我留意“真正”在发生的事,避免随意实现集合行为,因为我真正需要的不过是某种简单的查找手段。

减少重复代码,提高表达力,提早构建简单抽象。这就是我写整洁代码的方法。

Ron以寥寥数段文字概括了本书的全部内容。不要重复代码,只做一件事,表达力,小规模抽象。该有的都有了。

image.php_-62.gif

Ward Cunningham,Wiki发明者,eXtreme Programming(极限编程)的创始人之一,Smalltalk语言和面向对象的思想领袖。所有在意代码者的教父。

如果每个例程都让你感到深合己意,那就是整洁代码。如果代码让编程语言看起来像是专为解决那个问题而存在,就可以称之为漂亮的代码。

这种说法很Ward。它教你听了之后就点头,然后继续听下去。如此在理,如此浅显,绝不故作高深。你大概以为此言深合己意吧。再走近点看看。

“……深合己意”。你最近一次看到深合己意的模块是什么时候?模块多半都繁复难解吧?难道没有触犯规则吗?你不是也曾挣扎着想抓住些从整个系统中散落而出的线索,编织进你在读的那个模块吗?你最近一次读到某段代码、并且如同对Ward的说法点头一般对这段代码点头,是什么时候的事了?

Ward期望你不会为整洁代码所震惊。你无需花太多力气。那代码就是深合你意。它明确、简单、有力。每个模块都为下一个模块做好准备。每个模块都告诉你下一个模块会是怎样的。整洁的程序好到你根本不会注意到它。设计者把它做得像一切其他设计般简单。

那Ward有关“美”的说法又如何呢?我们都曾面临语言不是为要解决的问题所设计的困境。但Ward的说法又把球踢回我们这边。他说,漂亮的代码让编程语言像是专为解决那个问题而存在!所以,让语言变得简单的责任就在我们身上了!当心,语言是冥顽不化的!是程序员让语言显得简单。

稿源:代码湾

转自:https://www.oschina.net/news/87473/good-programmers-clean-code

好了歌

好了歌(曹雪芹《红楼梦》中诗词)

好了歌,中国著名古典章回体小说《红楼梦》中经典诗词,小说中为跛足道人所做,甄士隐彻悟后进行进一步注解,表现了作者现实主义和宗教思想。文中还有与之相和的《好了歌注》,承接并引申了《好了歌》的思想。诗歌内容隐射小说情节,表达了作者对现实的愤懑和失望,以及对自由的追求和向往!

甄士隐知投人不著,心中未免悔恨,再兼上年惊唬,急忿怨痛已伤,暮年之人,贫病交攻,竟渐渐的露出那下世的光景来。可巧这日拄了拐杖挣到街前散散心时,忽见那边来了一个跛足道人,疯癫落拓,麻鞋鹑衣,
口内念着几句言词道:
世人都晓神仙好,惟有功名忘不了!
古今将相在何方?荒冢一堆草没了。
世人都晓神仙好,只有金银忘不了!
终朝只恨聚无多,及到多时眼闭了。
世人都晓神仙好,只有娇妻忘不了!
君生日日说恩情,君死又随人去了。
世人都晓神仙好,只有儿孙忘不了!
痴心父母古来多,孝顺儿孙谁见了?
士隐听了,便迎上来道:“你满口说些甚么?只听见些‘好了’‘好了’。”
那道人笑道:“你若果听见‘好了’二字,还算你明白。可知世上万般,好便是了,了便是好。若不了,便不好;若要好,须是了。我这歌儿便名《好了歌》。”
士隐本是有夙慧的,一闻此言,心中早已彻悟,因笑道:“且住!待我将你这《好了歌》注解出来何如?”道人笑道:“你就请解。”
士隐乃说道:
陋室空堂,当年笏满床。
衰草枯杨,曾为歌舞场。
蛛丝儿结满雕梁,绿纱今又在蓬窗上。
说甚么脂正浓、粉正香,如何两鬓又成霜?
昨日黄土陇头送白骨,今宵红灯帐底卧鸳鸯。
金满箱,银满箱,转眼乞丐人皆谤。
正叹他人命不长,那知自己归来丧!
训有方,保不定日后作强梁。
择膏粱,谁承望流落在烟花巷!
因嫌纱帽小,致使锁枷杠,
昨怜破袄寒,今嫌紫蟒长。
乱烘烘你方唱罢我登场,反认他乡是故乡。
甚荒唐,到头来都是为他人作嫁衣裳。

写给自己也写给你 自己到底该何去何从

写给自己也写给你,自己到底该何去何从

能有一项长期爱好,看电影或者听歌收集旧书都行。这些爱好说白了就是让无聊的日子看起来有那么一点意义。

不要担心长时间不读书,你刷的微博,是在刷新信息量。看的电影也能充斥知识量。

看书看电影无须在意评论家说什么,有你喜欢的作家或演员就行。

过了三十岁,不管在什么地方吵架,都挺二的,尤其在网上。

五毛从来不值一提,更不配顺口一骂。

无论是谁,一有空就随便抓个人骂来骂去的,都不是什么好人。

别轻易贬低别人,同一个世界,同一个泥潭,无论黑衬衫白衬衫都带着污渍。

接下来说点小事 :))

不要占用别人车位,临时占用要留电话,否则车被划了轮胎被扎了都不好意思嚷嚷。

记得排队,记得上扶梯站右边,记得打车时别抢到别人前面,记得让自己方便的时候别给别人制造不快。

飞机没停稳何苦打开行李舱拿着背包就往外冲呢?我们不是最讨厌拥挤吗?

既然你改变不了什么,就改改自己的暴脾气,顺便去做一个正常人,当正常人越来越多,活着就没那么纠结,就会舒服一些,这就是改变。

别人给的伤害不能让你变强大,但你要学会躲避他们,不是说你惹不起,是你浪费不起那时间。把时间浪费在那种人身上,与自残无异。

关于朋友这件事,合得来就多加珍惜,不合拍就别浪费精力浪费时间辛苦维持了。

说到爱情,别为此寻死觅活,也别要求对方爱自己爱一辈子,那就是一段经历而已。

别问朋友借钱,除非是治病救人。欠钱到期还不了,要提前说,别羞于启齿错过时间等朋友问起时再支支吾吾闹得彼此都不痛快。

过去会越来越多,未来会越来越少,直到没有。当过去变成记忆,就变成身体的一部分,你忘不掉的。

当你感到自己真笨,这也干不好,那也做不好的时候,你已经是聪明人了。

不要担心这个致癌,那个致癌,这个不吃那个不吃,放心,我们最后都要死于癌症。

别人让你点菜,不会点就老老实实说不会点,别一张嘴就出来俩字:随便。

只要活着就总有那么一段时间,充满灰暗,躁动不安,可是除了面对,好像也没有别的办法。

当你感到时光漫长,实际上已经没有多少时间了。

老人倒了要扶,当年的坏人变老了,但不是所有的老人都变坏了。相信我,只有看热闹的越来越少,我们的下半生才有希望。

你会臃肿,你会白头,你将来也会倒在路边,但你不会去诬赖那个扶你的人。

你不会,我相信。

最后,

移民不是真正的理想,真正的理想是留在这个国家,管好自己并力所能及的帮助他人,以及,参与它的每一次改变。

来源:http://www.myexception.cn/other/1768786.html

struts2 upgrade 2.3 to 2.5 migration 升级向导

Dependencies

Update Struts dependencies to 2.5.

Remove the following plugin dependencies because they were dropped and aren’t supported anymore.

  • Dojo Plugin
  • Codebehind Plugin
  • JSF Plugin
  • Struts1 Plugin

StrutsPrepareAndExecuteFilter

The org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter was moved to org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.

In web.xml replace this:

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

with that:

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

There were other package changes, please read Version Notes 2.5 for more details.

DTD

Struts DTD was updated to 2.5 version.

In struts.xml replace 2.3 DTD version:

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

with 2.5:

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"

Tags attributes

The id attribute was replaced with var attribute in the following tags.

  • <s:action>
  • <s:append>
  • <s:bean>
  • <s:date>
  • <s:generator>
  • <s:iterator>
  • <s:merge>
  • <s:number>
  • <s:set>
  • <s:sort>
  • <s:subset>
  • <s:text>
  • <s:url>

If you have something like that in your code:

<s:url id="url" action="login">

change it to:

<s:url var="url" action="login">

The <s:set> tag name attribute is replaced with var attribute.

From:

<s:set id="str1" value="'string1 value'" />
<s:set name="str2" value="'string2 value'" />

to:

<s:set var="str1" value="'string1 value'" />
<s:set var="str2" value="'string2 value'" />

Also escape attribute was renamed to escapeHtml attribute.

From:

<s:property escape="true" var="someProperty"/>

to:

<s:property escapeHtml="true" var="someProperty"/>

Div tag

The <s:div> tag was dropped.

Replace <s:div> with plain HTML <div> tag.

Field names

If you have field names which starts with single lower case letter, for example:

private String sTrng;
public String getSTrng() {...}
public void setSTrng(String str) {...}

change accessors to getsTrng and setsTrng.

Or better yet, change field names to not contain single lower case letter:

private String strng;
public String getStrng() {...}
public void setStrng(String str) {...}

For additional info see WW-3909.

Tiles

Depending on from which version of struts you upgrade and whether you used tiles-plugin or tiles3-plugin you may need to do different steps.

Struts 2.5 just provides a tiles-plugin which uses Tiles3. So support for Tiles2 has been dropped as well as the name tiles3-plugin.

Now the only maven dependency looks like this:

maven dependecy for tiles-plugin
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-tiles-plugin</artifactId>
    <version>${struts2.version}</version>
</dependency>

You may need to update DTD in your tiles.xml files to Tiles3:

tiles3 dtd
<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"

A Listener in web.xml is required. It is not necessary to configure paths to tiles.xml files here as they are picked up automatically.

StrutsTilesListener in web.xml
<listener>
  <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>

Optionally you may remove TilesDefinitions from XML and annotate actions instead. See Tiles Plugin for more details.

Temp/Work directory of ApplicationServer/ServletContainer

Users reported it was necessary for them to remove temp/work directory of their ApplicationServer/ServletContainer. Likely to force server to recompile JSPs.

来源:https://cwiki.apache.org/confluence/display/WW/Struts%202.3%20to%202.5%20migration

语法规范:BNF与ABNF

BNF 

巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。

在BNF中,双引号中的字(“word”)代表着这些字符本身。而double_quote用来代表双引号。

在双引号外的字(有可能有下划线)代表着语法部分。

< > : 内包含的为必选项。
[ ] : 内包含的为可选项。
{ } : 内包含的为可重复0至无数次的项。
|  : 表示在其左右两边任选一项,相当于”OR”的意思。
::= : 是“被定义为”的意思
“…” : 术语符号
[…] : 选项,最多出现一次
{…} : 重复项,任意次数,包括 0 次
(…) : 分组
|   : 并列选项,只能选一个
斜体字: 参数,在其它地方有解释

下面是是用BNF来定义的Java语言中的For语句的实例:

FOR_STATEMENT ::= 
      "for" "(" ( variable_declaration | 
  ( expression ";" ) | ";" ) 
      [ expression ] ";" 
      [ expression ] ";" 
      ")" statement

  ABNF

RFC2234 定义了扩展的巴科斯范式(ABNF)。近年来在Internet的定义中 ABNF 被广泛使用。ABNF 做了更多的改进。扩充巴科斯-瑙尔范式(ABNF)基于了巴科斯-瑙尔范式(BNF),但由它自己的语法和推导规则构成。这种元语言的发起原则是描述作为通信协议(双向规范)的语言的形式系统。它建档于 RFC 4234 中通常充当 IETF 通信协议的定义语言。

ABNF 规定是一组推导规则,写为:

规则 = 定义 ; 注释 CR LF

这里的规则是大小写敏感的非终止符,定义由定义这个规则的符号序列,一个文档注释组成,并结束于回车换行。

规则名字是大小写不敏感的: <rulename><Rulename><RULENAME> 和 <rUlENamE> 都提及同一个规则。规则名字由开始于一个字母的字母、数字和连字符组成。不要求用尖括号(“<”, “>”) (如 BNF 那样)包围规则名字。但是它们可以用来界定规则名字,比如在冗文中识别出规则名字的时候。ABNF 使用 7-位 ASCII 编码,在 8-位域中把高位置零。

终结符由一个或多个数值字符指定。数值字符可以指定为跟随着基数(b = 二进制, d = 十进制, x = 十六进制)的一个百分号“%”,随后是这个数值,或数值的串联(用“.” 来指示)。例如回车可以指定为十进制的 %d13 或十六进制的 %x0D。回车换行可以指定为 %d13.10

文字正文通过使用包围在引号(")中字符串来指定。这些字符串是大小写不敏感的,使用的字符集是 US-ASCII。所以字符串“abc”将匹配“abc”, “Abc”, “aBc”, “abC”, “ABc”, “AbC”, “aBC” 和 “ABC”。对于大小写敏感匹配,必须定义明确的字符: 要匹配 “aBc” 定义将是 %d97 %d66 %d99

操作符

空白被用来分隔定义的各个元素: 要使空格被识别为分割符则必须明确的包含它。

串联

规则1 规则2

规则可以通过列出一序列的规则名字来定义。

要匹配字符串“aba”可以使用下列规则:

fu = %x61; a
bar = %x62; b
mumble = fu bar fu

选择

规则1 / 规则2

规则可以通过用反斜杠(“/”)分隔的多选一规则来定义。

要接受规则 <fu> 或规则 <bar> 可构造如下规则:

fubar = fu / bar

递增选择

规则1 =/ 规则2

可以通过使用在规则名字和定义之间的“=/”来向一个规则增加补充选择。

规则

ruleset = alt1 / alt2 / alt3 / alt4 / alt5

等价于

ruleset = alt1 / alt2
ruleset =/ alt3
ruleset =/ alt4 / alt5

值范围

%c##-##

数值范围可以通过使用连字符(“-”)来指定。

规则

OCTAL = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7"

等价于

OCTAL = %x30-37

序列分组

(规则1 规则2)

元素可以放置在圆括号中来组合定义中的规则。

要匹配“elem fubar snafu”或“elem tarfu snafu”可以构造下列规则:

group = elem (fubar / tarfu) snafu

要匹配“elem fubar”或“tarfu snafu”可以构造下列规则:

group = elem fubar / tarfu snafu
group = (elem fubar) / (tarfu snafu)

可变重复

n*n规则

要指示一个元素的重复可以使用形式 <a>*<b> 元素。可选的 <a> 给出要包括的元素的最小数目,缺省为 0。可选的 <b> 给出要包括的元素的最大数目,缺省为无穷。

对零或多个元素使用 *元素,对一或多个元素使用 1*元素,对二或三个元素使用 2*3元素

特定重复  

n规则

要指示明确数目的元素可使用形式 <a> 元素,它等价于 <a>*<a>元素

使用 2DIGIT 得到两个数字,使用 3DIGIT 得到三个数字。(DIGIT 在下面的核心规则中定义)。

可选序列

[规则]

要指示可选元素下列构造是等价的:

[fubar snafu]
*1(fubar snafu)
0*1(fubar snafu)

注释

; 注释

分号(“;”)开始一个注释并持续到此行的结束。

操作符优先级

上述操作符有从最紧绑定(binding)到最松绑定的给定优先级:

  1. 字符串,名字形成(formation)
  2. 注释
  3. 值范围
  4. 重复
  5. 分组,可选
  6. 串联
  7. 选择

与串联一起使用选择操作符可以造成混淆,建议使用分组来做明确串联分组。

核心规则

核心规则定义于 ABNF 标准中。

规则 形式定义 意义
ALPHA %x41-5A / %x61-7A 大写和小写 ASCII 字母 (A-Z a-z)
DIGIT %x30-39 数字 (0-9)
HEXDIG DIGIT / “A” / “B” / “C” / “D” / “E” / “F” 十六进制数字 (0-9 A-F a-f)
DQUOTE %x22 双引号
SP %x20 空格
HTAB %x09 水平tab
WSP SP / HTAB 空格和水平tab
LWSP *(WSP / CRLF WSP) 线性空白(晚于换行)
VCHAR %x21-7E 可见(打印)字符
CHAR %x01-7F 任何 7-位 US-ASCII 字符,不包括 NUL
OCTET %x00-FF 8 位数据
CTL %x00-1F / %x7F 控制字符
CR %x0D 回车
LF %x0A 换行
CRLF CR LF 互联网标准换行
BIT “0” / “1”

例子

在巴科斯范式(BNF)条目中的邮政地址的例子可以被指定为:

postal-address = name-part street zip-part

name-part = *(personal-part SP) last-name [SP suffix] CRLF
name-part = / personal-part CRLF

personal-part = first-name / (initial ".")
first-name = *ALPHA
initial = ALPHA
last-name = *ALPHA
suffix = ("Jr." / "Sr." / 1*("I" / "V" / "X"))

street = [apt SP] house-num SP street-name CRLF
apt = 1*4DIGIT
house-num = 1*8(DIGIT / ALPHA)
street-name = 1*VCHAR

zip-part = town-name "," SP state 1*2SP zip-code CRLF
town-name = 1*(ALPHA / SP)
state = 2ALPHA
zip-code = 5DIGIT ["-" 4DIGIT]

引用

参考

JAVA BIO与NIO、AIO的区别

IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。

一、BIO

在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝请求,如果有的话,客户端会线程会等待请求结束后才继续执行。

二、NIO (New IO)

NIO本身是基于事件驱动思想来完成的,其主要想解决的是BIO的大并发问题: 在使用同步I/O的网络应用中,如果要同时处理多个客户端请求,或是在客户端要同时和多个服务器进行通讯,就必须使用多线程来处理。也就是说,将每一个客户端请求分配给一个线程来单独处理。这样做虽然可以达到我们的要求,但同时又会带来另外一个问题。由于每创建一个线程,就要为这个线程分配一定的内存空间(也叫工作存储器),而且操作系统本身也对线程的总数有一定的限制。如果客户端的请求过多,服务端程序可能会因为不堪重负而拒绝客户端的请求,甚至服务器可能会因此而瘫痪。

NIO基于Reactor,当socket有流可读或可写入socket时,操作系统会相应的通知引用程序进行处理,应用再将流读取到缓冲区或写入操作系统。  也就是说,这个时候,已经不是一个连接就要对应一个处理线程了,而是有效的请求,对应一个线程,当连接没有数据时,是没有工作线程来处理的。

BIO与NIO一个比较重要的不同,是我们使用BIO的时候往往会引入多线程,每个连接一个单独的线程;而NIO则是使用单线程或者只使用少量的多线程,每个连接共用一个线程。

NIO的最重要的地方是当一个连接创建后,不需要对应一个线程,这个连接会被注册到多路复用器上面,所以所有的连接只需要一个线程就可以搞定,当这个线程中的多路复用器进行轮询的时候,发现连接上有请求的话,才开启一个线程进行处理,也就是一个请求一个线程模式。

在NIO的处理方式中,当一个请求来的话,开启线程进行处理,可能会等待后端应用的资源(JDBC连接等),其实这个线程就被阻塞了,当并发上来的话,还是会有BIO一样的问题。

HTTP/1.1出现后,有了Http长连接,这样除了超时和指明特定关闭的http header外,这个链接是一直打开的状态的,这样在NIO处理中可以进一步的进化,在后端资源中可以实现资源池或者队列,当请求来的话,开启的线程把请求和请求数据传送给后端资源池或者队列里面就返回,并且在全局的地方保持住这个现场(哪个连接的哪个请求等),这样前面的线程还是可以去接受其他的请求,而后端的应用的处理只需要执行队列里面的就可以了,这样请求处理和后端应用是异步的.当后端处理完,到全局地方得到现场,产生响应,这个就实现了异步处理。

三、AIO

与NIO不同,当进行读写操作时,只须直接调用API的read或write方法即可。这两种方法均为异步的,对于读操作而言,当有流可读取时,操作系统会将可读的流传入read方法的缓冲区,并通知应用程序;对于写操作而言,当操作系统将write方法传递的流写入完毕时,操作系统主动通知应用程序。  即可以理解为,read/write方法都是异步的,完成后会主动调用回调函数。  在JDK1.7中,这部分内容被称作NIO.2,主要在Java.nio.channels包下增加了下面四个异步通道:

  • AsynchronousSocketChannel
  • AsynchronousServerSocketChannel
  • AsynchronousFileChannel
  • AsynchronousDatagramChannel

其中的read/write方法,会返回一个带回调函数的对象,当执行完读取/写入操作后,直接调用回调函数。

BIO是一个连接一个线程。

NIO是一个请求一个线程。

AIO是一个有效请求一个线程。

先来个例子理解一下概念,以银行取款为例:

  • 同步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写);
  • 异步 : 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS(银行卡和密码),OS需要支持异步IO操作API);
  • 阻塞 : ATM排队取款,你只能等待(使用阻塞IO时,Java调用会一直阻塞到读写完成才返回);
  • 非阻塞 : 柜台取款,取个号,然后坐在椅子上做其它事,等号广播会通知你办理,没到号你就不能去,你可以不断问大堂经理排到了没有,大堂经理如果说还没到你就不能去(使用非阻塞IO时,如果不能读写Java调用会马上返回,当IO事件分发器会通知可读写时再继续进行读写,不断循环直到读写完成)

Java对BIO、NIO、AIO的支持:

  • Java BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。
  • Java NIO : 同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。
  • Java AIO(NIO.2) : 异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,

BIO、NIO、AIO适用场景分析:

  • BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。
  • NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。
  • AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。

另外,I/O属于底层操作,需要操作系统支持,并发也需要操作系统的支持,所以性能方面不同操作系统差异会比较明显。

在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作。

在比较这两个模式之前,我们首先的搞明白几个概念,什么是阻塞和非阻塞,什么是同步和异步,同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪,而异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知。而阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式,说白了是一种读取或者写入操作函数的实现方式,阻塞方式下读取或者写入函数将一直等待,而非阻塞方式下,读取或者写入函数会立即返回一个状态值。

一般来说I/O模型可以分为:同步阻塞,同步非阻塞,异步阻塞,异步非阻塞IO

同步阻塞IO:在此种方式下,用户进程在发起一个IO操作以后,必须等待IO操作的完成,只有当真正完成了IO操作以后,用户进程才能运行。JAVA传统的IO模型属于此种方式!

同步非阻塞IO:在此种方式下,用户进程发起一个IO操作以后边可返回做其它事情,但是用户进程需要时不时的询问IO操作是否就绪,这就要求用户进程不停的去询问,从而引入不必要的CPU资源浪费。其中目前JAVA的NIO就属于同步非阻塞IO。

异步阻塞IO:此种方式下是指应用发起一个IO操作以后,不等待内核IO操作的完成,等内核完成IO操作以后会通知应用程序,这其实就是同步和异步最关键的区别,同步必须等待或者主动的去询问IO是否完成,那么为什么说是阻塞的呢?因为此时是通过select系统调用来完成的,而select函数本身的实现方式是阻塞的,而采用select函数有个好处就是它可以同时监听多个文件句柄,从而提高系统的并发性!

异步非阻塞IO:在此种模式下,用户进程只需要发起一个IO操作然后立即返回,等IO操作真正的完成以后,应用程序会得到IO操作完成的通知,此时用户进程只需要对数据进行处理就好了,不需要进行实际的IO读写操作,因为真正的IO读取或者写入操作已经由内核完成了。目前Java中还没有支持此种IO模型。

一份简单实用的微交互设计指南

好的产品往往做好了两点:功能和细节设计。

功能吸引用户使用你的产品,细节设计将你的用户留下。优秀的细节设计能够使你的产品在众多竞品中脱颖而出,优秀的微交互设计往往能够让用户在初次使用产品时就能够留下深刻的印象。作为一个交互设计师,在设计微交互方案的时候不仅要考虑视觉上的冲击力,还要想办法赋予其信息传递的功能。

 什么是微交互?

微交互是产品中存在的某一个时刻,它完成了某一个小的任务。Dan Saffer在他的书中(Microinteractions)第一次描述了微交互的概念,这些小细节专注于服务这些必要的功能:

 交流回馈或者动作的结果回馈

完成某个单独的任务

增强直接操作的感觉

帮助用户在视觉上展示操作的结果,以及避免错误

一些明显的微交互例子包括:

当你将iPhone设置成静音时伴随出现的的震动提醒、屏幕上的静音icon。

7yw20160316
 

界面动画提示是否能够点击(当鼠标移到按钮上方时按钮的颜色改变)。

6yw20160316
 

  为什么使用微交互?

微交互是在对用户一些自然的需求/欲望的认知和反馈。用户从微交互提供的视觉、触觉等反馈中确认他们的行为被接受。微交互还可以引导用户正确的使用系统/产品。

  定义微交互的使用情景

微交互的一个特点是它可以被放置在很多的场景下,辅助不同的动作行为。总体来说,微交互的使用场景包括:

 展示系统/产品的状态

Jacob Nielsen在“可用性启发原则”中指出:让你的用户时刻了解发生的事情,用户期望对自己的行为立即得到反馈。但是有些情况下,app需要时间来等待行为处理完成后才能向用户发出反馈。因此,产品界面需要向用户指明此刻正在发生的事。

5yw20160316
 

▲ 下载进度表

  或者标明用户所在的位置:

4yw20160316
 

Tips:不要让你的用户感到无助,让你的用户了解实时的状态并且向其展示进度(比如进度条能够让用户了解进度,消除疑惑)

 提示更新

我们有时需要向用户推送通知来保证用户了解到事态的更新。动画可以做到这一点,动画可以吸引用户的注意力,避免用户忽视掉重要的信息。

3yw20160316
 

Tips:微交互里的动效应该遵循KISS原则(keep it simple, stupid),应该尽量简单直接。

关联上下文

使用动效来将用户的注意力平滑的在导航页面间切换,向用户解释页面里元素之间的关系,以及页面跳转的来龙去脉。这对于移动设备非常有用,因为屏幕的尺寸限制,移动界面中每一页的内容都很紧凑,使用动效来阐述内容之间的联系非常实用。

Tips:尽量让每个页面的导航简洁,这样可以有效避免用户在页面跳转中迷失。两个状态之间的却换应该清晰、平滑、快捷。在视觉上统一所有的交互形式,降低用户的学习成本。

 输入可视化

数据输入是应用中非常重要的环节,微交互可以使用现有的元素来展示数据输入的反馈,从而将这步操作变得更加高效。

2yw20160316
 

Tips:微交互能够帮助用户理解信息格式,来源,帮助用户便捷输入信息。

  引导互动

微交互可以鼓励用户、吸引用户与产品交互。它可以在用户体验中产生同理心。但是需要谨慎使用微交互,保证其在感官上不会冒犯你的用户。

时刻谨记:不要让用户感到厌烦,Keep it simple, stupid.

1yw20160316
 

Tips:关注用户的情感反馈,因为它在用户体验中起到很重要的作用。多做用户研究和情景调研,设计能被用户频繁使用的微交互方案。

  值得谨记的

微交互向用户展示动作反馈,通知以及信息框架结构

微交互应该通过转移用户的注意力、愉悦用户等来达到加快/缩短信息数据的传输

了解你的用户以及使用微交互的背景,能够让你的微交互方案更加的精准与高效

微交互必须能够支持长时效的使用,在第一次使用时感到惊喜的方案,可能在第一百次使用时就变成了困扰。

微交互方案应该人性化一些,并且在视觉上保持和谐。用户在使用的时候应该感到流畅,微交互的方案应该尽可能的从现实生活中获得启发,比如使用拟物化等手段,从而降低学习成本。

  总结

用心设计,思考用户使用产品的情景,再设计这些微交互时多运用一些生活中常见的操作模式、物体的运动轨迹、常见的行为方式等。产品的易用性来源于对细节的打磨,伟大的设计不仅仅在功能上满足用户的需求,还要在微交互的设计上打动人心。

不管你在哪里上班,请记住以下黄金定律!

01. 不为模糊不清的未来担忧,只为清清楚楚的现在努力。

02. 只有先改变自己的态度,才能改变人生的高度。

03. 在抱怨自己赚钱少之前,先努力,学着让自己值钱。

04. 学历代表过去,学习能力才代表将来。

05. 耐得住寂寞才能守得住繁华,该奋斗的年龄不要选择了安逸。

06. 有些事情不是看到希望才去坚持,而是坚持了才看得到希望。

07. 压力不是有人比你努力,而是比你牛几倍的人依然在努力。

08. 你所做的事情,也许暂时看不到成功,但不要灰心,你不是没有成长,而是在扎根。

09. 现实和理想之间,不变的是跋涉,暗淡与辉煌之间,不变的是开拓。

跳槽穷半年,改行穷三年。献给每天喊辞职、想辞职的人或周期性喊辞职、想辞职的人!

1,不要轻易离开团队,否则你要从零做起 。

2,不要老想着做不顺就放弃,哪个团队都有问题,哪个团队都有优点。

3.跟对领导很重要,愿意教你的,放手让你做的领导,绝对要珍惜。

4.团队的问题就是你脱颖而出的机会,抱怨和埋怨团队就是打自己耳光,说自己无能,更是在放弃机会 !

5.心怀感恩之心,感谢系统给你平台,感谢伙伴给你配合。

6.创造利润是你存在的核心价值,创业不是做慈善 。

7.遇到问题请先思考,只反映问题是初级水平,思考并解决问题才是高级水平。

坚持不一定成功,坚持到底一定成功! 好好工作吧!

学会说话,给人温暖,给人鼓励,给人赞美,

给人信心,给人方便,给人希望,给人智慧!

2016年,不管你在哪里上班,请记住这个字!

第一则:

工作不养闲人,团队不养懒人。

第二则:

入一行, 先别惦记着能赚钱, 先学着让自己值钱。

第三则:

没有哪个行业的钱是好赚的。

第四则:

干工作,没有哪个是顺利的,受点气是正常的。

第五则:

赚不到钱,赚知识;

赚不到知识,赚经历;

赚不到经历,赚阅历;

以上都赚到了 就不可能赚不到钱。

第六则:

只有先改变自己的态度,才能改变人生的高度。

只有先改变自己的工作态度,才能有职业高度。

第七则:

让人迷茫的原因只有一个

——那就是本该拼搏的年纪,却想得太多,做得太少!

送君一个字:干!

本文整理自网络

版权归原作者所有,向原作者致敬!

15 位健在的牛叉程序员,你知道哪几位?

现如今程序员是越来越多了,所以优秀的程序员也是越来越多了。但是他们中哪些才是顶尖中的顶尖呢?

其实要明确地指出“哪一个”程序员是最优秀的,这几乎不太可能,但是业内的开发者们还是对这个话题乐此不疲。ITworld 就通过投票,以及对其他国外社区(比如 Quora、Reddit)中的数据进行分析,来判断排名和分析是否一致。结果,有一些名字确实在大家的讨论中反复出现。

下面就让我们来看看依然健在的最受大家认可的 15 位优秀程序员:

(小编先补充声明,下面排序并不是按个人成就。如果你喜欢的大牛排在后面了,别纠结别激动 ~≧▽≦~ )

1. Margaret Hamilton

主要成就:阿波罗计划飞行控制软件的幕后英雄

上榜理由:作为 Charlse Stark Draper 实验室软件工程部门的主任,她领导她的小组为 NASA 的阿波罗计划和Skylab任务设计并开发了飞行控制软件。基于在阿波罗计划中的工作成就,她随后研发了通用系统语言和 DBTF 开发范式。她开创性地提出了“异步软件、优先调度、以及高可信度软件设计”等概念。这些都成为日后“软件工程”的基础。她是1986年Augusta Ada Lovelace奖的获得者,并且在2003年获得了NASA杰出空间表现奖。

网友评价

  • ford_beeblebrox:Hamilton发明了软件测试,她可以算得上是美国计算机工程的创始人。
  • Dan Allen:我认为在她所做出成就之前(恕我冒昧,因为Knuth也被包括在这个范围当中),计算机编程(以及其相关的东西)都还只是数学的一个分支。然后一套航天飞行器的飞行控制软件清晰地把编程带向了一个不同的范式领域。
  • David Hamilton: …是她创造了“软件工程”这个词,然后又用例子告诉大家怎么做
  • Drukered:她太厉害了

推荐阅读

《就是这个美女程序员,写出了让阿波罗成功登陆月球的代码!》

(旁边是「著作等身」的阿波罗制导系统的代码)

2. Donald Knuth

主要成就:《计算机编程艺术》的作者

上榜理由:他写了一本关于计算机编程理论的决定性著作,发明了 TeX 数字排版系统。他是1971年第一届ACM Grace Murray Hopper奖的获得者(译者注:美国海军女少将 Grace Murray Hopper 也绝对是载入史册的计算机科学家和顶级程序员,可惜她已经去世,因此没有列入本文名单)。并且是计算机最高奖ACM图灵奖获得者(1974)(要知道当时 他才36岁),还是1979年美国国家科学奖章获得者以及IEEE冯诺依曼奖章获得者(1995)。并在1998年被任命为计算机历史博物馆名人堂成员。

网友评价:

  • 匿名:写《计算机编程艺术》这本书,估计是有史以来关于计算机编程最复杂的工作。
  • Jaap Weel:在我用过的计算机软件里面,只有一种是几乎没有 bug 的,那就是Don Knuth编写的TeX。这太让人印象深刻了。
  • 伯小乐补充:关于 TeX 几乎没 Bug,是真事。高德纳再一次用行动宣告,我这个东西(TeX),不可能再有什么大的改进了,最多只能小修小补,使其趋近完美。他还专门设立了奖金:谁发 现Tex的一个Bug,就付他2.56美元,第二个错误5.12美元,第三个10.24美元。请看此文:《程序员单枪匹马做的最复杂/重要的程序,是哪 个?》。不过真的有人拿到他的支票了。
  • Mitch Ree-Jones:让我评价他的话,那就是优秀得让人难以置信。

推荐阅读:

《程序员单枪匹马做的最复杂/重要的程序,是哪个?》、《高德纳谈计算机程序设计艺术(上)》和《高德纳谈计算机程序设计艺术(下)》

3. Ken Thompson

主要成就:Unix 缔造者

上榜理由:和 Dennis Ritchie 一起,共同缔造了Unix操作系统。他是 B 语言的发明人,以及 UTF-8 字符编码规范和 ed 文本编辑器的发明人。同时他还是 Go 编程语言的共同开发者之一。他和 Dennis Ritchie 一起获得了1983年的ACM图灵奖,1994年的IEEE计算机先锋奖和1998年的美国国家技术奖章。1997年他正式成为美国计算机历史博物馆名人 堂成员。

网友评价:

  • Pete Prokopowice:…他很可能是有史以来最成就卓著的程序员。(他的成就包括:)Unix内核,Unix工具,计算机国际象棋世界冠军Belle、Plan 9、Go语言.”
  • Jan Jannink:Ken的贡献远远超过了我们的想象,他的工作是业界的根基,其作用之大,持续时间之久,时至今日还在影响着我们的生活。

4. Richard Stallman

主要成就:Emacs 和 GCC 的缔造者

上榜理由:他创立了GNU项目,并为其开发了很多核心工具,例如Emacs、GCC、GDB 等等,还有 GNU Make。他还创立了自由软件基金会。他是1990年ACM Grace Murray Hopper奖获得者,1998年EFF先锋奖获得者。

网友评价:

  • Srinivasan Krishnan:…在当年Symbolic公司和LMI公司的那场Lisp Machine纠纷中,他展示出了以一当百的编程实力
  • (黄小非补充:这是一个非常传奇的故事,当年Richard Stallman在麻省理工(MIT)的人工智能实验室工作,该实验室的重要成果之一就是Lisp Machine。后来,实验室中的两拨科学家分别下海创业,创立了Lisp Machine Inc. ,也即是LMI,以及Symbolic公司。这两家公司的主要业务都是基于Lisp Machine的,而且和MIT也签了约,说好了MIT授权他们使用Lisp Machine,而两家对Lisp Machine做的改进也授权MIT使用,互惠互利。可是,没想到后来Symbolic公司想另起炉灶,于是仿照Lisp Machine的功能自己重新研发了一个仿制品,日后再开发的软件产品就是基于这个仿制品系统而不是MIT的Lisp Machine了,这样也就不用与MIT和LMI再相互交换成果了。这个举动让Richard Stallman非常愤怒,他决定收拾一下Symbolic这个被金钱冲昏头脑的公司,于是他就盯着Symbolic的新产品推出情况,只要 Symbolic一发布新产品,他就马上在动手在Lisp Machine上做一个功能一样的送给MIT和LMI使用。一般Sybmolic推出的新软件,Richard Stallman自己一个人花个几天就能做出一个功能一模一样的。他的这种方式和工作效率曾经让Symbolic公司一度非常恼火。)
  • Dan Dunay:“他对编程的理解和他思想的光辉是如此强大,以致于形成了一套完整的计算机编程亚文化体系”
  • Marko Poutiainen:他是个伟大的,虽然我并不是对他百分百的认同,但是必定是历史上最重要的程序员之一,无论在他身前身后都是如此。
  • John Burnette:你想想假设Linux写出来的时候,GNU项目还不存在的话,会是什么情况?所以Stallman才是老大,耶~

5. Anders Hejlsberg

主要贡献:Turbo Pascal 的缔造者、C# 之父

上榜理由:他是Turbo Pascal的真正创始人。Turbo Pascl可谓是历史上最受欢迎的编译器之一,也是首个集成开发环境(IDE)。随后,他主导开发了Turbo Pascal的继任者——Delphi。他还是 C# 的首席构架师。2001年,他获得了Dr. Dobb’s杂志颁发的“杰出编程奖”。

网友评价:

  • Steve Wood:他当年用汇编语言代码写了Pascal编译器,同时支持当时PC机上的两种主流操作系统(DOS和CP/M)。他的编译器把编译,链接程序的时间从分钟级别提速到了秒级别。
  • Stefan Kiryazov:我崇拜这个家伙,在我成长为职业软件工程的三个关键阶段,每个阶段最喜爱的工具都出自他的创造。

6. Doug Cutting

主要成就:Lucene 的缔造者

上榜理由:他开发了Lucene搜索引擎,Nutch网络爬虫引擎以及Hadoop分布式大数据处理工具。他是开源项目的拥趸(Lucene,Nutch和Hadoop都是开源的)。他还担任过Apache软件基金会的总监。

网友评价:

  • Rajesh Rao:…他就是写出杰出搜索引擎框架(Lucene/Solr)的那个人。他为世界打开了大数据之门(Hadoop)。
  • Amit Nithianandan:他在Lucene和Hadoop上的创新性工作(当然也包括其他项目),为世界创造了巨大的财富和众多就业机会…

推荐阅读:

《Lucene五分钟教程》

7. Jeff Dean

主要成就:

Goolge搜索索引技术的幕后大脑。

上榜理由:他参与设计和实现了Google许多大型分布式系统,包括网络爬虫,索引和搜索,AdSense, MapReduce, BigTable和Spanner。他被选获得2009年的美国国家工程学院奖。2012年获得ACM SIGOPS Mark Weiser奖和ACM-InfoSys基础奖(计算机科学类)。

网友评价:

  • Natu Lauchande:…他在数据挖掘方面取得了重大突破(GFS, MapReduce, BigTable)
  • Erik Goldman: …他设计,实现并部署了MapReduce和BigTable,还有无数其他的东西。
  • 伯小乐补充:「Jeff Dean 是直接写二进制机器代码的,他写源代码,是为了给其他开发人员作参考」。这句是出自《趣文:谷歌大牛Jeff Dean的那些“惊人真相”》的趣评。

推荐阅读:

《谷歌大牛Jeff Dean是如何成为互联网战神的》和《趣文:谷歌大牛Jeff Dean的那些“惊人真相”》

8. Sanjay Ghemawat

主要成就:举足轻重的Google架构师

上榜理由:他参与设计和实现了Google的大型分布式系统,包括MapReduce、Bigtable、Spanner和 Google文件系统。他还编写过Unix的ical日历系统。他于2009年获选进入的美国国家工程院。2012年赢得了ACM计算机科学信息系统基础 类奖。

网友评价:

  • Ahmet Alp Balkan:他是 Jeff Dean 的左膀右臂。

9. Linus Torvalds

主要成就:Linux 之父

上榜理由:他创建了Linux 内核 以及 Git(一个开源的版本控制系统)。他是众多奖项和荣誉的获得者,包括:1998年EFF先锋奖,英国计算机社区Lovelace奖章 (2000年),千禧技术奖金(2012年)以及IEEE计算机社区计算机先锋奖(2014年)。他还于2008年被提名计算机历史博物馆名人堂成员,以 及2012年Internet名人堂成员。

网友评价:

  • Erich Ficker:「为了说明他的成就,让我们来做个对比吧。他花了几年的时间就完成了Linux内核的编写,与此同时GNU Hurd项目(一个GNU自己开发的内核项目)已经发展了25年了,却还只停留在预发布的demo阶段。」
  • Dan Allen:「Torvald是程序员中的程序员。」
  • Alok Tripathy:「他太他*的优秀了!」

推荐阅读:

《Linus:23年前我开发Linux仅仅是因为好玩》和《Git 10 周年访谈:Linus 讲述背后故事》,更多请点击这里。

10. John Carmack | 约翰·卡马克

主要荣誉:Doom 之父

主要成就:他是id Software的联合创始人,他开发出了极具影响力的FPS游戏:《德军总部3D》、《毁灭战士》和《雷神之锤》。他是计算机图形技术领域的先锋,在图 形学上多次取得重要突破:包括自适应性图块刷新(adaptive tile refresh),二叉空间分割(BSP),以及表面缓存技术等等。他在2001年入选交互式艺术与科学学院名人堂,并在2007年和2008年两次获得 艾美奖工程和技术类奖项,并于2010年获得游戏开发者选择终身成就奖。

网友评价:

  • Alex Dolinsky:”他在20岁之前就写出了第一个渲染引擎。这家伙是个天才。我希望我有他1/4的功力就好了。“
  • dniblock:「《德军总部3D》、《毁灭战士》和《雷神之锤》在那个时代都是革命级的游戏,并且影响了一代游戏设计师。」
  • Greg Naugthon:”给他一个周末,他能做出任何东西。“
  • Chris Morris:”他就是编程界的莫扎特”

推荐阅读:

《大牛约翰·卡马克语录》和《卡马克:用C++进行函数式编程》

11. Fabrice Bellard

主要成就:QEMU 缔造者

上榜理由:他是许多著名开源软件程序的作者,包括QEMU——一个硬件模拟和虚拟化平台,FFmpeg——用于处理多媒体数据,以及一个Tiny C编译器,还有LZEXE,一个可执行程序压缩器。他是2000年和2001年混乱C代码竞赛的冠军,以及2011年Google-O’Reilly开源 奖获得者。他还曾经是计算圆周率位数最多的世界纪录保持者。

网友评价:

  • raphinou:“我觉得Fabrice Bellard的工作实在是太卓著和令人印象深刻了”
  • Pavan Yara:“Fabrice Bellard是全世界最高产的程序员…”
  • Micheal Valladolid:”他是软件工程界的尼古拉特斯拉“
  • Michael Biggins:”他是20世纪80年代以来产生的一位持续高产的程序员“

推荐阅读:

《天才程序员 Fabrice Bellard》

12. Jon Skeet

主要成就:StackOverflow 上的传奇贡献者

上榜理由:他是Google工程师,《C# in Depth》的作者。他保持者StackOverflow有史以来的最高声望,他平均每个月在StackOverflow上回答390个问题。

网友评价:

  • Steven A. Lowe:”Jon Skeet根本不需要调试器,他只要一直瞪着代码,然后代码就会自己出来坦白哪里出错了。“
  • Dan Dyer:”Jon Skeet的代码如果无法通过编译,那编译器就该出来道歉了。“
  • 匿名:”Jon Skeet的代码不需要遵守任何代码规范,因为他的代码本身就是规范。“
  • 伯小乐补充:上面这些评价,和《趣文:谷歌大牛Jeff Dean的那些“惊人真相”》这篇文章的趣评一个风格呀。

13. Adam D’Angelo

主要成就:Quora 联合创始人

上榜理由:他是Facebook的工程师,为Facebook构建了News Feeds 的最初基础设施。后来他成为了Facebook的CTO以及工程副总裁,接着他从Facebook离职联合创立了Quora。2001年,他以高中生的身 份成为了美国奥利匹克信息竞赛排名第八的选手。在2004年的ACM国际大学生编程竞赛中,他是加州理工大学银牌优胜队的成员之一。他还在2005年 Topcoder大学生挑战赛中闯入了算法编程竞赛的最终决赛轮。

网友评价:

  • 匿名:”他是一个‘全能’程序员”
  • Mark Zuckerberg:“他是我说的六个人之一。”
  • (黄小非补充:在创立Facebook之初,Mark Zuckerberg认为世界上只有6个人能够理解他创立Facebook的思想,当时他就盯上了在加州理工上学的Adam D’Angelo,认为他是6个人之一。)

14. Petr Mitrechev

主要荣誉:全世界最有竞赛能力的程序员

上榜理由:国际奥林匹克信息竞赛两次金牌得主(2000,2002)。2006年,他赢得了Google代码挑战赛和TopCode算法公开赛冠 军。另外,他还是两次Facebook Hacker Cup的得主(2011,2013)。在这篇文章发布的时候,他是TopCoder上算法总排名第二的参赛者(id叫Petr)并且在 Codeforces的总排名也是第二。

网友评价:

  • Kavish Dwivedi:「他就是竞赛型程序员的偶像,即使是在我们印度…」

15. Gennady Korotkevich

主要成就:编程竞赛的奇才

上榜理由:他是国际奥林匹克信息竞赛创办以来最年轻的参赛者(11岁)以及6次金牌获得者(2007-2012)。2013年ACM国际大学生编程 竞赛优胜队的成员之一,2014年Facebook Hacker Cup的赢得者。在本文编写是,他是Codeforces排名第一的选手(id:Tourist)以及Topcode算法竞赛者中的第一名

本文转载自: http://www.techug.com/good-programmers
(本站只作转载,不代表本站同意文中观点或证实文中信息)

老子道德经全文

老子
道德经

《道德经》——《老子道德经》

 

老 子: 「道 德 經」: 第 一 章

道 可 道 , 非 常 道 。 名 可 名 , 非 常 名 。

无 名 天 地 之 始 ﹔ 有 名 万 物 之 母 。

故 常 无 , 欲 以 观 其 妙 ﹔ 常 有 , 欲 以 观 其 徼 。

此 两 者 , 同 出 而 异 名 , 同 谓 之 玄 。

玄 之 又 玄 , 众 妙 之 门 。

 

老 子: 「道 德 經」 : 第 二 章

天 下 皆 知 美 之 为 美 , 斯 恶 已 。

皆 知 善 之 为 善 , 斯 不 善 已 。

有 无 相 生 , 难 易 相 成 , 长 短 相 形 ,

高 下 相 盈 , 音 声 相 和 , 前 后 相 随 。

恒 也 。 是 以 圣 人 处 无 为 之 事 ,

行 不 言 之 教 ﹔ 万 物 作 而 弗 始 ,

生 而 弗 有 , 为 而 弗 恃 , 功 成 而 不 居 。

夫 唯 弗 居 , 是 以 不 去 。

 

老 子: 「道 德 经」 : 第 三 章

不 尚 贤 , 使 民 不 争

不 贵 难 得 之 货 , 使 民 不 为 盗 ﹔

不 见 可 欲 , 使 民 心 不 乱 。

是 以 圣 人 之 治 ,

虚 其 心 ,

实 其 腹 ,

弱 其 志 ,

强 其 骨 。

常 使 民 无 知 无 欲 。

使 夫 智 者 不 敢 为 也 。

为 无 为 , 则 无 不 治 。

 

老 子: 「道 德 经」 : 第 四 章

道 冲 , 而 用 之 或 不 盈 。

渊 兮 , 似 万 物 之 宗 ﹔ 湛 兮 , 似 或 存 。

吾 不 知 谁 之 子 , 象 帝 之 先 。

 

老 子: 「道 德 经」 : 第 五 章

天 地 不 仁 , 以 万 物 为 刍 狗 ﹔ 圣 人 不 仁 , 以 百 姓 为 刍 狗 。

天 地 之 间 , 其 犹 橐 钥 乎 。 虚 而 不 屈 , 动 而 愈 出 。

多 言 数 穷 , 不 如 守 中 。

 

老 子: 「道 德 经」 : 第 六 章

谷 神 不 死 , 是 谓 玄 牝 。

玄 牝 之 门 , 是 谓 天 地 根 。帛系 若 存 , 用 之 不 勤 。

 

老 子: 「道 德 经」 : 第 七 章

天 长 地 久 。

天 地 所 以 能 长 且 久 者 ,

以 其 不 自 生 , 故 能 长 生 。

是 以 圣 人 后 其 身 而 身 先 ﹔ 外 其 身 而 身 存 。

非 以 其 无 私 邪 。

故 能 成 其 私 。

 

老 子: 「道 德 经」 : 第 八 章

上 善 若 水 。

水 善 利 万 物 而 不 争 ,

处 众 人 之 所 恶 , 故 几 于 道 。

居 善 地 , 心 善 渊 , 与 善 仁 ,

言 善 信 , 政 善 治 , 事 善 能 ,

动 善 时 。 夫 唯 不 争 , 故 无 尤 。

 

老 子: 「道 德 经」 : 第 九 章

持 而 盈 之 , 不 如 其 已 ﹔

揣 而 锐 之 , 不 可 长 保 。

金 玉 满 堂 , 莫 之 能 守 ﹔

富 贵 而 骄 , 自 遗 其 咎 。

功 遂 身 退 , 天 之 道 也 。

 

老 子: 「道 德 经」 : 第 十 章

载 营 魄 抱 一 , 能 无 离 乎 。

专 气 致 柔 , 能 如 婴 儿 乎 。

涤 除 玄 鉴 , 能 如 疵 乎 。

爱 国 治 民 , 能 无 为 乎 。

天 门 开 阖 , 能 为 雌 乎 。

明 白 四 达 , 能 无 知 乎 。

 

老 子: 「道 德 经」 : 第 十 一 章

三 十 辐 , 共 一 毂 , 当 其 无 , 有 车 之 用 。

埏 埴 以 为 器 , 当 其 无 , 有 器 之 用 。

凿 户 牖 以 为 室 , 当 其 无 , 有 室 之 用 。

故 有 之 以 为 利 , 无 之 以 为 用 。

 

老 子: 「道 德 经」 : 第 十 二 章

五 色 令 人 目 盲 ﹔ 五 音 令 人 耳 聋 ﹔ 五 味 令 人 口 爽 ﹔

驰 骋 畋 猎 , 令 人 心 发 狂 ﹔ 难 得 之 货 , 令 人 行 妨 。

是 以 圣 人 为 腹 不 为 目 , 故 去 彼 取 此 。

 

老 子: 「道 德 经」 : 第 十 三 章

宠 辱 若 惊 , 贵 大 患 若 身 。

何 谓 宠 辱 若 惊 。

宠 为 下 , 得 之 若 惊 , 失 之 若 惊 , 是 谓 宠 辱 若 惊 。

何 谓 贵 大 患 若 身 。

吾 所 以 有 大 患 者 , 为 吾 有 身 ,

及 吾 无 身 , 吾 有 何 患 。

故 贵 以 身 为 天 下 , 若 可 寄 天 下 ﹔

爱 以 身 为 天 下 , 若 可 托 天 下 。

 

老 子: 「道 德 经」 : 第 十 四 章

视 之 不 见 , 名 曰 夷 ﹔

听 之 不 闻 , 名 曰 希 ﹔

搏 之 不 得 , 名 曰 微 。

此 三 者 不 可 致 诘 , 故 混 而 为 一 。

其 上 不 皦 , 其 下 不 昧 。

绳 绳 兮 不 可 名 , 复 归 于 物 。

是 谓 无 状 之 状 , 无 物 之 象 , 是 谓 惚 恍 。

迎 之 不 见 其 首 , 随 之 不 见 其 后 。

执 古 之 道 , 以 御 今 之 有 。

能 知 古 始 , 是 谓 道 纪 。

 

老 子: 「道 德 经」 : 第 十 五 章

古 之 善 为 道 者 , 微 妙 玄 通 , 深 不 可 识 。

夫 唯 不 可 识 , 故 强 为 之 容 :

豫 兮 若 冬 涉 川 ﹔

犹 兮 若 畏 四 邻 ﹔

俨 兮 其 若 客 ﹔

涣 兮 其 若 凌 释 ﹔

敦 兮 其 若 朴 ﹔

旷 兮 其 若 谷 ﹔

混 兮 其 若 浊 ﹔

澹 兮 其 若 海 ﹔

飂 兮 若 无 止 。

孰 能 浊 以 静 之 徐 清 。

孰 能 安 以 动 之 徐 生 。

保 此 道 者 , 不 欲 盈 。

夫 唯 不 盈 , 故 能 蔽 而 新 成 。

 

老 子: 「道 德 经」 : 第 十 六 章

致 虚 极 , 守 静 笃。

万 物 并 作 , 吾 以 观 复。

夫 物 芸 芸 , 各 复 归 其 根 。

归 根 曰 静 , 静 曰 复 命 。

复 命 曰 常 , 知 常 曰 明 。

不 知 常 , 妄 作 凶 。

知 常 容 , 容 乃 公 ,

公 乃 全 , 全 乃 天 ,

天 乃 道 , 道 乃 久 , 没 身 不 殆 。

 

老 子: 「道 德 经」 : 第 十 七 章

太 上 , 不 知 有 之 ﹔

其 次 , 亲 而 誉 之 ﹔

其 次 , 畏 之 ﹔

其 次 , 侮 之 。

信 不 足 焉 , 有 不 信 焉 。

悠 兮 其 贵 言 。

功 成 事 遂 , 百 姓 皆 谓 : 「 我 自 然 」 。

 

老 子: 「道 德 经」 : 第 十 八 章

大 道 废 , 有 仁 义 ﹔ 智 慧 出 , 有 大 伪 ﹔

六 亲 不 和 , 有 孝 慈 ﹔ 国 家 昏 乱 , 有 忠 臣 。

 

老 子: 「道 德 经」 : 第 十 九 章

绝 圣 弃 智 , 民 利 百 倍 ﹔

绝 仁 弃 义 , 民 复 孝 慈 ﹔

绝 巧 弃 利 , 盗 贼 无 有 。

此 三 者 以 为 文 , 不 足 。

故 令 有 所 属 : 见 素 抱 朴 , 少 思 寡 欲 , 绝 学 无 忧 。

 

老 子: 「道 德 经」 : 第 二 十 章

唯 之 与 阿 , 相 去 几 何 。

之 与 恶 , 相 去 若 何 。

人 之 所 畏 , 不 可 不 畏 。

荒 兮 , 其 未 央 哉 。

众 人 熙 熙 , 如 享 太 牢 , 如 春 登 台 。

我 独 泊 兮 , 其 未 兆 ﹔

沌 沌 兮 , 如 婴 儿 之 未 孩 ﹔

儽 儽 兮 , 若 无 所 归 。

众 人 皆 有 余 , 而 我 独 若 遗 。 我 愚 人 之 心 也 哉 。

俗 人 昭 昭 , 我 独 昏 昏 。

俗 人 察 察 , 我 独 闷 闷 。

众 人 皆 有 以 , 而 我 独 顽 且 鄙 。

我 独 异 于 人 , 而 贵 食 母 。

 

老 子: 「道 德 经」 : 第 二 十 一 章

孔 德 之 容 , 惟 道 是 从 。

道 之 为 物 , 惟 恍 惟 惚 。

惚 兮 恍 兮 , 其 中 有 象 ﹔ 恍 兮 惚 兮 , 其 中 有 物 。

窈 兮 冥 兮 , 其 中 有 精 ﹔ 其 精 甚 真 , 其 中 有 信 。

自 今 及 古 , 其 名 不 去 , 以 阅 众 甫 。

吾 何 以 知 众 甫 之 状 哉 。 以 此 。

 

老 子: 「道 德 经」 : 第 二 十 二 章

曲 则 全 , 枉 则 直 , 洼 则 盈 ,

敝 则 新 , 少 则 得 , 多 则 惑 。

是 以 圣 人 抱 一 为 天 下 式 。

不 自 见 , 故 明 ﹔

不 自 是 , 故 彰 ﹔

不 自 伐 , 故 有 功 ﹔

不 自 矜 , 故 长 。

夫 唯 不 争 , 故 天 下 莫 能 与 之 争 。

古 之 所 谓 「 曲 则 全 」 者 , 岂 虚 言 哉 。

诚 全 而 归 之 。

 

老 子: 「道 德 经」 : 第 二 十 三 章

希 言 自 然 。

故 飘 风 不 终 朝 , 骤 雨 不 终 日 。

孰 为 此 者 。

天 地 。 天 地 尚 不 能 久 , 而 况 于 人 乎 。

故 从 事 于 道 者 , 同 于 道 ﹔

德 者 , 同 于 德 ﹔ 失 者 , 同 于 失 。

同 于 道 者 , 道 亦 乐 得 之 ﹔

同 于 德 者 , 德 亦 乐 得 之 ﹔

同 于 失 者 , 失 亦 乐 得 之 。

信 不 足 焉 , 有 不 信 焉 。

 

老 子: 「道 德 經」 : 第 二 十 四 章

企 者 不 立 ﹔ 跨 者 不 行 ﹔

自 见 者 不 明 ﹔ 自 是 者 不 彰 ﹔

自 伐 者 无 功 ﹔ 自 矜 者 不 长 。

其 在 道 也 , 曰 : 余 食 赘 形 。

物 或 恶 之 , 故 有 道 者 不 处 。

 

老 子: 「道 德 经」 : 第 二 十 五 章

有 物 混 成 , 先 天 地 生 。

寂 兮 寥 兮 , 独 立 而 不 改 ,

周 行 而 不 殆 , 可 以 为 天 地 母 。

吾 不 知 其 名 , 强 字 之 曰 道 , 强 为 之 名 曰 大 。

大 曰 逝 , 逝 曰 远 , 远 曰 反 。

故 道 大 , 天 大 , 地 大 , 人 亦 大 。

域 中 有 四 大 , 而 人 居 其 一 焉 。

人 法 地 , 地 法 天 , 天 法 道 , 道 法 自 然 。

 

老 子: 「道 德 经」 : 第 二 十 六 章

重 为 轻 根 , 静 为 躁 君 。

是 以 君 子 终 日 行 不 离 辎 重 。

虽 有 荣 观 , 燕 处 超 然 。

奈 何 万 乘 之 主 , 而 以 身 轻 天 下 。

轻 则 失 根 , 躁 则 失 君 。

 

老 子: 「道 德 经」 : 第 二 十 七 章

善 行 无 辙 迹 , 善 言 无 瑕 谪 ﹔

善 数 不 用 筹 策 ﹔ 善 闭 无 关 楗 而 不 可 开 ,

善 结 无 绳 约 而 不 可 解 。

是 以 圣 人 常 善 救 人 , 故 无 弃 人 ﹔

常 善 救 物 , 故 无 弃 物 。

是 谓 袭 明 。

故 善 人 者 , 不 善 人 之 师 ﹔

不 善 人 者 , 善 人 之 资 。

不 贵 其 师 , 不 爱 其 资 ,

虽 智 大 迷 , 是 谓 要 妙 。

 

老 子: 「道 德 经」 : 第 二 十 八 章

知 其 雄 , 守 其 雌 , 为 天 下 溪 。

为 天 下 溪 , 常 德 不 离 , 复 归 于 婴 儿 。

知 其 白 , 守 其 辱 , 为 天 下 谷 。

为 天 下 谷 , 常 德 乃 足 , 复 归 于 朴 。

知 其 白 , 守 其 黑 , 为 天 下 式 。

为 天 下 式 , 常 德 不 忒 , 复 归 于 无 极 。

朴 散 则 为 器 , 圣 人 用 之 ,

则 为 官 长 , 故 大 智 不 割 。

 

老 子: 「道 德 经」 : 第 二 十 九 章

将 欲 取 天 下 而 为 之 , 吾 见 其 不 得 已 。

天 下 神 器 , 不 可 为 也 , 不 可 执 也 。

为 者 败 之 , 执 者 失 之 。

是 以 圣 人 无 为 , 故 无 败 ﹔

无 执 , 故 无 失。

夫 物 或 行 或 随 ﹔ 或 嘘 或 吹 ﹔

或 强 或 羸 ﹔ 或 载 或 隳 。

是 以 圣 人 去 甚 , 去 奢 , 去 泰 。

 

老 子: 「道 德 经」 : 第 三 十 章

以 道 佐 人 主 者 , 不 以 兵 强 天 下 。

其 事 好 远 。

师 之 所 处 , 荆 棘 生 焉 。

大 军 之 后 , 必 有 凶 年 。

善 有 果 而 已 , 不 以 取 强 。

果 而 勿 矜 , 果 而 勿 伐 , 果 而 勿 骄 。

果 而 不 得 已 , 果 而 勿 强 。

物 壮 则 老 , 是 谓 不 道 , 不 道 早 已 。

 

老 子: 「道 德 经」 : 第 三 十 一 章

夫 兵 者 , 不 祥 之 器 ,

物 或 恶 之 , 故 有 道 者 不 处 。

君 子 居 则 贵 左 , 用 兵 则 贵 右 。

兵 者 不 祥 之 器 , 非 君 子 之 器 ,

不 得 已 而 用 之 , 恬 淡 为 上 。

胜 而 不 美 , 而 美 之 者 , 是 乐 杀 人 。

夫 乐 杀 人 者 , 则 不 可 得 志 于 天 下 矣 。

吉 事 尚 左 , 凶 事 尚 右 。

偏 将 军 居 左 , 上 将 军 居 右 , 言 以 丧 礼 处 之 。

杀 人 之 众 , 以 悲 哀 泣 之 , 战 胜 以 丧 礼 处 之 。

 

老 子: 「道 德 经」 : 第 三 十 二 章

道 常 无 名 朴 。

虽 小 , 天 下 莫 能 臣 。

侯 王 若 能 守 之 , 万 物 将 自 宾 。

天 地 相 合 , 以 降 甘 露 , 民 莫 之 令 而 自 均 。

始 制 有 名 , 名 亦 既 有 ,

夫 亦 将 知 止 , 知 止 可 以 不 殆 。

譬 道 之 在 天 下 , 犹 川 谷 之 于 江 海 。

 

老 子: 「道 德 经」 : 第 三 十 三 章

知 人 者 智 , 自 知 者 明 。

胜 人 者 有 力 , 自 胜 者 强 。

知 足 者 富 。

强 行 者 有 志 。

不 失 其 所 者 久 。

死 而 不 亡 者 寿 。

 

老 子: 「道 德 经」 : 第 三 十 四 章

大 道 泛 兮 , 其 可 左 右 。

万 物 恃 之 以 生 而 不 辞 , 功 成 而 不 有 。

衣 养 万 物 而 不 为 主 , 可 名 于 小 ﹔

万 物 归 焉 而 不 为 主 , 可 名 为 大 。

以 其 终 不 自 为 大 , 故 能 成 其 大 。

 

老 子: 「道 德 经」 : 第 三 十 五 章

执 大 象 , 天 下 往 。

往 而 不 害 , 安 平 泰 。

乐 与 饵 , 过 客 止 。

道 之 出 口 , 淡 乎 其 无 味 ,

视 之 不 足 见 , 听 之 不 足 闻 , 用 之 不 足 既 。

 

老 子: 「道 德 经」 : 第 三 十 六 章

将 欲 歙 之 , 必 故 张 之 ﹔ 将 欲 弱 之 , 必 故 强 之 ﹔

将 欲 废 之 , 必 故 兴 之 ﹔ 将 欲 取 之 , 必 故 与 之 。

是 谓 微 明 。

柔 弱 胜 刚 强 。

鱼 不 可 脱 于 渊 , 国 之 利 器 不 可 以 示 人 。

 

老 子: 「道 德 经」 : 第 三 十 七 章

道 常 无 为 而 无 不 为 。

侯 王 若 能 守 之 , 万 物 将 自 化 。

化 而 欲 作 , 吾 将 镇 之 以 无 名 之 朴 。

镇 之 以 无 名 之 朴 , 夫 将 不 欲 。

不 欲 以 静 , 天 下 将 自 正 。

 

老 子: 「道 德 经」 : 第 三 十 八 章

上 德 不 德 , 是 以 有 德 ﹔

下 德 不 失 德 , 是 以 无 德 。

上 德 无 为 而 无 以 为 ﹔

下 德 无 为 而 有 以 为 。

上 仁 为 之 而 无 以 为 ﹔

上 义 为 之 而 有 以 为 。

上 礼 为 之 而 莫 之 应 ,

则 攘 臂 而 扔 之 。

故 失 道 而 后 德 , 失 德 而 后 仁 ,

失 仁 而 后 义 , 失 义 而 后 礼 。

夫 礼 者 , 忠 信 之 薄 , 而 乱 之 首 。

前 识 者 , 道 之 华 , 而 愚 之 始 。

是 以 大 丈 夫 处 其 厚 , 不 居 其 薄 ﹔

处 其 实 , 不 居 其 华 。 故 去 彼 取 此 。

 

老 子: 「道 德 经」 : 第 三 十 九 章

昔 之 得 一 者 :

天 得 一 以 清 ﹔

地 得 一 以 宁 ﹔

神 得 一 以 灵 ﹔

谷 得 一 以 生 ﹔

侯 得 一 以 为 天 下 正 。

其 致 之 也 , 谓 天 无 以 清 , 将 恐 裂 ﹔

地 无 以 宁 , 将 恐 废 ﹔

神 无 以 灵 , 将 恐 歇 ﹔

谷 无 以 盈 , 将 恐 竭 ﹔

万 物 无 以 生 , 将 恐 灭 ﹔

侯 王 无 以 正 , 将 恐 蹶 。

故 贵 以 贱 为 本 , 高 以 下 为 基 。

是 以 侯 王 自 称 孤 、 寡 、 不 谷 。

此 非 以 贱 为 本 邪 。 非 乎 。 故 致 誉 无 誉 。

是 故 不 欲 琭 琭 如 玉 , 珞 珞 如 石 。

 

老 子: 「道 德 經」 : 第 四 十 章

反 者 道 之 动 ﹔ 弱 者 道 之 用 。

天 下 万 物 生 于 有 , 有 生 于 无 。

 

老 子: 「道 德 经」 : 第 四 十 一 章

上 士 闻 道 , 勤 而 行 之 ﹔ 中 士 闻 道 , 若 存 若 亡 ﹔

下 士 闻 道 , 大 笑 之 。 不 笑 不 足 以 为 道 。

故 建 言 有 之 :

明 道 若 昧 ﹔

进 道 若 退 ﹔

夷 道 若 颣 ﹔

上 德 若 谷 ﹔

广 德 若 不 足 ﹔

建 德 若 偷 ﹔

质 真 若 渝 ﹔

大 白 若 辱 ﹔

大 方 无 隅 ﹔

大 器 晚 成 ﹔

大 音 希 声 ﹔

大 象 无 形 ﹔

道 隐 无 名 。

夫 唯 道 , 善 贷 且 成 。

 

老 子: 「道 德 经」 : 第 四 十 二 章

道 生 一 , 一 生 二 , 二 生 三 , 三 生 万 物 。

万 物 负 阴 而 抱 阳 , 冲 气 以 为 和 。

人 之 所 恶 , 唯 孤 、 寡 、 不 谷 , 而 王 公 以 为 称 。

故 物 或 损 之 而 益 , 或 益 之 而 损 。

人 之 所 教 , 我 亦 教 之 。

强 梁 者 不 得 其 死 , 吾 将 以 为 教 父 。

 

老 子: 「道 德 经」 : 第 四 十 三 章

天 下 之 至 柔 , 驰 骋 天 下 之 至 坚 。

无 有 入 无 间 , 吾 是 以 知 无 为 之 有 益 。

不 言 之 教 , 无 为 之 益 , 天 下 希 及 之 。

 

老 子: 「道 德 经」 : 第 四 十 四 章

名 与 身 孰 亲 。 身 与 货 孰 多 。 得 与 亡 孰 病 。

甚 爱 必 大 费 ﹔ 多 藏 必 厚 亡 。

故 知 足 不 辱 , 知 止 不 殆 , 可 以 长 久 。

 

老 子: 「道 德 经」 : 第 四 十 五 章

大 成 若 缺 , 其 用 不 弊 。

大 盈 若 冲 , 其 用 不 穷 。

大 直 若 屈 , 大 巧 若 拙 , 大 辩 若 讷 。

静 胜 躁 , 寒 胜 热 。 清 静 为 天 下 正 。

 

老 子: 「道 德 经」 : 第 四 十 六 章

天 下 有 道 , 却 走 马 以 粪 。

天 下 无 道 , 戎 马 生 于 郊 。

祸 莫 大 于 不 知 足 ﹔ 咎 莫 大 于 欲 得 。

故 知 足 之 足 , 常 足 矣 。

 

老 子: 「道 德 经」 : 第 四 十 七 章

不 出 户 , 知 天 下 ﹔ 不 窥 牖 , 见 天 道 。

其 出 弥 远 , 其 知 弥 少 。

是 以 圣 人 不 行 而 知 , 不 见 而 明 , 不 为 而 成 。

 

老 子: 「道 德 经」 : 第 四 十 八 章

为 学 日 益 , 为 道 日 损 。

损 之 又 损 , 以 至 于 无 为 。

无 为 而 无 不 为 。

取 天 下 常 以 无 事 , 及 其 有 事 , 不 足 以 取 天 下 。

 

老 子: 「道 德 经」 : 第 四 十 九 章

圣 人 常 无 心 , 以 百 姓 心 为 心 。

善 者 , 吾 善 之 ﹔ 不 善 者 , 吾 亦 善 之 ﹔ 德 善 。

信 者 , 吾 信 之 ﹔ 不 信 者 , 吾 亦 信 之 ﹔ 德 信 。

圣 人 在 天 下 , 歙 歙 焉 , 为 天 下 浑 其 心 ,

百 姓 皆 注 其 耳 目 , 圣 人 皆 孩 之 。

 

老 子: 「道 德 经」 : 第 五 十 章

出 生 入 死 。

生 之 徒 , 十 有 三 ﹔

死 之 徒 , 十 有 三 ﹔

人 之 生 , 动 之 于 死 地 , 亦 十 有 三 。

夫 何 故 。

以 其 生 之 厚 。

盖 闻 善 摄 生 者 , 路 行 不 遇 兕 虎 , 入 军 不 被 甲 兵 ﹔

兕 无 所 投 其 角 , 虎 无 所 用 其 爪 , 兵 无 所 容 其 刃 。

夫 何 故 。 以 其 无 死 地 。

 

老 子: 「道 德 经」 : 第 五 十 一 章

道 生 之 , 德 畜 之 , 物 形 之 , 势 成 之 。

是 以 万 物 莫 不 尊 道 而 贵 德 。

道 之 尊 , 德 之 贵 , 夫 莫 之 命 而 常 自 然 。

故 道 生 之 , 德 畜 之 ﹔

长 之 育 之 ﹔ 成 之 熟 之 ﹔ 养 之 覆 之 。

生 而 不 有 , 为 而 不 恃 ,

长 而 不 宰 。 是 谓 玄 德 。

 

老 子: 「道 德 经」 : 第 五 十 二 章

天 下 有 始 , 以 为 天 下 母 。

既 得 其 母 , 以 知 其 子 ,

复 守 其 母 , 没 身 不 殆 。

塞 其 兑 , 闭 其 门 , 终 身 不 勤 。

开 其 兑 , 济 其 事 , 终 身 不 救 。

见 小 曰 明 , 守 柔 曰 强 。

用 其 光 , 复 归 其 明 , 无 遗 身 殃 ﹔ 是 为 袭 常 。

 

老 子: 「道 德 经」 : 第 五 十 三 章

使 我 介 然 有 知 , 行 于 大 道 , 唯 施 是 畏 。

大 道 甚 夷 , 而 人 好 径 。

朝 甚 除 , 田 甚 芜 , 仓 甚 虚 ﹔

服 文 采 , 带 利 剑 , 厌 饮 食 ,

财 货 有 余 ﹔ 是 为 盗 夸 。

非 道 也 哉 。

 

老 子: 「道 德 经」 : 第 五 十 四 章

善 建 者 不 拔 ,

善 抱 者 不 脱 , 子 孙 以 祭 祀 不 辍 。

修 之 于 身 , 其 德 乃 真 ﹔

修 之 于 家 , 其 德 乃 余 ﹔

修 之 于 乡 , 其 德 乃 长 ﹔

修 之 于 邦 , 其 德 乃 丰 ﹔

修 之 于 天 下 , 其 德 乃 普 。

故 以 身 观 身 ,

以 家 观 家 , 以 乡 观 乡 ,

以 邦 观 邦 , 以 天 下 观 天 下 。

吾 何 以 知 天 下 然 哉 。 以 此 。

 

老 子: 「道 德 经」 : 第 五 十 五 章

含 「 德 」 之 厚 , 比 于 赤 子 。

毒 虫 不 螫 , 猛 兽 不 据 , 攫 鸟 不 搏 。

骨 弱 筋 柔 而 握 固 。

未 知 牝 牡 之 合 而 峻 作 , 精 之 至 也 。

终 日 号 而 不 嗄 , 和 之 至 也 。

知 和 曰 「 常 」 ,

知 常 曰 「 明 」 。

益 生 曰 祥 。 心 使 气 曰 强 。

物 壮 则 老 , 谓 之 不 道 , 不 道 早 已 。

 

老 子: 「道 德 经」 : 第 五 十 六 章

知 者 不 言 , 言 者 不 知 。

挫 其 锐 , 解 其 纷 , 和 其 光 ,

同 其 尘 , 是 谓 「 玄 同 」 。

故 不 可 得 而 亲 , 不 可 得 而 疏 ﹔

不 可 得 而 利 , 不 可 得 而 害 ﹔

不 可 得 而 贵 , 不 可 得 而 贱 。 故 为 天 下 贵 。

 

老 子: 「道 德 经」 : 第 五 十 七 章

以 正 治 国 , 以 奇 用 兵 , 以 无 事 取 天 下 。

吾 何 以 知 其 然 哉 。 以 此 :

天 下 多 忌 讳 , 而 民 弥 贫 ﹔

人 多 利 器 , 国 家 滋 昏 ﹔

人 多 伎 巧 , 奇 物 滋 起 ﹔

法 令 滋 彰 , 盗 贼 多 有 。

故 圣 人 云 :

「 我 无 为 , 而 民 自 化 ﹔

我 好 静 , 而 民 自 正 ﹔

我 无 事 , 而 民 自 富 ﹔

我 无 欲 , 而 民 自 朴 。 」

 

老 子: 「道 德 经」 : 第 五 十 八 章

其 政 闷 闷 , 其 民 淳 淳 ﹔

其 政 察 察 , 其 民 缺 缺 。

是 以 圣 人 方 而 不 割 , 廉 而 不 刿 ,

直 而 不 肆 , 光 而 不 耀 。

祸 兮 福 之 所 倚 , 福 兮 祸 之 所 伏 。

孰 知 其 极 。 其 无 正 也 。

正 复 为 奇 , 善 复 为 妖 。

人 之 迷 , 其 日 固 久 。

 

老 子: 「道 德 经」 : 第 五 十 九 章

治 人 事 天 , 莫 若 啬 。

夫 唯 啬 , 是 谓 早 服 ﹔

早 服 谓 之 重 积 德 ﹔ 重 积 德 则 无 不 克 ﹔

无 不 克 则 莫 知 其 极 ﹔ 莫 知 其 极 , 可 以 有 国 ﹔

有 国 之 母 , 可 以 长 久 ﹔

是 谓 深 根 固 柢 , 长 生 久 视 之 道 。

 

老 子: 「道 德 经」 : 第 六 十 章

治 大 国 , 若 烹 小 鲜 。

以 道 莅 天 下 , 其 鬼 不 神 ﹔

非 其 鬼 不 神 , 其 神 不 伤 人 ﹔

非 其 神 不 伤 人 , 圣 人 亦 不 伤 人 。

夫 两 不 相 伤 , 故 德 交 归 焉 。

 

老 子: 「道 德 经」 : 第 六 十 一 章

大 邦 者 下 流 , 天 下 之 牝 ,

天 下 之 交 也 。

牝 常 以 静 胜 牡 , 以 静 为 下 。

故 大 邦 以 下 小 邦 , 则 取 小 邦 ﹔

小 邦 以 下 大 邦 , 则 取 大 邦 。

故 或 下 以 取 , 或 下 而 取 。

大 邦 不 过 欲 兼 畜 人 , 小 邦 不 过 欲 入 事 人 。

夫 两 者 各 得 所 欲 , 大 者 宜 为 下 。

 

老 子: 「道 德 经」 : 第 六 十 二 章

道 者 万 物 之 奥 。 善 人 之 宝 , 不 善 人 之 所 保 。

美 言 可 以 市 尊 , 美 行 可 以 加 人 。

人 之 不 善 , 何 弃 之 有 。

故 立 天 子 , 置 三 公 ,

虽 有 拱 璧 以 先 驷 马 ,

不 如 坐 进 此 道 。

古 之 所 以 贵 此 道 者 何 。

不 曰 : 求 以 得 , 有 罪 以 免 邪 。 故 为 天 下 贵 。

 

老 子: 「道 德 经」 : 第 六 十 三 章

为 无 为 , 事 无 事 , 味 无 味 。

图 难 于 其 易 , 为 大 于 其 细 ﹔

天 下 难 事 , 必 作 于 易 ,

天 下 大 事 , 必 作 于 细 。

是 以 圣 人 终 不 为 大 , 故 能 成 其 大 。

夫 轻 诺 必 寡 信 , 多 易 必 多 难 。

是 以 圣 人 犹 难 之 , 故 终 无 难 矣 。

 

老 子: 「道 德 经」 : 第 六 十 四 章

其 安 易 持 , 其 未 兆 易 谋 。

其 脆 易 泮 , 其 微 易 散 。

为 之 于 未 有 , 治 之 于 未 乱 。

合 抱 之 木 , 生 于 毫 末 ﹔

九 层 之 台 , 起 于 累 土 ﹔

千 里 之 行 , 始 于 足 下。

民 之 从 事 , 常 于 几 成 而 败 之 。

慎 终 如 始 , 则 无 败 事 。

 

老 子: 「道 德 經」 : 第 六 十 五 章

古 之 善 为 道 者 , 非 以 明 民 , 将 以 愚 之 。

民 之 难 治 , 以 其 智 多 。

故 以 智 治 国 , 国 之 贼 ﹔

不 以 智 治 国 , 国 之 福 。

知 此 两 者 亦 稽 式 。

常 知 稽 式 , 是 谓 「 玄 德 」 。

「 玄 德 」 深 矣 , 远 矣 , 与 物 反 矣 , 然 后 乃 至 大 顺 。

 

老 子: 「道 德 经」 : 第 六 十 六 章

江 海 之 所 以 能 为 百 谷 王 者 ,

以 其 善 下 之 , 故 能 为 百 谷 王 。

是 以 圣 人 欲 上 民 , 必 以 言 下 之 ﹔

欲 先 民 , 必 以 身 后 之 。

是 以 圣 人 处 上 而 民 不 重 , 处 前 而 民 不 害 。

是 以 天 下 乐 推 而 不 厌 。

以 其 不 争 , 故 天 下 莫 能 与 之 争 。

 

老 子: 「道 德 经」 : 第 六 十 七 章

天 下 皆 谓 我 道 大 , 似 不 肖 。

夫 唯 大 , 故 似 不 肖 。

若 肖 , 久 矣 其 细 也 夫 。

我 有 三 宝 , 持 而 保 之 。

一 曰 慈 ,

二 曰 俭 ,

三 曰 不 敢 为 天 下 先 。

慈 故 能 勇 ﹔ 俭 故 能 广 ﹔

不 敢 为 天 下 先 , 故 能 成 器 长 。

今 舍 慈 且 勇 ﹔ 舍 俭 且 广 ﹔

舍 后 且 先 ﹔ 死 矣 。

夫 慈 以 战 则 胜 , 以 守 则 固 。

天 将 救 之 , 以 慈 卫 之 。

 

老 子: 「道 德 经」 : 第 六 十 八 章

善 为 士 者 , 不 武 ﹔

善 战 者 , 不 怒 ﹔

善 胜 敌 者 , 不 与 ﹔

善 用 人 者 , 为 之 下 。

是 谓 不 争 之 德 ,

是 谓 用 人 之 力 ,

是 谓 配 天 古 之 极 。

 

老 子: 「道 德 经」 : 第 六 十 九 章

用 兵 有 言 :

「 吾 不 敢 为 主 , 而 为 客 ﹔

不 敢 进 寸 , 而 退 尺 。 」

是 谓 行 无 行 ﹔ 攘 无 臂 ﹔

扔 无 敌 ﹔ 执 无 兵 。

祸 莫 大 于 轻 敌 , 轻 敌 几 丧 吾 宝 。

故 抗 兵 相 若 , 哀 者 胜 矣 。

 

老 子: 「道 德 经」 : 第 七 十 章

吾 言 甚 易 知 , 甚 易 行 。

天 下 莫 能 知 , 莫 能 行 。

言 有 宗 , 事 有 君 。

夫 唯 无 知 , 是 以 不 我 知 。

知 我 者 希 , 则 我 者 贵 。

是 以 圣 人 被 褐 而 怀 玉 。

 

老 子: 「道 德 经」 : 第 七 十 一 章

知 不 知 , 尚 矣 ﹔ 不 知 知 , 病 也 。

圣 人 不 病 , 以 其 病 病 。

夫 唯 病 病 , 是 以 不 病 。

 

老 子: 「道 德 经」 : 第 七 十 二 章

民 不 畏 威 ,

则 大 威 至 。

无 狎 其 所 居 ,

无 厌 其 所 生 。

夫 唯 不 厌 ,

是 以 不 厌 。

是 以 圣 人 自 知 不 自 见 ﹔

自 爱 不 自 贵 。

故 去 彼 取 此 。

 

老 子: 「道 德 经」 : 第 七 十 三 章

勇 于 敢 则 杀 , 勇 于 不 敢 则 活 。

此 两 者 , 或 利 或 害 。

天 之 所 恶 , 孰 知 其 故 。

天 之 道 ,

不 争 而 善 胜 , 不 言 而 善 应 ,

不 召 而 自 来 , 繟 然 而 善 谋 。

天 网 恢 恢 , 疏 而 不 失 。

 

老 子: 「道 德 经」 : 第 七 十 四 章

民 不 畏 死 , 奈 何 以 死 惧 之 。

若 使 民 常 畏 死 , 而 为 奇 者 ,

吾 得 执 而 杀 之 , 孰 敢 。

常 有 司 杀 者 杀 。

夫 代 司 杀 者 杀 , 是 谓 代 大 匠 斲 ,

夫 代 大 匠 斲 者 , 希 有 不 伤 其 手 矣 。

 

老 子: 「道 德 经」 : 第 七 十 五 章

民 之 饥 , 以 其 上 食 税 之 多 , 是 以 饥 。

民 之 难 治 , 以 其 上 之 有 为 , 是 以 难 治 。

民 之 轻 死 , 以 其 上 求 生 之 厚 , 是 以 轻 死 。

夫 唯 无 以 生 为 者 , 是 贤 于 贵 生 。

 

老 子: 「道 德 经」 : 第 七 十 六 章

人 之 生 也 柔 弱 , 其 死 也 坚 强 。

草 木 之 生 也 柔 脆 , 其 死 也 枯 槁 。

故 坚 强 者 死 之 徒 , 柔 弱 者 生 之 徒 。

是 以 兵 强 则 灭 , 木 强 则 折 。

强 大 处 下 , 柔 弱 处 上 。

 

老 子: 「道 德 经」 : 第 七 十 七 章

天 之 道 , 其 犹 张 弓 欤 。

高 者 抑 之 , 下 者 举 之 ﹔

有 余 者 损 之 , 不 足 者 补 之 。

天 之 道 , 损 有 余 而 补 不 足 。

人 之 道 , 则 不 然 , 损 不 足 以 奉 有 余 。

孰 能 有 余 以 奉 天 下 , 唯 有 道 者 。

是 以 圣 人 为 而 不 恃 , 功 成 而 不 处 , 其 不 欲 见 贤 。

 

老 子: 「道 德 经」 : 第 七 十 八 章

天 下 莫 柔 弱 于 水 , 而 攻 坚 强 者 莫 之 能 胜 , 以 其 无 以 易 之 。

弱 之 胜 强 , 柔 之 胜 刚 ,

天 下 莫 不 知 , 莫 能 行 。

是 以 圣 人 云 :

「 受 国 之 垢 , 是 谓 社 稷 主 ﹔

受 国 不 祥 , 是 为 天 下 王 。 」

正 言 若 反 。

老 子: 「「道 德 經」」 : 第 七 十 九 章

和 大 怨 , 必 有 余 怨 ﹔

报 怨 以 德 , 安 可 以 为 善 。

是 以 圣 人 执 左 契 , 而 不 责 于 人 。

有 德 司 契 , 无 德 司 彻 。

天 道 无 亲 , 常 与 善 人 。

老 子:「道 德 经」 : 第 八 十 章

小 国 寡 民 。

使 有 什 伯 之 器 而 不 用 ﹔

使 民 重 死 而 不 远 徙 。

虽 有 舟 舆 , 无 所 乘 之 ,

虽 有 甲 兵 , 无 所 陈 之 。

使 民 复 结 绳 而 用 之 。

甘 其 食 , 美 其 服 , 安 其 居 , 乐 其 俗 。

邻 国 相 望 , 鸡 犬 之 声 相 闻 ,

民 至 老 死 , 不 相 往 来 。

老 子: 「道 德 经」 : 第 八 十 一 章

信 言 不 美 , 美 言 不 信 。

善 者 不 辩 , 辩 者 不 善 。

知 者 不 博 , 博 者 不 知 。

圣 人 不 积 , 既 以 为 人 己 愈 有 ,

既 以 与 人 己 愈 多 。

天 之 道 , 利 而 不 害 ﹔

圣 人 之 道 , 为 而 不 争 。

——老子“道德经原文”结束,《道德经全文》

一张感动全球的照片

一张感动全球的照片

在伊拉克,一个没有妈妈的小女孩,在孤儿院的水泥地面上,画了一个妈妈。她小心翼翼地脱下鞋子,在妈妈的胸口睡着了……真不知道该如何用人类的语言去诠释 这样的一个画面,我们还有什么资格和理由抱怨自己不够幸福?珍惜现在所拥有的,其实幸福可以很简单!默默地看着这幅画,也许你会感动掉泪……