Sprachen ohne GC



  • Geht es hier um irgendeinen Punktestand? Es ist eine sachliche Liste nativ compilierter Sprachen, ob sie GC haben oder nicht, kein Wettbewerb.

    Nein, kein Wettbewerb. Jedoch laesst "gaengig" viel Spielraum. Leider kann ich nicht sagen, ob ML wirklich "gaengig" ist oder Erlang kompiliert oder interpretiert wird.


  • Mod

    dd++ schrieb:

    SeppJ schrieb:

    Da ich Objective-C nicht selber spreche, habe ich einfach mal Google gefragt, das hat mir diese Info geflüstert.

    in Objective-C ist GC direkt in die Sprache integriert. man kann mit oder ohne GC programmieren. auf dem Eifohn kann man nur ohne GC abeiten, damit der Akku länger hält

    http://cocoasamurai.blogspot.de/2010/12/objective-c-memory-management-garbage.html

    Ich dachte da an:
    http://developer.apple.com/library/mac/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html
    (Ganz unten, leider kein direkter Link)

    knivil schrieb:

    Erlang kompiliert oder interpretiert wird.

    Zumindest ist es eher üblich, Erlang zu compilieren, auch wenn es bestimmt auch Interpreter gibt.

    Jedoch laesst "gaengig" viel Spielraum.

    Dann werfe ich mal das oben schon genannte Kriterium "wird von > 1 Million Menschen benutzt" in den Raum. Wobei in Retrospektive 1 Million sehr hoch klingt, da ich mal schätzen würde, dass es bloß ~10 Millionen Programmierer auf der Welt gibt. Sagen wir > 200,000 Menschen.



  • SeppJ schrieb:

    Wieso wird hier bei einer sachlichen Frage so verbissen gekämpft, als ob es darum ginge den Thread zu gewinnen?

    Weil deine erste Antwort unsachlich war und alle aufspringen, um dir zu widersprechen. Reine Vermutung.

    Antworten auf viele andere Antworten:

    Bashar schrieb:

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

    Visual BASIC ist das einzige noch nennenswert benutzte BASIC (es wird sogar recht viel benutzt) und wird nativ compiliert. Daher ist es auf der Liste.

    Dann schreib doch Visual BASIC, damit das klar ist. Es gibt so viele Basic-Implementationen, die möglicherweise alle was anderes machen.

    Überhaupt ist die Eigenschaft, eine Garbage Collection zu haben, in der Regel eine Frage der Implementation und nicht der Sprache. -- edit: Das ist natürlich i.A. falsch, da die Sprache bestimmt, ob man manuelle Speicherfreigaben machen muss.

    Stringhandling habe ich nicht dran gedacht, ist das wirklich eine richtige GC?

    Keine Ahnung, wann ist eine GC richtig? Jedenfalls dauert das auf dem C64er ein paar Minuten bis angeblich Stunden (siehe mein Link vorhin). Richtige Zeigergraphen gibts da natürlich nicht, also ist die Verfolgung der erreichbaren Objekte ziemlich trivial, es dürfte eher das Kompaktifizieren sein, was lange dauert.

    Visual Basic hat wie gesagt keinen GC. Visual Basic.NET hat dagegen logischerweise einen. Und wird eigentlich auch nativ compiliert, wenn auch über den Zwischenschritt der CIL.

    Bashar schrieb:

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

    Was ist daran so komisch, wenn man nur Sprachen erwähnt, die auch von > 1 Millionen Leute gesprochen werden?

    Dass die Frage nicht nach Mainstream-Sprachen, sondern nach Sprachen gestellt war. Auch dürfte der Informationsgehalt einer Antwort, die sich nur auf Sprachen bezieht, die eh jeder kennt, trivialerweise sehr gering sein.

    Ohne diese Einschränkung gibt es hunderte Sprachen, die wir erwähnen müssten, zu denen man aber auch nur schwer Informationen bekommt. Du darfst natürlich gerne eine Liste machen.

    knivil hat doch schon angefangen. Ich glaube auch nicht, dass es auf eine umfassende Liste wirklich ankommt.



  • Bashar schrieb:

    krümelkacker schrieb:

    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.

    Ich habe keine private Definition fuer GC. Ausserdem hab ich doch geschrieben, dass der GC fuers Stringhandling benoetigt wird. Lies einmal einen String von der Tastatur ein, schon hast du deinen dynamischen Speicher.

    Zur GC auf dem C64:

    http://www.c64-wiki.de/index.php/Garbage_Collection

    Krass. Da hab' ich nie etwas von mitbekommen, obwohl ich für diese Kiste mal Basic-Programme bastelte. Die Frage, was "GC" hier im Kontext bedeutet, zielte aber auch darauf ab, dass ich das Problem, Zeichenketten zu verwalten, längst nicht so schwer einschätze wie das, was "richtige GCs" tun, wenn sie auch noch Kreise finden wollen etc. Deswegen weiß ich nicht so richtig, ob der Begriff da für die Basic-Implementierung auf dem C64 da passt.



  • dd++ schrieb:

    SeppJ schrieb:

    Da ich Objective-C nicht selber spreche, habe ich einfach mal Google gefragt, das hat mir diese Info geflüstert.

    in Objective-C ist GC direkt in die Sprache integriert. man kann mit oder ohne GC programmieren. auf dem Eifohn kann man nur ohne GC abeiten, damit der Akku länger hält

    http://cocoasamurai.blogspot.de/2010/12/objective-c-memory-management-garbage.html

    Zeig uns mal die Sprachmittel, bitte?



  • Viele Konzepte sind gar nicht in der Sprachdefinition selbst festgelegt, sondern werden erst durch das Framework, also etwa Cocoa oder GNUStep, ermöglicht. Insbesondere ist das gesamte Laufzeitsystem nicht im Compiler implementiert, sondern besteht aus C-Funktionen. ... Daher ist eine Darstellung ohne das entsprechende Laufzeitsystem kaum denkbar und nicht sinnvoll. Originäre Objective-C-Schlüsselwörter erkennt man indessen an dem vorangestellten @.

    http://de.wikipedia.org/wiki/Objective-C



  • dd++ schrieb:

    Viele Konzepte sind gar nicht in der Sprachdefinition selbst festgelegt, sondern werden erst durch das Framework, also etwa Cocoa oder GNUStep, ermöglicht. Insbesondere ist das gesamte Laufzeitsystem nicht im Compiler implementiert, sondern besteht aus C-Funktionen. ... Daher ist eine Darstellung ohne das entsprechende Laufzeitsystem kaum denkbar und nicht sinnvoll. Originäre Objective-C-Schlüsselwörter erkennt man indessen an dem vorangestellten @.

    http://de.wikipedia.org/wiki/Objective-C

    Nun das der GC nicht Bestandteil der Sprache ist, weiß ich, wie du es mit dem Kommentar auch belegst - gut das wir darüber geredet haben, jetzt weiß du es auch.



  • SeppJ schrieb:

    Ich dachte da an:
    http://developer.apple.com/library/mac/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html
    (Ganz unten, leider kein direkter Link)

    sieht so aus, als hätte Apple nach jahrzehntelanger intensiver Forschung herausgefunden, daß GC nicht so die optimale Technik für die Softwareentwicklung ist

    Zeus schrieb:

    Nun das der GC nicht Bestandteil der Sprache ist, weiß ich, wie du es mit dem Kommentar auch belegst - gut das wir darüber geredet haben, jetzt weiß du es auch.

    solche Wortspielchen scheinen dir große Freude zu bereiten, das freut mich

    GC gehört genauso zu Objective-C wie unique_ptr und shared_ptr zu C++. beides ist Bestandteil des Standard Laufzeitsystems der jeweiligen Programmiersprache

    in C++ kann man auch GC verwenden. dazu benötigt man aber 3trd party Tools und Libs. deshalb ist GC kein Bestandteil von C++



  • dd++ schrieb:

    sieht so aus, als hätte Apple nach jahrzehntelanger intensiver Forschung herausgefunden, daß GC nicht so die optimale Technik für die Softwareentwicklung ist

    Hätten sie mich mal gleich gefragt.



  • dd++ schrieb:

    Zeus schrieb:

    Nun das der GC nicht Bestandteil der Sprache ist, weiß ich, wie du es mit dem Kommentar auch belegst - gut das wir darüber geredet haben, jetzt weiß du es auch.

    solche Wortspielchen scheinen dir große Freude zu bereiten, das freut mich

    GC gehört genauso zu Objective-C wie unique_ptr und shared_ptr zu C++. beides ist Bestandteil des Standard Laufzeitsystems der jeweiligen Programmiersprache

    in C++ kann man auch GC verwenden. dazu benötigt man aber 3trd party Tools und Libs. deshalb ist GC kein Bestandteil von C++

    Okok ich geb auf, du hast natürlich Recht. Der GC der erst seid ObjC 2.0 (2007) über ein Compilerflag anschaltbar ist und in den den nächsten Version wahrscheinlich zugunsten von ARC entfernt wird, ist ein integrativer Bestandteil der Sprache.


Anmelden zum Antworten