Computer mal menschlich

HOW DOES YOUR CHICKEN CROSS THE ROAD?
Wenn Betriebssysteme Biere wären...
DER INTERNET-Krieg
Rotkaeppchen fuer Informatiker
Menschen  (wie sie sein koennten ;-) )
HELLO WORLD
Vergleich verschiedener Computertypen
Die verschiedenen Computermenschen
Was wäre, wenn Programmiersprachen Autos wären
Wie Programmierer ihre Räder bauen


HOW DOES YOUR CHICKEN CROSS THE ROAD?

NT Chicken
Will cross the road in June; no, in August.  September for sure.
OS/2 Chicken
It tried to cross the road several times, and finally gave up.
Win 95 Chicken
You see different colored feathers while it crosses, but cook it and it still tastes like ... chicken.
Microsoft Chicken (TM)
It's already on both sides of  the road. And  it just bought the road.
OOP Chicken
It doesn't need to cross the road, it just sends a message.
Assembler Chicken
First it builds the road ...
C Chicken
It crosses the road without looking both ways.
C++ Chicken
The chicken wouldn't have to cross the road, you'd simply refer to him on the other side.
VB Chicken
USHighways!TheRoad cross (aChicken)
Delphi Chicken
The chicken is dragged across the road and dropped on the other side.
Java Chicken
If your road needs to be crossed by a chicken, the server will download a chicklet to the other side.
Web Chicken
Jumps out onto the road, turns right, and just keeps on running.
Gopher Chicken
Tried to run, but got flattened by the Web chicken.
Newton Chicken
Can't cluck, can't fly, and can't lay eggs, but you can carry it across the road in your pocket.
Cray Chicken
Crosses faster than any other chicken, but if you don't dip it in liquid nitrogen first, it arrives on the other side fully cooked.
Quantum Logic Chicken
The chicken is distributed probabilistically on all sides of the road until you observe it on the side of your course.
Lotus Chicken
Don't you dare try to cross the road the same way we do!
Mac Chicken
No reasonable chicken owner would want a chicken to cross the road, so there's no way to tell it to.
Al Gore Chicken
Waiting for completion of NCI (Nation Chicken-crossing Infrastructure) and will cross as soon as its finished, assuming he's re-elected and the Republicans don't gut the program.
COBOL Chicken
     0001-CHICKEN-CROSSING.
     IF NO-MORE-VEHICLES THEN
     PERFORM 0010-CROSS-THE-ROAD
     VARYING STEPS FROM 1 BY I UNTIL
     ON-THE-OTHER-SIDE
     ELSE
     GO TO 0001-CHICKEN-CROSSING


Wenn Betriebssysteme Biere wären...

DOS Bier

Du mußt Deinen eigene Dosenöffner verwenden, und die Instruktionen zum öffnen müssen genau gelesen werden. Früher wurden 8er-Packs Dosen geliefert, heute bekommt man 16er-Packs, die allerdings in 8 mal zwei Kammern geteilt werden, damit die Packung beim Transport stabil bleibt. Die Produktion dieses Bieres wird bald eingestellt, aber die privaten Lagervorräte sind so groß, daß es noch lange getrunken werden kann.

MAC Bier

Es wurde früher ausschließlich in 16er-Packs geliefert und ist jetzt auch in 32er-Packs erhältlich. Dieses sogenannte Diätbier öffnet sich selbsttätig, sobald man es aus dem Kühlschrank nimmt. Die Inhaltsstoffe werden nicht angegeben, fragt man danach, bekommt man zur Antwort, daß man das nicht wissen müsse. Lediglich eine "Leere Dose bitte recyclen"-Aufschrift findet sich auf der Dose.

Windows 3.x Bier

Es ist wohl das bekannteste Bier am Markt. Es sieht ein bißchen aus wie MAC Bier, wird aber nur in 16er-Packs geliefert, und man kann es nicht trinken, wenn man nicht vorher mit einem DOS Bier vorspült. An sich kann man DOS und Windows Bier zugleich trinken, wenn man nur wenige DOS Biere trinkt und diese sehr langsam. Manchmal explodiert die Windows Dose auch bei dem Versuch, sie zu öffnen.

