这是一篇很长的小说,讲述了一群计算机系学生的故事。从其中的产品时间点上来看,主人公应该比我早3年进入计算机系读书,所以,还是有很大相似性的。尤其是文章中对于人物心理的刻画,真的只有计算机系的人才能理解。

原文:http://blog.csdn.net/hitetoshi/archive/2007/12/22/1958130.aspx

天已经七分黑了,屋里却还没开灯。这个全身黑衣服的男子突然像想起什么,从包里掏出烟,抽出一只,递给旁边的人:“兄弟,抽烟么?”――那烟是红塔山。
旁边那人连忙一边摆手,一边说:“不,不。”语气有点紧张,好像那黑衣服递过来的不是烟,是海洛因。
这个黑衣服的男子,后来的网名叫“绝影”。他旁边那个,后来被他们称为“土匪”。这件屋子,就是他们大学寝室。
第一天到学校,其实没有一点新鲜的感觉。绝影的舅舅和舅妈就在这里教书,早在这学校还不叫“大学”的时候,绝影已经在学校足球场学骑自行车了。

要说念大学,最忌讳的就是在自己家门口念。哪怕你就住北大院子,也一定要去清华。土匪觉得这学校不错,不光是土匪觉得不错,看就业形势,也的确不错。但是绝影就一肚子憋屈。
其实这间寝室和别的寝室也没什么特别,也就四张床四张电脑桌。电脑桌当然有,但是电脑就要自己往上面放。既然没有电脑,那要电脑桌有什么用呢?还占着地方。唯一不同的是寝室里的一个人――和别的不一样,这间寝室有个不属于这个班的人――他叫王江。
王江他特别,不仅因为他不是这班的,还因为他吹的牛皮很特别。

大一晚上谈什么?当然是谈高考。
于是王江就叹息:哎呀,差一分呐。
土匪附和道:哎呀,就差那么五分。
王江:老天无眼,把我弄到这么个学校来。
土匪:凑合吧,四年后考研,又是条好汉。
王江:不行,我要让我老爸再想想办法。
土匪:都怪我老子没本事。比我差的都去了那学校。
王江:我老爸没问题。但我就是这么一个人,不轻易去找他的。
土匪:那你这辈子就给毁了。
王江:明天就去办退学。
土匪:你去退,我跟你一起去退。
……

Continue reading

应当知道,任何一位受过职业道德训练的软件工程师都不会同意写一个“摧毁巴格达 DestroyBaghdad”这样的函数。相反,基本的职业道德要求他写一个“摧毁城市 DestroyCity”的函数,“巴格达 Baghdad”是一个参数。(Nathaniel S Borenstein)
只有两种计算机语言:一些语言天天挨骂,另外一些没有人用。(Bjarne Stroustrup)

