Archive for November, 2006

Mit dem Zeiger abgeschossen

Kann ich denn noch in C++ einen Zeiger deklarieren, habe ich mich gefragt. Na gut, schreib einfach so Just for Fun mal so einen simples Nonsense-Programm.
Wie ich dann gemerkt habe, kriege ich’s wohl beim ersten Anlauf nicht hin einen Zeiger ordnungsgemäß zu deklarieren, ohne das sich das Programm aufhängt.
Geschrieben hab ich dann sowas:

int *zahl;
*zahl = 3;
cout << *zahl << endl;

Dabei hätte ich es so schreiben müsen:

int *zahl = new int;
*zahl = 3;
cout << *zahl << endl;

oder so:

int  nummer;
int *zahl = &nummer;
*zahl = 3;
cout << *zahl << endl;

Geschwindigkeit

“Wie schnell könnte das denn ein C++ Programm machen?”, fragte ich mich heute, als ich (mal wieder) ein Primzahlenprogramm in Java bearbeiten musste. Die einfachste Variante Primzahlen zu finden, ist die, nach Teilern zu suchen, die weder eins noch die Zahl selbst sind. Für die Zahl 100 bedeutet das, dass man die 100 durch alle Zahlen von 2 bis 99 teilen muss!
Ein paar Schleifen und die Sache hat sich algorithmenmäßig erledigt. Damit ich die einzelnen Sprachen (Java, C++ und Delphi) besser vergleichen konnte, habe ich ich dazu entschieden, die Quelltexte möglichst ähnlich von den Konstrukten zu gestalten. Die Programme sollten alle Primzahlen bis 80.000 finden und auf der Konsole ausgeben.
Meine Erwartungshaltung war diese:

  • C++
  • Java
  • Delphi
  • So ließ ich dann die Programme nacheinander laufen, ohne Volllast der CPU und stoppte die Zeit. Dann standen die Zeiten fest. (Na, wer ist denn nun auf dem ersten Platz?).

    Weit abgeschlagen auf dem letzten Platz ist DevC++ (2:25 min.). Ein Stückenchen flotter ist das mit Borland C++ Builder 6 (2:14 min) erstellte Programm. Der zweite Platz geht an Java JDK 5.0 (2:12 min) mit einem hauchzarten Vorsprung von 2 Sekunden auf Borland C++ Builder. …And the winner is…: Delphi (2:01 min)!
    War schon erstaunlich, dass da Delphi die Nase vorn hatte. Ich habe keine Optimierungsmechanismen der jeweiligen Compiler benutzt. Vielleicht hätte man (als Programmierer) den Source Code noch etwas weiter optimieren können.

    Sourcecode Träume

    Wovon träumt eigentlich ein Compiler? So ‘ne Frage kommt ja eigentlich nie auf. Aber mir ist da heute Morgen was passiert, was mich zum Nachdenken angeregt hat. Neben Hausaufgaben machen steht bei mir an erster Stelle für jedes Wochende das Ausschlafen.
    Es muss etwa gegen acht Uhr gewesen sein, wo ich kurz aus der Traumschlafphase erwacht bin. Und… Heureka! Ich hab von Source codes geträumt. (Programmiersprache war Java). Im nachhinein sehe ich noch immer die Zeilen an mir vorbeihuschen. Aus unerfindlichen Gründen sollte ich den Code optimieren; jedenfalls habe ich im Traum überlegt, wie ein möglichst kompaktes Programm dabei rausspringt.
    Aber das war nicht nur der einzige Source code Traum, den ich hatte. Nein. Ich habe auch schon mal in C++ geträumt. So von Programmiersprache A nach Programmiersprache B übersetzen, kriege ich ja schon hin (auch wenn’s nicht immer einfach ist). Jetzt müsste ich halt im Schlaf in Assembler reden. Das könnte man sich ja auf Kassette aufnehmen und dann beispielsweise in TASM oder MASM eintippen, assemblieren und dann hätte man ein Programm (was doch hoffentlich funktioniert).

    Eine Datenbank für die Lessingschule

    …soll eine Jahrgangsdatenbank werden, die den jüngeren Jahrgängen bei der Praktikums- und Berufswahl helfen soll. Datenbanken – ein déja-vù Erlebnis. Mittlerweile habe ich in Delphi rausgekriegt, wie das so mit Datenbankanbindung aussieht. Von dieser Seite her wäre es mir möglich eine nette Delphi-Anwendung zu schreiben, doch das ganze Projekt soll nacher im Web stehen – ergo muss man auf MySQL und PHP zurückgreifen. (Darin bin ich leider nicht so bewandert.)
    Aber an sich ist die Idee top.

    Update (07.12.06):

    So wie es aussieht, werde ich wohl meine Erinnerungen an den guten alten Informatikunterricht aus der Schule auffrischen können. Eine Datenbank, die den jüngeren Jahrgängen bei der Entscheidung von Praktikums- und Berufswahl helfen soll, soll aus den Daten der vorherigen Abijahrgänge erstellt werden.

    Und da müssen halt mal die Ex-Informatiker (also Ex-Informatiker trifft ja auf mich nun nicht zu :-) ) ran, weil “qualifiziertes Personal” im Dunstkreis der Oberstufe nicht verfügbar ist.

    Bin ja mal gespannt, wann’s losgehen soll.

    Sch… Eclipse-Plugins

    Das Thema regt mich jetzt noch völlig auf.
    Am Montag Abend bzw. dann in der Nacht auf den Dienstag setze ich mich voller Elan an den Rechner, gewillt ein UML Diagramm (genauer gesagt: activity diagram) zu erstellen. Immerhin musste ich das besagte Diagramm in der am Dienstag stattfindenden ADS Vorlesung abgeben. Aber das mir hier jetzt nur keiner mit dem Argument kommt, ich hätte ja vielleicht am Wochenende das machen können. Nee, dat is nich’! Am Wochenende hatte ich meinen Kampf mit dem Sieb des Erathostenes, welches in Java unter strengen Auflagen (nur while-Schleifen, if-Abfragen, richtige Einrückung, keine eigenen Methoden definieren und benutzen etc.) zu programmieren war.
    Da saß ich also. Nichts ahnend, dass ich bis circa 2:35 Uhr fluchend vorm PC sitzen werde. Ein Plugin war ja auch schnell gefunden. JUPE klang ganz interessant. Verlangte halt nur die Installation einiger anderer Plugins. Die lud ich dann auch brav runter und entpackte sie ins Eclipse-Verzeichnis. Wie ich dann das letzte Zip-File entpackt hatte, dachte ich: “Dann kann’s ja bald losgehen und du bist fertig für heute.”
    Denkste! Hab dann Eclipse angworfen, aber es gab keine (sichtbaren) Veränderungen zu sehen. Hatte ja zu mindest mit einer neuen Schaltfläche gerechnet, aber nein. Dann hab ich mich durch ein paar Menus geklickt und kam dann zum Update Manager. Ließ den dann nach neuen Komponenten suchen, fand dann auch was zu den UML Plugins. Doch dann rissen mich mehrer Fehlermeldungen aus meinem Traum. Auf englisch stand dann in etwa da, dass meine derzeitige Konfiguration fehlerhaft wäre und das org.eclipse.codegen fehle. Nun, die Datei lag aber in dem richtigen Verzeichnis.
    Und da fing ich an zu verzweifeln (und zu fluchen). Es wurde immer später und später. Du musst das verdammte UML Diagramm morgen abgeben! Drängte sich nun immer häufiger in meine Gedanken.
    Schlussendlich habe ich zu einer Testversion von Visual Paradigm gegriffen und dann mit letzter Kraft das Diagramm erstellt.
    “Einfach ist das nicht, in Eclipse ein Plugin zum Laufen zu bringen”, hat mir dann ein ebenfalls leidgeplagter Komilitone auf dem Campus erzählt. Und ich war damit etwas beruhigt.

    Gierige Automaten

    Die FH ist zu Ende und ich will nach Hause. Aber zuerst muss ich den Automaten füttern, damit ich ‘ne Fahrkarte bereithabe, falls doch mal ein Kontrolleur in das Abteil kommt, in dem ich sitze.
    Wel ich – mal wieder – kein passendes Kleingeld habe, muss ich zum Zehner greifen. Die Kennzahl meines Reiseziels kann ich aus dem FF. So, jetzt den den Zehn-Euro-Lappen reinstecken… schwupps und weg war er. Im Vergleich zum Automaten am heimatlichen Bahnhof war dieses Exemplar geradezu gierig, was das rasche Verschlingen des Euroscheins betrifft.
    Nur die Geldrückgabe hat etwas länger gedauert. (Wer gibt denn gern etwas her?)