OS/2 Bier

Es wird in 32er-Packs geliefert, man kann mehrere davon gleichzeitig trinken, oder auch DOS Biere oder Windows Biere in beliebiger Kombination. Dieses Bier wird auch nicht explodieren wenn man es vor dem öffnen kräftig schüttelt. Der Hersteller IBM (Internationale Bier Manufaktur) gibt an, daß 10 Millionen Packs verkauft wurden und die Konsumenten sagen dazu "Nicht immer, aber immer öfter!"
Unter dem Motto "Warp sei Lob und PROST!" haben sich einige Kampftrinker zu einem TeamOS/2-Bierklub zusammengeschlossen, um der neuesten OS/2 Geschmacksrichtung WARP ("Wirklich A Richtiges Pils") dem Trinkervolk nahezubringen.

Windows95 Bier

Das neueste Bier am Markt. Viele Probetrinker behaupten, es schmecke vorzüglich. Tatsächlich sieht es aus wie eine Mischung aus MAC Bier und OS/2 Bier, schmeckt aber wie Windows 3.x Bier. Es wird in 32er-Packs verkauft, die allerdings nur 16 Dosen enthalten. Der durchschnittliche Bierfreund wird wohl bei Windows 3.x Bier bleiben, bis sie am Stammtisch Freunde treffen, denen das Windows95 Bier geschmeckt hat. Obwohl die Herstellerfirma MS (Multi-Sauf) behauptet, bei diesem Bier sei eine völlig neue Sorte entstanden, findet man in der kleingedruckten Inhaltsstoffe-Liste MAC-, OS/2 und DOS Bierkomponenten.

Windows NT Bier

Es wird ausschließlich in 32er-Packs geliefert, aber man braucht ein großen Kühlschrank, um es aufzubewahren, da man nur Großpackungen erhält. Es sieht aus wie Windows 3.x Bier, aber die Herstellerfirma wird das Aussehen an Windows95 Bier anpassen, wenn dieses sich gut verkauft. Es wird als industrielles Starkbier verkauft und ist an sich nur zum Ausschank an qualifizierten Bars gedacht.

UNIX Bier

UNIX Bier kann man in verschiedensten Packungsgrößen kaufen. Von 8er bis sogar 64er-Packs von verschiedenen Brauereien, deren Geschmack aber ziemlich gleich ist. UNIX Biertrinker sind sehr loyal zu ihrer Marke. Manchmal benötigt man einen eigenen Dosenöffner, denn ab und zu brechen die Verschlußringe beim öffnen ab, doch dann braucht man viel Übung oder einen Freund, der ein jahrelanger, erfahrener UNIX Biertrinker ist.

AmigaDOS Bier

Die ursprüngliche Herstellerfirma ging pleite, doch eine deutsche Brauerei hat das Rezept übernommen und exportiert es jetzt. Ein Verkaufsschlager war es nie, doch das lag am Marketing. Änhlich wie UNIX-Trinker sind AmigaDOS-Trinker ein loyales Grüppchen. Es wird in 16er sowie neuerdings in 32er Packs verkauft. Bei seiner Markteinführung erschien es als farbenprächtiges und gehaltvolles Bier, aber das Design wurde nie verändert, sodass es jetzt etwas abgestanden wirkt. Kritiker meinen, man könne es nur zum Fernsehen trinken.

VMS Bier

Der Trinker muß das VMS nur aufreißen und trinken. Manchmal allerdings explodieren die Dosen oder das VMS schmeckt wie Abwaschwasser. Am besten wird VMS extrem kalt getrunken. Der Hersteller verweist bei einer Anfrage über die Inhaltsstoffe auf eine verschollene Notiz der FDA. Gerüchteweise wird behauptet, VMS falle unter das Betäubungsmittelgesetz, aber eine gerichtliche Grundsatzentscheidung steht noch aus.


DER INTERNET-Krieg

