BT雷人的程序语言(大全)

还记得以前本站的BT雷人的程序语言吗?除了那几个BrainfuckLOLCODEWhiteSpace,我以为这些是比较BT的语言,但是自从这两天我在网上看到一些(见文章最后的参考一节),我发现我错了,这个世界上,只有更变态,没有最变态。不相,你看看下面这些,简直变态到了极致啊。(下面的语言变态不分排名)

Befunge

第一个变态语言Befunge维基上面说——这门语言由Chris Pressey在1993年创造,本意为设计一种为难编译器的语言……结果马上出现了一批编译器。Befunge的代码是二维的。它用 < > v ^ 这四个符号来控制一个指针在代码中移动,指针经过一个字符或数字则把它压入一个栈,四则运算符号的功能就是弹出栈顶两个元素进行计算后把结果压回去。用 _ 和 | 来表示有条件的方向选择:当栈顶元素为0时向右(上)走,否则向左(下)走。& 和 ~ 分别用于读入数字或字符并压入栈,句号和逗号分别表示将栈顶元素作为整数或字符输出。最后以一个@符号表示程序结束。Befunge代码的注释不需要任何符号标明,你可以把注释写在程序的任何地方,只要运行时指针不会经过它就行了。

下面这段Hello World代码:

>              v
v  ,,,,,"Hello"<
>48*,          v
v,,,,,,"World!"<
>25*,@

下面一个是算圆周率的代码,非常的壮观:

