|
楼主 |
发表于 2005 年 2 月 9 日 12:44:20
|
显示全部楼层
程序员的进化--从学生到首席执行官
/*-------------------------------------------9 T* D/ B- v1 S5 v& l; p5 R
程序员的进化--从学生到首席执行官
0 {9 u5 f8 R. f7 A. G; Z! p翻译 2002 王咏刚 http://www.contextfree.net/
8 H. B8 W3 V, R转译自 Omri's Computer Humor Page% U* V- [: O# s5 X: K
http://www.cs.bgu.ac.il/~omri/Humor/ n$ L6 C' F0 V
-------------------------------------------*/
$ u3 |& F( |. A; q% V5 Q% w
9 n% E+ b& n' S( @2 ? }2 _--------------------------------------------------------------------------------
5 v; G3 `0 w" U! U+ X中学阶段
2 l# Y) T# ~7 f0 F10 PRINT "HELLO WORLD"
, e. I* P5 }: x% H' ]6 r20 END
, F# M4 v, e! \8 N8 D; E--------------------------------------------------------------------------------
: j- ^+ O2 A7 |- _; c6 J大学一年级4 t0 i! ^! b; f
program Hello(input, output)
2 z( ?' I, `2 g) r/ u) _! vbegin
( b) ]) A" W: @" k$ Mwriteln('Hello World') a7 b& G! S9 Y. t# b6 q
end.2 N3 O5 v0 x% U M) M f
--------------------------------------------------------------------------------
7 u: f3 d8 c( ^ A; x" G# E; z大学高年级
1 |, L% x5 u. C# g- E(defun hello* e$ Q7 p8 ~+ S* D Q% _
(print' C/ Q, v8 Y0 x9 x" ^% m3 O' q
(cons 'Hello (list 'World))))
& q$ n, y- n1 T& J7 M- y--------------------------------------------------------------------------------3 N0 L Y* U4 o7 ^
初级程序员
8 b. x- ~% o' N1 ?9 X2 x/ [6 n#include # J, `5 u/ {$ X5 x% {6 A
void main(void)
# U, `( M1 h4 C' w{
. E2 k: {; {% U' E) r1 v: |- fchar *message[] = {"Hello ", "World"};
Y% e- N! P& cint i;
0 c9 u; P+ A1 g" B& o- f; Ofor(i = 0; i < 2; ++i)
- S b: ?2 v; y& A' I$ K/ Z& y0 kprintf("%s", message);( b3 H j0 G' ]6 ]
printf("n");0 C. ~. M: W* L+ U# z& g, v
}
* A2 O% y- s1 l" e( @$ p--------------------------------------------------------------------------------$ w8 O1 M# c# U3 K8 q( x* U0 x
编程老鸟
; {# Z# @! P3 A4 c' u* j" g#include
' {* Z9 _ l% m5 G#include 4 ~* v$ z) g7 K3 p+ T0 I1 i
class string4 b" A9 i7 R9 ~- F" g0 Y7 z5 Y
{& i& t- \0 s R$ `3 u' W( ]
private:
5 O$ [9 S- U" R) c4 [3 E$ \' mint size;
" A; z) @% Z# e R% o3 v8 s5 echar *ptr;6 Z3 A/ G9 B8 Y; k
public:
1 K( p& T. D5 v2 O6 V- B' Zstring() : size(0), ptr(new char('{CONTENT}')) {}9 k/ F) e0 D, T0 e3 b) h
string(const string &s) : size(s.size)' H/ r Q& f; j# L E, @4 K
{
. w9 C# G+ g0 F# f8 I2 Sptr = new char[size + 1];. X& D' G: B* `7 R0 p
strcpy(ptr, s.ptr);8 ~: x/ s* U5 C) c& D& j7 m1 v
}
# ~1 f- p1 u. o9 ~1 ?1 g1 ?9 N~string()
4 M4 w1 i9 ?7 `6 r* P6 z7 }& J{
% J( G: a; D, t/ idelete [] ptr;( a0 k% G6 [3 ]6 \# s
}) O% R! L+ `! B% z: B" K" M
friend ostream &operator <<(ostream &, const string &);
) [ Q2 c7 o2 }" D* ]* j2 b4 s9 @string &operator=(const char *);
5 e, k8 l, u0 D! t5 l};
* @7 T3 }" x* s& l) Wostream &operator<<(ostream &stream, const string &s)3 r1 ~; R$ R1 @# r. M
{
: O! M: K9 ?$ freturn(stream << s.ptr);
2 V3 z/ Y* _5 k}: ?6 z" }; ^+ a+ H2 ], b3 u3 G
string &string: perator=(const char *chrs)
# B+ P m0 V% j{
* |5 F$ H- E7 W5 h: c8 z$ Iif (this != &chrs): W, ?6 }1 d- H( H( M- H3 H
{& L$ E4 Z" o7 z% a
delete [] ptr;2 b) R" q# j' q( Y
size = strlen(chrs);
( B: L: w, ?7 O3 L" d9 V3 mptr = new char[size + 1];
& }. y, F" [+ Q5 _( D! Rstrcpy(ptr, chrs);
- d3 p6 C; _9 B5 X' m}
* i5 i( w9 {# sreturn(*this);+ L$ V$ \$ X2 Y$ `/ I# O
}
& M) T$ O. C/ k- pint main()
$ T1 [5 @- X; p1 q/ u{) t7 e5 u6 Z; `" i2 I0 I$ p
string str;, A: _9 \5 R( p6 d1 d
str = "Hello World";
' x; f/ R+ [ J5 U# Acout << str << end
1 x- F, M! D! {% P* c4 \return(0);
1 f, m5 r! i9 L# y9 \% p# B}2 I" A# a; x' x8 U/ n
--------------------------------------------------------------------------------
8 O$ p# R/ ?; v$ q# }编程高手; d& x ?, o( |% E) D9 x- c
[
8 w [8 H; \& I9 q. J" tuuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
H& d& s7 q3 A, p]
) `- z; s7 A5 ]$ F+ b+ hlibrary LHello
) e9 i- B7 F( i6 J }. r{: i8 r1 U& L: o" j' i1 [
// bring in the master library
2 c0 _1 }) j- O/ b- O" I, W5 Nimportlib("actimp.tlb");" a1 p5 \4 \, x
importlib("actexp.tlb");
: u) ]+ u) c) E5 R% `' J: R// bring in my interfaces7 R5 m2 B5 _8 ?* M' C! Z+ L: o
#include "pshlo.idl"0 ]" ~1 x e. X9 _& @5 @, v
[! R; U0 ]# v8 W+ }# M
uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
1 h4 N" i F h, a# E# i& T]4 B0 b: Y9 ~) C8 t. k
cotype THello) y# W( Z1 o' K6 {) ?* t
{ p- V% ]! S) q+ z2 ?+ R( g# r
interface IHello;
! k/ y, h3 K, F: Jinterface IPersistFile;
) Z- G& l" O$ W};6 z. \9 Q e s0 h# k) w+ g
};
& h# e+ u4 Z$ B x2 I' }[" W& U+ Z9 R' r1 }, ` W' c/ z
exe,5 Z& C9 v& c8 Y- R+ P
uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
z/ q9 P0 Z4 n]
& _4 v! C, \8 }3 Imodule CHelloLib; Y) C0 n# @6 O/ s8 C' L# N( z; h
{ |; N, v6 ^8 r( y3 u9 G5 z' h
// some code related header files
9 ]# V* |7 o, N% a- {/ ~9 l4 S* `importheader();/ ~8 f; h+ [5 Y3 R" c, c8 `( d
importheader();
1 f3 j/ s+ W2 H1 [0 g7 d/ r8 jimportheader();
; F" _; f. V Z! G+ S( e2 q1 ~: j# ^importheader("pshlo.h");; o; e! e. S/ e, ` A9 S' w Y, E5 w
importheader("shlo.hxx");% n: w' s6 z9 j" O; F1 N8 I' d1 T
importheader("mycls.hxx"); d! X+ g; A# X h4 d/ p- W- d
// needed typelibs1 V3 \" x* z$ |2 N) K" s
importlib("actimp.tlb");
' r- T3 T6 s) k0 j: J0 X6 H/ ]3 L: Qimportlib("actexp.tlb");6 P+ M& ~' u5 j: |8 i
importlib("thlo.tlb");$ R7 k4 U* _. |- C A, R% ~
[
" z9 O: e5 J$ W3 Z5 u; B! vuuid(2573F891-CFEE-101A-9A9F-00AA00342820),
" @/ a# E; D! `6 J: i- {aggregatable* e V2 i% ^ i6 b8 _
] o, H: [3 q4 R$ c
coclass CHello' H! \) O ?# m) }
{
' A& \& W8 S' ?- [0 y" wcotype THello;5 a& x# z! ^/ B& _& O$ {
};
: h( s1 Y6 W2 N u9 e f. T};5 Q d3 ~( p' ]% o' x
#include "ipfix.hxx"
8 a( X- v8 m/ y! t* T( S0 u3 fextern HANDLE hEvent;
: g/ }4 A4 \0 N9 m7 b- X+ S6 O% xclass CHello : public CHelloBase
4 X8 O5 P% |5 a# f( P0 R{& V& }! Y# J. b
public:
/ [% D s: ]% C5 h9 R; A% ZIPFIX(CLSID_CHello);
5 A9 V! F, ~+ D2 z3 D9 o; A+ v2 HCHello(IUnknown *pUnk);
7 `) M) X+ s( z~CHello();, H4 ]* d0 t: n/ `8 {9 u( l5 W
HRESULT __stdcall PrintSz(LPWSTR pwszString);
1 \7 o( s/ R7 a3 {/ hprivate:
4 ` ?% K0 B/ D* V astatic int cObjRef;7 E" Q0 ~* |4 }
};
/ u- o2 y( V a3 \#include
$ F) j9 w v6 Z7 g% \* G#include
& |, I5 B& |/ Q# c7 X#include
6 q8 Y" T9 U9 G3 w#include
+ G7 H" u4 ?4 N% I#include "thlo.h", c+ L d6 z$ R6 `
#include "pshlo.h"- g5 s$ z/ X K) m: T
#include "shlo.hxx"
2 ^3 n. Y( V }#include "mycls.hxx"& f) l# a2 W6 X: ~6 v
int CHello::cObjRef = 0;
' B: ]/ [' Y) B( PCHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
+ [( P2 y' O% G0 R2 [, W* n2 g{8 @7 ~4 ~# B$ k; T8 y; t% V
cObjRef++;
) P6 f* m3 I4 R* M# Areturn;
}( y8 \1 y$ e9 F8 i, A8 L1 q7 |}
) G3 U! w0 f: o3 {HRESULT __stdcall CHello: rintSz(LPWSTR pwszString)
* ~5 d J A2 M& v% a( W. `{
; {' O8 P9 C8 Z" M1 [printf("%wsn", pwszString);
2 H* N- _+ i. t0 f, M. M) Creturn(ResultFromScode(S_OK));, [2 _! Z" ^3 L6 b v1 k
}$ i$ l* l6 C; E
CHello::~CHello(void)
" V0 F( X, c' U6 d: U{* H; |6 n/ [" X& j* t1 q3 t- ^# @
// when the object count goes to zero, stop the server' P. J0 i3 K$ F2 n: } p
cObjRef--;3 |7 @! V! @5 U
if( cObjRef == 0 ); ?/ T; b' s) W* M& Q! `* j
PulseEvent(hEvent);
: Q: |0 s' H% f# U# ]return;
0 [( M) {6 k( T5 {}3 F- B6 D9 w$ A: I9 ` P3 Y) i
#include * t* ?+ N/ m/ f6 u5 Y, O7 x
#include w1 `4 }$ } }% D
#include "pshlo.h"5 T3 H [* W# [, i
#include "shlo.hxx"' A! [& P" u, |! K
#include "mycls.hxx"
$ V+ E+ e) {$ Q( wHANDLE hEvent;) M5 E! @2 m2 s7 t( x" l
int _cdecl main(
) s# X: b/ i7 C$ ?: ^int argc,
7 O4 U# w. p( R t" d+ y! }char * argv[]: g I! [. W& S5 P' `( H& \7 I, C
) {( S7 T+ Y: D2 `( `5 l* ~
ULONG ulRef;% G/ o! e5 S0 X+ L2 i
DWORD dwRegistration;
& ~, o: Q7 M* e& {* dCHelloCF *pCF = new CHelloCF();: g. A0 ~- T- ^7 \0 |
hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
" _$ }( y9 y: J: a" _1 h4 ^7 w1 S: R// Initialize the OLE libraries
, {& ]5 `# \. k DCoInitializeEx(NULL, COINIT_MULTITHREADED);3 p6 J- ^" z* F' U
CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,
* w- y2 D7 _0 O0 p, nREGCLS_MULTIPLEUSE, &dwRegistration);
9 F7 F8 Y9 g- D( b4 l6 L// wait on an event to stop$ H8 p. t4 I+ D) h8 z0 q7 K
WaitForSingleObject(hEvent, INFINITE);
' @& G( k: E8 ^# E// revoke and release the class object
4 S0 ^ A* K0 X( oCoRevokeClassObject(dwRegistration);
& k- a! l q" v) P8 z0 CulRef = pCF->Release();& ?9 [! X$ C6 N/ w- I
// Tell OLE we are going away.
- B- t1 U6 b3 e u) O7 MCoUninitialize();
/ i/ U8 e1 a l6 U9 Greturn(0);
( u/ q/ G; b' \/ R) S; j}& p+ f- w& W x& ]1 Y
extern CLSID CLSID_CHello;8 Z1 x \2 i# A* Z' D7 O
extern UUID LIBID_CHelloLib;9 `( z7 L: N$ A8 C8 C! N
CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */
8 d4 i8 _7 l2 G8 P0x2573F891,: V/ R {6 w# G9 N1 ~- d0 S! ]
0xCFEE,4 }7 c) s7 F4 E; `
0x101A,# g/ x# }; v( p2 q9 }* l
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }/ J8 R: p4 G6 S2 |
};
# H% Q% {/ `9 pUUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820 */$ I6 D% s0 H7 G7 D ^
0x2573F890,
3 @* @1 }" \* P' t% _" K* S0xCFEE,1 j6 o# E6 o* ]0 v! |3 ?
0x101A,
/ H2 T# [# Q1 P4 P- ^0 c. q0 n& ^6 _+ \{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
9 a5 k2 }) v$ G: T, Y7 X% r};
; l! l x) a; w* g#include
# D; t f5 I0 ]/ D/ [#include $ d8 |! r9 @1 \/ i6 U2 w2 P
#include 4 U/ Q2 F3 ?+ y1 {5 q2 ]7 b
#include 6 q1 c: h0 i5 x; k, N& b: k% g
#include
4 k8 z. s0 O6 @& o#include "pshlo.h"
- P8 @3 Q7 u7 S9 Z5 \% r4 j#include "shlo.hxx"
- p# E- |, Q* h# D+ q#include "clsid.h"
2 F; d6 j; h% M, G" V( |int _cdecl main(
' k ]1 X# i# qint argc,% D) ?( s! l Y" w
char * argv[]% ?0 u5 X- W" E( ]& ~' J
) {
2 j9 E9 t: C) v; GHRESULT hRslt;
; W( s U0 X+ a- IIHello *pHello;. t" i" W5 V' m. M3 t
ULONG ulCnt;
2 [1 i; R3 w t. W8 ^! OIMoniker * pmk;" h. G" F) J: E7 p* J
WCHAR wcsT[_MAX_PATH];, Y w! O" i$ i; C. d
WCHAR wcsPath[2 * _MAX_PATH]; F5 R' i7 c- l' s, E
// get object path
2 M$ X+ D( H/ D8 @wcsPath[0] = '{CONTENT}';* D' g- E; t! ~5 f1 r0 x% L: W
wcsT[0] = '{CONTENT}';
: a) r$ R7 |* F, n# A5 D. bif( argc > 1) {
$ n" P2 v4 C" K; o& J& e6 Tmbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
% X- F1 j' ]+ u) Pwcsupr(wcsPath);1 o9 g/ }, Q1 p% i! I
}+ N7 a4 N; \2 d2 R
else {% s/ c% k4 `, ^1 D
fprintf(stderr, "Object path must be specifiedn");
X% \: @. @. j0 B& _8 h' Preturn(1);
' A$ c* c, j- x* [7 ?) p& j}
- P" R+ t' b& A7 c: G5 g// get print string
0 g( q9 S) E2 v2 t b! g. Fif(argc > 2)
- b1 k& P) p8 e3 r4 g9 Gmbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);
2 f* v4 V k) G! Yelse
* z' A# r8 S6 ~' Jwcscpy(wcsT, L"Hello World");% v' a B" {! k
printf("Linking to object %wsn", wcsPath);; m- T. F" \% b$ a% g4 S
printf("Text String %wsn", wcsT);$ D3 W! V2 w! A/ @" p
// Initialize the OLE libraries# [$ ]! Y& Z6 b# @1 ^( e1 l
hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);
8 W$ o0 M/ G& W: {" Eif(SUCCEEDED(hRslt)) {
- p8 A+ _: b& v# `8 lhRslt = CreateFileMoniker(wcsPath, &pmk);7 h+ ]- E, X3 o( n
if(SUCCEEDED(hRslt))4 T. y3 r ]' D A. x
hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);
3 {- k" Q1 T, y6 ~1 w \# D0 fif(SUCCEEDED(hRslt)) {. U" v; e! D) E, J; R
// print a string out/ K& ^9 B7 M5 f& H9 t( N& v" P
pHello-> rintSz(wcsT);
3 [: _- |/ m$ E& N' nSleep(2000);
% W9 n3 n5 I2 }/ U, |# n* mulCnt = pHello->Release();
! h$ J! l( h4 F}3 H5 P- `9 I, k% ^! y
else+ N3 k: \( G b; y1 e0 w9 k! g/ c' g$ \
printf("Failure to connect, status: %lx", hRslt);2 l! E, W( B6 D [; ]+ u0 e, ~
// Tell OLE we are going away.7 ~5 Y7 m e' q. L8 y, T+ Z
CoUninitialize();
6 y* k$ ]5 O, {( O}
8 C8 A# t7 x6 y: i; L: dreturn(0);
1 u: B7 d! {% P' v! `} , H$ e2 L g. c `1 v
--------------------------------------------------------------------------------; i5 Z3 L" b" @3 l0 j
黑客初阶3 P) ^. p$ l$ w4 m% s( @3 [8 e
#!/usr/local/bin/perl
! N! j7 }7 N, R* q$msg="Hello, world.n";
% J8 L, y' J! f, F2 Wif ($#ARGV >= 0) {
0 x8 z* H# ^' i( G. M* jwhile(defined($arg=shift(@ARGV))) {
- B Z6 H- C* ^/ f. m% v) r3 s$outfilename = $arg;8 z( ~( r6 D7 E4 {6 H
open(FILE, ">" . $outfilename) || die "Can't write $arg: $!n"; i6 m! t2 v8 A
print (FILE $msg);
8 _/ I3 }9 a, F% z0 }) Dclose(FILE) || die "Can't close $arg: $!n";
$ B& ^; ~! Q" Z}2 o p2 h N7 O: T
} else {
( O+ l/ q7 z0 zprint ($msg);
) E' Q1 L* x. F+ N+ \+ ^}, M: o6 W3 Y: Y" S
1;2 a7 @' \: s9 k0 L. e
--------------------------------------------------------------------------------
' x/ d/ P; ] h黑客有成
. M' v3 T7 t- g$ j#include 7 n+ B$ B) U, R& N
#define S "Hello, Worldn"+ x2 S; n& x' W1 W- a9 M/ I& G
main(){exit(printf(S) == strlen(S) ? 0 : 1);}
, a# R9 A. U D--------------------------------------------------------------------------------% O2 ^; l' W, z' @
黑客高手
$ E1 x& R8 p9 Z, G$ w3 p% cc -o a.out ~/src/misc/hw/hw.c8 Z" `: z0 S4 E( k
% a.out3 i/ n- I: t2 F+ j0 G
--------------------------------------------------------------------------------! {9 w! A7 T5 k7 h W d2 L
黑客大虾
5 b! v7 F+ h! ]: e2 a% cat7 D6 H) F% Y2 Z' `8 v9 W: `& {) R
Hello, world.
1 H! E9 b% m; ]/ V^D3 k( _ P% T' y2 X4 V, e
--------------------------------------------------------------------------------2 R6 z+ H6 ~2 M+ z
初级经理9 }# d) F- i! L/ A @! i d* k
10 PRINT "HELLO WORLD". w$ H4 o: q. i; N* P7 f* v) _5 ?
20 END) ~# u5 @) h# A# j$ N8 F; Z% y2 \$ x
--------------------------------------------------------------------------------. e2 @- R* [' h: h" f
中级经理
/ m4 ?; p9 M {& Z# {mail -s "Hello, world." bob@b12
# i' ~# X* j* m, |/ FBob, could you please write me a program that prints "Hello, world."?
3 F Y8 j" Q2 [% n. a+ YI need it by tomorrow.' E) ?0 k4 n! V
^D8 I5 @! S6 A$ J9 y9 f; R$ b
--------------------------------------------------------------------------------6 Y8 ]3 l! q" g; I
高级经理: i5 Y; d; c5 N `& c" z
% zmail jim7 l+ K; O+ E* [4 [$ A4 [* [0 \
I need a "Hello, world." program by this afternoon.2 m0 N% n* {' h7 R
--------------------------------------------------------------------------------6 g# b; D/ Z8 C" k$ C# E6 n
首席执行官# _9 ^4 j' q3 J' X" E+ E
% letter. ~8 d$ ?# } z. J, f# D
letter: Command not found.
7 F- Y5 W7 V- d6 E4 Y7 p% mail) X. { D2 ?% ^4 X6 E
To: ^X ^F ^C8 B" u' b' g/ T3 H2 F
% help mail. x4 y* D6 _+ Z/ ?, ?4 |
help: Command not found.2 A9 z' `- u! ]7 @2 \2 Q6 a6 q9 d
% damn!/ a! M- D% q5 U% w# _
!: Event unrecognized
1 f0 ?: B& y, c6 V, d7 E# r0 ~; q% logout
; n) G' H9 Y- ]% h7 X a; F& Z-------------------------------------------------------------------------------- |
|