# Welche compilierbare Programmiersprache kann...

## Gekko

Hallo, ich wollte mal fragen, welche compilierbaren Programmiersprachen es gibt, die folgendes erfüllen:

Datentypen sind Objekte

ordentliche garbage collection

portabel sollt es sein

Mixins, Singletons

'Hello World' Binary kleiner 500k

RegExp

Typisierung wie ichs gerne hätte: z.B. wie in Ruby 1.to_s oder "1".to_i

schön wärs, wenn noch Konstrukte ähnlich den Records von Pascal existieren

GUI Bindings

Ich finde zwar Ruby wunderbar, allerdings wünsche ich mir die Geschwindigkeit von compilierten Programmen.

C# oder Sprachen, die unbedingt ein Framework oder ein VM ähnliches Ding wie Java oder Perl haben möcht ich nicht verwenden.

----------

## Gekko

http://www.digitalmars.com/d/overview.html

Habe gerade D gefunden. Mal reinlesen.

----------

## Cpt_McLane

warum nimmst du nicht pascal? mit lazarus hast du ne wunderbare ide. die programme lassen sich dann (einmal programmiert) sowohl auf linux mit fpc als auch auf windows mit fpc kompilieren... die größe der binarys hännngt natürlich von den kompiler-flags ab bzw. kann durch entsprechende tools welche die eincompilierten bibliotheken entfernen und durch laufzeit-bindings ersetzen reduziert werden...

http://www.lazarus.freepascal.org/

----------

## Anarcho

Also wenn ich mich nicht irre kannst du das auch alles mit C++ machen, ausser die Typisierung mit 1.to_s.

Ich persönlich finde C++ ziemlich gut.

----------

## Mr_Maniac

In welcher Programmiersprache ist ein "Hello World"-Programm bitte 500K groß?

Nun ja... Bei VB könnte ich mir das fast schon vorstellen  :Wink: 

----------

## Carlo

 *Anarcho wrote:*   

> Also wenn ich mich nicht irre kannst du das auch alles mit C++ machen, ausser die Typisierung mit 1.to_s.

 

C++ fällt schon bei den ersten beiden Punkten raus

 *Anarcho wrote:*   

> Ich persönlich finde C++ ziemlich gut.

 

Was hat das mit der Fragestellung zu tun?

----------

## nic0000

 *Carlo wrote:*   

> 
> 
>  *Anarcho wrote:*   Ich persönlich finde C++ ziemlich gut. 
> 
> Was hat das mit der Fragestellung zu tun?

 

Er hat seine persönliche Meinung eingebracht. 

@carlo

Du bist manchmal echt ein Stinkstifel  :Wink: 

grüße

nico

----------

## Gekko

 *Mr_Maniac wrote:*   

> In welcher Programmiersprache ist ein "Hello World"-Programm bitte 500K groß?
> 
> Nun ja... Bei VB könnte ich mir das fast schon vorstellen 

 

Naja, das war ziemlich metaphorisch, ich gebs ja zu. Ich kanns nicht leiden, wenn tausend Sachen im Binary drin sind, die kein Mensch brauchen kann. Ich glaube ich werde mir mal D genauer ankucken, an Ada bin ich grad dran, nur gehen mir da wieder einige Dinge ab die ich gerne hätte.

Ein Ruby Compiler wäre perfekt für mich...

Zu Pascal: Nein, nein, nein   :Laughing: 

Das liegt daran, dass mir Pascal nicht liegt, ichs nicht leiden kann und überhaupt und ausserdem. Alles nur Pascal nicht.   :Confused: 

----------

## equinox0r

 *nic0000 wrote:*   

> 
> 
> Du bist manchmal echt ein Stinkstifel 

 

lol 

*scnr* nit persönlich nehmen

----------

## Cpt_McLane

 *Gekko wrote:*   

> 
> 
> Zu Pascal: Nein, nein, nein  
> 
> Das liegt daran, dass mir Pascal nicht liegt, ichs nicht leiden kann und überhaupt und ausserdem. Alles nur Pascal nicht.  

 

*grins*

ich lebe quasi von pascal... programmiere beruflich in delphi und privat mit lazarus...

hab damals mit borland turbo pascal 7.0 programmierung gelernt und seit delphi hat pascal nen echt guten sprung in sachen objekte gemacht...

aber jedem das seine... gerade bei programmiersprachen mag ich diese "glaubenskriege" nicht...

----------