Juni 1996
Vor allem Privatsender und Printmedien erkennen die aufkommende Gefahr alternativer Kommunikationsformen und kaempfen mit verschaerften Mitteln um den Erhalt der einseitigen Kommunkation (one way). Der Name"Internet" darf laut einer inoffiziellen Absprache der Medienbetreiber nur in Zusammenhang mit "Kinderpornografie" oder "Neonazi" gesendet/gedruckt werden. Alle Anfragen um ein Interview mit einem der Intendanten/Verleger wurden von der neu gegruendeten Vereinigung RAT und deren Tochter SPISTE abgelehnt.
Juli 1996
RAT beauftragt diverse Statistikfirmen im hinteren Orient und gibt in einer farbenfrohen, reisserischen, senderuebergreifenden Nachrichtenshow bekannt:
 45% Internetnutzer muessten Neonazis sein,
 55% Kinderschaender,
 80% beides!
Der erste und einzigste Anrufer, Robert S. (Name geaendert), konnte vor seiner Verhaftung noch seiner Verwunderung ueber demnach 10 Millionen hakenkreuzschwingende Kinderschaender Ausdruck verleihen, bevor ihn das BNZD-Einsatzkommando in einer atemberaubend schnellen Aktion noch am Telefon ueberwaeltigte. Einsatzleiter Gerd Dau dazu: "Vom Rueckverfolgen des Telefonanrufs bis zur Verhaftung haben wir 18 Sekunden gebraucht. Bei uns hat keiner eine Chance..."
August 1996
Deutschland legt die Daumenschrauben fuer inlaendische Provider an, der gesamte Datenverkehr muss von sicherheitsueberprueftem Personal vor der Weitergabe an Firmen und Endkunden gesichtet und selektiert werden. Jede Nachricht (sog. News und Mail) die dem ersten Augenschein nach, illegale ale oder moralisch anstossende Inhalte hat, muss sofort dem neu geschaffenen BNZD (BundesNachrichtenZensurDienst) weitergeleitet werden, der wiederum binnen 96 Stunden ueber den weiteren Verbleib entscheidet. Der BNZD ist wiederum zur Zusammenarbeit mit den Ermittlungsbehoerden gehalten.
November 1996
Einige langjaehrige Netzbenutzer holen zum Gegenschlag aus. In einer von langer Hand geplanten Aktion - innerhalb eines Verbundes der von staatlicher Seite nicht mehr so akribisch ueberwachten "Nickelnetze" - wurde das Tun der Printmedien aufgedeckt:  In 53% aller Druckwerke (Von "Bild" Bibel) werden "nakte Tatsachen" dem unbedarften Leser praesentiert. Viel fach koenne der ungeuebte Laie von aussen gar nicht erkennen, das im Laufe des Inhaltes ploetzlich und unerwartet "anstoessige" Woerter, ein nackter Busen oder gar schlimmeres drin vorkaeme. Dies waere insbesondere bei den sog. Buechern, die schon ketzerisch fast in Tempeln angeboten wuerden. Einer dieser Kultstaetten, das Buchhaus Gonski in Koeln wurde daraufhin sofort geschlossen.
Dezember 1996
Wer nun noch "Bild" kauft, muss mit schmerzhaften Repressialien von umstehenden Passanten rechnen. 90% der Schulbuecher sind bereits eingezogen, der Rest wird gerade nach kritischen Textpassagen ueberarbeitet.
Der Reigen der Privatsender haelt sich, wie sonst zu Weihnachten unueblich, extrem bedeckt und zeigt nur noch vom Vatikan abgesegnete Filme oder Andacht-Shows.
Januar 1997
Die eingereichten Konkursantraege fuer Verlage und Sendeanstalten erreichen Guiness-Buch traechtige Zahlen und alle Welt stuerzt sich auf die aufeinmal so saubere Datenautobahn. Der 24. Januar ist ein denkwuerdiger Tag, an dem die Tagesschau zum erstenmal statt im Fernsehen via WWW abrufbar ist.
Februar 1997
Gottschalk laechelt uns nun aus de.talk.bizarre in Form von ANSI-Grafiken entgegen, die Samstag-Nacht-Show laeuft in de.rec.tv.misc und auch sonst geht alles wieder seinen gewohnten Gang. "Der Computermonitor hat eh ne bessere Aufloesung" schallt es aus Papa Bergers guter Wohnstube, und er freut sich insgeheim, dass CDROMs doch viel besser zu verstecken seien, wie diese feisten Videokassetten! Sauberes Deutschland,  welcome back...
Maerz 1997
Das Internet vertraegt die neuen Datenmassen nicht und bricht am 4.3.97 entgueltig zusammen. Verstaerkt wird dieses Fiasko durch das zeitgleiche Eintreffen der Telefonrechnungen in bundesdeutsche Haushalte. Die Citybank hat einen Umsatzrekord in Dispokreditantragsformularen und erhaelt vom BauerDruck die goldene Nadel am Pappstreifen. Die Telekom pfeift auf die Boerse und beschliesst als Steuertrick mit den Maerz-Zinsen AT&T zu kaufen.
Millionen verunsicherter Bundesbuerger entdecken so ruehrende Tasachen, als das sie eine Ehefrau haben, man mit den Kindern auch Brettspiele spielen kann und aehnliche neue Belanglosigkeiten.
April 1997
Neue Privatsender, Verlage und Provider schiessen wieder aus dem Boden, in der Hoffnung Millionen entzugsgeschaedigter Kunden erneut zu erschliessen.
Kritiker befuerchten eine Wiederholung des Szenarios, Zyniker freuen sich bereits darauf und Politiker vermerken "Es hat zu keinem Zeitpunkt Gefahr fuer die Bevoel.....  NO CARRIER
(c)R.Schwienbacher


