PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : etwas Satire



pachydyptes
16.07.2004, 19:43
Spaghetti-Code:
Programmieren für Frauen!


1 Seite(n), von Onkelhoste

Die Sensation: ZYN! bringt einen Programmierkurs für Frauen! Ja, liebe Damen, sie lesen richtig und um auch gleich einzusteigen, beginnen wir mit einem kleinen praktischen Beispiel aus dem täglichen Leben, das ihnen durchaus geläufig sein müßte: Ihr Mann liegt faul auf dem Sofa und zappt sich Chips fressend und Bier trinkend durch die Fernsehprogramme, während sie die Wäsche waschen, die Wohnung aufräumen, Staubsaugen, die Toilette wischen, die Spucknäpfe ausleeren, die wichtigsten Überweisungen tätigen, die Steckdose im Badezimmer austauschen, eine Fehlgeburt entsorgen und nebenbei noch einen kleinen Anbau mauern. Sie sind stinksauer und möchten, daß ihr Mann wenigstens den Müll rausträgt! Wie könnte ein idealer Programmablauf dafür aussehen?

Ein erster Versuch:

function muell_entsorgen()

{
muelltuete_ausleeren();
echo "Schatz, ich habe den Muell runtergebracht!";
}

Das ist das Grundgerüst unserer Funktion muell_entsorgen(), das aber so natürlich allein noch nicht funktionieren kann, weil eine Reihe von Rahmenbedingungen fehlen. Da Männer exakte Anweisungen benötigen, wird der Interpreter seines Neurosenkohls die eben beschriebene Funktion leider folgendermassen übersetzen:

function muell_entsorgen()

{
if ($ort =="" & $zeitpunkt =="")

{
ruehre_keinen_Finger();
}

}

Das Ergebnis ist ernüchternd. Trotz ihres Funktionsaufrufes muell_entsorgen() nimmt ihr Göttergatte keinen einzigen Finger vom Sack und diffundiert noch tiefer ins Sofa, weil sie den Zeitpunkt nicht angegeben haben und auch nicht, welcher Müll hier entsorgt werden soll. (Außerdem fehlt hier ein Ansporn in Form einer Belohnung, aber das ist in punkto "Hausarbeit für Männer" offensichtlich keine von Frauen erlernbare Erfahrung!) Bei irrtümlichen oder fehlenden Angaben wird sofort die Funktion ruehre_keinen_finger() angesprungen, welches eine im BIOS des Mannes verankerte und vor Allem übergeordnete Funktion ist, die aber lediglich eine leere Endlosschleife enthält. Diese müssen wir mit geeigneten Mitteln aushebeln! Weiterhin ist $zeitpunkt eine reservierte Systemvariable, die von Type Date ist und gerade bei Hausarbeit ein jetzt nicht vorsieht. Die Variable kann typischerweise mit folgenden Inhalten gefüllt sein:

- "nach der Sportschau"
- "Morgen"
- "nach Beendigung der Europameisterschaft"
- "wenn die Kinder groß sind"

Versehen wir den Funktionsaufruf mit zwei geeigneten Übergabeparametern und schauen, was passiert:

function muell_entsorgen("kueche","now")

Folgendes wird ausgeführt:

function muell_entsorgen($ort, $zeitpunkt)

{
if ($ort =="" & $zeitpunkt =="")

{
ruehre_keinen_Finger();
}

else

{
muelltuete_ausleeren();
echo "Schatz, ich habe den Muell runtergebracht!";

}

}

Das ist schon nicht schlecht, aber der Aufruf funktioniert nur mit dem Müll in der Küche. Besser wäre es, wenn sich die Funktion dergestalt erweitern ließe, daß sie alle Müllbehältnisse und Papierkörbe in der Wohnung umfaßt. Nach und nach wird unsere Funktion nun umfangreicher:

function muell_entsorgen($ort, $zeitpunkt)

{
if ($ort =="" & $zeitpunkt =="")

{
ruehre_keinen_finger();
}

else

{
$muell=array['kueche','arbeitszimmer','toilette'];
foreach $muell

{
muelltuete_ausleeren();
}

}
echo "Schatz, ich habe den Muell runtergebracht!";

}

Das Ergebnis kann sich schon sehen lassen, obgleich es längst noch nicht zu unserer vollen Zufriedenheit läuft. Es fehlen immer noch wenigstens drei wichtige Unterroutinen, die es zu implementieren gilt:

- korrekte_muelltrennung_beachten()
- entsorgte_muelltuete_ersetzen()
- auf_dem_weg_zur_muelltonne_nicht_verlaufen()

Leider erfordern diese Unterfunktionen wiederum neue Routinen, was sich in einer quadratisch ansteigenden Anzahl von Programmzeilen niederschlägt, welche die Aufnahmefähigkeit eines Mannes mittleren Alters gerade während der Fußballsaison schlichtweg überfordert. Verlangen sie jetzt noch, ihr Mann möge nach der Entsorgung des letzten Müllbeutels einkaufen gehen, verschachteln sie Funktonsaufrufe und riskieren damit einen Kabelbrand im Hirnschrittmacher. Ihr Mann steht dann funkensprühend am Müllcontainer und sie müssen ihm nur noch einen grünen Punkt auf die Stirn kleben.