数组下标应该从0开始还是从1开始?我的提议是做个折中,用0.5。我想,把它否决之前他们都没有仔细考虑考虑。(Stan Kelly-Bootle)
黑魔法编程:程序员们知道有些事情没有用,但是无论如何他们还是会去试一试,有时候这些事情还真管用了,比如说把所有东西重新编译一遍。(Karl Lehenbauer)
计算机语言就好像在公园里漫步一样,我指的是侏罗纪公园。(Larry Wall)
即使在餐巾上涂画也算是计算机语言,XML都不能算是其中之一。(Charles Simonyi)
使用TSO就想把死鲸鱼在沙滩上踢来踢去一样。(Stephen C Johnson)
面向对象的模型使得我们可以用聚少成多的方法来写程序。这通常是说,它提供了一种用结构化的方法写出烂面条般程序的方法。
重用别人写的程序就像从别人的故事里面挑出句子然后凑成一篇杂志上的文章。 (Bob Frankston)
(HTML里面的BLINK 标签)是一个玩笑,好不好?要是我们知道还有人使用它,我们就不会写它了。(Mark Andreessen)
软件就像性一样。不要钱的时候更好。(Linus Torvalds)
我有一个可以运行的编译器,没人愿意碰它。他们告诉我电脑只能做算术。–Rear Admiral Grace Hopper
如果你思虑不周,你可能会认为编程仅仅是敲入一行行的程序语句而已 — Ward Cunningham
一种未包含所有东西的语言实际上比那些包含了的更容易使用。 — Dennis M Ritchie
提倡自然语言编程的那些工作必然彻底失败。 — Edsger Dijkstra
指针就像跳转一样,疯狂的从数据结构之间到处指来指去。在高级语言里面引入指针是个退步。我们可能永远无法从这一失败之中恢复过来。– Charles Hoare
首先学习计算机科学和那些理论,然后摸索出你自己的编程风格,然后把那些都忘掉,乱来就行了。 — George Carrette
我担心新的面向对象系统会遭到LISP相似的命运。他们可以做很多事情,但是过于复杂的类的阶层的重量会把他们压塌。 — Bill Joy
如果我们要数代码的行数,我们不该把他们当成生产出来的行数,而是花费掉的行数。–Edsger Dijkstra
你可以拥有高质量的软件,也可以拥有指针运算,但两者不可兼得。– Bertrand Meyer
语法,小伙子。它已经被重新授予共和国里最高的地位。 — John Steinbeck
你真的确定无误的认为,那些铃铛和汽笛,所谓的编程语言里那些美妙的特性,是解决方案的一部分而不是问题的一部分? — Edsger Dijkstra
汝切不可跟随NULL指针前行,因混沌狂乱待汝于彼端。(注:此处模仿圣经十诫语气)–Henry Spencer
我觉得传统语言是给鸟类使用的。他们仅仅是冯诺依曼计算机的延伸,他们把鼻子埋藏在字和地址的泥土之中,还做了很多同样傻的事。我们从编程之中学到了这些傻事,又把他们放进了计算机语言,放进了Fortran,放进了PL/1,放进了几乎所有语言之中。–John Backus
在人类的阶层之中,写代码处在高于盗墓,但是低于管理的某处。(Gerald Weinberg)
如果程序员模拟一个结构比编译器实现这个结构还快,那这个编译器写的可够烂的。 (Guy Steele)
阶级(class)斗争,一些阶级胜利了,一些阶级消灭了。(Mao Zedong)
类,可以分为三种:一种不工作的,一种出错的,还有一种找不到了的。(Russell Baker)
内存就像高潮,真的比虚拟的好得多。(Seymour Cray)

转自cnbeta

这是来自新加坡国立大学的一个页面,它记录了一个程序员从入门到精通,再到黑客,再荣升经理和CEO时所写的代码,
正如我们访客(注: cnbeta的访客)所评论的那样,这位程序员从青蛙变成了蛤蟆,相信同为程序员的你,看了之后您会会心一笑,我们的生活何尝不是如此呢?

High School/Junior High 10 PRINT “HELLO WORLD”
20 END
First year in College program Hello(input, output)
begin
writeln(‘Hello World’)
end.
Senior year in College (defun hello
(print
(cons ‘Hello (list ‘World))))
New professional #include
void main(void)
{
char *message[] = {“Hello “, “World”};
int i;for(i = 0; i < 2; ++i)
printf(“%s”, message[i]);
printf(“\n”);
}
Seasoned professional #include
#include

class string
{
private:
int size;
char *ptr;

public:
string() : size(0), ptr(new char(‘\0’)) {}

string(const string &s) : size(s.size)
{
ptr = new char[size + 1];
strcpy(ptr, s.ptr);
}

~string()
{
delete [] ptr;
}

friend ostream &operator <<(ostream &, const string &);
string &operator=(const char *);
};

ostream &operator<<(ostream &stream, const string &s)
{
return(stream << s.ptr);
}

string &string::operator=(const char *chrs)
{
if (this != &chrs)
{
delete [] ptr;
size = strlen(chrs);
ptr = new char[size + 1];
strcpy(ptr, chrs);
}
return(*this);
}

int main()
{
string str;

str = “Hello World”;
cout << str << endl;

return(0);
}
Master Programmer [
uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
]
library LHello
{
// bring in the master library
importlib(“actimp.tlb”);
importlib(“actexp.tlb”);

// bring in my interfaces
#include “pshlo.idl”

[
uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
]
cotype THello
{
interface IHello;
interface IPersistFile;
};
};

[
exe,
uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
]
module CHelloLib
{

// some code related header files
importheader();
importheader();
importheader();
importheader(“pshlo.h”);
importheader(“shlo.hxx”);
importheader(“mycls.hxx”);

// needed typelibs
importlib(“actimp.tlb”);
importlib(“actexp.tlb”);
importlib(“thlo.tlb”);

[
uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
aggregatable
]
coclass CHello
{
cotype THello;
};
};

#include “ipfix.hxx”

extern HANDLE hEvent;