Rotkaeppchen fuer Informatiker:

Es war einmal ein kleines suesses Maedchen, das immer ein Kaeppchen aus rotem Samt trug. Aufgrund dieses Attributes erhielt es ein Assign unter dem symbolischen Namen "Rotkaeppchen". Eines Tages sprach die Mutter: "Rotkaeppchen, die Gesundheit deiner Grossmutter hat einen Interrupt bekommen. Wir muessen ein Pflegeprogramm entwickeln und an die Grossmutter adressieren, um das Problem zu loesen. Verirre dich jedoch nicht im Wald der alten Sprachen, sondern gehe nur strukturierte Wege. Nutze dabei immer eine Hochsprache der 4. Generation, dann geht es der Grossmutter schnell wieder gut. Und achte darauf, dass dein Pflegeprogramm transaktionsorientiert ist, damit es die Grossmutter nicht noch mehr belastet. Da der Weg zum Haus der Grossmutter reentert war, traf Rotkaeppchen den boesen Wolf. Er trat sehr benutzerfreundlich auf, hatte im Background jedoch schon einen Interrupt programmiert. Waehrend Rotkaeppchen einen Goto ins Blumenfeld machte, ging der Wolf in einem direktem Zugriffsverfahren zur Grossmutter und vereinnahmte sie unverzueglich durch einen Delete. Ohne zu zoegern gab er sich den Anschein kompatibel zu sein und nahm die logische Sicht der Grossmutter an. Dann legte er sich im Speicher ab und verbog entsprechend den Zeiger, der auf seine Startadresse zeigte. Kurz danach lokalisierte auch Rotkaeppchen die Adresse der Grossmutter und Trat in den Speicherraum. Vor der Installation des Pflegeprogrammes machte Rotkaeppchen sicherheitshalber einen Verify und fragte: "Ei Grossmutter, warum hast du so grosse Augen ?"  - "Weil ich zufriedene Endbenutzer gesehe habe." "Ei Grossmutter, warum hast du so grosse Ohren ?"  - "Damit ich die Wuensche der User besser verstehen kann." "Ei Grossmutter, warum hast du so ein entsetzlich grosses Maul ?"  - "Damit ich dich besser Canceln kann!" Sprach's und nahm das arme Ding als Input.
Nach einem Logoff begab sich der Wolf zur Ruhe, schlief ein und begann laut zu schnarchen. Als der Jaeger auf seinem Loop durch den Wald am Haus der Grossmutter vorbei  kam, sah er durch eine Pruefroutine den Wolf im Speicher und den verbogenen  Zeiger. "Finde ich dich hier, du alter Halunke", sprach er, "ich habe dich lange gesucht!" Als Kenner der Szene analysierte er sofort, dass nach den Regeln der Boolschen Algebra die Grossmutter nur im Bauch des Wolfes sein konnte. Er nahm sein Messer, teilte den Bauch des Wolfes in mehrere Sektoren und machte, welch eine Freude, Grossmutter und Rotkaeppchen wieder zu selbstaendigen Modulen. Als Input fuer den leeren Bauch des Wolfes nahm er viele kByte Steine aus dev/null und beendete die Operation mit einem Close.
Als der Tron-Prozess den Wolf wieder aufweckte verursachte ihm sein dermassen  aufgeblaehter Hauptspeicher und die nicht mehr stimmende CRC-Pruefsumme solche Schmerzen, dass er an einer Storage Violation jaemmerlich zugrunde ging. Der Jaeger startete das Pflegeprogramm und suchte den Speicher nach Viren ab. Da waren alle vergnuegt. Das Pflegeprogramm aktivierte wieder die Grossmutter und  Rotkaeppchen. Die Mutter des Rotkaeppchen sagte: "Ich sagte dir doch, du sollst nur strukturierte Wege gehen, und dich nicht durch ein unkontrolliertes Goto in Gefahr begeben. "Seit dieser Zeit sitzt die Mutter nach jedem Start des Rechners resistent im Speicher und kontrolliert die Aktivitaeten ihrer Unterprogramme.Und wenn der Rechner nicht ausgeschaltet wird sitzt sie auch Morgen noch da.


