Category Archives: Philosophie - Page 2

Wirtschaftlichkeit vs. Ideologie

Auch in der Webentwicklung muss man sich fragen: Ist es wirtschaftlich genug auf Ideologien wie die Webstandards zu vertrauen, wobei man dadurch wesentlich mehr Aufwand betreiben muss? Zahlt es sich überhaupt Tage in die W3C-Standards zu stecken, um sie kennen zu lernen, um hinterher eine Webseite entwickeln zu können, die einen Bruchteil der Zeit zum Entwickeln braucht?

Wirtschaftlichkeit bedeutet für mich im Computerbereich: “Hauptsache, es funktioniert”.
Ideologie bedeutet für mich im Computerbereich: “Ich mache es in einem Weg, den ich selbst als zukunftsträchtig, kompatibel, effizient und zweckfokusiert erachte”. Da Ideologie das Wort “zweckorientiert” enthält, schließt es sich mit Wirtschaftlichkeit nicht aus. Ideologie > Wirtschaftlichkeit. Wirtschaftlichkeit < Ideologie.

Für mich ist im Computerbereich die Wirtschaftlichkeit das wichtigste. Ich stimme der Meinung “Never change a running system” total zu. Aber dennoch sollte man immer versuchen Platz für Ideologie übrig zu lassen, damit man auch die Zukunftsträchtigkeit, die Kompatibilität, die Effizienz und der Zweckfokus erhöhen kann. Leider kommt manchmal die Ideologie zu kurz :-/

Praxisbeispiel: Meine Algorithmen für Project Euler funktionieren alle wirtschaftlich, aber ich investiere noch Zeit für die Ideologie, damit ich sie optimieren kann und erst dann veröffentliche.

Man ist ein Blogger…

… wenn man denkt, dass die RSS-Leser mehr von deinem Leben mitbekommen haben als deine Mitmenschen.

HTML-RegEx

Kann man ein RegEx entwickeln, das überprüft, ob ein HTML-Dokument valide ist?

Argumente gegen PHP

