Expert Programmers

Stage 1: High School/Jr.High

         10 PRINT "HELLO WORLD"
         20 END


Stage 2: First year in College

         program Hello(input, output)
           begin
             writeln('Hello World')
           end.


Stage 3: Senior year in College

         (defun hello
           (print
             (cons 'Hello (list 'World))))


Stage 4: 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");
         }


Stage 5: 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);
         }


Stage 6: 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);
         }


Stage 7: 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;


Stage 8: Experienced Hacker

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


Stage 9: Seasoned Hacker

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


Stage 10: Guru Hacker

         % cat
         Hello, world.
         ^D


Stage 11: New Manager

         10 PRINT "HELLO WORLD"
         20 END


Stage 12: 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


Stage 13: Senior Manager

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


Stage 14: Chief Executive

         % letter
         letter: Command not found.
         % mail
         To: ^X ^F ^C
         % help mail
         help: Command not found.
         % damn!
         !: Event unrecognized
         % logout
Zur Hauptseite Zur Witze-Übersicht