Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Meinungen zu fortran

Anonym / 9 Antworten / Baumansicht Nickles

mich würden mal eure Meinungen zu fortran interessieren.

Meine ist:

Fortran (77) ist sehr übersichtlich und neigt zu weniger Adressfehlern als C(++). Wäre Windows in fortran programmiert, würde die Meldung "Schwerer Ausnahmefehler" (fast) nicht existieren. In fortran BRAUCHT man nämlich keine Pointer, deshalb kann man damit auch keine Fehler machen... (Nur bei der Windows-Programmierung könnte man machmal einen Pointer gebrauchen, weil man ein C-Programm aufrufen will, das einen erwatet.)

mfg, M@rtin

bei Antwort benachrichtigen
thomas woelfer Anonym „Meinungen zu fortran“
Optionen

sorry, aber ich glaube das ist etwas gewagt: in fortran _braucht_ man keine zeiger weil fortran das nicht _unterstuetzt_. zeiger sind aber nunmal extrem wichtig fuer performante programme - es gibt jede menge anwendungsfaelle fuer zeiger. davon abgesehen ist fortran 77 nicht sonderlich typensicher und tendiert insgesamt gesehen dazu eine eher klobige sprache zu sein. m.a.w.: kann mir kaum vorstellen das irgendjemand tatsaechlich groessere programme in fortran schreiben _will_, da die sprache keinerlei vorteile bietet - abgesehen davon, das eine unmenge an fortran quellcode herumliegt.

WM_MY0.02$
thomas woelfer

this posting contains no tpyos.
bei Antwort benachrichtigen
Anonym thomas woelfer „sorry, aber ich glaube das ist etwas gewagt: in fortran _braucht_ man keine...“
Optionen

Hast du schon mal Fortran programmiert oder sind das nur Vorurteile??

Ich habe allerdings etwas verschwiegen, was Pointer betrifft. Natürlich hat und braucht fortran auch Pointer, aber ich muß sie nicht programmieren. Der Compiler entscheidet automatisch, ob mit dem Variablennamen ihr Wert oder ihr Pointer gemeint ist. Und das kopieren des Wertes einer Variable statt ihres Pointers auf den Stack beim Aufruf eines Unterprogramms bringt ja wohl nicht wirklich einen Geschwindigkeitsvorteil.

Und Typensicherheit hat fortran in seiner Sprachdefinition eingebaut. Es ist nicht möglich, in eine Charactervariable eine Integer-Zahl hineinzuschreiben, ohne über eine Funtion vorher die Zahl als ASCII-Code uminterpretieren zu lassen. In C braucht man nur (char) davor zu schreiben, dann hat man die Typprüfung mehr oder weniger umgangen. Und bei Unterprogrammaufrufen hat auch C/C++ keine ECHTEN Typprüfungen, die Prototypen kann sich schließlich jeder selbst falsch zusammenschreiben... Und die einzig richtige Methode, zur Laufzeit jeden Typ zu überprüfen dauert - sprachunabhängig - ja wohl viel zu lange, außerdem ist das bei Fortran bei vielen Compilern mit einer /check - Option möglich...

Wenn man dann mal Pointer aus Performance-Gründen braucht (z.B. um via DirectDraw auf den Bildschirmspeicher zuzugreifen), kann man unter fortran CORE1(ipnt) benutzten. Das liefert das Byte an der Adresse ipnt (Entsprechend CORE2 2Bytes und CORE4 4Bytes...). Das ist sogar etwas schneller als unter C!!!

Soviel dazu,

mfg M@rtin

bei Antwort benachrichtigen
thomas woelfer Anonym „Hast du schon mal Fortran programmiert oder sind das nur Vorurteile??Ich habe...“
Optionen

habe in den letzten 20 jahren eine ganze menge mit fortran programmiert; allerdings deutlich mehr mit c und noch wesentlich mehr mit c++. was das kopieren eines wertes statt einer adresse angeht: natuerlich macht das keinen unterschied wenn es sich um ein 32bit wort handelt, es macht aber sehr wohl einen unterschied wenn es sich um ein komplexers konstrukt handelt (z.b. im einfachsten fall ein array). was die typensicherheit angeht: man _kann_ einigermassen sicher arbeiten, dummerweise ist die praxis so das irgendwelche common bloecke vereinbart werden - da ist es dann nicht mehr weit her mit der typensicherheit. bei aufrufen von unterprogrammen hat fortran ueberhaupt keinen schutz, bei c/c++ muss man dem compiler explizit mitteilen wenn man eine typenumwandlung wuenscht - man muss also bewusst die umwandlung ausloesen: das ist sehr wohl ein funktionierender mechanismus. pointer braucht man uebrigens nicht nur aus performance gruenden, sondern dafuer eleganten code zu schreiben.

will dir deine begeisterung fuer fortran nicht nehmen - allerdings wirst du damit in der industrie eher auf unverstaendniss stossen...

WM_CHEERS
thomas woelfer

this posting contains no tpyos.
bei Antwort benachrichtigen
Anonym thomas woelfer „habe in den letzten 20 jahren eine ganze menge mit fortran programmiert...“
Optionen

Einen Array willst du doch wohl nicht auf den Stack schreiben, oder??? Da schreibt man sowie so nur den Pointer hin (und das mach fortran schon lange!)...

Na ja, Common-Blöcke sollte man wirklich besser nicht benutzten, aber in C/C++ gibt es sowas schließlich auch. Komischerweise sind mir in Fortran bisher fast nur Addressfehler (die nicht im Zusammenhang mit C-Programmen standen!) der Art Bereichsüberschreitungen beim Array passiert, obwohl ich sehr viel programmiere.

