- Ilnumerics.net
-
ILNumerics.Net Aktuelle Version: 1.4.01
(Oktober 2008)Betriebssystem: Unix, Linux, BSD-Derivate, Microsoft Windows, Mac OS X und Solaris 8 Kategorie: Mathematik Lizenz: LGPL,GPL www.ilnumerics.net ILNumerics.Net ist eine Klassenbibliothek mit dem Ziel, numerische Berechnungen für die .NET-Plattform verfügbar zu machen. Dem Entwickler soll ermöglicht werden, komplexe Algorithmen direkt in seiner gewohnten Programmiersprache zu formulieren.
Inhaltsverzeichnis
Überblick
ILNumerics.Net ist selbst eine .NET-Assembly. Im Unterschied zu etablierten Produkten können Algorithmen als normale .NET-Klassen erstellt und zu Intermediate Language (IL) übersetzt werden.
ILNumerics.Net erweitert das .NET-Framework um komplexe Zahlen, ermöglicht das Rechnen mit Skalaren, Vektoren, Matrizenrechnung oder beliebig dimensionalen Daten. Diese Arrays bieten alle Möglichkeiten der Manipulationen und Operationen, wie sie im mathematischen Umfeld etabliert sind. Häufig benötigte Algorithmen der linearen Algebra (zum Beispiel Lineare Gleichungssysteme, Eigenwerte und -vektoren) sowie FFT-Funktionen sind ebenso implementiert wie Klassen zur graphischen Ausgabe in 2D und 3D.
Für lineare Algebra-Routinen sind prozessoroptimierte LAPACK-Bibliotheken des MIT eingebunden.
Programme des .NET-Frameworks können unter Windows und mit Hilfe des Mono-Projektes auch auf Unix, Linux, BSD-Derivate, Mac OS X und Solaris 8 ausgeführt werden.
Schnelle Programmentwicklung
Mit dem Einzug numerischer Berechnungen in Programmierumgebungen wie .NET wird dem Wissenschaftler die Möglichkeit eröffnet, das klassische Vorgehen zu verkürzen. Bislang teilt sich der Entwicklungsprozeß im wesentlichen in die Schritte Algorithmenentwicklung und -implementierung. Algorithmen werden in klassischen Mathematik-Umgebungen als Skripte entwickelt. Für industrielle Projekte müssen diese nachträglich in den endgültigen Programmcode übersetzt werden. Diesen aufwendigen Prozeß kann man oftmals zwar teilweise automatisieren, dennoch sind dem Verfahren viele Nachteile inherent. So erbt man die fehlende Typsicherheit und geringere Stabilität der Skripte und muß leichte Effizienz-Einbussen in Kauf nehmen. ILNumerics.Net ist die erste Bibliothek, die die Erstellung derartiger Algorithmen direkt in der endgültigen Programmiersprache des .NET-Frameworks ermöglicht. Eine Konvertierung ist somit nicht mehr notwendig. Das Programm wird schneller und stabiler.
Performance
ILNumerics.Net ist als erste Bibliothek dieser Art auf das Verarbeiten besonders großer Daten im .NET-Framework hin optimiert. Bei vielen Operationen wie Transposition oder Subarray-Bildung werden die Arrays nicht kopiert, sondern als Referenz verwaltet. Ein Memory-Pool sorgt für die automatische Wiederverwendung nicht mehr benötigten Speichers. Dadurch soll den Besonderheiten der Speicherverwaltung mittels Garbage-Collector Rechnung getragen werden. Diese Maßnahmen führen dazu, dass die numerischen Algorithmen mit derselben Leistung ausgeführt werden wie unter nicht verwalteten Umgebungen (siehe MATLAB). Dennoch ist es fraglich, ob die Diskussion über die generelle Möglichkeit von numerischen Berechnungen in verwalteten Umgebungen damit beendet wird. Für sogenanntes Number-Crunching bieten nach wie vor Sprachen wie Fortran eine bessere Leistung bei allerdings viel größerem Implementationsaufwand.
Besonderheiten
Die Sprache zum Erstellen und Manipulieren der n-dimensionalen Objekte lehnt sich sehr stark an die etablierten Skriptsprachen im wissenschaftlichen Umfeld an. So sind fast alle Funktionen parameterkompatibel zu MATLAB. Dennoch gibt es einige Unterschiede. Der größte besteht in der starken Typsicherheit des Codes, was das Debuggen und die Stabilität der Programme günstig beeinflussen dürfte. Zwar unterscheidet sich der Code bei Verwendung von zum Beispiel C# als Programmiersprache nur leicht von der Skriptversion, dennoch müssen Umsteiger generell mehr acht auf einige plattformspezifische Besonderheiten legen (zum Beispiel das Behandeln und Weitergeben von Referenzen bei Funktionsaufrufen). Als weitere Besonderheit sind die integrierten Steuerelemente zur Visualisierung numerischer Daten zu nennen. Die hiermit erstellten 2D- und 3D-Diagramme lassen sich direkt in eigenen interaktiven GUI-Programmen verwenden.
Geschichte
ILNumerics.Net begann als Sammlung hilfreicher mathematischer Routinen und wurde in wissenschaftlich-industriellen Projekten eingesetzt. Im Jahre 2005 wurde begonnen, die Software als eigenständige Bibliothek mit eigenem Objektdesign auszurichten. 2007 wurde sie dann auf eine Veröffentlichung vorbereitet und zunächst als proprietäre Bibliothek angeboten. Seit August 2007 wird sie als eigenständiges Projekt gepflegt und kostenlos unter der LGPL Version 3 zur Verfügung gestellt. Innerhalb eines halben Jahres wurde bereits das 100te Projekt mit ihrer Hilfe realisiert.
ILNumerics.Net ist der Gewinner des mit insgesamt 20.000 Euro dotierten BASTA! Innovation Awards 2007[1], der im Rahmen der vom Software & Support Verlag (S&S) veranstalteten Softwareentwickler-Konferenz BASTA! vergeben wurde.
Alternativen
Einige Mathematik-Programme bieten ebenfalls die Möglichkeit, die mit ihnen erstellten Algorithmen in eigenen Programmen zu verwenden. Das prominenteste proprietäre Beispiel ist wohl MATLAB der Firma The MathWorks, Inc. mit Compiler für C und Builder für .NET oder die IMSL von Visual Numerics. Andere Projekte verfolgen konsequent den Ansatz, nur für die .NET-Plattform zu entwickeln. Hier seien „Extreme Optimization“, „dnanalytics“ oder Center Space „NMath“ genannt. Während Erstere wesentlich etablierter sind, verwenden sie meist native Bibliotheken, was häufiges Verlassen des verwalteten Codes bei der Ausführung nötig macht.
Weblinks
- Homepage des ILNumerics.Net-Projektes mit öffentlicher Dokumentation
- Comparison of numerical analysis software – englischsprachiger Wikipedia-Artikel mit Vergleich gängiger Software zum Thema
Fußnoten
Wikimedia Foundation.