Günther's profileGünther Foidl (gfoidl)PhotosBlogGuestbookMore ![]() | Help |
Günther Foidl (gfoidl)Nihil verum nisi mors |
|||||
|
|
December 07 Winter break Hi everybody, now it's gonna be racing time until early May 2010. Informations are available here. I won't report about the races in this blog because this one should remain scientific. ![]() I wish you all the best! Cheers, Günther November 26 Farbkonvertierung RGB <-> HSV und RGB <-> CIE-LabUnter http://www.mycsharp.de/wbb2/thread.php?threadid=78941 gibt es den Code und Erklärungen dazu. Gruss Günther Warum wechselte ich von Fortran nach C#?Fortran ist eine wunderbare Programmiersprache die nur eines kann: Rechnen – und das sehr schnell. Mehr kann Fortran nicht. Vor allem für numerische Aufgaben bietet die Sprache von Fortran sehr viele eingebaute Funktionen und dies ist ungemein hilfreich. Die Compiler (ich habe den Lahey Fujitsu Fortran Compiler verwendet) sind hochoptimierend. Bei dem von mir verwendeten Lahey-Paket sind weiters hoch optimierte Numerik-Packages inkludiert mit denen sich richtiger Hochleistungscode erstellen lässt – und das habe ich auch gemacht. Es stellten sich mir immer die selben Fragen:
Von Fortran selbst gibt es nur Unterstützung für das Lesen und Schreiben von Dateien, sowohl ASCII als auch binär. Gut mit dem ASCII-Format lassen sich CSV-Dateien verarbeiten, aber das reicht in der heutigen Zeit nicht unbedingt aus. Wie wäre es mit direktem Zugriff auf eine Datenbank? Geht über ein Zusatzpaket wie f90SQL, allerdings arbeitet man da ganz unten auf der ODBC-Ebene und ist somit wenig komfortabel – geht allerdings. XML? Über den ASCII-Weg lösbar – praktisch ist dies aber nicht. Das Ergebnis einer Berechnung sind Zahlen – nackte Zahlen die nicht viel Aussagen. Ein Bild wäre hier sehr angebracht. Das ist aber nicht ohne weiters möglich, denn die Sprache sieht dafür nichts vor. Für Fortran gibt es sehr viel OpenSource-Code der zusammengesucht werden will um sich somit eine Art “Framework” zu erstellen. Dies ist aber eine sehr mühselige Aufgabe – davon abgesehen dass man wissen muss was es gibt denn zielloses Suchen nach irgendwelchen Neuigkeiten führt selten zum Ziel ;) Vor fast zwei Jahren und im Zuge eines neuen Projektes stieß ich mit Fortran an die Grenzen. Ich wusste dass es Fortran.net gibt und meine Lahey-Installation bot dies auch. Mehr als ein wenig rumspielen war für mich nicht drin, denn die für .net erweiterte Syntax von Fortran war sehr gewöhnungsbedürfig und machte mir keinen Spass. Die grundlegende Syntax von Fortran ist sehr logisch und einfach aufgebaut. Englischkenntnisse reichen um die Sprache zu beherrschen. Gut ein wenig mehr gehört schon dazu ;) Durch die Erweiterungen für .net wurde die Sprache ein wenig vergewaltigt. Um es auf den Punkt zu bringen: Fortran ist dafür nicht gedacht. Seit jeher entwickelte ich meine Fortran-Programme mit Hilfe von Modulen um eine gewisse Ordnung und Wiederverwendbarkeit zu erzielen. Dieser Stil war auch von OOP inspiriert obgleich es mit OOP nichts zu tun hatte. Meiner Meinung nach lassen sich größere Projekte ohne OOP nur sehr schwer umsetzen und daher ergibt es sich fast zwangsläufig sich in diese Richtung zu orientieren. Wie erwähnt stieß ich mit Fortran an die Grenzen und ich hielt Ausschau nach Alternativen. .net war mir durch die Spielerei mit Fortran.net ein wenig bekannt und ganz besonders gefiel mir das Framework, welches für die meisten wiederkehrenden Aufgaben vorgefertigten Code anbot. Zudem lässt sich mit “der” .net-Sprache C# auch wunderschön OO programmieren. Somit sind/waren meine Hauptbeweggründe C# zu lernen und zu verwenden
Der C#-Compiler ist zwar dumm denn er übersetzt den Code “nur” nach IL-Code und der JITer fürht wenige Optimierungen durch – da dies zur Laufzeit geschieht und somit ein Kompromiss zwischen Verzögerung und Optimierung gefunden werden musste – und dennoch ist C# mittlerweile meine Standardsprache für numerische Berechnungen. Die Zeit für die Berechnung hinkt zwar jener im Vergleich zu Fortran weit hinterher, aber die Berechnung ist nur ein Teil der Gesamtaufgabe und diese gilt es zu betrachten. Dazu gehören Einlesen von Daten, Berechnungen und letztendlich die Ausgabe. Über diesen Zyklus gesehen ist C# im Vorteil. Betrachtet man auch noch den Programmieraufwand der sich bei C# durch die Klassen des Framework im Vergleich zu Fortran erheblich verkürzt ergibt sich ein weiterer bedeutenden Vorteil. Dies geht auch Hand in Hand mit den Vorteilen die sich durch OOP ergeben. Warum nicht Fortran.net? Was wünsche ich mir von .net/C#?
All dies lässt sich zwar selbst im Code durchführen (auch durch eigene Methode, Klassen) aber dies macht den Code nicht unbedingt leserlicher. Leserlicher Code sollte jedoch immer im Vordergrund stehen! Daher ist es naheliegend dass der Compiler dies übernimmt und dabei kann auch unleserlicher IL-Code entstehen. Nichts anderes passiert zB beim yield-Schlüsselwort und bei LINQ. Daher sehe ich kein Problem darin.
Kurz zusammengefasst kann ich festhalten:
Gruss, November 18 Simulated Annealing Auf myCSharp.de habe ich einen Artikel über Simulated Annealing veröffentlich. Siehe http://www.mycsharp.de/wbb2/thread.php?threadid=78641 Viel Spass! November 01 Ich bin auf WikipediaAnders als gewohnt einmal kein Beitrag im Sinne der Programmierung:
Dank Jürgen Thomas gibt es einen Wikipedia-Artikel über mich und meine Speedski-Karriere. Siehe: Günther Foidl Ich fühle mich geehrt da ich Jürgen sehr schätze obwohl ich ihn persönlich nicht kenne - die Bekanntschaft basiert auf unserer gemeinsamen Tätigkeit in Programmier-Foren. Auf diesem Wege bedanke ich mich recht herzlich bei ihm. Public folders
|
|
|||
|
|