2009-03-28 11 views
5

Gibt es gute, portable, Open-Source-, High-Level-, statisch typisierte, imperative, objektorientierte, Garbage Collection, sichere Sprachen/Laufzeiten mit angemessener Leistung neben Mono und Java? Mono ist nett, aber es ist eine Microsoft-Technologie, und ich habe Angst davor, es zu benutzen (ich bin nicht sicher, wie vernünftig diese Angst ist). Das Problem mit Java ist, dass es einfach zu einfach ist (keine vorzeichenlosen Datentypen, keine Strukturen usw.).Open Source verwaltete Programmiersprachen

+0

"High-Level" ... "keine unsigned Datentypen, keine Strukturen". Er ... –

+0

Das Argument gegen Java sieht derzeit ziemlich schwach aus - unsigned Datentypen, Strukturen? –

+0

Die Verwendung von Strukturen macht Sinn. Es wäre wagemutig, Vektorobjekte in Java zu verwenden, um die Scheitelpunkte in einem Netz zu deklarieren, wenn man bedenkt, dass jedes Objekt einen Header von einigen Bytes Länge hat. Structs ermöglicht viel kompaktere Speicherung. –

Antwort

2

Ich möchte darauf hinweisen, 10, die eine Sprache auf der Syntax von C# basiert, aber die Ziele a C-Compiler (ähnlich Eiffel) und eine leichte, selbst gehostete Laufzeit. Es fehlt jedoch die Sammlung von Gewändern.

+0

Von was ich sehen kann, ist es wie VB6 - es verwendet Referenzzählung . Dies ist in vielen Anwendungen schlechter als GC. Ach, lass die Leute auf die harte Tour lernen! :) –

+0

Danke, dass du mir das gezeigt hast. Obwohl es keinen GC gibt, scheint es das perfekte Werkzeug für die GTK-Entwicklung zu sein. Kein hässlicher GObject C-Code! – Zifre

+1

Die Referenzzählung vergleicht besser mit Objective-C als Visual Basic 6, was aus anderen Gründen langsam war. –

9

Mono ist keine Microsoft-Technologie. .NET ist, aber Mono ist nicht - Mono ist eine Open-Source-Implementierung der internationalen Standards ECMA-334 und ECMA-335. Ja, sie stammen von Microsoft, aber Mono selbst ist nicht Microsoft-Technologie.

Nicht dass Mono eine Sprache ist, natürlich - C# ist die Sprache. Aber dann Sprachen sind nicht wirklich quelloffen oder nicht - Implementierungen sind.

Es hört sich so an, als hätten Sie wahrscheinlich eine irrationale Angst vor C# - und ebenso vor Java. Es gibt sicherlich Dinge, die ich gerne in Java sehen würde (und ich bevorzuge C#), aber es ist immer noch perfekt möglich, sehr wichtige Anwendungen darin zu schreiben.

+1

Das Problem mit Mono ist, dass eine Reihe von Leuten Microsoft (basierend auf vergangenem Verhalten) nicht trauen, etwas nicht zu tun, das Mono schraubt. – TofuBeer

+0

Sie sollten nicht erwarten, dass mono eine Kopie des .net-Frameworks sein wird, weil eine Menge fehlt. Genau wie nicht erwartet, dass Wine Windows zu 100% emuliert. – Roalt

+0

In der Tat. Und es gibt Dinge in Mono, die auch nicht in .NET sind. –

0

Es gibt immer Python und Ruby

+0

Sie scheitern am "statisch typisierten" Kriterium. –

+0

Das scheitern auch an der "vernünftigen Leistung" für viele Probleme. –

+1

C# und Java können auch bei "angemessener Leistung" für viele Probleme fehlschlagen. Welche Leistung angemessen ist, hängt vollständig vom Kontext ab. Scheitern trotzdem beim Tippen, also -1. –

2

Eiffel alle Ihre Anforderungen erfüllt

2

Auf der CLR gibt es Boo.

Boo ist eine neue objektorientierte statisch Programmiersprache für die Common Language Infrastructure mit einem Python inspiriert Syntax eingegeben und einer besonderen Fokus auf Sprache und Compiler Erweiterbarkeit

Die Boo Manifesto ist ein Guter Ausgangspunkt.

2

Nun, wird kein unsigned Datentyp in Java selten als ein Problem betrachtet.

Aber was ist mit Lisp - es war die Sprache, um Garbage Collection einzuführen, und wahrscheinlich die mächtigste Sprache überhaupt.