PHP mögen viele nicht. Ich auch nicht. Die Argumente, die oftmals genannt werden, kann ich aber überhaupt nicht nachvollziehen. PHP wird mit Perl verglichen. PHP wird mit python verglichen. Natürlich gibt es grundlegende Unterschiede, aber man darf eine Programmiersprache nicht dafür verurteilen, dass sie ein anderes Konzept verfolgt. Ich erkläre einmal Argumente, mit denen ich nicht einverstanden bin, und ebenso meine Argumente gegen PHP:

  • PHP hat keine Namespaces. Natürlich sind sie bei riesigen Projekten vorteilhaft, wenn man jedoch die Namen für Funktionen, Module und Variablen gut wählt, dann halte ich sie nicht für notwendig. Ich habe sie zumindest noch nie unbedingt gebraucht. Sehr wichtig halte ich dafür den Geltungsbereich für Variablen in Funktionen (ach, wie schön das klingt ;-) ). Der muss dafür auf jeden Fall zur Verfügung stehen und das ist soweit ich weiß bei allen turing-vollständigen Programmiersprachen implementiert.
  • PHP hat kein Modulkonzept. In der Tat. Mit include() kann man sämtliche PHP-Dateien wie Module importieren und wenn der Programmierer eines Frameworks kein Noob ist, kommt es auch zu keinen Komplikationen. Viele wissen auch gar nicht, dass es für alles mögliche implementierte Funktionen gibt. BBCode, GnuPG, XML-Zeug, …
  • PHP verwendet sogenannte assoziative Arrays. Wie bereits oben erwähnt, darf man eine Programmiersprache nicht dafür verurteilen, dass sie ein anderes Konzept verfolgt. Das Konzept von PHP: Alles sollte in einem Container Platz haben. Es gibt keine weiteren Unterscheidungen (vergleich Perl und python). Für gewisse Bereiche halte ich den dynamischen Umgang mit Datentypen (in Arrays) für sehr vorteilhaft. Der Kritikpunkt ist nur, dass Arrays unsauber implementiert sind.
  • Stichwort Datentypen. PHP ist sehr großzügig mit Datentypen. (int)”12Foobar” ist 12 und (int)$_GET['sql_injection'] ist 0. Auch hier finde ich Vorteile, allerdings ist es für seine schlechte Implementierung zu verurteilen. Fehler wie diese führen dazu, dass Durchschnitts-Programmierer unsauberen Quelltext schreiben.
  • $var; das Dollarzeichen kennzeichnet die Variable. Halte ich für sehr praktisch, wobei es den Quelltext natürlich mit Dollarzeichen überhäuft. Aber in python oder VB gibt es dann keine Doppelreferenzierung wie $$var_von_var. Bei der Analyse (die zB für einen Online-Syntaxhighlighter gemacht werden muss) ist die Variable leichter zu erkennen. Außerdem gibt es keine Komplikationen zwischen Funktionsnamen und Variablen
  • PHP hat keine UTF-8-Unterstützung. Während PHP 6 Unicode unterstützen soll, machen dies schon lange die meisten anderen Sprachen (von python kann ich es bestätigen). Wie lange es jedoch dauert, bis alle PHP6 verwenden, möchte ich gar nicht wissen, nachdem manche Programmierer noch PHP4 unterstützen. Dann denkt man sich, man kann doch sicher irgendwie selbst was programmieren, damit man mysql_set_charset auch in alten Versionen verfügbar machen kann. Falsch… es stehen gar keine Basisfunktionen für den UTF-8-Support zur Verfügung.
  • PHP ist spezialisiert. python hat seinen “interaktiven Modus” auf der Kommandozeile und Perl kann man als Skript laufen lassen. Der “interaktive Modus” für PHP nennt sich SAPI, allerdings bietet er nicht die idente Funktionalität. Besonders bei zeitaufwändigen Arbeiten hat PHP hier Probleme. Über die max_execution_time lässt sich die Ausgabezeit regeln, aber für den Browser ist das auch nicht angenehm. Gerade in dem Moment läuft neben mir ein python-Skript mit einer Laufzeit > 23000 Sekunden (bisher ;-) ). In PHP würde ich sowas nicht machen. Aber ok… PHP ist spezialisiert auf Webanwendungen und dafür kann man es ja nicht verurteilen?!
  • Die PHP-Dokumentation ist minimalistisch. Kann ich nicht bestätigen. Von den Modulen (die andere als Zend entwickeln) und Kommentaren (der User) abgesehen. Natürlich kann PHP keine Veranwortung über die Korrektheit von Aussagen anderer über PHP übernehmen. Für relativ neue Funktionen muss man manchmal warten bis eine Doku vorhanden ist. Google macht sonst den Rest.
  • Der Umgang mit in-place-Funktionen. sort() ist das klassische Beispiel aus jeder Programmiersprache, die in-place arbeitet. Sie verändert die Eingabeliste direkt und gibt keine Rückgabeparameter zurück. Während es in python viele dieser Sorte gibt, so sind es in PHP nur ein paar in-place-Funktionen. Die passen eigentlich nicht in das restliche Konzept. Aber wenn es sauber dokumentiert ist, halte ich es für akzeptabel
  • Durch die Modularität der php.ini ist es schwer ein Framework für alle Versionen zu schreiben. Wenn der PHP-Entwickler seine Berechtigungen sehr streng einstellt, dann läuft das Framework unter allen Konfigurationen. Für die alten $HTTP_POST_VARS gibt es Hack, die auch ich immer einbaue.
  • PHP hat magic_quotes und register_globals. PHP gesteht sich diese Fehler ein und macht in der Dokumentation darauf aufmerksam (zB 1, 2)
  • Funktionsnamen sind nicht einheitlich. Keine einheitlichen Richtlinien für underscores (zB urlencode und base64_encode). Verb oder Objekt? (zB create_function und var_dump). “2″ oder “to”? (zB strtoupper und bin2hex). Als Referenz sei “PHP has inconsistent function naming” genannt. python und Perl haben überall klare Richtlinien
  • Datenbank-Unterstützung. … ist unter PHP wunderbar und für alle möglichen Datenbank stehen die Funktionen bereit. Auch persistente Verbindungen sind möglich. Ich gebe den Vorwürfen recht, dass viele nicht wissen flush-Funktionen umzugehen

