The Evolution of a Computer 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
. 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("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
. #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
. 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, ">" . $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

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

Back