趣文:程序員的進化史

jopen 11年前發布 | 8K 次閱讀 程序員

這篇趣文有一定歷史了,應該至少有 10 年了。

PS:亮點總是在最后。:)

初中/高中(注:Basic)

10 PRINT "HELLO WORLD"
20 END

大一(注:Pascal)

program Hallo(output);
begin
    writeln('Hello, world!')
end.

大三/大四

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

入職第一年

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

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

}</pre>

入職干了幾年

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

}</pre>

大師程序員

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

新手黑客

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

入行干過好些年的黑客

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

黑客大師

  % echo "Hello, world."

新手經理

  10 PRINT "HELLO WORLD"
  20 END

中級經理

mail -s "Hello, world." bob@b12
鮑勃,你能幫我寫個輸出“Hello, world.”的程序么?
我明天就要。
謝謝~

高級經理

% zmail jim
Jim,我今天下午就要輸出 “Hello, world.” 的程序!

CEO/首席執行官

  % letter
  letter: Command not found.
  % mail
  To: ^X ^F ^C
  % help mail
  help: Command not found.
  % damn!
  !: Event unrecognized
  % logout
載自: 伯樂在線

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!