Ich denke hier kommt man zu keinem Ergebnis. Wenn man es genau nimmt, kann man jeden Unterschied als Vor- sowieso Nachteil nennen. Das Einzige was wirklich nicht in Ordnung ist, wenn das Verhalten von Quelltext unvorherrsehbar ist (wenn die Erwartung auf Logik oder der Dokumentation basiert). Und hier hat PHP wirklich einige Defizite. Wie schon oft genug erwähnt, bin ich immer mehr mit python unterwegs, jedoch warten noch einige PHP-Skripte auf mich. Nichts destotrotz… ich glaube es ist alles reine Gewohnheitssache. Seit ich weiß, dass ein String (in einem Vergleich mit einem Integer) in einen Integer verwandelt wird, wird mir auch nicht mehr der Fehler passieren. Genauso haben ich schon alle Funktionsnamen intus. Jetzt wird man argumentieren “es soll nicht nur Gewohnheitssache sein, sondern für alle leicht erlernbar. Nicht nur fürjahrelang eingefleischte Geeks”. Das stimmt natürlich. Wenn wir von dem Standpunkt ausgehen, kann ich aber genauso gegen jede andere Programmiersprache argumentieren. PHP halte ich für Anfänger gut. Als ich diese Aussage in IRC tätigte, argumentierten zwar alle entgegen, aber mein Hauptargument ist, dass man sich keine Gedanken um Datentypen machen muss und große quelltextdesign-technische Freiheit hat. Der Umgang mit Parametern ist auch wesentlich leichter als in python. Natürlich kann ich trotzdem nicht PHP empfehlen. Schließlich bleibt man auf jeden erlernten Programmiersprache stecken. Und das soll nicht PHP sein…

Wer sich jetzt fragt, wieso ich den Post auch in “Philosophie” gegeben habe, darf sich mit der Frage befassen: Wann sind genug Argumente genannt, damit man “seine aktuelle” Programmiersprache wechselt und sich mit einer anderen befasst?

Geld vs. Zensur

Würde ich 800€ annehmen und dafür einen Beitrag löschen?

Vor dieser Entscheidung stand neulich gruban.de. Eine Firma bat ihn einen Beitrag über sie zu löschen. Dabei geht es nicht um den positiven Beitrag, sondern um die negativen Userkommentare. Sie einigten sich auf 800 Euro und der Beitrag verschwand. Dabei waren die Kommentare keineswegs verleumdend, weshalb er wohl einen rechtlichen Prozess gewonnen hätte. Aber in dem Falle hätte er sich einen Anwalt leisten müssen und damit hätte er das Gegenteil erreicht. Das ist auch seine Rechtfertigung. Bei einem “Hobby-Projekt” (wie es bei mir auch wäre) ist (wie ich denke) beides akzeptabel und verständlich. Bei einer Firma würde es anders aussehen. Jedoch die eine “Bitte” für ein Hobby-Projekt?! Ich hätte das Angebot wohl abgelehnt (aus meiner “freien” Philosophie). Ich habe kein kommerzielles Interesse. Jedoch ist es wirklich grenzwertig und schwer zu entscheiden. 800€ sind nicht gerade wenig und wie man sich auch entscheidet: ich würde niemand einzelnen verurteilen ;-)

Ist die Welt in einem Satz zusammenfassbar?

Also wenn ich gewisse Sachen argumentiere, komme ich immer auf wieder auf die gleichen Grundsätze zurück. Als Beispiel erwähne ich hier “Alle Menschen sind unterschiedlich”, was besonders die Denkensweise der Menschen betrifft. Und dieses Argument kann man sowohl bei einer Diskussion um unser demokratisches System gebrauchen als auch bei der Frage nach der Reaktion von Menschen auf ein Ereignis. Jetzt könnte man ja hergehen und diese Grundsätze niederschreiben. Die Frage ist, ob diese wiederum zusammenfassbar sind und wir dann einen “Weltsatz” erhalten?
Für Informatiker: Lassen sich die Grundsätze der wiki:Unix-Philosophie auch in einem Satz zusammenfassen?

Altmodische Systeme?

Wissen & Politik: Die Wissenschaften schreiten voran. Das “gelehrte” Wissen wird immer spezieller. Es gibt immer mehr Bildungsrichtungen. Bildung ist das Ein und Alles in unserer Gesellschaft. Universalgenies sterben aus und werden von der Wirtschaft nicht mehr gebraucht. Trotzdem basiert unser demokratisches System auf der Idee möglichst viele Personen zu ihrer Meinung zu befragen. Dabei kann ein Laie niemals eine überdachte und untermauerte Antwort geben.
Wirtschaft & Medien: Genauso basiert unser “Markt” auf dem Prinzip “etwas ist erfolgreich, wenn es sich gut verkauft”. Trotzdem findet man wirklich gute Produkte nicht im Bereich “Bestseller”, sondern müssen in den Hinterregalen Platz finden, da “Bestseller” meist nur gut vermarktete (ungleich qualitative) Produkte sind. Die Masse ist dumm. Die Masse nimmt das als Wahrheit, was ihnen vorgelegt wird (Stichwort Medien). Somit wird ein Produkt nicht mehr durch hohe Kaufszahlen bewertet, sondern durch Promotion. Auch hier findet man ein altmodisches System vor.

