From neurofly@concentric.net Thu Jun 4 22:38:19 1998 Return-Path: Received: from mx3.cso.uiuc.edu (mx3.cso.uiuc.edu [128.174.5.24]) by enterprise.isdn.uiuc.edu (8.8.7/8.8.7) with ESMTP id WAA19350 for ; Thu, 4 Jun 1998 22:38:17 GMT Received: (from daemon@localhost) by mx3.cso.uiuc.edu (8.8.8/8.8.8) id RAA20549 for roth@enterprise.isdn.uiuc.edu; Thu, 4 Jun 1998 17:37:46 -0500 (CDT) Received: from darius.concentric.net (darius.concentric.net [207.155.184.79]) by mx3.cso.uiuc.edu (8.8.8/8.8.8) with ESMTP id RAA20516 for ; Thu, 4 Jun 1998 17:37:33 -0500 (CDT) Received: from newman.concentric.net (newman.concentric.net [207.155.184.71]) by darius.concentric.net (8.8.8/(98/04/23 5.10)) id SAA27778; Thu, 4 Jun 1998 18:37:33 -0400 (EDT) [1-800-745-2747 The Concentric Network] Errors-To: Received: from default (ts003d25.chi-il.concentric.net [206.173.185.133]) by newman.concentric.net (8.8.8) id SAA08497; Thu, 4 Jun 1998 18:37:28 -0400 (EDT) Message-ID: <002501bd9004$db676fe0$85b9adce@default> X-PH: V4.4a@mx3.cso.uiuc.edu From: "Richard Martinoff" To: "Ronald Schmelzer" , "Mark Roth" Subject: Fw: The Evolution of a Programmer Date: Thu, 4 Jun 1998 17:05:13 -0500 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 4.72.2106.4 X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2106.4 Status: RO Content-Length: 6331 Lines: 314 -----Original Message----- From: Tasslehoff Burrfoot To: 'Brad Portelance' ; 'Alex Predoehl' ; 'Barbara B Pond' ; 'Bob & Barb Slaton' ; 'Dan Hagan' ; 'John Denny' ; 'Kevin Surma' ; 'Mark Aupperlee' ; 'Matt Harrington' ; 'Michael J. Fromberger' ; 'Mike Fowler' ; 'Nancy Shah' ; 'Paul Bloom' ; 'peter alberti (FLO)' ; 'Sandra Schmidt' ; 'Scott Shetrone' ; 'Thomas R. Naclerio' ; 'Tim Snyder' ; 'William Harris' Date: Wednesday, May 27, 1998 3:25 PM Subject: The Evolution of a Programmer >The Evolution of a Programmer > ----------------------------- > >>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--; f( 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); >} >