Echte Compiler

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Mathias
Beiträge: 6146
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Echte Compiler

Beitrag von Mathias »

Was gibt es gegenwärtig für Compiler, welche einen effizienten Code erzeugen ?
Ich kenne nur folgende C/C++, Delphi und FPC.

Die meisten Sprachen die kenne sind Interpreter, darunter gehören Java, C#, Pyhton, etc.
Zuletzt geändert von Mathias am Mo 6. Aug 2018, 20:38, insgesamt 1-mal geändert.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

indianer-frank
Beiträge: 134
Registriert: So 30. Nov 2008, 21:53

Re: Echte Compiler

Beitrag von indianer-frank »

Na ja, da wäre ja auch noch Delphi (oder ist das hier verboten?). Außerdem jede Menge Fortran und ADA. Laut Info unterstützt zB die GNU Compiler Suite neben C/C++ noch Fortran, Ada, und Go.

Mathias
Beiträge: 6146
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Echte Compiler

Beitrag von Mathias »

Na ja, da wäre ja auch noch Delphi (oder ist das hier verboten?).

Natürlich nicht, dies habe ich vergessen., ich werde es oben ergänzen.

Außerdem jede Menge Fortran und ADA.
Sind dies nicht sehr unbekannt Compiler ?
Da würde doch auch Oberon und Modula 2 dazu gehören oder ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Warf
Beiträge: 1907
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Echte Compiler

Beitrag von Warf »

Vieles geht mittlerweile über LLVM backend, da sich der compilerbau dann nicht mehr über Plattform spezifika Gedanken zu machen. Am Ende werden die aber auch echt kompiliert, also kann man auch noch Rust und Swift dazuzählen

Außerdem kann man afaik einige scriptsprachen wie python auch kompilieren (sogar recht gut da python typstreng ist gegenüber z.b. Javascript)

indianer-frank
Beiträge: 134
Registriert: So 30. Nov 2008, 21:53

Re: Echte Compiler

Beitrag von indianer-frank »

Mathias hat geschrieben:
Na ja, da wäre ja auch noch Delphi (oder ist das hier verboten?).

Natürlich nicht, dies habe ich vergessen., ich werde es oben ergänzen.

Außerdem jede Menge Fortran und ADA.
Sind dies nicht sehr unbekannt Compiler ?
Da würde doch auch Oberon und Modula 2 dazu gehören oder ?

Unbekannt ist relativ. Fortran ist neben Cobol einer der ältesten Compiler überhaupt und wird wie C/C++ ständig weiter entwickelt . Ein großer Teil der numerischen Algorithmen wird heute noch in Fortran geschrieben. Und viele C-Bibliothen verwenden einen Fortran-to-C-Übersetzer, weil es vielfacher ist, als stabilen bewährten Code neu zu erfindem.

Modula(-2) ist allerdings etwas angestaubt, zu Oberon-7 siehe https://en.wikipedia.org/wiki/Oberon_%2 ... #Oberon-07.