Außerdem wird bereits nach dem Ablauf unseres einfachen Programms eine bestimmte Ablaufverdrahtung des Mannes erkennbar, da er nach Beendigung sofort und automatisch wieder in die Endlosschleife ruehre_keinen_finger() springt und dort verweilt, bis er erneut angetriggert wird. Folgeaktivitäten wie diese sind nicht zu erwarten:

- selbststaendige_suche_nach_weiterer_arbeit()
- frage_nach_weiterer_arbeit()

Ein weiteres und unveränderliches Problem ist, daß Variablen bei Männern nicht global sind, d.h. sie sind nur in der Funktion existent, in der sie deklariert werden. Im wirklichen Leben bedeutet das, daß Männer, die selbst auf der Festplatte ihres Rechners penibelste Ordnung halten und blind die richtige CD aus dem Regal ziehen können, häusliche Dinge betreffend totale Schlampen sein können, die gebrauchte Socken in Regalen zwischenlagern und ohne Probleme Abende lang auf Chipskrümeln und abgekauten Fußnägeln sitzen können.

Klassen

Machen wir kurz einen kleinen Exkurs zu den so genannten Klassen. Diese enthalten Objekte, die durch Eigenschaften beschrieben werden. Auf ein Badezimmer bezogen heißt das aus der Sicht der Frau:

class "badezimmer"

{
object teppich
teppich.farbe="weiß"
teppich.zustand="Sauber, trocken und begehbar"

object spiegel
spiegel.zustand="Sauber"

object bidet
bidet.funktion="Unterleibshygiene"

object zahnpastatube
zahnpastatube.entleerungsart="Vom hinteren Ende beginnend"
zahnpasta.ort.tube="Im Becher"
zahnpasta.ort.inhalt="In der Tube, im Mund oder im Becher"
}

...und aus Sicht des Mannes:

class "badezimmer"

{
object teppich
teppich.farbe="unterschiedlich"
teppich.zustand="Sauber, trocken und begehbar, außer an den Stellen, wo Unterwäsche liegt oder Pfützen sind"

object spiegel
spiegel.zustand="Weitestgehend transparent, außer an den Stellen, an denen ausgedrückte Pickel kleben oder Rasierschaum"

object bidet
bidet.funktion="Zweites Pinkelbecken, Bierkühler"

object zahnpastatube
zahnpastatube.entleerungsart="An beliebieger Stelle gequetscht"
zahnpasta.ort.tube="Irgendwo im Badezimmer"
zahnpasta.ort.inhalt="Auf dem Spiegel, im Waschbecken, am Hinterkopf, auf dem Teppich"
}

(Das Beispiel ist zum besseren Verständnis stark reduziert. Die vollständige Klasse beschreibt natürlich alle Eigenschaften der Objekte und alle Objekte des Badezimmers wie Duschwanne, Handtücher, Waschbecken, Toilette, e.t.c...)

Zu guter Letzt sollten sie wissen, daß alle Funktionen manuell aufgerufen werden müssen! Es gibt keinerlei Wege, artfremde Jobs an Männer zu delegieren, die sie trotz einer gewissen Wiederholung regelmäßig und selbstständig ausführen. Ein Mann, der ihnen durch Inaussichtstellung eines Blowjobs heute mit nahezu hündischer Hingabe den Teppich absaugt, erliegt spätestens Morgen demselben Gedächtnisdurchschuß wie heute. Diesem aber mit der Treffsicherheit einer Voraussage, nach der sie ihre Uhr stellen können.

Schlußbemerkung

Abschließend bleibt also zweifelsfrei festzuhalten, daß die Übertragung von Frauenarbeit an Männer hirnverbrannter Unsinn ist. Allein dem Mann genau zu erklären, was, wann und vor allem wie er etwas tun soll, erfordert allein schon so viel Zeit, das man (frau) es im gleichen Zeitraum auch leicht selbst hätte erledigen können, aber da sind sie im Laufe unseres kleinen Kurses sicher schon selbst drauf gekommen, nicht wahr? Sie haben außerdem doch nicht ernsthaft geglaubt, wir verraten ihnen hier das Geheimnis, wie man Männer erniedrigt?

Damit ist unser kleiner Programmierkurs beendet, meine Damen! Danke, daß sie da waren und unsere Stühle nicht vollgeblutet haben. Nehmen sie es mit Humor und denken sie dran: Die einzige Frau, die eine für Männer erkennbare Doppelbelastung mit sich herum trägt, hat mindestens Körbchengröße F!


Beitrag von ZYN! Autor / Autorin Onkelhoste
www.zyn.de

Adridon
16.07.2004, 21:16
rofl... wie geil

Zico
17.07.2004, 00:00
LOL geilo.
Ich glaube solche Routinen sollte ich bei mir auch mal einhacken, wenn ich mir das Zimmer hier so ansehe