## Anarcho

 *Carlo wrote:*   

>  *Anarcho wrote:*   Also wenn ich mich nicht irre kannst du das auch alles mit C++ machen, ausser die Typisierung mit 1.to_s. 
> 
> C++ fällt schon bei den ersten beiden Punkten raus

 

Das ist so leider nicht ganz richtig denn es ist sehr wohl möglich unter C++ Datentypen als Objekte zu verwenden. Es ist nur nicht jeder Datentyp schon implementiert, aber z.b. die String-Klasse sehr wohl. Ausserdem ist es nicht schwer sich ein Interteger-Objekt oder ein Float-Objekt zu schreiben und mit den richtigen Überladungen der Operanden erhält man ein Objekt welches sich genauso verwenden lässt. Das erlaubt natürlich nicht das man dann auf Konstanten Methoden anwenden kann (23.to_str) aber das schrieb ich ja bereits. Das müsste man aber auch mittles IntegerClass(23).toString lösen können.

Einzig beim Garbage-Collector hast du recht, aber es zeugt sowieso von schlechtem Programmierstil sich auf den GC zu verlassen, trotzdem sehe ich den Sinn eines GC ein nur finde ich das keinen besonders ausschlaggebenden Punkt für ein Programmiersprache, ausser man ist extrem faul.

 *Carlo wrote:*   

>  *Anarcho wrote:*   Ich persönlich finde C++ ziemlich gut. 
> 
> Was hat das mit der Fragestellung zu tun?

 

Wurde schon beantwortet.

Gegenfrage: Welchen Mehrwert hat dein Posting für den OT?

P.S.: Ist halt nicht jeder Python-Fetischist   :Twisted Evil: 

EDIT:

Ich habe mich sogar noch vertan, denn laut dem hier gibt es sogar schon in der GNU C++ Librarie eine Integer und Float Class. Da aber anscheinend noch eine toString Methode fehlt kann man diese Klasse einfach ableiten und die Methode hinzufügen.

----------

## c_m

 *Anarcho wrote:*   

> EDIT:
> 
> Ich habe mich sogar noch vertan, denn laut dem hier gibt es sogar schon in der GNU C++ Librarie eine Integer und Float Class. Da aber anscheinend noch eine toString Methode fehlt kann man diese Klasse einfach ableiten und die Methode hinzufügen.

 

Wie du schon sagtest : "in der GNU C++ Librarie"

Somit fällts flach, weills kein offizieller bestandteil der Sprache ist (ISO genormt).

Außerdem find ich deine Argumentation schwammig! Klar kann ich mir alle Objekte und nen GC selbst bauen aber was hat das mit der Frage zu tun? Es wurde nicht gefragt ob man sie damit bauen kann, sondern ob es sie gibt.

----------

## AlArenal

Was meint der Autor denn mit "kompilierbar"?

Ich bin Java-Entwickler und da wird der Sourcecode wird auch kompiliert.. nur eben nicht nativ (geht allerdings mit Excelsior JET bei Hinzulinken des JRE auch..).. Wie  wäre es mit Smalltalk?  :Wink: 

Eigentlich kannst du deine Punkte bei Java als abgehakt betrachten, nur obigen Punkt gälte es zu klären. Zur Not gibts ja auch noch den GCJ, allerdings habe ich damit gar keine Erfahrung, auch in Bezug auf die Größe der hinzugelinkten Libs... Die eierlegende Wollmilchsau unter den Sprachen gibt es noch nicht, aber Java ist schon verdammt nah dran  :Wink: 

----------

## Sas

Für Smalltalk gilt im Bezug auf die VM natürlich das gleiche wie für Java.

Zwar gibt es mit Smalltalk-MT und SOAR native code compiler für x86 und RISC, aber wie gut die funktionieren und wie groß die erzeugten Binaries dann sind, ist natürlich eine andere Frage.

----------

## Hilefoks

Moin,

leider bieten aber gerade Sprachen die eine VM nutzen alles was du möchtest. Speziell den Garbage Collector und die portabilität von Programmen erreichen meiner Meinung nach nur Sprachen wie Python, Java, C# und Co.

Was genau stört dich den so an einer VM? Und was in etwa möchtest du mit der gesuchten Sprache umsetzen?

Mfg Hilefoks

----------

## Carlo

 *Anarcho wrote:*   

> Das ist so leider nicht ganz richtig denn es ist sehr wohl möglich unter C++ Datentypen als Objekte zu verwenden.

 

