2009-07-08 4 views
16

Die ECMAScript-Arbeitsgruppe hat begonnen, an der nächsten Ausgabe der Sprache zu arbeiten. Was können sie von Ruby lernen?Was kann JavaScript von Ruby lernen?

+16

Was ist JavaScript? Ist das nicht die VM, auf der JQeury läuft? – balpha

+4

Vage Frage, und ich bin mir nicht sicher, warum es auf Ruby zentriert ist. (JavaScript könnte von vielen Sprachen lernen, warum speziell Ruby?) –

+1

Art einer unsinnigen Frage imho. Warum sollten sie etwas von Ruby lernen? Warum nicht von C#? oder SQL? Die zwei Sprachen sind in völlig unterschiedlichen Problembereichen. – annakata

Antwort

15

Dies ist eigentlich eine viel schwierigere Frage als es zuerst erscheint. Der Hauptgrund dafür ist, dass es sich als sehr schwierig erwiesen hat, Browser-Anbieter zu zwingen, das Haustier oder die bevorzugten Funktionen von Sprachenthusiasten, Benutzern, anderen Anbietern oder Akademikern ohne sehr gute Begründungen zu implementieren . So kam es, dass wir mit der ES4-Spezifikation ziemlich tot auf dem Tisch lagen, was zu einer viel weniger ambitionierten (wenn auch immer noch ziemlich tollen) ES Harmony führte. Eine Sprache wie JavaScript, die solch irrwitzig schwierige politische Implementierungs- und Implementierungsprobleme hat, kann einfach nicht die Art von großartiger experimenteller Spielwiese sein, die Ruby während seines größten Teils seines Lebens war. Jeder, der es-discuss (die ECMAScript-Sprachentwicklungs-Mailingliste) verfolgt hat, hat wahrscheinlich schon bemerkt, dass es viele Monate der Debatte und des Experimentierens braucht, um nur allgemeine Sprachmerkmale zu artikulieren und zu vereinbaren, wie in letzter Zeit das Überladen von Operatoren Lambda-Notation bilden.

Vielleicht ist es zu viel verlangt von einer Arbeitsgruppe eine Spezifikation zu finden, die auf jedes Gerät auf dem Planeten zielt? An der Oberfläche scheint es, dass es eine sehr enge Gruppe von Lektionen ist, sogar die sozialen, die leicht von Ruby auf JavaScript übertragen werden können.

Zu diesem Zweck und um die Belastung von Brendan Eich und seiner Gruppe zu erleichtern:

Eines der am dringendsten nützlich „Lektionen“ in die Sprache von einer von Ruby (oder LISP) inspiriert Perspektive zu bringen, wäre Sprachformbarkeit. Die Fähigkeit, neue Funktionen, Syntax-Hacks und domänenspezifische Sprachen einzuführen, die nicht von einer inneren Kabale von Spezifizierern stammen, wäre unglaublich wertvoll. Erlaube der Sprache, ein guter Ort für modulare Erweiterungen der Sprache zu sein, und dass diese Erweiterungen selbst gehostet sind, um Fragmentierungsrisiken zu minimieren und um zu ermöglichen, dass diese Änderungen durchdringen und vermischt werden, etc.

Solche Biegsamkeit würde die Gemeinschaft im Allgemeinen ermöglichen, Lehren aus allen möglichen Richtungen anwenden und lassen Sie das Internet im Laufe der Zeit zu entscheiden, welche Lehren sich lohnen, aus der Sprache usw. Wir haben bereits eine hohe Rate von Iteration haben und Evolution geschieht an den anderen Enden dieses Sandwichs, dh in Browsern selbst (z. B. HTML5) und in js-Bibliotheken. Wenn dies auf sprachlicher Ebene näher geschehen könnte, könnten wir einige sehr interessante Dinge sehr schnell passieren sehen.

[Nachtrag/edit]:

Die Sprache muss in der Lage sein, deutlich morphen, weil eine kleine Gruppe von Menschen einfach nicht in der Lage ist, alle Dinge zu antizipieren werde es jemals verwendet werden. Ein Thema, das oft auf es-discuss geht, ist die zugrunde liegende Strömung, "eine Sprache für die nächsten 10-15 Jahre" zu entwerfen. IMHO, das ist ein unglaublich unrealistisches Ziel. Wenn Sie es nicht bauen, wird das System eine Alternative lange vor der geplanten Lebensdauer entwickeln.Mit der immensen Beschleunigung der Javascript-Engine/JIT-Technologie in letzter Zeit sehen wir bereits die ersten Anzeichen dafür, dass neue Sprachen geschrieben werden über JavaScript oder in Echtzeit in JavaScript kompiliert werden. Ja, auch in Ruby: http://hotruby.yukoba.jp/

+2

HotRuby war vor V8 und JIT JavaScript. Aber du machst einen guten Punkt. Es ist nichts falsch daran, dass JS die Assemblersprache des Webs ist. Es ist gut, dass es schnell genug wird, um das zu sein. – Nosredna

+0

Danke dafür. Ich denke, was ich versuche zu sagen ist, dass es unsichtbare Trends gibt, die sich auf verschiedene Arten manifestieren, nicht unbedingt in irgendeiner koordinierten Art und Weise. :) Ich stimme dem Assembler Teil zu. Geschwindigkeiten * werden * ziemlich verrückt. – Maciek

4

Ein Name, der wie ein Edelstein klingt, ist viel besser als ein Name, der wie eine Hautkrankheit klingt.

Aber nicht nennen Sie Ihre neue Sprache nach heißeste Sache der heutigen (das ist, wie wir alle in erster Linie in dieses „Java“ Skript Schlamassel ....)

+0

was für eine Flip-Antwort! Ich bin froh, dass viel ernstere Antworten aufgetaucht sind. –

+0

Aber immer noch wahr. Wie oft sehen wir Fragen mit "Java", wenn sie über ECMAscript sprechen? –

5

Umarmungs-Funktion Programmierung, versuchen Sie nicht, es in statischen Sprache zu begraben Konstrukten

-2

ich nicht zu viel sehen kann, dass es von Ruby lernen könnten. Die Standardgruppe hat der Sprache bereits ein Mittel gegeben, um Nachrichten oder Nachrichten an den Prototyp erneut zu senden. Die method_missing-Funktionalität ist vielleicht cool zu implementieren, aber es ist nicht so notwendig wie bessere refelction-Möglichkeiten.

4

Erstellen Sie eine Standard-Bibliothek um die starke Verwendung von Closures, sowohl für die Sammlung Iteration und für die Ressource/Ressource zu erwerben/Ressourcenmuster zu entsorgen. Das ist einer der größten Gewinne von Ruby, imo. Natürlich ist ein Teil dessen, was dies ermöglicht, die brillante Entscheidung, jeder Methode einen "freien" Abschlussparameter mit syntaktischer Unterstützung zu geben, so dass es in JavaScript wahrscheinlich nicht so schön aussieht. Die Techniken sind jedoch immer noch nützlich.

+1

+1 für die Erklärung dieses Teils von Ruby in einer Weise, die tatsächlich verstanden werden kann, anstatt zu sagen "Blöcke sind cool". –