Zwei Variablenwerte tauschen
Gestern bin ich auf eine interessante Aufgabe gestossen. Eigentlich war es ein sehr einfacher Test bei einem Bewerbungsgespräch an einen Software-Entwickler-Kandidaten. Die Aufgabe lautete:
„Du hast 2 Variablen mit 2 Werten belegt. Tausche die beiden Werte schnell und effektiv aus.“
Die Erwartung war: Wenn der Kandidat nicht sofort anfängt, eine temporäre dritte Variable zu erstellen, hat er sehr wenig Programmiererfahrung.
$a = 5; $b = 13; $c = $a; $a = $b; $b = $c;
Doch wenn man genauer überlegt, gibt es viele weitere Lösungen, um die Aufgabe zu bewältigen, auch ohne eine dritte Variable. Hier ein paar schöne Lösungen:
$a = 5; $b = 13; $a += $b; $b = $a - $b; $a -= $b;
Bei dem obigen Beispiel gab es eine kleine Diskussion, ob ein Integer-Overflow Probleme machen könnte, dem ist aber nicht so.
$a = 5; $b = 13; $a ^= $b; $b ^= $a; $a ^= $b;
Tricky, aber funktioniert: mit der XOR Funktion klappt es wunderbar. Achtung: Hier wir das bitweise XOR verwendet, nicht das logische XOR.
Aber aufgepasst: Die obigen zwei Lösungen funktionieren nur mit ganzzahligen Werten! Stünden in den Variablen Strings, Objekte, Arrays oder sonstwas drin, würden die Lösungen scheitern. Und streng genommen ist in der Aufgabenstellung nirgends von Zahlen die Rede.
Hier noch ein Beispiel, das mit nur einer Zeile auskommt und jegliche Werte tauschen kann:
$a = 5; $b = 13; list($a, $b) = array($b, $a);
—————-
Edit:
Lösung von Tyco aus den Kommentaren:
$a = 5; $b = 13; $b = $b + $a – ($a = $b);
—————-
Es gibt also auch Lösungen, die ohne eine temporäre dritte Variable auskommen. Von der Lesbarkeit und Wartbarkeit sind die erste und die vierte Lösung wohl auch vorn.
Wer kann noch weitere schöne Lösungen beisteuern?
Die große PHP-Blog-Sammlung
Ein Bekannter fragte mich letztens, wieviele halbwegs aktuelle deutsche PHP-Blogs es gibt, die auch etwas Niveau haben, und ich konnte nicht anders antworten als „Pff, öhh, gute Frage, ich würde schätzen X, aber ich selbst kenne nur 5 davon“.
Problematisch sind bei diesen Kriterien vor allem „halbwegs aktuell“ und „etwas Niveau“. Es gibt in diversen Link-Katalogen sicherlich einige Links zu finden, aber viele davon bringen einen zu Blogs, die seit vielen Monaten oder Jahren nicht mehr aktualisiert werden. Genauso findet man Blogs, die von PHP-Neulingen gestartet wurden und das Lernen von PHP dokumentieren. Nichts gegen diese Blogs, sie haben absolut ihre Daseinsberechtigung, aber wenn man selbst die Sprache halbwegs beherrscht, möchte man solche Blogs eigentlich nicht verfolgen.
Also, wieviele PHP-Blogs gibt es? Und welche?
Voraussetzungen:
- es muss ein Blog in deutscher Sprache sein
- mindestens 1 Artikel über PHP alle 2 Wochen
- der Blog muss mindestens 3 Monate alt sein
Ich möchte hier eine kleine Sammlung starten mit Links, die ich hier auflisten werde. Schreibt also in den Kommentaren die Links, eventuell auch das Alter, Spezialitäten usw. Ihr dürft also etwas Werbung machen.
Falls nach 3 Wochen meine 5 Favoriten noch nicht genannt wurden, werde ich sie selbst vorschlagen und ergänzen. Aber es geht ja darum, alle anderen kennenzulernen, die „man“ noch nicht kennt! Also her mit den Links!
_________________________________________________________
Liste deutscher PHP-Blogs (alphabetisch sortiert):
- http://daraff.ch
- http://blog.frontend-development.ch
- http://krsteski.de
- http://www.php-archiv.de
- http://www.phpblogger.net
- http://www.phpblogstars.de (deutscher PHP-Blog-Aggregator)
- http://phphacker.net
- http://www.phphatesme.com
- http://www.phpmonkeys.de
- http://ragtek.org/blog
- http://unite-it.at
- http://blog.zf-info.de
Entsprechen (noch) nicht ganz allen Kriterien:
HTML 5 und Javascript 5: Clientseitige Datenbanken
Nachdem sich die Web Hypertext Application Technology Working Group (WHATWG) 2004 gegründet hat, die aus einigen bedeutenden Internet-Riesen besteht (u.a. Apple, Mozilla, Opera), kommt wieder Fahrt in neue HTML- und Javascript-Standards. Die Gruppe hat viele Proposals erstellt, von denen jetzt einige vom W3C übernommen werden. Stichworte sind da HTML 5, ECMAScript 5, Web Workers, Web Storage, Web Sockets und einiges mehr.
Zu den Web Workern hatte ich ja bereits etwas geschrieben.
Web Sockets wird die Pushing-Technik werden, mit der Server bei Änderungen Nachrichten an den Browser schicken können, dann erübrigt sich das derzeitige Pullen und Nachfragen via AJAX, ob es Neuigkeiten gibt. Das entlastet die Server und spart Traffic, und Nachrichten kommen genau dann im Browser an wenn sie auf dem Server passieren, nicht erst beim nächsten Pull.
Heute soll es um den Web Storage gehen, die clientseitige Datenbank im Browser. In der Vergangenheit konnte man Daten nur auf der aktuellen Seite in Javascript-Variablen vorhalten, sobald aber der nächste Full-Page-Reload kommt sind die Daten futsch. Die zweite Möglichkeit waren Cookies, in denen man Daten speichern kann. Da aber Cookies bei jedem Request mitgesendet werden, ist das kein guter Speicherort für größere Datenmengen, Cookies sollte man höchstens für eine SessionID nutzen.
Pagerank-Update
Am 31.12.2009 war es wieder soweit: Google hat seine Pageranks aktualisiert, wie man auf dieser Update-Seite sehen kann. Und es gibt erfreuliches zu berichten:
Mein kleiner Blog ist bereits auf PR 4 gestiegen! Whao! Danke an euch, an alle Leser, Feed-Abonenten und anderen Blogger, die mich verlinken!
Das ist wirklich nochmal ein riesen Schritt, Anfang November 2009 war es Pagerank 2. Aber ab jetzt wird es härter, den Pagerank zu steigern, wie man auch beim bekanntesten deutschen PHP-Blog phphatesme.com von Nils sehen kann, der auch an PR 5 knabbert.
Beim Suchbegriff „php blog“ lande ich nach wie vor auf Rang 45-53, das schwankt ab und zu. Da muss ich noch dran arbeiten.
26C3 und PHP
Seit gestern läuft der 26. Chaos Computer Congress (26C3). Da ich gestern Besuch hatte, konnte ich leider dem Stream nicht folgen, aber wie man hörte war er sowieso mehr offline als online. Bisher gibt es auch nur unoffizielle Mitschnitte zum Download, aber trotzdem ist der Andrang relativ groß, sodass ich auch bei den inoffiziellen Torrents mitseeden werden, damit der Server endlich mal an seine Traffic-Grenze kommt.
Gestern Nacht konnte ich noch einige Minuten des Chaos Familien Duells mit ansehen, und dort kam PHP zwei Mal vor. Einmal bei der Frage „Nennen Sie eine Scriptsprache“ war es auf Platz 3 (hinter Perl und Python), und bei der Frage „Nennen Sie eine schreckliche Programmiersprache“ war es wohl auf Platz 2 hinter Java 😉 Leider konnte ich die Frage nicht sehen, da der Stream tot war, aber es ging durch Twitter.