aa*          v                  +------------------------+
vp*9920p*9930<                  | Pi generator in Bef-97 |
>:09a*pa*3/1+19a*p09a*g:09b*v   |                        |
v_@# g*b90 p*b910        < p<   | 7/2/1997, Kevin Vigor  |
>19a*g:+1-29b*p19a*g::09v       +------------------------+
v*a90g*b90*g*b91: _v#p*9<
>g-#v_ 2a*+$  v  :$
>1-aa*ga*+v  p
v1:/g*b92p*991:<  *
>9b*p29b*g*199*gv9
v*b92p*aa-1g*990-<9
>g2-29b*p099*g1-:0^
v -9p*b92:%ag*991  <
>#v_ 299*g1+299*p>       ^
>09b*g:#v_$v
v93p*b90-1<
>9*g199*ga/+.v
v:g*992 <p*9 92-<
v_29b*g399*p ^
>09b*g:#v_v      1
vp*b90-1    < $      g
>199*g9`#v_'9,v      *
>'0, >' ,299^

通常认为Befunge是第一个基于“二维控制流”的语言,后来衍生出的一大批类似的语言都是受的Befunge影响。例如PingPong语言就是把Befunge的四种箭头符号换成正反斜杠,控制指针移动方向90度旋转,起一个反弹的作用。

Chef

Chef如其名一样“主厨”(Wiki link),这门语言主要是为了让程序代码看起来像菜谱。这可以使得我们的程序员更像是大厨了,呵呵。该语言于2002年由David Morgan-Mar推出,核心是栈操作,特征就是——一套完整的Chef代码就是一个菜谱,程序名就是菜名,变量声明就是罗列原材料,后面一系列栈操作,就是菜肴的制作方法。把程序编写比作调和鼎鼐,有点意思,家庭主妇(或者“准家庭主妇”)试试看,权且当作人生预习。

用Chef编写Hello World代码如下:(在其网站上还有一个斐波拉契数的例子

Hello World Souffle.

Ingredients.
72 g haricot beans
101 eggs
108 g lard
111 cups oil
32 zucchinis
119 ml water
114 g red salmon
100 g dijon mustard
33 potatoes

Method.
Put potatoes into the mixing bowl.
Put dijon mustard into the mixing bowl.
Put lard into the mixing bowl.
Put red salmon into the mixing bowl.
Put oil into the mixing bowl.
Put water into the mixing bowl.
Put zucchinis into the mixing bowl.
Put oil into the mixing bowl.
Put lard into the mixing bowl.
Put lard into the mixing bowl.
Put eggs into the mixing bowl.
Put haricot beans into the mixing bowl.
Liquefy contents of the mixing bowl.
Pour contents of the mixing bowl into the baking dish.

Serves 1.

代码解读——原材料名显然可以随便改成别的原料,哪怕用单个字母也可以,不过少了点趣味性,但原料前面代表数量的数字不能改,那是ASCII代码。接下来菜肴制作方法就是把一个个字母和符号(都是ASCII)压入栈(就是代码中的“Put XXX into the mixing bowl”,从最后一个感叹号开始压),最后再把你做的菜托出上桌。

顺便说下,David Morgan-Mar已经设计出8种非主流编程语言了,还有一个变态的操作系统Petrovich。  参看这位大哥的——DM’s Esoteric Programming Languages(下面会介绍这位老大搞出来的语言)

Shakespeare

Shakespeare语言正如其名,其要让你的程序像“莎士比亚”的剧本一样充满艺术气息。

这个语言于2001年由Karl Hasselstrom和Jon Aslund联合推出,Shakespeare的代码完全模仿莎士比亚的戏剧。它也是一个基于栈的程序语言,程序中出场的每一个人物都代表一个栈。Shakespeare的代码自由度很高,因此同一个程序你可以写出完全不同的代码出来。

Shakespeare的Hello World代码如下(就是一部比较完整的“罗密欧与朱丽叶”的戏剧,作好心理准备)。“剧本”内容很无聊,就是一帮人在莫名其妙地称赞某些东西,里头还有古英语词汇,莎翁要是见了,可能会吐血。这里面Hello World或其ASCII码体现在全剧时不时出现的“The difference between……”句里面,根据各指代物品的好坏(比如鲜花算好的,牛粪算坏的)代表各数字,再进行各种运算最后相减(“The difference”暗指减法),得出一个字母或符号的ASCII码表。发明这个语言的人真是BT啊。

Romeo, a young man with a remarkable patience.
Juliet, a likewise young woman of remarkable grace.
Ophelia, a remarkable woman much in dispute with Hamlet.
Hamlet, the flatterer of Andersen Insulting A/S.
Act I: Hamlet's insults and flattery.
Scene I: The insulting of Romeo.
[Enter Hamlet and Romeo]
Hamlet:
You lying stupid fatherless big smelly half-witted coward!
You are as stupid as the difference between a handsome rich brave hero and thyself! Speak your mind!
You are as brave as the sum of your fat little stuffed misused dusty old rotten codpiece and a beautiful fair warm peaceful sunny summer's day. You are as healthy as the difference between the sum of the sweetest reddest rose and my father and yourself! Speak your mind!
You are as cowardly as the sum of yourself and the difference between a big mighty proud kingdom and a horse. Speak your mind.
Speak your mind!
[Exit Romeo]
Scene II: The praising of Juliet.
[Enter Juliet]
Hamlet:
Thou art as sweet as the sum of the sum of Romeo and his horse and his black cat! Speak thy mind!
[Exit Juliet]
Scene III: The praising of Ophelia.
[Enter Ophelia]
Hamlet:
Thou art as lovely as the product of a large rural town and my amazing bottomless embroidered purse. Speak thy mind!
Thou art as loving as the product of the bluest clearest sweetest sky and the sum of a squirrel and a white horse. Thou art as beautiful as the difference between Juliet and thyself. Speak thy mind!
[Exeunt Ophelia and Hamlet]
Act II: Behind Hamlet's back.
Scene I: Romeo and Juliet's conversation.
[Enter Romeo and Juliet]
Romeo:
Speak your mind. You are as worried as the sum of yourself and the difference between my small smooth hamster and my nose. Speak your mind!
Juliet:
Speak YOUR mind! You are as bad as Hamlet! You are as small as the difference between the square of the difference between my little pony and your big hairy hound and the cube of your sorry little codpiece. Speak your mind!
[Exit Romeo]
Scene II: Juliet and Ophelia's conversation.
[Enter Ophelia]
Juliet:
Thou art as good as the quotient between Romeo and the sum of a small furry animal and a leech. Speak your mind!
Ophelia:
Thou art as disgusting as the quotient between Romeo and twice the difference between a mistletoe and an oozing infected blister! Speak your mind!
[Exeunt]

BIT

BIT语言也是 David Morgan-Mar 搞出来的。程序员在拥有访问所有数据的全部权限。这是一款强大的编程工具。在高级程序语言中,该工具可以操作这些令人费解的数据。

看看下面这段代码,其展示了BIT的强大之处——代码和注释的完美统一。(很像BASIC)

LINE NUMBER ONE CODE READ GOTO ONE ZERO
LINE NUMBER ONE ZERO CODE VARIABLE ZERO EQUALS THE JUMP REGISTER GOTO ONE ONE
LINE NUMBER ONE ONE CODE READ GOTO ONE ZERO ZERO
LINE NUMBER ONE ZERO ZERO CODE VARIABLE ONE EQUALS THE JUMP REGISTER GOTO ONE ZERO ONE
LINE NUMBER ONE ZERO ONE CODE THE JUMP REGISTER EQUALS OPEN PARENTHESIS VARIABLE ZERO NAND VARIABLE ONE CLOSE PARENTHESIS NAND OPEN PARENTHESIS VARIABLE ZERO NAND VARIABLE ONE CLOSE PARENTHESIS GOTO ONE ONE ZERO IF THE JUMP REGISTER IS EQUAL TO ONE GOTO ONE ZERO ZERO ZERO IF THE JUMP REGISTER IS EQUAL TO ZERO
LINE NUMBER ONE ONE ZERO CODE PRINT ONE GOTO ONE ONE ONE
LINE NUMBER ONE ONE ONE CODE PRINT ZERO
LINE NUMBER ONE ZERO ZERO ZERO CODE THE JUMP REGISTER EQUALS OPEN PARENTHESIS VARIABLE ZERO NAND VARIABLE ZERO CLOSE PARENTHESIS NAND OPEN PARENTHESIS VARIABLE ONE NAND VARIABLE ONE CLOSE PARENTHESIS GOTO ONE ZERO ZERO ONE IF THE JUMP REGISTER IS EQUAL TO ZERO GOTO ONE ZERO ONE ZERO IF THE JUMP REGISTER IS EQUAL TO ONE
LINE NUMBER ONE ZERO ZERO ONE CODE PRINT ZERO
LINE NUMBER ONE ZERO ONE ZERO CODE PRINT ONE

当然,对于空格和换行符,显得太冗余了,去掉他们也没有问题。

LINENUMBERONECODEREADGOTOONEZEROLINENUMBERONEZEROCODEVARIABLEZEROEQUALSTHEJUMPR
EGISTERGOTOONEONELINENUMBERONEONECODEREADGOTOONEZEROZEROLINENUMBERONEZEROZEROCO
DEVARIABLEONEEQUALSTHEJUMPREGISTERGOTOONEZEROONELINENUMBERONEZEROONECODETHEJUMP
REGISTEREQUALSOPENPARENTHESISVARIABLEZERONANDVARIABLEONECLOSEPARENTHESISNANDOPE
NPARENTHESISVARIABLEZERONANDVARIABLEONECLOSEPARENTHESISGOTOONEONEZEROIFTHEJUMPR
EGISTERISEQUALTOONEGOTOONEZEROZEROZEROIFTHEJUMPREGISTERISEQUALTOZEROLINENUMBERO
NEONEZEROCODEPRINTONEGOTOONEONEONELINENUMBERONEONEONECODEPRINTZEROLINENUMBERONE
ZEROZEROZEROCODETHEJUMPREGISTEREQUALSOPENPARENTHESISVARIABLEZERONANDVARIABLEZER
OCLOSEPARENTHESISNANDOPENPARENTHESISVARIABLEONENANDVARIABLEONECLOSEPARENTHESISG
OTOONEZEROZEROONEIFTHEJUMPREGISTERISEQUALTOZEROGOTOONEZEROONEZEROIFTHEJUMPREGIS
TERISEQUALTOONELINENUMBERONEZEROZEROONECODEPRINTZEROLINENUMBERONEZEROONEZEROCOD
EPRINTONE

Haifu

Haifu程序语言也是David Morgan-Mar 搞出来的。从命名上就可以看出来它是一个汉语拼音。正是如此,作者想使用东方的哲学来创造一种编程的语言。其中还有Yin(阴)和 Yang(阳)——相当于布尔变量中的True/False,当然,也有金(Metal)木(Wood)水(Water)火(Fire)土(Earth)。呵呵。

  • Wood: tree, grass, cherry, oak.
  • Fire: flame, ash, smoke, embers.
  • Earth: soil, mountain, rock, plain.
  • Metal: sword, iron, plough, knife.
  • Water: rain, snow, river, ice.

自然出现了一张关系表:

 

元素关系 操作
B 生A A+B
B 克 A A-B
B 怕 A A/B
B 爱 A A*B
B 就是 A 如果A和B都是阳,则是阳,否则是阴

Piet

David Morgan-Mar 发明的用位图编程的Piet语言也是BT到了极致,你还记得前两的那个“我的hello world编不过去”文章中的那个强人用windows的画图程序编程的例子吗?呵呵Piet完全是用位图编程的语言。

下面这个图片就是其Hello World的示例:

再看看斐波拉契数列的程序示例:

这里还有更多的示例:http://www.dangermouse.net/esoteric/piet/samples.html

Malbolge

Malbolge语言,是最早的一个以代码丑陋为目标而设计出的程序语言,你几乎不可能读懂Malbolge的代码。它共有8条指令,所有运算都基于3进制,控制程序流的唯一指令是无条件跳转。其是BenOlmstead在1998年引进公共领域的深奥程序语言,名称来源于“the eighth circle of hell in Dante’s Inferno”,之后更名为Malbolge。

这被认为是地狱级的编程语言。

看看它的Hello World程序:

('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"
 `CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>