Menschen (Prolo-Edition)

Der Vokuhila-Oliba
Fast schon ein Klassiker. Das Akronym leitet sich aus dem Auftrag an seine Friseuse ab: "Vorne kurz, hinten lang" (man beachte hier die subtile Abgrenzung zur ehrenwerten "Friseurin"). Der Oberlippenbart ist ebenso ein Charakteristikum dieses in der Regel eher einfacher strukturierten Mitmenschen, der sich im Aussehen und Auftreten an regionalen Fussballgroessen der spaeten siebziger Jahre orientiert. Fuer jeden Millimeter, den der "Oliba" unter die Mundwinkel heruntergezogen ist, lassen sich vom 90er IQ bedenkenlos weitere 5 Punkte abziehen. Traegt sog. Schnellfickerstiefel, die er eigenhaendig im Western-Store gekauft hat.
Der Lebutra
Aeussere Kennzeichen: Duennes Lederjaeckchen und bunte Trainingshose, zusaetzlich meist abgetragene Sportschuhe, die aber noch nie einen Sportplatz gesehen haben. Wird in Kneipen oft laut und verstaendigt sich nur nonverbal. Traegt sonntags einen Ballonseiden-Trainigsanzug mit olfaktorisch bedenklichen Sportflecken und eine dicke gelbe Uhr (Rolex-Plagiat aus hauchvergoldetem Blech).
Der Gokeweso
Goldkettchen und weisse Socken, Attribute einer Spezies, die durch aggressives Paarungsverhalten auffaellt. Versucht, durch massiven Pheromoneinsatz eine Duldungsstarre beim Weibchen zu provozieren. Dauergast in der Erlebnisgastronomie (ein Geschaeftszweig, der ausschliesslich von den hier aufgefuehrten Minderheiten lebt).
Der Spogomikea
Spoiler-Golf mit Kenwood-Aufkleber, steht subsumierend auch fuer "Rennwarzen" (VW Polo oder Honda CRX mit viel zu kleinen Raedern) und "Kasperbuden" (Kadett C in grellen Neonfarben). Adaequates Pendelverkehrsmittel zwischen Vorstadt-McDonalds und der inner- staedtischen Erlebnisgastronomie (siehe unter "Gokeweso").
Der Wuhopi
Wuthocker-Piloten halten sich fuer sportliche Motorradfahrer, sind aber in Wirklichkeit geistige Kleingaertner mit fortgeschrittener gustativer Demenz. Bewegen mit Vorliebe kreischende, kasperbunte Kraftraeder mit Vollverkleidung ("Wuthocker", "Joghurtbecher").
Der Bodybuilder
Entgegen landlaeufiger Meinung auch ein Kunstwort, steht fuer "Bedrohliche organische Dysfunktion bei unterentwickelter Intelligenz, leidet daher ernsthaft". Hat die einzigartige Faehigkeit, Rudimente von Gehirnzellen direkt in Muskelzellen umzuwandeln. Neigt in sog. Kraftraeumen zu Hospitalismus (rhythmische, ungesteuerte Bewegungsablaeufe, oft zu beobachten bei internierten Schwachsinnigen).


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


