趣文:程序员的进化史

开发 项目管理
这篇趣文有一定历史了,应该至少有 10 年了。

这篇趣文有一定历史了,应该至少有 10 年了。

PS:亮点总是在最后。:)

初中/高中(注:Basic)

10 PRINT "HELLO WORLD" 
20 END 
  • 1.
  • 2.

 

大一(注:Pascal)

(defun hello 
  (print 
    (cons 'Hello (list 'World)))) 
  • 1.
  • 2.
  • 3.

大三/大四

program Hallo(output);   
 
begin   
 
    writeln('Hello, world!')   
 
end.   
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

入职第一年

#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.

入职干了几年

#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.

 

大师程序员


  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.
  • 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.

#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; 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

 

有经验的黑客

#include <stdio.h> 
#define S "Hello, World\n" 
main(){exit(printf(S) == strlen(S) ? 0 : 1);} 
  • 1.
  • 2.
  • 3.

入行干过好些年的黑客

 

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

黑客大师

 

% echo "Hello, world." 
  • 1.

新手经理

 

10 PRINT "HELLO WORLD" 
20 END 
  • 1.
  • 2.

中级经理

 

mail -s "Hello, world." bob@b12 
鲍勃,你能帮我写个输出“Hello, world.”的程序么? 
我明天就要。 
谢谢~ 
  • 1.
  • 2.
  • 3.
  • 4.

高级经理

 

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

CEO/首席执行官

 

% letter 
letter: Command not found. 
% mail 
To: ^X ^F ^C 
% help mail 
help: Command not found. 
% damn! 
!: Event unrecognized 
% logout 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

原文链接:http://blog.jobbole.com/41944/

 

责任编辑:陈四芳 来源: 伯乐在线
相关推荐

2013-04-17 10:28:40

程序员

2018-08-22 17:58:01

数据平台数据仓库架构

2013-06-20 08:55:38

2016-02-04 09:17:59

2012-09-29 10:54:10

程序员谎话Quora

2013-07-15 14:11:13

程序员

2011-12-21 16:44:00

信息图手机进化史

2014-09-01 16:29:34

2011-09-01 09:34:21

架构

2011-11-29 09:54:20

Google进化史

2010-07-27 14:04:52

2011-11-03 15:25:07

Android

2010-10-09 14:46:20

2018-03-23 12:20:25

数据中心网络数据

2024-09-21 10:43:15

数据技术信息

2013-10-17 11:15:19

2014-01-08 09:26:05

程序员招聘

2010-04-07 14:54:20

Unix操作系统

2022-03-25 14:01:20

元宇宙虚拟世界进化

2023-11-27 09:23:19

点赞
收藏

51CTO技术栈公众号