BlogKontaktTagcloud

Else-If-Konstrukt

Else-If ist syntaktisch gesehen ein sehr interessantes Programmierkonstrukt. Zumal es in den meisten Sprachen gar nicht existiert, aber erst einmal von vorne.

Else-If dient dazu mehrere If's aneinander zu hängen. Das bringt gegenüber einzelnen If's einen Performance-Vorteil, ausserdem kann so wenn keine Bedienung zutrifft in einen else-Block gesprungen werden. Häufig kann anstelle von langen if-Konstrukten auch ein Switch verwendet werden, dies hat jedoch teilweise gewisse Limitierungen. Zum Beispiel kann in Java ein Switch nur für einfache Typen verwendet werden. Ohne Elseif sieht das dann etwa so aus:
if ($a > $b) {
echo "a is bigger than b";
}
if ($a == $b) {
echo "a is equal to b";
}
if ($a < $b) {
echo "a is smaller than b";
}
In PHP wird elseif zusammengeschrieben und ist ein eigenes Sprachkonstrukt. Das obige Beispiel sieht dann etwa so aus und reduziert die Überprüfungen im Idealfall auf eine und im schlechtesten Fall auf zwei (anstelle von drei):
if ($a > $b) {
echo "a is bigger than b";
} elseif ($a == $b) {
echo "a is equal to b";
} else {
echo "a is smaller than b";
}

Die geschweiften Klammern können, sofern sie nur ein einzelnes Statement beinhalten weggelassen werden. Dies gilt für die meisten, wenn nicht alle, C-basierenden Sprachen. In PHP kann das ganze zudem noch mit der nachfolgenden, eher merkwürdigen Syntax (nicht zu empfehlen) verwendet werden:

if ($a == 5):
echo "a equals 5";
echo "...";
elseif ($a == 6):
echo "a equals 6";
echo "!!!";
else:
echo "a is neither 5 nor 6";
endif;

Nun aber der eigentliche Clue, nämlich warum else-if in den meisten Sprach-Syntaxen gar nicht existiert und auch nicht zu existieren braucht am Beispiel von C++. Zuerst ein einfaches If:

if(a < b){
doASmallerB();
}
Nach C++-Standard ist der gesamte Block, ebenso wie der Aufruf der Methode doASmallerB, ein Statement. Nun ein if-Block mit einem Else:
if(a < b)
doASmallerB();
else
doBSmallerEqualsA();

Anstelle vom Aufruf von doBSmallerEqualsA kann nun jedes beliebige Statement stehen. Und mit jedem Beliebigen ist natürlich auf ein If-Statement gemeint. Toll! Das sieht dann so aus:

if(a < b)
doASmallerB();
else
if(a > b) {
doABiggerB();
}

Womit wir dann, mit ein bisschen Umformatieren, bereits ein else-if konstruiert hätte. Natürlich lässt sich das beliebig so fortsetzen.

Ähnliche Beiträge:
Make it human (or how to crack a CAPTCHA)
Jira status
Mailstatus in Skype
PHP Quine
What's php like?
Comments (0)  Permalink

Programmiersprachen Benchmark

Kann man Programmiersprachen benchmarken? Jein, eigentlich nicht. Es ist kaum möglich einen wirklich vergleichbaren Testaufbau zu erstellen.

Nichts desto trotz hat Doug Bagley den "Computer Language Shootout" erstellt und 25 typische Probleme definiert. Das Spektrum reicht vom einfachen "Hello World" über Suchalgorithmen bis zu Client-Server-Programmen. Eine aktuelle Durchführung des "Computer Language Shootout" mit 51 Programmierprachen unter Win32 findet man bei dada.perl.it.
Ähnliche Beiträge:
Else-If-Konstrukt
Stammbaum der Programmiersprachen
Mobile App Hackathon
Make it human (or how to crack a CAPTCHA)
Named parameters in Java (bgl-style)
Comments (6)  Permalink

Stammbaum der Programmiersprachen

Im Stammbaum der Programmiersprachen sind die Eltern und Kinder einiger bekannter Sprachen zu finden.

Interessant ist zum Beispiel das es COBOL zwar schon ewig gibt die Sprache aber (zumindest offiziell) kaum Einfluss auf andere Sprachen hatte. Ebenso interessant ist aus der Sicht der Programmiersprachen das Jahr 1995 in dem sowohl JavaScript, Java (Version 1), Ruby (Version 0.95), als auch PHP (damals noch als PHP/FI, von dem in aktuellen Versionen nicht mehr viel überig sein drüfte) in die Sprünge kamen.

[via "In Golgota"]
Ähnliche Beiträge:
Else-If-Konstrukt
Programmiersprachen Benchmark
Mobile App Hackathon
Make it human (or how to crack a CAPTCHA)
Named parameters in Java (bgl-style)
Comments (0)  Permalink
1-3/3