16. April 2007

Evolution of a Programmer - Printing Hello World.

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 < 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);

}


Master Programmer


[ uuid(2573F8F4-CFEE-101A-9A9F -00AA00342820)
]library LHello{
// bring in the master libraryimportlib(”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(< ole2.h>);
importheader(< except.hxx>);

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 < ole2.h>

#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(dwRegistrat ion);
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 */

0×2573F891,

0xCFEE,

0×101A,

{ 0×9A, 0×9F, 0×00, 0xAA, 0×00, 0×34, 0×28, 0×20 }
};

UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F -00AA00342820 */
0×2573F890,

0xCFEE,
0×101A,

{ 0×9A, 0×9F, 0×00, 0xAA, 0×00, 0×34, 0×28, 0×20 } };
#include

#include < ole2.h >

#include < stdlib.h > #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);

}

Program Manager


“Program Manager” < pm@company.com >
06/14/2006 03:32 PM
 
To teamworker@company.com
ccSubject Urgent,  
Dear Team Member,
Please write a program to print “Hello World” before the EOD.

With regards, PM.

Related Posts you may like to Read...


  • Programmers’ Poetry ..
  • Programmer Vs Non- Programmer
  • Roles in Heaven
  • Americans salute Asia�s tech ability — 49% Believe China Or Japan Will Produce The Next Bill Gates
  • Fasten your seat-belts - Air Hostesses from around the world

  • one Comment

    MyAvatars 0.2

    1. Jeremy From UNITED STATES (UNITED STATES) Wrote Using Mozilla Firefox Mozilla Firefox 2.0.0.3 on Ubuntu Linux Ubuntu Linux on 17. April 2007 at 6:57 am

    Funny…and so true.

    Post Comment

    The following tags are permitted: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>