Sprachen ohne GC



  • Welche Sprachen außer c/c++ gibt es, die native compilen und keine garbage collection haben?



  • Ada, altes Objective-C, C--, Assembler, verschiedene ILs
    Angst vor GC??


  • Mod

    So ziemlich alle Sprachen die zu nativem Code compiliert werden. Die Sprachen mit GC sind entweder (interpretierte) Scriptsprachen oder übersetzen in einen Zwischencode der in einer virtuellen Maschine läuft (in der dann auch die GC läuft). Irgendjemand wird jetzt gewiss eine exotische Ausnahme nennen.



  • SeppJ schrieb:

    So ziemlich alle Sprachen die zu nativem Code compiliert werden. Die Sprachen mit GC sind entweder (interpretierte) Scriptsprachen oder übersetzen in einen Zwischencode der in einer virtuellen Maschine läuft (in der dann auch die GC läuft). Irgendjemand wird jetzt gewiss eine exotische Ausnahme nennen.

    In C,C++,Ada,Objective-C,C--,Assembler,Maschinensprache kann man auch mit GC benutzen (zum Teil sogar nativ unterstützt),
    aber stimmt schon ziemlich Exotisch benutzt kein Mensch.



  • Irgendjemand wird jetzt gewiss eine exotische Ausnahme nennen.

    Es gibt zu viele Ausnahmen: Haskell, Scheme, ML, Lisp, ...



  • gary1195 schrieb:

    Angst vor GC??

    Ja, ich researche low latency graphics engines und eine GC würde mir da einen großen Strich durch die Rechnung machen. Es sei denn es gibt GC's die für realtime Anwendungen geeignet sind.

    Ich sehe keine wirkliche Alternative zu C++.
    Rust sieht allerdings ganz interessant.



  • exotische Ausnahme: Objective-C zur Sprache des Jahres gekürt
    http://www.heise.de/developer/meldung/Objective-C-zur-Sprache-des-Jahres-gekuert-1405610.html
    Objective-C kann man nicht ohne GC benutzen



  • GC würde mir da einen großen Strich durch die Rechnung machen

    Also es gibt auch Realtime Java ... GCs sind jetzt nicht das Problem. Und Realtime im Zusammenhang mit dynamischer Speicheranforderung spielt in der gleichen Liga wie Realtime Garbage Collection.



  • dd++ schrieb:

    exotische Ausnahme: Objective-C zur Sprache des Jahres gekürt
    http://www.heise.de/developer/meldung/Objective-C-zur-Sprache-des-Jahres-gekuert-1405610.html
    Objective-C kann man nicht ohne GC benutzen

    Doch sicher. Auf dem IPhone gibst es kein GC.



  • Das hat er bestimmt auch nicht ernst gemeint. Denn so wenig Ahnung kann man nicht haben.



  • knivil schrieb:

    Irgendjemand wird jetzt gewiss eine exotische Ausnahme nennen.

    Es gibt zu viele Ausnahmen: Haskell, Scheme, ML, Lisp, ...

    Die erste Sprache die einen GC hatte, bzw. der erste GC überhaupt, war ja wohl für Lisp.



  • Cybertec schrieb:

    knivil schrieb:

    Irgendjemand wird jetzt gewiss eine exotische Ausnahme nennen.

    Es gibt zu viele Ausnahmen: Haskell, Scheme, ML, Lisp, ...

    Die erste Sprache die einen GC hatte, bzw. der erste GC überhaupt, war ja wohl für Lisp.

    Sonst wärs ja auch keine Ausnahme.



  • Das stimmt wohl. Wobei man ja dann anders fragen müsste, nämlich was sind die Ausnahmen die mit GC nativ kompilieren.



  • Cybertec schrieb:

    Das stimmt wohl. Wobei man ja dann anders fragen müsste, nämlich was sind die Ausnahmen die mit GC nativ kompilieren.

    Ausnahmen: Haskell, Scheme, ML, Lisp, ...

    Gibt sogar interpretierte Sprachen ohne GC: Perl (ja, dort ist RAII möglich), tausende Shell-Script-Sprachen.



  • knivil schrieb:

    GC würde mir da einen großen Strich durch die Rechnung machen

    Also es gibt auch Realtime Java ... GCs sind jetzt nicht das Problem.

    Wie du sicher weißt, hat realtime wenig mit low latency zu tun. Und GCs können da ganz sicher ein Problem sein. Je nach Speichermengen, mit denen da herumgeworfen wird, kann es definitiv sinnvoll sein, die Kontrolle über die Speicherverwaltung zu behalten.


  • Mod

    Dann werden wir doch mal konkret, damit die Frage endgültig beantwortet ist. Halbwegs gängige(!) Sprachen die zu nativem Code übersetzt werden:

    • Assembly -> kein GC
    • BASIC -> kein GC
    • C -> kein GC
    • C++ -> kein GC
    • COBOL -> kein GC
    • Delphi/Pascal -> kein GC
    • FORTRAN -> kein GC
    • Lisp -> GC
    • Objective-C -> optionale GC (deprecated!)

    Ich hoffe, ich habe keine wichtige compilierte Sprache vergessen. Ich bin schon runter gegangen zu ein paar Sprachen, die ich exotisch nennen würde (Cobol, Fortran). Was noch seltener ist, darf als Exot gelten, der hier im Thread nicht wichtig ist.



  • BASIC ist eigentlich die klassische Interpretersprache, und hat auch (fürs Stringhandling) einen GC. Was macht die in deiner Liste?

    Was noch seltener ist, darf als Exot gelten, der hier im Thread nicht wichtig ist.

    Nur in dem von deiner komischen Bemerkung aufgespannten Subthread nicht. Der OP macht nicht diese Einschränkung.



  • fdfdg schrieb:

    Wie du sicher weißt, hat realtime wenig mit low latency zu tun. Und GCs können da ganz sicher ein Problem sein.

    Bitte nicht nur den ersten Satz lesen ...

    Ja, ich researche low latency graphics engines und eine GC würde mir da einen großen Strich durch die Rechnung machen. Es sei denn es gibt GC's die für realtime Anwendungen geeignet sind.



  • Bashar schrieb:

    BASIC ist eigentlich die klassische Interpretersprache, und hat auch (fürs Stringhandling) einen GC. Was macht die in deiner Liste?

    Was verstehst du unter "GC" in diesem Kontext? Meine Basic-Zeit ist sehr lang her. Ich kann mich nicht mal dran erinnern, ob es möglich war, dynamisch Speicher zu reservieren. Aber ich hatte irgendwann mal QuickBasic, was mir unter DOS auch exe-Dateien ausspuckte. Das würd mich schwer wundern, wenn es da so etwas wie einen Garbabe Collector gegeben hätte.

    Bzgl Delphi: In den ersten Versionen (Borlands Objekt-Pascal) gab es sicher keine GC. Bei den jüngsten Inkarnationen bin ich mir da aber nicht mehr so sicher.

    Für Haskell benutzt man GC.

    Simula und SmallTalk haben, soweit ich weiß, auch noch GC. Allerdings weiß ich nicht, wie es da mit dem Kompilieren aussieht oder ob das auch interpretiert wird.

    Dass bei Objective-C GC deprecated ist, wusste nicht nicht. Interessant.



  • SeppJ schrieb:

    [*]C++ -> GC wird unterstützt (seit C++11)

    FTFY.

    Ausserdem ist in deiner Liste keine Programmiersprache neuer als 30 Jahre, weshalb sie etwas unrepräsentativ ist.

    Neue native C-like Sprachen (D, Rust, Go, etc.) haben alle einen GC.
    Funktionale Sprachen sind den C-Sprachen schon seit jeher voraus, diese hatten schon früher einen GC. Ein GC ist nämlich schneller als shared_ptr und Voraussetzung für viele nette Sachen wie Closures. GC+RAII=awesome. Haskell hat auch RAII-Strukturen.


Anmelden zum Antworten