Unlambda

关于Unlambda语言,David Madore是这个语言的发明人,他于1976年8月3日生于法国,其是法国-加拿大籍数学家和计算机科学爱好者)。在unlambda里,所有东西都是函数。基本操作就是S, K, 和I三个组合子。当然,unlambda也加入一些扩展,让程序稍微好些一点。

```s``sii`ki
 ``s``s`ks
     ``s``s`ks``s`k`s`kr
               ``s`k`si``s`k`s`k
                               `d````````````.H.e.l.l.o.,. .w.o.r.l.d.!
                        k
      k
  `k``s``s`ksk`k.*

Ook!

Ook! 语言也是David Morgan-Mar 发明的,与Brainfuck类似, 但用单词“Ook!”,“Ook.” 和“Ook?”代替。我们来看一个Hello World的一个示例:

Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook?
Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook.
Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook.

下面是一些转换器和解释器:

TMMLPTEALPAITAFNFAL

你没看错,上面这一排毫无意义的字母是一个语言的名称。它是The Multi-Million Language Project To End All Language Projects And Isn’t That A Fine Name For A Language的缩写。TMMLPTEALPAITAFNFAL语言没有固定的语法规则,每一天都是不同的语法。例如,2000年10月13日你可以使用DIV但不能使用MOD;到了10月14日时你可以使用MOD了但DIV又不能用了。因此,你今天写的程序运行起来完全正常,但是到了明天就无法编译了。下面是一个TMMLPTEALPAITAFNFAL的Hello World程序,当然现在已经无法编译了。

