The Evolution of a Programmer  


Her er en gammel joke - da jeg så den første gang midt i 90'erne lå jeg flad af grin. Nogle af programmeringseksemplerne er ved at være lidt bedagede, men pointen er stadig lige god.

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 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
	outpHello->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

     % cat
     Hello, world.
     ^D

AXE System programmer

     LL0:
	     .seg    "data"
	     .seg    "text"
	     .proc 04
	     .global _main
     _main:
	     !#PROLOGUE# 0
	     sethi   %hi(LF26),%g1
	     add     %g1,%lo(LF26),%g1
	     save    %sp,%g1,%sp
	     !#PROLOGUE# 1
	     .seg    "data1"
     L30:
	     .ascii  "Hello, World\012\0"
	     .seg    "text"
	     .seg    "data1"
     L32:
	     .ascii  "Hello, World\012\0"
	     .seg    "text"
	     set     L32,%o0
	     call    _strlen,1
	     nop
	     mov     %o0,%i5
	     set     L30,%o0
	     call    _printf,1
	     nop
	     cmp     %o0,%i5
	     bne     L2000000
	     nop
	     mov     0,%o0
	     b	     L2000001
	     nop
     L2000000:
	     mov     0x1,%o0
     L2000001:
	     call    _exit,1
	     nop
     LE26:
	     ret
	     restore
	    LF26 = -96
	     LP26 = 96
	     LST26 = 96
	     LT26 = 96
	     .seg    "data"
	    

     0000000 0103 0107 0000 0060 0000 0020 0000 0000
     0000020 0000 0030 0000 0000 0000 0054 0000 0000
     0000040 033f ffff 8200 63a0 9de3 8001 1100 0000
     0000060 9012 2000 4000 0000 0100 0000 ba10 0008
     0000100 1100 0000 9012 2000 4000 0000 0100 0008
     0000100 1100 0000 9012 2000 4000 0000 0100 0000
     0000120 80a2 001d 1280 0005 0100 0000 9010 2000
     0000140 1080 0003 0100 0000 9010 2001 4000 0000
     0000160 0100 0000 81c7 e008 81e8 0000 0000 0000
     0000200 4865 6c6c 6f2c 2057 6f72 6c64 0a00 4865
     0000220 6c6c 6f2c 2057 6f72 6c64 0a00 0000 0000
     0000240 0000 000c 0000 0608 0000 006e 0000 0010
     0000260 0000 060b 0000 006e 0000 0014 0000 0286
     0000300 ffff ffec 0000 0020 0000 0608 0000 0060
     0000320 0000 0024 0000 060b 0000 0060 0000 0028
     0000340 0000 0186 ffff ffd8 0000 004c 0000 0386
     0000360 ffff ffb4 0000 0004 0500 0000 0000 0000
     0000400 0000 000a 0100 0000 0000 0000 0000 0012
     0000420 0100 0000 0000 0000 0000 001a 0100 0000
     0000440 0000 0000 0000 0020 5f6d 6169 6e00 5f70
     0000460 7269 6e74 6600 5f73 7472 6c65 6e00 5f65
     0000500 7869 7400
     0000504
	    

     % axe_generate -f system.uhdl
     Application 'Exchange' generated
     2324042350000000 source code lines
     No Errors detected.
     Hardware retrieval...done OK
     Certification Test...done OK
     Packing..............done OK
     Delivery.............done OK
     Application 'Exchange' delivered to customer
     23456000 bytes/sec.
     End processing, 2345 seconds.

Ultra high level programmer

     system.uhdl :
	    

     SYSTEM
       CREATE ScreenWin
	 SIZE 20000000/Unit=One
	 DESTINATION Order.dest[One]
	 OUTPUT CHARACTER['Hello world']
       END
     END

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 all
	    

       I need a "Hello, world." program by this afternoon.

Chief Executive

       % message
       message: Command not found
       % pm
       pm: Command not found
       % letter
       letter: Command not found.
       % mail
       To: ^X ^F ^C
       help mail
       help: Command not found.
       >what
       what: Command not found
       >need help
       need: Command not found
       damn!
       !: Event unrecognized
       >exit
       exit: Unknown
       >quit
       %
       % logout
      
      
       Bipppp ! Mrs Thomsson ? Please page Tommy for me. NOW !

Tjaeee, mange chefer har stadig problemer med teknologien, selv her i det nye årtusinde.