Es bilden sich 2 Kontroversen. Die Entwicklungsländer und die Industrieländer. Die Monopolen und die kurzfristig unabhängigen Firmen. Die Reichen und die Armen. Die Idealisten und die Optimierer. Die Coder und die Anwender. Die Windower und die Linuxianer. Welche Partei unterstützt der Staat?

zweigeteilte Welt

Philosophie – Eine Frage zum Überlegen:

Es gibt die Programmierer – mit funktionaler und ausgreifter Software – und Anwender – mit farbiger, designtechnisch aufbereiteter Software (Stichwort Windows vs. Linux). Es gibt die dritte Welt der arbeitenden Leute und die Industrieländer mit den kinderlosen Arbeitslosen (Stichwort soziale Unterschiede). Es gibt die großen Firmen, die kleine Firmen schlucken und die kleinen Firmen, die die großen Firmen akzeptieren müssen (Stichwort Monopole). Es gibt die Leute, denen Purismus und “Hauptsache, es funktioniert” wichtig ist und es gibt Leute, die auf Optimierung und überdachte Softwarelösungen setzen (Stichwort Betriebsysteme).

Es bilden sich immer zwei Parteien. Ist das der richtige Weg? Demokratie? Kapitalismus?
Wir haben viele Fehler in diesen Systemen entdeckt. Wieso konnte bisher kein neues fehlerfreieres System/Konzept gefunden werden? Werden wir ewig mit diesen Fehlern leben?

Nationaler Stolz?

Immer wieder muss ich mich das fragen. Die Ursachen sind mir einfach nicht klar. Was bewegt den Mensch dazu nicht über sein eigenes Denken hinaus zu denken. Faulheit? Gewohnheit? Xenophobie? Purismus? Kultur? Patriotismus? Chauvinismus? Nationaler Stolz?

Wieso werden Ortsnamen mit Umlauten (etc.) nicht angepasst, damit sie auf Atlanten in aller Welt verwendet werden können; die Namen der Orte ist sowieso zufällig gewählt? Wieso verwenden Europäer nicht den praktischen, drehbaren, chinesischen Esstisch? Wieso fahren die Autos in der UK auf der linken Seite? Wieso lesen Japaner von oben nach unten und von rechts nach links; Europäer von links nach rechts und von oben nach unten? Wieso verwenden wir 5 Notenzeilen, wobei 5 kein Teiler von den 12 Halbtonschritten ist, die wir verwenden? Wieso sprechen wir Menschen einer Erde so viele verschiedene Sprachen? Wieso verwenden wir kein einheitliches Schrift- und Ziffernsystem? Wieso unterscheiden wir verschiedene Artikel (der, die, das)? Wieso dauert das 20. Jahrhundert von 1900-1999 und die 20er Jahre von 1920-30? Wieso schreiben manche die Trennung von Dezimalstellen mit Komma und manche mit einem Punkt?

In der Informatik geht es oft um einzelne Bits, wenn man von Optimierung spricht. Man einigt sich auf klare Standards. Wenn ich unsere Lebensweise ansehe, dann finde ich nur das Gegenteil vor?! :-/

Das Internet – schnellstes Medium

Ich bin Anhänger der Meinung, dass das Internet eines der schnellsten Medien ist, das es momentan gibt. RSS-Feeds und Onlinenews sind aufkommende Quellen für Journalismus und Verbreitung von Informationen. Oftmals ist das Internet wesentlich schneller als eine andere Quellen wie Zeitung oder Fernsehen. Das konnte ich schon bei einigen Anlässen feststellen. So zB der Tod von Steve Irwin, der bereits ein paar Stunden nachher im Internet bekannt wurde. Die Zeitung erschien erst einige Stunden später am Morgen und das Fernsehen verschlief.

Aktueller Anlass für diesen Beitrag ist die Sendung “The next Uri Geller” auf Pro7. Prinzipiell schaue ich wenig fern und solche Sendungen zur reinen Unterhaltung auch schon länger nicht mehr. Dennoch hat es mich immer fasziniert hinter die Tricks der Pseudo-Magie zu schauen. Nicht immer konnte ich sie aufdecken. Wenn nicht hilft mir nur ein Medium: das Internet. Entsprechende verlarvende Videos sind schon länger bei youtube verfügbar, wobei das Medium “Fernsehen” solche Sachen nicht sendet bzw. langsamer ist. :-/