DECLARE CELL 100 AS READPOS
 DECLARE 10 AS NEWLINE
 WRITE CHAR NEWLINE
 COPY "Hello, World" TO CELL 0
 COPY 0 TO READPOS
 WHILE READPOS INDIRECT DO GOSUB 300
 WRITE CHAR NEWLINE
 RETURN
LINE 300: WRITE CHAR READPOS INDIRECT
 ADD 1 TO READPOS
 RETURN

INTERCAL

INTERCAL语言Wikipedia)全称是“Compiler Language With No Pronounceable Acronym”。自认为是“超级黑客”的人可以试试用这个语言写程序。由老牌黑客Don Woods 和 James M. Lyon 在1972年发明,其是用来讽刺当时的那些编程语言。今天 这个语言有两个版本,一个是由牛人Eric S. Raymond维护的C-INTERCAL,另一个是Claudio Calvelli 维护的CLC-INTERCAL。(:在自由软件启蒙阶段,Eric S. Raymond以如椽之笔呼啸而出,其核心著作被业界成为”五部曲”:《黑客道简史》(A Brief History of Hackerdom)、 《大教堂和市集》(The Cathedral and the Bazaar)、《如何成为一名黑客》(How To Become A Hacker)、《开拓智域》(Homesteading the Noosphere)、《魔法大锅炉》(The Magic Cauldron)。其中最著名的当然还是《大教堂和市集》,它在自由软件运动中的地位相当于基督教的《圣经》。而用黑客们的话说,这是”黑客藏经阁”的 第一个收藏。)

来看看其Hello World的程序:

DO ,1 <- #13
PLEASE DO ,1 SUB #1 <- #238
DO ,1 SUB #2 <- #108
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #194
DO ,1 SUB #7 <- #48
PLEASE DO ,1 SUB #8 <- #22
DO ,1 SUB #9 <- #248
DO ,1 SUB #10 <- #168
DO ,1 SUB #11 <- #24
DO ,1 SUB #12 <- #16
DO ,1 SUB #13 <- #162
PLEASE READ OUT ,1
PLEASE GIVE UP

HQ9++

HQ9++语言同样是David Morgan-Mar 发明的,其带有四个指令的joke语言。

PerlYuYan

PerlYuYan语言是一个能令人使用中文文言文开发程式 Perl 程式的 Perl 模块,由唐凤于2002年一月发表。它是中文编程语言的尝试。作者利用中文的特质,将许多指令改成以一个中国汉字来表示,因而造成了文言语法的感觉。

看看下面的这段代码,相当的文言文啊。有兴趣可以去CPAN上下载回来玩玩。

#!/usr/local/bin/perl

use Lingua::Sinica::PerlYuYan;

用警兮用嚴。

印道
一至一
哉兮

印編曰雜申雜申矣
  又纖曰龍鼠矣
    又曰一矣

亂曰
國無人莫我知兮    又何懷乎故都
既莫足與為美政兮  吾將從彭咸之所居

还有下面这个五言。

# The Sieve of Eratosthenes - 埃拉托斯芬篩法
use Lingua::Sinica::PerlYuYan;

  用籌兮用嚴。井涸兮無礙
。印曰最高矣  又道數然哉。
。截起吾純風  賦小入大合。
。習予吾陣地  並二至純風。
。當起段賦取  加陣地合始。
。陣地賦篩始  繫繫此雜段。
。終陣地兮印  正道次標哉。
。輸空接段點  列終註泰來。

参考:

看过这些,我我还有什么好说的呢,什么C/C++/Java,神马都是浮云了……

(全文完)

终结PHP中文乱码的问题

乱码总是出现在utf-8和gb2312(或者是gbk)纠缠不清的时候,因此,保证php网页不乱码的一个前提是php文件与静态网页的编码要一致

1.使用utf-8编码的时候,php文件在所有输出之前加上:
header(“Content-Type: text/html; charset=utf-8″);
静态页面添加:
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>。
所有文件的编码格式为utf-8。保存为utf-8可能会有点麻烦,类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM——Byte Order Mark)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。

但对于 PHP来说,PHP在设计时就没有考虑BOM的问题,不会忽略UTF-8编码的文件开头 BOM的那三个字符,会把BOM作为该文件开头正文的一部分。由于必须在<?或者<?php后面的代码才会作为PHP代码执行,所以将会造成在页面上输出这三个字符,显示效果就要看浏览器了,一般是一个空行或是一个乱码。由于受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在 COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖COOKIE、SESSION实现的功能全部无效。
可用EmEditor来保存,在EmEditor中,另存为->去掉unicode签名(BOM)前的勾,再保存就可以去掉BOM信息了。