Und dann gibt es ja auch noch diverse Basic-Compiler (zB https://freebasic.net/)

Warf
Beiträge: 1907
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Echte Compiler

Beitrag von Warf »

indianer-frank hat geschrieben:Unbekannt ist relativ. Fortran ist neben Cobol einer der ältesten Compiler überhaupt und wird wie C/C++ ständig weiter entwickelt . Ein großer Teil der numerischen Algorithmen wird heute noch in Fortran geschrieben. Und viele C-Bibliothen verwenden einen Fortran-to-C-Übersetzer, weil es vielfacher ist, als stabilen bewährten Code neu zu erfindem.


Ja ist fortran nicht auch der defacto standard im high performance computing und in fast allen wissenschaftlichen Anwendungen z.B. der Physik?

Und Cobol wird bis heute im Bankwesen verwendet. Extrem Domänspezifisch, da werden die sprachen aber noch sehr viel eingesetzt. Ich würde sogar schätzen das mehr in Cobol entwickelt wird als Ada.

Mathias
Beiträge: 6146
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Echte Compiler

Beitrag von Mathias »

Und dann gibt es ja auch noch diverse Basic-Compiler (zB https://freebasic.net/)

Von dem habe ich auch schon gehört. Ich habe ihn gerade probiert, ein HelloWorld ist kleiner als das von FPC.
FreeBasic --> 22.9KB
FPC --> 176.6KB

Sogar ein kleines OpenGL Demo hat nur 23.2KB. :shock:
Dies wurde sogar auf Anhieb kompiliert, ohne irgendwelche Bibliotheken suche.
Da könnte C/C++ noch einiges abgucken, dort ist es eine Seltenheit, das etwas auf Anhieb geht. :wink:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

creed steiger
Beiträge: 957
Registriert: Mo 11. Sep 2006, 22:56

Re: Echte Compiler

Beitrag von creed steiger »

Ada ist halt in Raum und Luftfahrt stark.

Mathias
Beiträge: 6146
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Echte Compiler

Beitrag von Mathias »

creed steiger hat geschrieben:Ada ist halt in Raum und Luftfahrt stark.
Dies habe ich auch schon gehört, da angeblich Ada sehr zuverlässig arbeitet.
Auch ist sie sehr ähnlich zu Pascal.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Warf
Beiträge: 1907
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Echte Compiler

Beitrag von Warf »

Mathias hat geschrieben:Dies habe ich auch schon gehört, da angeblich Ada sehr zuverlässig arbeitet.
Auch ist sie sehr ähnlich zu Pascal.


Ist eine Art strikteres Pascal. So muss man z.B. bei einem end sagen was man quittiert z.B.

Code: Alles auswählen

function Minimum (A, B: Integer) return Integer is
begin
   if A <= B then
      return A;
   else
      return B;
   end if;
end Minimum;


Wollte mal Ada lernen, doch irgendwie hab ich nie so den anschluss an die Sprache gefunden. Ich schaue mir aktuell Oberon an, faszinierend das ein gesamtes Betriebsystem in 200kb Source files passt. Auch wenn ich irgendwie nicht so ganz verstehe wo ich das tatsächliche System herbekomme und nicht nur die Sources

mischi
Beiträge: 206
Registriert: Di 10. Nov 2009, 18:49
OS, Lazarus, FPC: macOS, 10.13, lazarus 1.8.x, fpc 3.0.x
CPU-Target: 32Bit/64bit

Re: Echte Compiler

Beitrag von mischi »

Mir ist neulich D als Sprache aufgefallen, die sehr schnellen Code erzeugt. Was ich so gesehen habe, sind C, D und Fortran die schnellsten. Aber wenn es darauf ankommt, sollte man seinen Code mit einem profiler überprüfen, wo der oder die Flaschenhälse sind und sich Gedanken über diese Stellen machen, ob es nicht schneller geht. Eine interessante Erfahrung mit altem Fortran-Code habe ich schon öfter mal zum Besten gegeben: Nach der Umwandlung von altem Fortran-Spaghetti-Code mit computed IFs und GOTOs in moderne IFs und Schleifen lief der Code schneller. Anscheinend konnte der Compiler den modernen Code besser optimieren. FPC ist aber gar nicht so schlecht, vor allem bei Intel. Ich bin schon auch gespannt, wie das mal mit dem llvm backend sein wird.
MiSchi macht die fink-Pakete

BeniBela
Beiträge: 306
Registriert: Sa 21. Mär 2009, 17:31
OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4)
CPU-Target: 64 Bit

Re: Echte Compiler

Beitrag von BeniBela »

creed steiger hat geschrieben:Ada ist halt in Raum und Luftfahrt stark.


Ob man da mit Pascalerfahrung gute Chancen auf einen Job bei der ESA hat?

wp_xyz
Beiträge: 4864
Registriert: Fr 8. Apr 2011, 09:01

Re: Echte Compiler

Beitrag von wp_xyz »

mischi hat geschrieben:Aber wenn es darauf ankommt, sollte man seinen Code mit einem profiler überprüfen, wo der oder die Flaschenhälse sind und sich Gedanken über diese Stellen machen, ob es nicht schneller geht.

Genau, da ist es ziemlich egal, welchen Compiler man benutzt. Die meisten Probleme sitzen in der Logik des Codes. Beliebtes Beispiel: Beim Durchlaufen der Records eines Dataset in der Schleife immer FieldByName aufrufen.

AndreasMR
Beiträge: 98
Registriert: Di 4. Aug 2015, 15:29
OS, Lazarus, FPC: Linux, Raspbian, Windows
CPU-Target: 64/32 Bit

Re: Echte Compiler

Beitrag von AndreasMR »

Hallo Mathias,

kürzlich habe ich mal in einem Beitrag einen Vergleich der Code-Effizienz von verschiedenen Programmiersprachen gesehen. Dabei wurden recht viele Programmiersprachen beleuchtet.

Erwartungsgemäß war der effizienteste Code der von Assembler erzeugte...

Die nächst effiziente Gruppe war die Welt der C-Sprachen. In diese Kategorie fallen auch so Sprachen wie COBOL. Ursache war, dass die Compiler Tool Chain aus COBOL C-Code erzeugt und sich dann der entsprechenden Reife der C-Compiler bedient.

Die pascaloiden Programmiersprachen waren gegenüber C nur unwesentlich ineffizienter.

Alle anderen Programmiersprachen erzeugen Code, der um wenige Vielfache mehr Zeit mit der Abarbeitung benötigt - nach oben offen. Bei so manchen Programmiersprachen drängt sich der Verdacht aus, dass in Wirklichkeit ein kleiner Alan Turing persönlich die Bits schiebt.

Beste Grüße

Andreas
Ubuntu 14.04 LTS / Raspbian / Windows: Lazarus ab 0.9 bis 3.0

Warf
Beiträge: 1907
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Echte Compiler

Beitrag von Warf »

AndreasMR hat geschrieben:Hallo Mathias,

kürzlich habe ich mal in einem Beitrag einen Vergleich der Code-Effizienz von verschiedenen Programmiersprachen gesehen. Dabei wurden recht viele Programmiersprachen beleuchtet.

Erwartungsgemäß war der effizienteste Code der von Assembler erzeugte...

Die nächst effiziente Gruppe war die Welt der C-Sprachen. In diese Kategorie fallen auch so Sprachen wie COBOL. Ursache war, dass die Compiler Tool Chain aus COBOL C-Code erzeugt und sich dann der entsprechenden Reife der C-Compiler bedient.

Die pascaloiden Programmiersprachen waren gegenüber C nur unwesentlich ineffizienter.

Alle anderen Programmiersprachen erzeugen Code, der um wenige Vielfache mehr Zeit mit der Abarbeitung benötigt - nach oben offen. Bei so manchen Programmiersprachen drängt sich der Verdacht aus, dass in Wirklichkeit ein kleiner Alan Turing persönlich die Bits schiebt.

Beste Grüße

Andreas


Ging es dabei nur um kompilierte sprachen oder um alle (also wurde auch die runtime von Java, C#, etc. vergliche). Denn bei nur Kompilierten sprachen ist das zu erwarten. als pascaloide fasst man normalerwise von Algol zu Oberon alles zusammen, sowie man unter C-Sprachen auch meist D, C++, etc. zusammenfasst. Das ding ist, dann bleiben praktisch keine anderen sprachen mehr übrig. Fortran wird afaik mittlerweile auch meist zu C kompiliert, und fast alle anderen modernen kompilierten sprachen die das nicht machen kompilieren zu LLVM (was wahrscheinlich auch zu C gezählt wurde).
Damit bleiben nur kleinere sprachen, welche von irgendwelchen Privatpersonen gebaut werden. Sowohl die großen C kompiler als auch die Pascalartigen Compiler sind meißt von größeren Teams von Profis gebaut.

Antworten