Vergleich verschiedener Computertypen :

Die "Stiftung Wasserfest" hat mehrere Rechnertypen auf ihre Eignung für den Heimanwender überprüft. Getestet wurden verschiedene Hard- und Softwarekomponenten. Als Problemstellung wurde festgelegt, daß der Rechner zwei und drei addieren soll. Dabei kam es zu, für den Anwender höchst interessanten, unterschiedlichen Resultaten:

Auf dem C64 wurde das Ergebnis (5) innerhalb von 1,023 Sekunden ermittelt. Etwas störend wirkte sich der zweiminütige Crackervorspann aus, der aufgrund eines Listschutzes nicht entfernt werden kann.

Der Amiga errechnete als Resultat fünf, allerdings muß peinlichst darauf geachtet werden, daß sich die Systembibliotheken in den richtigen Pfaden befinden. Der Stereosound kann nicht abgeschaltet werden. Während der Berechnung flackert allerdings der Bildschirm. Die Rechendauer ist von der Flackerfrequenz abhängig und schwankt zwischen 3 und 7 Sekunden.

Auf dem PC unter DOS fehlte zuerst eine Installationsdiskette. Nachdem diese beschafft war, stellte sich leider heraus, daß das Diskettenformat nicht kompatibel zum eingebauten Laufwerk war. Mit einigen Kniffen läßt sich das Programm aber von einem erfahrenen Anwender doch installieren. Leider kann das Resultat nicht ausgegeben werden, da die Fließkommaroutinen nicht kompatibel zum Bildschirmtreiber sind, solange eine Tastatur angeschlossen ist, oder eine ungerade Anzahl von "e" in der CONFIG.SYS vorkommt.

Der PC unter Windows rechnet noch. Alle 5 Sekunden wird ein Hinweisfenster mit dem Inhalt: "Intel inside" ausgegeben. Zur Zeit sind ca. zwei bis drei Billionen Fenster geöffnet.

Auf dem MAC erschien das Ergebnis bereits auf dem Bildschirm, als der Tester mit der Diskette den Raum betrat. Ausgedruckt werden kann das Ergebnis leider nur auf einem MAC-spezifischen Drucker, der den Preis eines Luxusklasse-PKW hat. Handelsübliche Drucker zu zivilen Preisen sind nur mit Spezialkabeln anschließbar, die alleine mehrkosten, als ein spezieller MAC-Drucker.

Ein Atari TT errechnete das Ergebnis in nicht meßbar kurzer Zeit und gab es völlig korrekt und gut lesbar auf dem Monitor aus. Auf Tastendruck konnte es problemlos ausgedruckt oder gespeichert werden. Da die Ausgabe jedoch nicht GEM-konform waren, wurde das Resultat von den Anwendern nicht akzeptiert.

Der Atari Falcon meldete unter dem ersten Task 42, gleichzeitig im zweiten Task 0.4354655642476587E-231 und im dritten Task "Incorrect formula!" als Ergebnis. Anschließend warf er zwei Bomben in drei Fenstern.

