[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Off Topic: Evolution of a Programmer


04 02 35 004c
============================
HAMLET
============================

if (2b & !2b) {
	out("That is the question!");
}


 From a dane (!prince), Niels Peter


On Thursday, March 13, 2003, at 10:58 AM, Michael Kay wrote:

> 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@d...]
>> Sent: 12 March 2003 18:35
>> To: xml-dev@l...
>> Subject:  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>
>
>
>
> -----------------------------------------------------------------
> 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>
>
>


PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.