class CHello : public CHelloBase
{
public:
IPFIX(CLSID_CHello);

CHello(IUnknown *pUnk);
~CHello();

HRESULT __stdcall PrintSz(LPWSTR pwszString);

private:
static int cObjRef;
};

#include
#include
#include
#include
#include “thlo.h”
#include “pshlo.h”
#include “shlo.hxx”
#include “mycls.hxx”

int CHello::cObjRef = 0;

CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
{
cObjRef++;
return;
}

HRESULT __stdcall CHello::PrintSz(LPWSTR pwszString)
{
printf(“%ws\n”, pwszString);
return(ResultFromScode(S_OK));
}

CHello::~CHello(void)
{

// when the object count goes to zero, stop the server
cObjRef–;
if( cObjRef == 0 )
PulseEvent(hEvent);

return;
}

#include
#include
#include “pshlo.h”
#include “shlo.hxx”
#include “mycls.hxx”

HANDLE hEvent;

int _cdecl main(
int argc,
char * argv[]
) {
ULONG ulRef;
DWORD dwRegistration;
CHelloCF *pCF = new CHelloCF();

hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);

// Initialize the OLE libraries
CoInitializeEx(NULL, COINIT_MULTITHREADED);

CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,
REGCLS_MULTIPLEUSE, &dwRegistration);

// wait on an event to stop
WaitForSingleObject(hEvent, INFINITE);

// revoke and release the class object
CoRevokeClassObject(dwRegistration);
ulRef = pCF->Release();

// Tell OLE we are going away.
CoUninitialize();

return(0); }

extern CLSID CLSID_CHello;
extern UUID LIBID_CHelloLib;

CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */
0x2573F891,
0xCFEE,
0x101A,
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};

UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820 */
0x2573F890,
0xCFEE,
0x101A,
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};

#include
#include
#include
#include
#include
#include “pshlo.h”
#include “shlo.hxx”
#include “clsid.h”

int _cdecl main(
int argc,
char * argv[]
) {
HRESULT hRslt;
IHello *pHello;
ULONG ulCnt;
IMoniker * pmk;
WCHAR wcsT[_MAX_PATH];
WCHAR wcsPath[2 * _MAX_PATH];

// get object path
wcsPath[0] = ‘\0’;
wcsT[0] = ‘\0’;
if( argc > 1) {
mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
wcsupr(wcsPath);
}
else {
fprintf(stderr, “Object path must be specified\n”);
return(1);
}

// get print string
if(argc > 2)
mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);
else
wcscpy(wcsT, L”Hello World”);

printf(“Linking to object %ws\n”, wcsPath);
printf(“Text String %ws\n”, wcsT);

// Initialize the OLE libraries
hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);

if(SUCCEEDED(hRslt)) {

hRslt = CreateFileMoniker(wcsPath, &pmk);
if(SUCCEEDED(hRslt))
hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);

if(SUCCEEDED(hRslt)) {

// print a string out
pHello->PrintSz(wcsT);

Sleep(2000);
ulCnt = pHello->Release();
}
else
printf(“Failure to connect, status: %lx”, hRslt);

// Tell OLE we are going away.
CoUninitialize();
}

return(0);
}
Apprentice Hacker #!/usr/local/bin/perl
$msg=”Hello, world.\n”;
if ($#ARGV >= 0) {
while(defined($arg=shift(@ARGV))) {
$outfilename = $arg;
open(FILE, “>” . $outfilename) || die “Can’t write $arg: $!\n”;
print (FILE $msg);
close(FILE) || die “Can’t close $arg: $!\n”;
}
} else {
print ($msg);
}
1;
Experienced Hacker #include
#define S “Hello, World\n”
main(){exit(printf(S) == strlen(S) ? 0 : 1);}
Seasoned Hacker % cc -o a.out ~/src/misc/hw/hw.c
% a.out
Guru Hacker % cat
Hello, world.
^D
New Manager 10 PRINT “HELLO WORLD”
20 END
Middle Manager mail -s “Hello, world.” bob@b12
Bob, could you please write me a program that prints “Hello,
world.”?
I need it by tomorrow.
^D
Senior Manager % zmail jim
I need a “Hello, world.” program by this afternoon.
Chief Executive % letter
letter: Command not found.
% mail
To: ^X ^F ^C
% help mail
help: Command not found.
% damn!
!: Event unrecognized
% logout

中文原文: http://www.cnbeta.com/articles/38875.htm
英文原文: http://sunsite.nus.edu.sg/pub/humour/prog-evolve.html