[
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>
|