프로그래머의 진화

익명 사용자의 이미지

토론 게시판에 미지님이 올려주신
글입니다. 토론 게시판보다는 이곳이 더 적당하다고 판단되어
이곳으로 옮깁니다....

-----------------------------------------------------------------
http//www.ariel.com.au/jokes/The_Evolution_of_a_Programmer.html
에서 퍼왔습니다. 많은 분이 동감하시리라 봅니다.

프로그래머의 진화

High School/Jr.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 &stringoperator=(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 CHellocObjRef = 0;

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

HRESULT __stdcall CHelloPrintSz(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
% echo "Hello, world."


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

익명 사용자의 이미지

우...
마스터 프로그래머는....
COM 까지 할줄 알아야 하나?

익명 사용자의 이미지

한가지만 쓰지... 그러면 죽자사자 그거 하나만 하면 될텐데...
모 서로 지잘란 맛에 그렇게 많은것이 맹그러 지는것 이겠지만.
세계가 복잡해지면서 각 전문가끼리만 통하는 새로운 언어가 만들어
지면서 다른 의미의 바벨탑이 생기는 거라는데 이거는 그 전문가그룹
안에서도 서로 대화가 통하지 않는 새로운 언어들이 맹그러지는 격이군요.

맨 끝이 아주 주기네요.

- 겨울아이 -

익명 사용자의 이미지

hello world를 이렇게 어렵게 짤 수도
있군요!!! 무릅에 힘이 쫙 빠지네요.
아, 그루 해커로 만족하면 안되나?
니랑 거의 같은 수준이던데!! 크크크^^

산은 산이로되 산은 산인 것이 아니군요....

익명 사용자의 이미지

그러게 말여여.

헐..

필요하면 하는 거지 쓸데없이..

쩝..

echo 가 제일 맘에 드네요

플그림은 자유롭게 짜야지..

쩝..

머가 좋다구 얘기 들어도..

정말 그만큼 좋을까 ..

라는 생각 뿐입니다.

익명 사용자의 이미지

COM 코딩 부분을 보니, 이 친구는 C++ Builder 사용자인듯 하군요,
짜놓은 스타일이, 딱 빌더에서 해준 스타일인데.. )

익명 사용자의 이미지

음 첨에는 정말 잼있다고 느끼고,
잼나게 읽고 있는뎅...이런...중반을 지나 종반으로 치닫게 되니 서서히
입에서 욕이 나오는 군여...이런 유머 마저도 이해할수 없는 난...끙...
돌 매달고 바다로 뛰어들어야 하는 것인가?
왜? 이런 무시무시한 농담으로 저를 비참하게 하시나이까...
순선님...미워요ㅕㅇ........
우씨...

익명 사용자의 이미지

으음..

중학교 basic
전문대1년차 pascal
전문대2년차 ??
사회초년생 C
쪼매전문가 C++ ?
전문가 C++ windows의 com ?

Hacker perl
쪼매 hacker C
전문 hacker C ?
완존 hacker shell

과장 내일까지 만들라고 부탁
부장 오늘까지 만들라고 부탁
사장 컴맹 (logout은 아네)

근데, 전문대 2년차때가 무슨 언어지?
그리고 난 delphi - pascel쓰고 있으니,
아직 멀었군.. 으음, 아예, 확 뛰어 넘어
부장으로 가버려? ^^;

샘처럼 드림.

익명 사용자의 이미지

리스프(LisP) 일껄요....

익명 사용자의 이미지

5년동안 한해에 한번씩은 똑같은 글을 보는거 같군요.