Eine Workstation unter UNIX wird zur Zeit noch von einem Tool durchgescannt, das ermittelt, mit welcher ESC-Tastenkombination der "emacs" verlassen werden kann, nachdem man "2+3" eingegeben hat.

Der Archimedes verwies den Anwender unter Berufung auf seinen RISC-Prozessor an einen Taschenrechner.

Ein ZX-Spektrum ermittelte in sehr kurzer Zeit völlig korrekt als Ergebnis fünf und ließ sich durch einfachste Befehle dazu bringen, dies auf Drucker oder Bildschirm auszugeben. Damit entspricht er nicht den Anforderungen der heutigen Zeit und geht als schwächster Kandidat aus dem Test hervor.


Die verschiedenen Computermenschen :

Der Chefsoftwareentwickler
Er ist mit seinem Computer fest verwachsen, tippt schneller, als der Computer es verarbeiten kann, denkt in Assembler, übersteht Schocks von 380 V und kennt alle Chips auswendig.
Der Starprogrammierer
Er sitzt 20 Stunden pro Tag am Computer, tippt 10 Wörter pro Sekunde, beherrscht Pascal, BASIC, Assembler, Fortran, Logo, APL, Algol, Prolog und C, hält 220 V aus und kennt alle Handbücher.
Der Diplom-Informatiker
Benutzt seinen Computer 16 Stunden am Tag, tippt 10 Zeichen pro Sekunde, beherrscht Pascal, BASIC, C und Assembler fließend, kann einen heißen Lötkolben kurz anfassen und hat alle Handbücher.
Der Informatiker
Er verbringt seinen Arbeitstag und alle Pausen vor dem Computer, tippt 5 Zeichen pro Sekunde, beherrscht Pascal und BASIC fließend, überbrückt Sicherungen, weiß, wo es in der Bibliothek die Handbücher gibt.
Der Programmierer
Er verbringt nur die reine Arbeitszeit vor dem Computer, tippt wie eine Sekretärin, kann mit Hilfe eine Nachschlagewerkes in Assembler programmieren, kann Sicherungen austauschen und weiß, wo er Handbücher kaufen kann.
Der Informatikstudent
Sitzt als Hobby vor dem Computer, tippt 10 Wörter pro Minute, kann mit Hilfe eines Lehrbuches kleine Pascal-Programme erstellen, kann Batterien im Taschenrechner auswechseln, weiß, daß es Handbücher gibt.
Der User
Sitzt ab und zu am Computer, tippt ein Wort pro Minute, kann kurze BASIC-Programme abtippen, bekommt von einer 9V-Batterie einen Schlag und interessiert sich nicht für Handbücher, weil er sie sowieso nicht versteht.
Der Hacker
Er ist eins mit dem Computer, tippt nicht, sondern überträgt seine Gedanken direkt an den Computer, schreibt bei Bedarf schnell selbst eine Programmiersprache, erzeugt die benötigten 220 V selbst und hat alle besseren Handbücher geschrieben.


Was wäre, wenn Programmiersprachen Autos wären :

