image

Stokely home 
Search 
Sitemap 
About Stokely 

The Lighter Side of Sysadm | Ranting & Raving | Pete's Back Yard

______________

The Evolution of a Programmer

Author unknown, sent to us by Ken McKinlay

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 &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);
   }

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("actex.tlb");
       importlib("thlo.tl");
       [
      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 CHello:cObjRef = 0;

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

   HRESULT  __stdcall  CHello::PrintSz(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
   CoInitiali, 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, "$gt;" . $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 00 ba10 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
  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
 3456000 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

______________

Stokely Consulting, http://www.stokely.com
Email: Celeste Stokely | Peter Stokely
163 14th Trail, Unit B, Cotopaxi CO 81223, (719) 942-3621
Copyright © 2013 Stokely Consulting. All rights reserved.

Enough is enough. Vote Libertarian if you believe in individual liberty and personal responsibility, a free-market economy, and a foreign policy of non-intervention, peace, and free trade.