2.使用gb2312编码,php文件在所有输出之前加上:
header(“Content-Type: text/html; charset=gb2312″),
页面添加
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>
所有文件的编码格式为ANSI。

二.PHP与数据库的编码应一致
以Mysql数据库为例,在需要做数据库操作的php程序前加mysql_query(“set names ‘xx'”);,如果php编码是gb2312那xx就是gb2312,如果是utf-8那xx就是 utf8(是utf8 而不是utf-8),这样操作数据时就不会出现乱码了。

另外mysql最好用utf8编码,修改mysql配置文件 my.ini或my.cnf

[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
default-storage-engine=MyISAM

在 [mysqld]下加入:
default-collation=utf8_bin
init_connect=’SET NAMES utf8′

哪本书是每个程序员都该阅读的?

本文是从 What is the single most influential book every programmer should read? 这篇文章翻译而来。

国外知名网站stackoverflow上有一个问题调查: 哪本书是对程序员最有影响、每个程序员都该阅读的书?, 这个调查已历时两年,目前为止吸引了153,432人访问,读者共推荐出了478本书(还在增加),其中最火的一本书《Code Complete》被顶了1306次。如果你是个程序员,你一定有兴趣看看这些书里你都看过几本,如果你一本没看过的话,我也不好说什么,也许你是个天 才,但我相信大多数人都知道,你在学校里根本学不到什么真正的工作中需要的知识,我们毕业后能帮助我们在公司中胜任工作的老师就是这些优秀的书籍,一本好 书可以改变一个人的一生。

下面是这个调查中排名靠前的书的一个简单的清单:

第一名:1306票《Code Complete (2nd Ed) by Steve McConnell》,中文版《代码大全(第二版)》,两届Software Jolt Award震撼大奖得主!

cover

 

第二名:1161票 《The Pragmatic Programmer》,中文版《程序员修炼之道》

The Pragmatic Programmer

 

第三名:689票 《Structure and Interpretation of Computer Programs》,中文版《计算机程序的构造和解释》

Structure and Interpretation of Computer Programs - 2nd Edition (MIT Electrical Engineering and Computer Science)

 

第四名:557票 《The C Programming Language》,中文版《C程序设计语言》

The C Programming Language Book

 

第五名:472票 《Refactoring: Improving the Design of Existing Code》,中文版《重构:改善既有代码的设计》

Refactoring: Improving the Design of Existing Code

 

第六名:472票 《Introduction to algorithms》,中文版《算法导论》

Introduction to algorithms cover image

 

第七名:430票 《The Mythical Man-Month》,中文版《人月神话》

The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition)

 

第八名:426票 《Design Patterns》,中文版《设计模式》

 

第九名:386票 《The Art of Computer Programming(First Volume Hardcover)》,中文版《计算机程序设计艺术第 (第一卷)》

http://www.aqee.net/wordpress/wp-content/uploads/2011/03/75dd9_programming_41T1XCAEE1L.jpg

 

第10名:353票 《Compilers: Principles, Techniques, and Tools 》,中文版《编译原理》

Compilers: Principles, Techniques, and Tools (2nd Edition)

 

第11名:329票 《Head-First Design Patterns》,中文版《Head First 设计模式》

 

当然了,这里的排名并不具有什么权威性,但绝对可以说都是好书,这11本外还有很多书虽然票数不是那么多,但大家估计都耳熟能详,比如 《Effective C++》(中文版《Effective C++:改善程序与设计的55个具体做法》),《Clean Code》(中文版《代码整洁之道》),《Effective Java》(中文版《Effective Java中文版(第2版)》等 。

记得有位先哲曾说过:一种编程语言的重要性并不在于语言本身,而是在于这种语言来体现出来的编程思维模式。所以说,并不是你用到的书才去读,读书是一种习惯。