ADA
Ein als amerikanischer Straßenkreuzer getarnter Schützenpanzerwagen.
APL
Ein Wagen in Kompaktbauweise. Alle Funktionen wie Gasgeben, Schalten oder Lenken werden durch Drehen, Drücken, Ziehen, Kneten oder Verkanten eines einzigen Bedienungshebels ausgelöst.
Assembler
Ein Go-Cart ohne Sicherheitsgurte und Überrollbügel. Gewinnt jedes Rennen, wenn er nicht vorher im Graben landet.
BASIC
Eine Ente - weder modern noch besonders schnell, aber für jeden erschwinglich. Und manch einer, der sich daran gewöhnt hat, will nichts anderes mehr haben.
C
Ein offener Geländewagen. Kommt durch jeden Matsch und Schlamm, aber der Fahrer sieht hinterher auch entsprechend aus.
COBOL
Ein dunkelroter Daimler mit getöntem Panzerglas und kostbaren Intarsien- Arbeiten im Fond. Kein Mensch fährt diesen Wagen selbst; man läßt sich fahren.
Forth
Ein englischer Sportwagen aus den 60er Jahren mit dem Lenkrad auf der falschen Seite.
FORTRAN
Ein Schlitten aus den 50er Jahren mit riesigen Heckflossen. Erntet beim TÜV stets mißtrauische Blicke, überholt aber noch manches neuere Gefährt.
GFA-BASIC
Eine Ente, bei der die Rückbank einem Super-Turbo-Einspritz- Kompressor-Hochdruck-Hochleistungsmotor geopfert wurde.
Logo
Ein als Schildkröte getarntes Tretauto.
PASCAL
Entwurf eines amerikanischen Straßenkreuzers, der nur durch ein Versehen in die Serienproduktion gelangte.
Modula II
Wie PASCAL, aber mit dreifachen Sicherheitsgurten, seitlichen Stoßstangen und separatem Gaspedal für jeden der fünf Gänge.
Pearl
Ein Kraftfahrzeugverbund bei dem mehrere unbemannte KFZ's von einem zentralen Führerstand aus gesteuert werden.
PL/1
Ein handgefertigter Eigenbau, mit Einzelteilen von FORTRAN, COBOL, PASCAL und ADA. Näheres unter den jeweiligen Stichwörtern.
Prolog
Enthält statt eines Lenkrades eine Automatik, die alle Straßen solange absucht, bis das gewünschte Ziel erreicht ist. Gegen Aufpreis sind Tank-Erweiterungsmodule in Stufen zu 64, 128 und 256 Litern möglich.
Rexx
Kein Auto an sich, mehr eine hyperkomplexe 64-Kanal-Fernbedienung, aber nicht nur für Autos, sondern auch für Schiffe, Flugzeuge, Hubschrauber, Fernlenkdrachen, Raumsonden, Satteliten usw...
TurboPASCAL
Eine verbesserte Version des amerikanischen Straßenkreuzers; neben dem praktischen Nutzen auch hervorragend zum Angeben geeignet. Paßt aber leider in keine Parklücke.


Wie Programmierer ihre Räder bauen :

ADA-Programmierer bauen ein viereckiges Rad und passen alle Straßen an
ALGOL-Programmierer weigern sich, Räder zu bauen, weil es sie irgendwohin bringen könnte.
APL-Programmierer schweben in höheren Sphären, sie brauchen keine Räder.
ASSEMBLER-Programmierer bauen tausende von Rädern, keine zwei passen auf eine Achse.
BASIC-Programmierer bauen nur ein Rad, aber finden keine Achse dazu.
COBOL-Programmierer bauen TAUSEND-RÄDRIGE-TRANSPORT-MODULE und verbieten das Gehen.
FUNKTIONAL-Programmierer rufen eine Funktion HOLZ auf und hoffen, ein Rad zu bekommen.
FORTH-Programmierer bauen Räder und vergessen, wo sie sie gestapelt haben.
FORTRAN-Programmierer werden wahnsinnig bei der Suche nach Rädern, die mit I beginnen.
LOGO-Programmierer bauen kleine rote Autos.
LISP-Programmierer (bauen Räder mit (Rädern mit(Rädern mit (Rädern mit (dem was LISP- Programmierer bauen ))))).
MICRO-Programmierer wissen nicht, daß Räder existieren.
PASCAL-Programmierer erklären das Gehen zur Tugend.
PL/I-Programmierer setzen ein Team ein, um eine Räderfabrik zu entwerfen, die Räder der falschen Größe bauen wird.
RPG-Programmierer haben ein Rad, schade daß es viereckig ist.
SYSTEM-Analytiker sind viel zu beschäftigt, Räder zu suchen, um eins zu bauen.
TOS-Benutzer bleiben wo sie sind, sie sind das Warten gewohnt.
UNIX hat unter irgendeiner Schale sicher irgendwo ein Verzeichnis von Rädern.
C-Programmierer laufen, weil keiner die Bauanleitungen für ihre Räder lesen kann.