The Evolution of a Programmer


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 <stdio.h>

void main(void) {
        char *message[] = {"Hello ", "World"};
        int i;
        for(i = 0; i < 2; ++i)
                printf("%s", message[i]);
        printf("\n");i
}          

Seasoned professional

#include <iostream.h>
#include <string.h>

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 interfacesi
        #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\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 <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);
}           

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 <stdio.h>

#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          

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