OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   RE: [xml-dev] Off Topic: Evolution of a Programmer

[ Lists Home | Date Index | Thread Index ]

I once saw a version that added:

======================================================
Ex-programmer who has been promoted to project manager
======================================================

"Write me a program that says 'Hello World'"

==========================================
Ex-programmer who has been promoted to CEO
==========================================

"What is the business benefit of all this code we are writing?"


Michael Kay


> -----Original Message-----
> From: Jonathan Robie 
> [mailto:jonathan.robie@datadirect-technologies.com] 
> Sent: 12 March 2003 18:35
> To: xml-dev@lists.xml.org
> Subject: [xml-dev] Off Topic: Evolution of a Programmer
> 
> 
> This was forwarded to me - I have no idea where it came from 
> originally.
> 
> Jonathan
> 
> ===================
> 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
>    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, ">" . $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
> 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
> 
> 
> -----------------------------------------------------------------
> The xml-dev list is sponsored by XML.org 
> <http://www.xml.org>, an initiative of OASIS 
<http://www.oasis-open.org>

The list archives are at http://lists.xml.org/archives/xml-dev/

To subscribe or unsubscribe from this list use the subscription
manager: <http://lists.xml.org/ob/adm.pl>






 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS