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.