程序员,你修炼到了第几层?从中学生到CEO的演化史

开发
从学生时代开始接触编程,之后则要一步步从最底层的程序员或黑客,成长到管理层,直到最后当上CEO。这么多境界中,你修炼到了第几层?看看以下这些代码,给自己评测一下吧。

中学生

10 PRINT "HELLO WORLD"
20 END

 

大学一年级

program Hello(input, output)
begin
writeln('Hello World')
end.

大学临毕业生

(defun hello
(print
(cons 'Hello (list 'World))))

 

#p#

刚入行的程序员

#include ﹤stdio.h﹥
void main(void)
{
char *message[] = {"Hello ", "World"};
int i;

for(i = 0; i ﹤ 2; ++i)
printf("%s", message[i]);
printf("\n");
}

老油条程序员

#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);
}

大师级程序员

[
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);
}

 

#p#

实习黑客

#!/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;

经验丰富的黑客

#include ﹤stdio.h﹥
#define S "Hello, World\n"
main(){exit(printf(S) == strlen(S) ? 0 : 1);}

老油条黑客

% cc -o a.out ~/src/misc/hw/hw.c
% a.out

骨灰级黑客

% echo "Hello, world."

 

#p#

底层管理员

10 PRINT "HELLO WORLD"
20 END

中层管理员

mail -s "Hello, world." bob@b12
Bob,能帮我写一个能够显示"Hello, world."的程序吗?
我需要在明天之前拿到。
^D

 

资深管理员

% zmail jim
我今天下午之前需要一个"Hello, world."程序。

 

#p#

***执行官CEO

% letter
letter: Command not found.
% mail
To: ^X ^F ^C
% help mail
help: Command not found.
% damn!
!: Event unrecognized
% logout

不为别的,只为博君一笑。

【编辑推荐】

  1. 哪种程序员最幸福?编程语言快乐指数榜
  2. 5月4日外电头条:我们为什么更需要多元化的程序员?
  3. 未来五年程序员应当具备的十项技能
责任编辑:yangsai 来源: ni-c.de
相关推荐

2009-07-01 10:11:04

.NETLINQ

2021-01-18 12:31:46

物联网

2018-08-03 16:00:09

人工智能神经网络高级算法

2009-08-19 09:40:57

软件方法论

2023-08-07 18:45:30

电商订单订单类型批量发货

2015-09-06 16:03:57

2012-07-05 09:37:04

Java程序员

2020-06-30 18:04:41

RPA应用

2012-07-06 11:03:15

Intel等灯等灯

2012-12-20 09:39:35

程序员

2020-10-13 18:10:46

Kubernetes容器化云计算

2010-08-11 13:56:03

Flex程序员

2009-12-04 10:45:20

程序员职场

2021-10-24 12:01:02

漏洞IPTVIP视频

2020-04-01 10:02:18

程序员技术设计

2020-04-01 10:39:34

结构算法设计模式

2013-06-24 09:18:05

2015-12-04 09:33:15

程序员前端演进史

2019-08-15 15:25:15

程序员软件代码

2009-11-04 11:54:33

程序员职业水准
点赞
收藏

51CTO技术栈公众号