프로그래머의 진화
 
  토론 게시판에 미지님이 올려주신
글입니다. 토론 게시판보다는 이곳이 더 적당하다고 판단되어
이곳으로 옮깁니다....
-----------------------------------------------------------------
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

Re: 프로그래머의 진화
우...
마스터 프로그래머는....
COM 까지 할줄 알아야 하나?
Re: 지겨워...
한가지만 쓰지... 그러면 죽자사자 그거 하나만 하면 될텐데...
모 서로 지잘란 맛에 그렇게 많은것이 맹그러 지는것 이겠지만.
세계가 복잡해지면서 각 전문가끼리만 통하는 새로운 언어가 만들어
지면서 다른 의미의 바벨탑이 생기는 거라는데 이거는 그 전문가그룹
안에서도 서로 대화가 통하지 않는 새로운 언어들이 맹그러지는 격이군요.
맨 끝이 아주 주기네요.
- 겨울아이 -
제기럴!!!R래머
hello world를 이렇게 어렵게 짤 수도
있군요!!! 무릅에 힘이 쫙 빠지네요.
아, 그루 해커로 만족하면 안되나?
니랑 거의 같은 수준이던데!! 크크크^^
산은 산이로되 산은 산인 것이 아니군요....
Re^2: 프로그래머의 진화
그러게 말여여.
헐..
필요하면 하는 거지 쓸데없이..
쩝..
전
echo 가 제일 맘에 드네요
플그림은 자유롭게 짜야지..
쩝..
머가 좋다구 얘기 들어도..
정말 그만큼 좋을까 ..
라는 생각 뿐입니다.
Re: 프로그래머의 진화
COM 코딩 부분을 보니, 이 친구는 C++ Builder 사용자인듯 하군요,
짜놓은 스타일이, 딱 빌더에서 해준 스타일인데.. )
Re: 프로그래머의 진화
음 첨에는 정말 잼있다고 느끼고,
잼나게 읽고 있는뎅...이런...중반을 지나 종반으로 치닫게 되니 서서히
입에서 욕이 나오는 군여...이런 유머 마저도 이해할수 없는 난...끙...
돌 매달고 바다로 뛰어들어야 하는 것인가?
왜? 이런 무시무시한 농담으로 저를 비참하게 하시나이까...
순선님...미워요ㅕㅇ........
우씨...
Re: 언어가 맞나요?
으음..
중학교 basic
전문대1년차 pascal
전문대2년차 ??
사회초년생 C
쪼매전문가 C++ ?
전문가 C++ windows의 com ?
Hacker perl
쪼매 hacker C
전문 hacker C ?
완존 hacker shell
과장 내일까지 만들라고 부탁
부장 오늘까지 만들라고 부탁
사장 컴맹 (logout은 아네)
근데, 전문대 2년차때가 무슨 언어지?
그리고 난 delphi - pascel쓰고 있으니,
아직 멀었군.. 으음, 아예, 확 뛰어 넘어
부장으로 가버려? ^^;
샘처럼 드림.
2년차는 리스프(LisP) 일껄요.... (내용무)
리스프(LisP) 일껄요....
아... 지겨워
5년동안 한해에 한번씩은 똑같은 글을 보는거 같군요.