Das ist eine andere Aussage, als "Datentypen sind Objekte". C++ ist eben keine echte OO Sprache ala Eiffel oder Smalltalk.

 *Anarcho wrote:*   

> Einzig beim Garbage-Collector hast du recht, aber es zeugt sowieso von schlechtem Programmierstil sich auf den GC zu verlassen, trotzdem sehe ich den Sinn eines GC ein nur finde ich das keinen besonders ausschlaggebenden Punkt für ein Programmiersprache, ausser man ist extrem faul.

 

Der wesentliche Aspekt eines GC ist, sich auf die Aufgabe zu konzentrieren zu können und bestimmte Programmierfehler - die ständig als Sicherheitslücken auftauchen - gar nicht erst zuzulassen, deren Vorhandensein man eher als Faulheit sich auf "neue" Paradigmen einzulassen und als schlechten Programmierstil bezeichnen könnte. Das betrifft vorwiegend C/C++ Frickler.

 *Anarcho wrote:*   

> Gegenfrage: Welchen Mehrwert hat dein Posting für den OT?

 

Zumindest habe ich mir im Gegensatz zu Dir Gedanken gemacht, welche Sprache wohl in Frage kommen würde.

 *Anarcho wrote:*   

> P.S.: Ist halt nicht jeder Python-Fetischist  

 

Hm, mich trifft's nicht. Es gibt viele elegante Sprachen. Ich verstehe nur nicht, wie man - sofern man nicht low level programmieren muß - sich heute noch freiwillig mit C/C++ rumschlägt. Den VMs gehört definitiv die Zukunft.

----------

## Anarcho

 *Carlo wrote:*   

>  *Anarcho wrote:*   Das ist so leider nicht ganz richtig denn es ist sehr wohl möglich unter C++ Datentypen als Objekte zu verwenden. 
> 
> Das ist eine andere Aussage, als "Datentypen sind Objekte". C++ ist eben keine echte OO Sprache ala Eiffel oder Smalltalk.
> 
>  *Anarcho wrote:*   Einzig beim Garbage-Collector hast du recht, aber es zeugt sowieso von schlechtem Programmierstil sich auf den GC zu verlassen, trotzdem sehe ich den Sinn eines GC ein nur finde ich das keinen besonders ausschlaggebenden Punkt für ein Programmiersprache, ausser man ist extrem faul. 
> ...

 

Naja, dabei ist vieles einfach Ansichtssache. Das Python, Java und Co ihre Berechtigung haben bestreite ich ja auch nicht. Nur wollte ich mit meinem ursprünglichen Post nur darauf hinweisen das das meiste auch mit C++ möglich ist. Das der Aufwand dafür höher ist als bei manchen anderen Sprachen stand nicht zur Debatte aber manchmal lohnt die Mühe.

Leider ist C++ in der Tat keine reine OOP Sprache, aber es setzt trotzdem so gut wie alle Aspekte um die dazu gehören (das was die Sache "kaputt" macht ist die Kompatibilität zu C). Und sehr viele andere OOP Sprachen sind auch keine "reinen" OOP Sprachen. 

Zum Thema GC kann man sich hier wahrscheinlich bis in alle Ewigkeit streiten was aber dem OP nicht viel bringt. Ich bin eben der Meinung das man ruhig mal ohne programmieren sollte weil man dann lernt ein wenig besser mit seinem virtuellen Müll umzugehen und das schadet bei keiner Programmiersprache denn auch der GC macht mal fehler bzw. fängt nicht immer alles ab (eigene Erfahung bei VO).

Leider hast du dem OP überhaupt nicht geholfen denn deinen Tipp zur Programmiersprache kann ich in deinen Posts leider nicht finden.

Und das C/C++ Frickelei sein soll zeigt eher das du davon nicht viel Ahnung hast denn was meinst du denn mit welchen Sprachen die VMs geschrieben sind? Sicher nicht mit Java. Und wenn man lieber Hardware-nah programmiert dann wird man mit Java & Co eben nicht so weit kommen. Das ist halt mehr für die User-Programme gedacht und dort auch durchaus erfolgreich da so gut wie plattformübergreifend ausführbar.

Daher hängt es nachwievor vom Einsatzzweck ab welche Sprache man verwendet und ein generelles Schlechtreden einer Sprache ist eher Ignoranz als Weissheit. 

