![]() |
|
|
|||||||
| Allgemeine Java-Themen Allgemeine Themen, die nicht in andere Fachforen und nicht zu den Java Basics passen |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |
|
Nicht angemeldet
Fachbeiträge: n/a
|
Hallo,
Eine Frage, was meint ihr zum Vergleich Fortran und Java.... Macht es Sinn eine naturwissenschaftliche Berechnung in Fortran nach Java umzuschreiben ? Ja, klar, ich weiß, daß man das nicht so pauschal beantworten kann. Es geht halt, um ein dreidimensionales Feld mit einigen hunderttausend Zellen, die bearbeitet werden müssen. Das Fortran Programm ist "gewachsen" und recht chaotisch... Aber dennoch: Ich erinnere mich ans Studium wo es hieß, das Fortran zwar veraltet, aber eine sehr effiziente Sprache sei, und superschnell bei Berechnungen, weil der Code sehr Assembler nah ist. Kann Java nicht einschätzen, wie schell das ist bei Rechenoperationen und natürlich auch schleifen und if abfragen... Ob ich da viel mit Objekten machen kann ist schwierig, ich würde das eher fast "prozedural" nachprogrammieren... Hat jemand eine Idee, oder weiß was dazu ? |
| #2 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 06.01.2007
Fachbeiträge: 16.761
Abgegebene Danke: 0
Erhielt 1.640 Danke für 1.485 Beiträge
|
Sumbjektiv-Unfundiertes Gelaber:
Schneller wird es dadurch vermutlich erstmal nicht. Ob es "Sinn macht", kann man schwer sagen - zumindest wäre so ein Umschreiben ja vielleicht ein Anlaß, das ganze neu zu strukturieren und zu optimieren, so dass eventuelle Vorteile durch den "besseren" Code entstehen. Aber es "so-wie-es-ist" einfach stupide runter-abzutippen, und jedes Fortran-Statement 1:1 in ein Java-Statement zu übersetzen ... höm. Würde ich mir wohl nicht antun .... |
|
|
| #4 (permalink) | ||||||||||||||||
|
Java-Forum Team
Moderator
Registriert seit: 13.09.2007
Fachbeiträge: 12.754
Abgegebene Danke: 215
Erhielt 810 Danke für 721 Beiträge
|
So wie sich das anhört, versuchst du dann wirklich die prozedurale Struktur von Fortran in Java abzubilden, und dass geht schief, immer. Also: Entweder komplett neu aufsetzen und ein OO Konzept entwerfen, das die festgestellten Anforderungen erfüllt, oder ganz bleiben lassen. Performance wird ja wohl kaum ein Kriterium für eine Portierung sein, oder? Meist will man damit etwas altes neu strukturieren. |
|||||||||||||||
|
|
||||||||||||||||
| #5 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 06.01.2007
Fachbeiträge: 16.761
Abgegebene Danke: 0
Erhielt 1.640 Danke für 1.485 Beiträge
|
Nun. Man kann auch in Java prozedural programmieren. Ob man das nun "subroutine" oder "private static final synchronized void"-Methode nennt ist wurscht. Was daran "schief gehen" soll ist mir nicht ganz klar. Man kann natürlich alles 1:1 übernehmen, oder bestimmte Dinge anders strukturieren. Wenn es reines Numbercrunching ist, wird Fortran erstmal sicher schneller sein. Wenn das, was dort berechnet wird, sich irgendwie in ein sinnvolles Obektorientieres Konzept packen läßt (d.h. OHNE Klassen wie "ComputationInput" und "ComputationOutput"), wäre eine Portierung vielleicht nicht verkehrt, weil schönerer, wartbarerer Code dabei entsteht. Was besser ist (oder wie groß die Vor/Nachteile sind) kann man so erstmal nicht sagen.
Übrigens fände ich es ziemlich blöd, jedes Jahr meinen Nicknamen ändern zu müssen. |
|
|
| #6 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 13.09.2007
Fachbeiträge: 12.754
Abgegebene Danke: 215
Erhielt 810 Danke für 721 Beiträge
|
Marco,
wenn du mal "Java" Code liest, der von Leuten geschrieben wurde die nix mit OO am Hut haben und die dachten, man könne das wie in C++ machen, also einfach C schreiben, wirst du wissen was ich meine ![]() Unwartbar, unverständlich, nur sehr schwer falls überhaupt zu verändern... das meine ich mit schiefgehen. Das man bei diesen dünnen Fakten gar keine Aussage machen kann was schneller ist, ist klar. Nebenbei bemerkt wird "Performance" von vielen Leuten in ihrer Wichtigkeit überschätzt
|
|
|
| #7 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 06.01.2007
Fachbeiträge: 16.761
Abgegebene Danke: 0
Erhielt 1.640 Danke für 1.485 Beiträge
|
Jo. Wenn man objektorientiert programmiert, dann verwendet man Klassen. Umgekehrt gilt die Implikation NICHT. Das ist mir klar. Aber da man nicht weiß, worum es geht, ist nich klar, inwiefern eine Umstrukturierung möglich, gewünscht oder sinnvoll ist....
|
|
|
| #8 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 24.11.2006
Fachbeiträge: 168
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
|
Ich denke auch es macht keinen großen Sinn, dass Programm prozedural auf Java zu portieren. Wenn dann sollte man die Anforderungen aus dem Fortran-Programm ableiten und ein Objektorientiertes Design entwerfen. Das ist ein großer Aufwand der sich nur lohnt wenn das Programm weiter gewartet und erweitert werden soll. Dabei sollte dann falls nicht vorhanden eine genaue Spezifikation und ein programmiersprachenunabhäniger Entwurf erstellt werden.
Ich gebe maki im übrigen Recht das sehr häufig Performanz überschätzt wird und dagegen Wartbarkeit (Portabilität, Änderbarkeit, und auch Prüfbarkeit) und Bedienbarkeit oft unterschätzt werden. |
|
|
| #9 (permalink) | |
|
Nicht angemeldet
Fachbeiträge: n/a
|
Es geht aber hier um wissenschaftliche Rechnungen.... "Numbercrunching" ja, einige dreidimensonalen Felder (100 x 100 x 100) an denen was berechnet werden soll... da wird differnziert, integriert und noch andere mathematische Operationen verwendet... Vektor-Faltungen, die in Subroutinen ausgelagert sind.
Da läßt sich nicht so einfach ein sauberes Objektmodell entwerfen... Andererseits kann man mit der Komfortabilität von Java einiges eleganter machen als in Fortran, und ich frage mich halt, wie effizient das wird. Wir würden es ja in Fortran lassen, aber es soll eine webfähige Anwendung werden... Da bleiben zwei Möglichkeiten.... Ein Wrapperframework drumrumstricken (Es sind mehrere einzelne Fortranprogramme, die sich ganz altmodisch über ASCII-Dateien austauschen) oder die einzelnen Programme gleich in Java neu schreiben. Geschwindigkeit ist ebenfalls höchste Priorität, deshalb meine Frage... @marco: Soso, dann bist Du also 1913 geboren Auch nicht schlecht. Ein 94-jähriger der Java programmiert...
|
| #10 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 13.11.2005
Fachbeiträge: 31.675
Abgegebene Danke: 0
Erhielt 2.570 Danke für 2.531 Beiträge
|
fang doch klein an, suche dir eine abgeschlosse Teil-Operation von 100 Zeilen
und lasse die in Fortran + Java 1 Mio. durchlaufen um einen ganz groben Eindruck zu erhalten
__________________
Hansa wird Meister. |
|
|
| #11 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 06.01.2007
Fachbeiträge: 16.761
Abgegebene Danke: 0
Erhielt 1.640 Danke für 1.485 Beiträge
|
Hm. Eine Matrix (bzw. ein Tensor) ist ein Objekt. Aber sowas selbst schreiben macht keinen Sinn. Dazu sollte man eher mal auf
http://math.nist.gov/javanumerics/ unter "Libraries" schauen. Dort ist übrigens auch ein Link zu einen Fortran-2-Java-Übersetzer http://icl.cs.utk.edu/f2j/ Bei solchen automatischen Übersetungen sollte man kritisch sein, aber vielleicht hilft es, schnell und leicht einen Eindruck von der möglichen Performance zu bekommen... EDIT: Nyehe... die FAQ dazu ist ja geil: http://icl.cs.utk.edu/f2j/faq/index.html
|
|
|
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| java geschwindigkeit | Bit2_Gosu | Allgemeine Java-Themen | 16 | 20.11.2007 09:29 |
| fortran exe über java ausführen | jay | Allgemeine Java-Themen | 4 | 08.11.2007 10:23 |
| Fortran Funktion mit JNI aufrufen: java.lang.UnsatisfiedLink | Sonjaja | Allgemeine Java-Themen | 2 | 08.11.2007 10:22 |
| Kommunikation Fortran <-> Java auf Client-Server-Archi | Snape | Netzwerkprogrammierung | 2 | 04.05.2005 11:19 |
| Fortran nach Java mit f2j | Allgemeine Java-Themen | 13 | 01.04.2005 12:34 | |
| Lesezeichen |
|
|