Überprüfen Sie die Leistung comparison von Peter Norvig (der Forschungsleiter von Google). Sie werden vielleicht überrascht sein, dass Lisp sogar C++ in einigen Bereichen und Java überhaupt übertrifft.

alt text

Allerdings scheint Lisp kein Hauptstrom Sprache zu sein - ich bin wondering warum ist das? Weil es irgendwie minimalistisch ist - es könnte wahrscheinlich nicht durch irgendeine aktuelle oder zukünftige Sprache in der Macht geschlagen werden.

(Ich denke, was C# oder Java so beliebt macht, ist nicht nur die Sprache, sondern die Bibliotheken.)

+0

Weil es sich wie eine Suppe liest, will niemand pflegen? –

+0

Lisp's Macht kommt von dem Mangel an vordefinierter Syntax und Struktur, aber die gleichen Dinge, die ihm seine Macht geben, sind auch die Dinge, die es schwer zu lesen und schwer zu lernen machen. – Grumbel

2

C++ mit einem garbage collector? Obwohl Sie Probleme mit Java haben, sind Sie nicht so sehr ein Show-Stopper (es sei denn, Sie können detailliert, warum Sie diese Dinge brauchen, auf den ersten Blick sind diese Argumente in der Regel nicht sehr solide, aber manchmal sind sie).

0

Zunächst ist Mono nicht Microsoft-Technologie. Zweitens gibt es nur zwei ernsthafte virtuelle Maschinen (VM) mit den genannten Features - .Net/Mono und Java. Aber, abgesehen von der Forderung der statisch-typisierten Sprache, können Sie die Aufmerksamkeit auf newcoming Parrot Virtual Machine (Wikipedia article about Parrot) lenken.

Und natürlich, Ruby, Python Erlang usw. werden auch Cross-Plattform-VM (für einzelne dynamische Sprache)

1

Wie kann man sagen, dass Java ist zu einfach?

Ok, einer der Gründe für die Entwicklung von Java ist, es weniger kompliziert zu machen als C++, das eine Seite mit mehr als 900 Seiten hat. Allerdings ist es viel komplizierter, als C.

Vor etwa 10 Jahren besuchte ich einen Kurs von Les Hatton und forscht ihn an machen Ihr C-Programm sicherer. Er argumentierte, dass sich kaum jemand an die 140 Seiten des C-Standards erinnern könne, daher wäre es außergewöhnlich schwierig, so etwas wie C++ zu verstehen.

Natürlich erfordert Ihr Ziel möglicherweise keine Sicherheit, aber wenn Sie es tun, ist es etwas zu erinnern.

0

Sie können sich die Programmiersprache D ansehen.

Aber um ehrlich zu sein? Ich würde vorschlagen, Mono/C# zu vermeiden. Warum? Viele Gründe ...

Auch für praktische Zwecke nehmen Sie Java oder C++.

Java ist so gut wie C#, auch wenn es ein bisschen anders ist. C++ ist genauso gut, weil 99% der Probleme von GC durch Referenzzählung gelöst werden, so ...

+0

-1 für keine Angabe der Gründe, weg von mono zu bleiben/C# –

+0

Ich wollte einfach nicht debattieren über FOSS, Vendor lock in und viele andere. Wahrscheinlich das wichtigste ist die Tatsache, dass Mono wird immer hinter .Net, in Funktionen Leistung und viele andere. Zum Beispiel: http://art-blog.no-ip.info/cppcms/blog/post/27 Also, FOSS sollte einfach nicht dort reinkommen – Artyom

0

Wenn Sie dies lernen möchten, um für einen Job besser geeignet zu sein, schlage ich vor, dass Sie entweder .NET (wenn Sie für eine Microsoft-Plattform gehen) oder Java (wenn Sie gehen wollen Plattformunabhängigkeit) und viele Codierungen durchführen. Beide sind sehr große Plattformen!

Alles andere wären Nischensprachen, die nur an wenigen Stellen verwendet werden. Das kann sehr nett sein, aber es ist unwahrscheinlich, dass Sie irgendwo einen Job finden, aber an diesen wenigen Orten.

+0

Ich mache mir nicht wirklich Sorgen um einen Job, ich suche nur eine gute Sprache für meine Freizeit. – Zifre

1

scala ist weniger ausführlich als Java und es läuft überall wo Java läuft, wie es zu Java Bytecode kompiliert. twitter hat einige seiner Kerninfrastruktur in scala neu implementiert.