今天这篇趣文是以 Hello World 为例,列举处于各阶段程序员的代码。另外,这篇有一定历史了,应该至少有 10 年了。
PS:亮点总是在最后。:)
初中/高中(注:Basic)
1
2
|
10 PRINT
"HELLO WORLD"
20 END
|
大一(注:Pascal)
1
2
3
4
|
program
Hallo(output);
begin
writeln
(
'Hello, world!'
)
end
.
|
大三/大四
1
2
3
|
(defun hello
(print
(cons 'Hello (list 'World))))
|
入职第一年
1
2
3
4
5
6
7
8
9
10
|
#include <stdio.h>
void
main(
void
)
{
char
*message[] = {
"Hello "
,
"World"
};
int
i;
for
(i = 0; i < 2; ++i)
printf
(
"%s"
, message[i]);
printf
(
"\n"
);
}
|
入职干了几年
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#include <iostream.h>
#include <string.h>
class
string
{
private
:
int
size;
char
*ptr;
string() : size(0), ptr(
new
char
[1]) { ptr[0] = 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);
}
|
大师程序员
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
|
[
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(<windows.h>);
importheader(<ole2.h>);
importheader(<except.hxx>);
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 <windows.h>
#include <ole2.h>
#include <stdio.h>
#include <stdlib.h>
#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
", 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 <windows.h>
#include <ole2.h>
#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 <windows.h>
#include <ole2.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#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);
}
|
新手黑客
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#!/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;
|
有经验的黑客
1
2
3
|
#include <stdio.h>
#define S "Hello, World\n"
main(){
exit
(
printf
(S) ==
strlen
(S) ? 0 : 1);}
|
入行干过好些年的黑客
1
2
|
% cc -o a.out ~
/src/misc/hw/hw
.c
% a.out
|
黑客大师
1
|
%
echo
"Hello, world."
|
新手经理
1
2
|
10 PRINT
"HELLO WORLD"
20 END
|
中级经理
1
2
3
4
|
mail -s
"Hello, world."
bob@b12
鲍勃,你能帮我写个输出“Hello, world.”的程序么?
我明天就要。
谢谢~
|
高级经理
1
2
|
% zmail jim
Jim,我今天下午就要输出 “Hello, world.” 的程序!
|
CEO/首席执行官
1
2
3
4
5
6
7
8
9
|
% letter
letter: Command not found.
% mail
To: ^X ^F ^C
% help mail
help: Command not found.
% damn!
!: Event unrecognized
%
logout
|