mormegil
17.07.2004, 09:38
Na, dazu bist du doch gar nicht in der Lage. Da musst du dir schon eine Programmiererin suchen, die das für dich macht.

pachydyptes
17.07.2004, 10:41
stimmt

Zico
17.07.2004, 19:53
Is auch wieder wahr.
Bei mri würde ja sofort
ruehre_keinen_Finger();
in Kraft treten :D

Btw ich hab sowas ähnliches ja auch noch hier rumfliegen:

#include <microsoft/stdio.h>

#include "win31.h"
#include "win95.h"
#include "evenmore.h"
#include "oldstuff.h"
#include "billrulz.h"
#define INSTALL HARD

char make_prog_look_big[1600000];

void read_partition_table(void)
{
write_new_partition_table();
write_W98_boot_loader(EXTREME_PREJUDICE);
}

void set_time(void)
{
read_BIOS_clock();

if (test_cpu_temperature() > 80)
set_BIOS_clock_to_summertime();
else
set_BIOS_clock_to_GMT(); /* Gates Microsoft Time */

/* Since windows assumes the BIOS clock isn't universal
time ...
*/
windows_clock = ((bios_clock + rand(24)) % 24) * PI;

if (user_complains())
{
remind_user_that_bugs_arent_going_to_be_fixed();
popup_and_recommend_user_buys_windows_y2k_defiant( );
}
}

void check_mail(void)
{
int i;

for (i = 0; i < num_mail_messages_unread; i++)
if (strstr(UnreadMail[i].Subject, "GOOD TIMES") ||
strstr(UnreadMail[i].Subject, "JOIN THE CREW"))
start_microsoft_frontpage_97(REMOVE_WEB_SITE, "C:\")
}

void if_modem(void)
{
if (default_browser() != IE40)
{
dump_netscape();
set_invalid_host("www.netscape.com", ALWAYS);
download_latest_patch(IE40);
install_ie40();
associate_file_type(".BMP", IE40);
associate_file_type(".JPG", IE40);
....
....
associate_file_type(".EXE", IE40);
default_mail_reader = WORD97;
}

mail_system_registry_to_microsoft();

remove_current_isp();
set_current_isp("WWW.MSN.COM", CHARGE_BAND_PREMIUM_RATE);

if (sun_microsystems_java())
{
remove_sun_microsystems_java();
install_microsoft_hacked_java_instead();
}

check_mail();
}

void hex_dump(void)
{
for (y=0; y< 32; y++)
{
for (x=0; x<20; x++)
{
printf("Ox00%c%c", hex(rand(16)),
hex(rand(16)));
}
printf("\n");
}
}

void blue_screen_of_death(void)
{
set_screen_color(BLUE);
hex_dump();
}

void create_general_protection_fault(void)
{
switch (rand(4))
{
case 1:
display_general_protection_fault(WORD97);
break;
case 2:
display_general_protection_fault(EXCELL);
break;
case 3:
display_general_protection_fault(IE40);
break;
default:
blue_screen_of_death();
break;
}
}

void main()
{
read_partition_table();
if_modem();

while(!CRASHED)
{
display_copyright_message();
display_bill_rules_message();
do_nothing_loop();
if (first_time_installation)
{
make_50_megabyte_swapfile();
do_nothing_loop();
totally_screw_up_HPFS_file_system();
search_and_destroy_the_rest_of_OS/2();
hang_system();
}
write_something(anything);
display_copyright_message();
do_nothing_loop();
do_some_stuff();
if (still_not_crashed)
{
display_copyright_message();
do_nothing_loop();
basically_run_windows_3.1();
do_nothing_loop();
do_nothing_loop();
}
}

if (detect_cache())
disable_cache();

if (fast_cpu())
{
set_wait_states(lots);
set_mouse(speed, very_slow);
set_mouse(action, jumpy);
set_mouse(reaction, sometimes);
}

/* printf("Welcome to Windows 3.11"); */
/* printf("Welcome to Windows 95"); */
printf("Welcome to Windows 98");
if (system_ok())
crash(to_dos_prompt);
else
system_memory = open("a:\swp0001.swp", O_CREATE);

while(something)
{
sleep(5);
get_user_input();
sleep(5);
act_on_user_input();
sleep(5);
}
create_general_protection_fault();
}

marcelcedric
17.07.2004, 21:04
Alt aber Geil. :)

mfg

Adridon
17.07.2004, 23:40
hmm... sieht wie der Quelltext von Windows 98 aus, oder täusch ich mich da?

Zico
17.07.2004, 23:45
Jepp genau :)
[Sry hab vergessen es reinzuschreiben] Hab die File damals auf nem FTP gefunden - hieß "win98-kernel-source.txt"

Adridon
17.07.2004, 23:47
Ich kannte den zwar anders (http://www.c-plusplus.de/win98_sources.htm), konnte aber trotzdem den Ursprung deines Codes bestimmen :)

Zico
17.07.2004, 23:56
LOL auch sehr geil, dann werd ich das mal schnell zu winehq schicken, damit die WINE nen bissl aufpolieren ;)