"Hello World" Programs

   

{NOTE: For the non programmers, some exegesis may
be necessary:  when a programmer starts to learn a new language,
a typical first exercise is to program the computer to display the 
message "Hello World".}

---------------


	     A compilation of *Hello World programs* designed by
		    various categories of  *developer* follows.


    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 <stdio.h>
    void main(void)
    {
      char *message[] = {"Hello ", "World"};
      int i;

      for(i = 0; i < 2; ++i)
	printf("%s", message[i]);
      printf("\n");
    }

    Seasoned professional
    =====================
    #include <iostream.h>
    #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 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(<windows.h>);
	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 <windows.h>
    #include <ole2.h>
    #include <stdio.h>
    #include <stdlib.h>
    #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 <windows.h>
    #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(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 <windows.h>
    #include <ole2.h>
    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    #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 <stdio.h>
    #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

    New Manager
    ===================

    10 PRINT "HELLO WORLD"
    20 END

    Middle Manager
    ===================

    mail -s "Hello, world." bob@b12
    Bob, could you please write me a program that prints "Hello, world."?
    I need it by tomorrow.
    ^D

    Senior Manager
    ===================

    % zmail jim
    I need a "Hello, world." program by this afternoon.

    Chief Executive
    ===================

    % letter
    letter: Command not found.
    % mail
    To: ^X ^F ^C
    % help mail
    help: Command not found.

    % damn!
    !: Event unrecognized
    % logout

-----------------

Thanks to a fwd from rayc@indiana.edu (Carolyn Ray)


This page was created by .