In C++ kann man auch schon mal einen tollen Adressfehler machen, wie z.B. im Zusammenhang mit DirectDraw. Da habe ich mal bei ReleaseDC ausversehen den Pointer auf das DC-Handle angegeben. Der Compiler merkt da nichts, weil der "Typ" HDC irgendwas mit LPVOID ist...

Apropros Typen, die sind in C ja wohl das Letzte. Jeder Trottel kann sich einen eigenen Typ "basteln", was aber meistens nur auf ein Umtaufen von vorhandenen Typen hinausläuft. Das steigert dann ganz besonders die Übersichtlichkeit und Lesbarkeit für Fremde... Sowas gibts in fortran zum Glück nicht.

Hast du schon mal ein fortran77-Programm auf einem anderen Computer mit einem ganz anderem Compiler neu übersetzte? Resultat: kein Fehler. Wenn man aber nur die Firma des C++-Compilers wechselt landet man oft bei einigen tausend fehlern, die meistens in falschen Includ-Dateien begrüdet liegen. Deshalb bin ich absolut gegen Includes, aber nur auf diesen Includes basiert in C die sogenannte Typprüfung. Normalerweise ist man nicht so doof und ruft ein Unterprogramm (pardon eine Funktion, Unterprogramme gibt's ja nicht mehr...) nicht mit falschen Argumenten auf, und wenn schon, dann merk man das bei guten Unterprogrammstrukturen normalerweise sehr schnell.

Ich habe mal einen Satz von einem C-Programmierer über sein neuestes Programm gelesen: "Das Programm ist in C programmiert, dabei sind Programmierfehler nicht zu vermeiden..." Nicht dass sich Programmierfehler ganz ausbügeln ließen, aber schau dir mal Windows an...

bei Antwort benachrichtigen
Krollie Anonym „Einen Array willst du doch wohl nicht auf den Stack schreiben, oder??? Da...“
Optionen

Hallo!
Ich bin selbst gerade dabei, C++ zu lernen, da ich denke, daß die Sprache aufgrund ihrer Verbreitung gute Zukunftschancen hat. Abgesehen bin ich von der Vielseitigkeit dieser Sprache beeindruckt (auch wenn mich die Komplexität noch gelegentlich erschlägt). Aber wenn Du Fortran so beeindruckend findest und Du ihm soviele Vorteile gegenüber C++ einräumst, mail mir doch mal ein GUT ausdokumentiertes Fortran-Programm, welches ich nachvollziehen kann (ich beherrsche nebenbei auch noch BASIC, Rexx, Turbo Pascal & Delphi etwas Intel-Assembler, ich bin also kein blutiger Anfänger mehr). Ich würde mir gerne mal ein Bild von dieser Sprache machen.
Greetings
Krollie

bei Antwort benachrichtigen
Anonym Krollie „Hallo!Ich bin selbst gerade dabei, C zu lernen, da ich denke, daß die Sprache...“
Optionen

E-Mail ist abgeschickt. Wenn mehr Interessenten da sind, können die sich unter martin-hi@gmx.de melden (Wie fügt man hier einen Link ein???)

mfg, M@rtin

bei Antwort benachrichtigen
thomas woelfer Anonym „E-Mail ist abgeschickt. Wenn mehr Interessenten da sind, können die sich unter...“
Optionen

naja, man fuegt einen link so ein wie das in html halt geht:

WM_HOPETHISHELPS
thomas woelfer

this posting contains no tpyos.
bei Antwort benachrichtigen
DocDooM Krollie „Hallo!Ich bin selbst gerade dabei, C zu lernen, da ich denke, daß die Sprache...“
Optionen

Hi Leute!!!

Ich hab mir mal alle drei C Programmiersprachen (C/C++/C--) angeschaut und bin zu dem entschluss gekommen
da doch lieber bei QuickBASIC 4.5 zu bleiben... das ist für meine Zwecke schnell genug und man kann in
kürzester Zeit so fast jede Aufghabe damit lösen :-)

Bis denne sacht
Markus Stehr

bei Antwort benachrichtigen
(Anonym) Anonym „Meinungen zu fortran“
Optionen

Is ja gruselig mit eurer Ahnung.

Fortran gegen C oder C++.
Hätte jemand von Euch einen Hauch Ahnung von Hardware/ X86.

Selbst Fortran würde diesen Fehler mitbringen.
Da das Abfangen eines General Exception Fault für jeden Compiler Pflicht ist.

Die Mühe C++ mit einem WaldWiesenFortran zu vergleichen ist brachialer Unsinn.
Wer sowas schreibt sollte erst mal beide Sprachen sprechen, Windows verstehen
und hierzu die Protected - Mode Mechanismen von 80x86 Prozessoren ergründen.
Aber nicht nur Ringverletztungen sind hier Schuld.
Der Speicherraum teilt sich ( 16 bit Applikation/ 32 Bit Applikationen / und Spiele, welche
unter Win 9.x noch laufen.).
Unter NT/Win2000 fliegen diese Zugriffe raus.
Da greift keiner mehr auf die Ring 0 Basis zu !
Dann sind wohl die meisten zufrieden. Oder net.
Jedenfalls, wird dieser Allgemeine Ausnahme Fehler ETWAS weniger auftreten.
Und unter Linux gibts ihn auch net. :-)))))))
Grüße Dragon

bei Antwort benachrichtigen