Und da es verdammt schwer wird eine Sprache zu finden die alle Punkte der Liste des OP befriedigt wollte ich halt eine weitere Alternative nennen. Kompromisse wirst auch du immer eingehen müssen. 

Und jetzt lass uns den Kindergarten hier beenden, führt doch zu nichts.

----------

## Carlo

 *Anarcho wrote:*   

> Leider hast du dem OP überhaupt nicht geholfen denn deinen Tipp zur Programmiersprache kann ich in deinen Posts leider nicht finden.

 

Ich kenne keine Programmersprache die die Anforderungen zu 100% erfüllt (wobei ich hello world binary <500k als Anspruch werte keine Vm im Hintergrund laufen zu haben).

 *Anarcho wrote:*   

> Und das C/C++ Frickelei sein soll zeigt eher das du davon nicht viel Ahnung hast denn was meinst du denn mit welchen Sprachen die VMs geschrieben sind? Sicher nicht mit Java. Und wenn man lieber Hardware-nah programmiert dann wird man mit Java & Co eben nicht so weit kommen. Das ist halt mehr für die User-Programme gedacht und dort auch durchaus erfolgreich da so gut wie plattformübergreifend ausführbar.
> 
> Daher hängt es nachwievor vom Einsatzzweck ab welche Sprache man verwendet und ein generelles Schlechtreden einer Sprache ist eher Ignoranz als Weissheit.

 

Du hast Probleme bei Lesen. Das was ich geschrieben habe, impliziert nicht das, was Du meinst, was ich wohl geschrieben habe.

----------

## Anarcho

 *Carlo wrote:*   

>  *Anarcho wrote:*   Und das C/C++ Frickelei sein soll zeigt eher das du davon nicht viel Ahnung hast denn was meinst du denn mit welchen Sprachen die VMs geschrieben sind? Sicher nicht mit Java. Und wenn man lieber Hardware-nah programmiert dann wird man mit Java & Co eben nicht so weit kommen. Das ist halt mehr für die User-Programme gedacht und dort auch durchaus erfolgreich da so gut wie plattformübergreifend ausführbar.
> 
> Daher hängt es nachwievor vom Einsatzzweck ab welche Sprache man verwendet und ein generelles Schlechtreden einer Sprache ist eher Ignoranz als Weissheit. 
> 
> Du hast Probleme bei Lesen. Das was ich geschrieben habe, impliziert nicht das, was Du meinst, was ich wohl geschrieben habe.

 

Ich glaube den Hut kannst du dir auch überstreifen.

Unter anderem wirfst du mir vor ich hätte mir keine Gedanken gemacht welche Sprache dem OP helfen könnte (was ich mit meinem Vorschlag C++ durchaus getan habe, stell dir vor) aber selber hast du bisher nicht einen Tipp abgegeben, daher gehe ich wohl davon aus das dein Tag heute wenig erbaulich war und du daher hier rumstänkern möchtest. Falls nicht warte ich auf Argumente und sollte ich deinen Post tatsächlich falsch verstanden haben dann bitte ich um Aufklärung, schliesslich möchte ich ja nicht dumm sterben und bin durchaus bereit mich korrigieren zu lassen.

Eine Liste der Gründe warum man auch heutzutage noch C++ Programmieren sollte erspar ich mir, das könnte länger dauern...

EDIT: Um die Liste mal mit C++ durchzugehen:

Datentypen sind Objekte möglich, aber höherer Aufwand

ordentliche garbage collection nein

portabel sollt es sein ja

Mixins, Singletons Mixins eingeschränkt, singletons ja

'Hello World' Binary kleiner 500k definitiv (~13k)

RegExp ja, mit der entsprechenden Lib

Typisierung wie ichs gerne hätte: z.B. wie in Ruby 1.to_s oder "1".to_i leicht anders, z.b. String("11").to_int

schön wärs, wenn noch Konstrukte ähnlich den Records von Pascal existieren ja, mit structs

GUI Bindings ja

Je nachdem wo man die Schwerpunkte setzt ist also C++, so finde ich, durchaus eine Alternative.

Aber ich muss zugeben das D auch sehr gut klingt, damit werde ich mich mal befassen.

----------

## Hilefoks

könntet ihr euren Disput bitte auf PM, IM oder ähnliches verlagern. Ihr habt durchaus brauchbare Antworten gepostet, - aber langsam hat das jetzt nichts mehr mit dem Titel dieses Thread zu tun. 

Mfg Hilefoks

----------

