Io (Programmiersprache)

Io ist eine reine objektorientierte Programmiersprache, die durch den Plausch, Selbst, Lua, Lispeln, Act1 und NewtonScript begeistert ist. Io hat ein Prototyp-basiertes Gegenstand-Modell, das denjenigen in Selbst und NewtonScript ähnlich ist, die Unterscheidung zwischen Beispiel und Klasse beseitigend. Wie Plausch ist alles ein Gegenstand, und er verwendet das dynamische Schreiben. Wie Lispeln sind Programme gerade Datenbäume. Io verwendet Schauspieler für die Parallelität.

Bemerkenswerte Eigenschaften von Io sind seine minimale Größe und Offenheit zum Verwenden von Außencodemitteln. Io wird durch eine kleine, tragbare virtuelle Maschine durchgeführt.

Geschichte

Die Sprache wurde von Steve Dekorte ungefähr am 7. März 2002 nach dem Versuchen geschaffen, zu helfen

ein Freund, Dru Nelson, mit seiner Sprache, Mobil. Er hat herausgefunden, dass er wirklich viel darüber nicht gewusst hat, wie Sprachen, und dargelegt gearbeitet haben, um eine winzige Sprache zu schreiben, um die Probleme besser zu verstehen.

Philosophie

Die Absicht von Io ist, Begriffsvereinigung und dynamische Sprachen zu erforschen, so neigen die Umtausche dazu, Einfachheit und Flexibilität über die Leistung zu bevorzugen.

Eigenschaften

Syntax

In seiner einfachsten Form wird es aus einem einzelnen Bezeichner zusammengesetzt:

doStuff

</Quelle>

Das Annehmen des obengenannten doStuff ist eine Methode, es wird mit Nullargumenten und infolgedessen genannt, ausführliche Parenthesen sind nicht erforderlich.

Wenn doStuff Argumente hätte, würde er wie das aussehen:

doStuff (42)

</Quelle>

Io ist eine Nachricht vorübergehende Sprache, und da alles in Io eine Nachricht ist (Anmerkungen ausschließend), wird jede Nachricht an einen Empfänger gesandt. Das obengenannte Beispiel demonstriert das so, aber nicht völlig. Um diesen Punkt besser zu beschreiben, wollen Blick auf das folgende Beispiel wir:

Systemversion

</Quelle>

Das obengenannte Beispiel demonstriert Nachricht, die in Io geht; die "Versions"-Nachricht wird an den "System"-Gegenstand gesandt.

Maschinenbediener sind ein spezieller Fall, wo die Syntax nicht so fertig ist wie die obengenannten Beispiele. Io parser fängt eine Reihe von Maschinenbedienern ab, die vom Dolmetscher definiert ist, und übersetzt sie zu Methode-Anrufen. Zum Beispiel, der folgende:

1 + 5 * 8 + 1

</Quelle>

übersetzt zu:

1 + (5 * (8)) + (1)

</Quelle>

Wie Sie sehen können, gibt es auch ein kleines bisschen der Maschinenbediener-Priorität, die hier geschieht, und die Prioritätsniveaus sind dasselbe als mit den C Prioritätsniveaus.

Maschinenbediener wurden auch in Methode-Anrufe verwandelt. Tatsächlich sind alle Maschinenbediener in Io Methoden; die Tatsache, dass sie ausführliche Parenthesen nicht verlangen, ist eine Bequemlichkeit.

Methoden und Blöcke

In Io gibt es zwei Weisen, anonyme Funktionen zu schaffen: Methoden und Blöcke. Zwischen ihnen sind sie fast abgesehen vom Spielraum identisch. Während Blöcke lexikalisches Spielraum haben, haben Methoden dynamisches Spielraum.

Sowohl Methode als auch Block sind höherwertige Funktionen.

Beispiele

Das allgegenwärtige Hallo Weltprogramm:

"Hallo, Welt!" println

</Quelle>

Neue Gegenstände werden durch das Klonen von Gegenständen geschaffen. In Io spezifisch wird ein neuer, leerer Gegenstand geschaffen, und nur die Unterschiede dazwischen und seinem Elternteil werden innerhalb des neuen Gegenstands versorgt; dieses Verhalten ist als Differenzialerbe bekannt. Ein Beispiel dieses Verhaltens wird gezeigt:

A: = schafft Gegenstand-Klon//einen neuen, leeren Gegenstand genannt "Ein"

</Quelle>

Eine einfache nichtrekursive Factorial-Funktion, in Io:

factorial: = Methode (n,

wenn (n == 0, 1 zurückkehren Sie)

res: = 1

Erstrecken Sie sich 1 zu (n) foreach (ich, res = res * ich)

)

</Quelle>

Weil Anweisung von res * ich zu res die letzte genommene Handlung bin, gibt die Funktion implizit das Ergebnis zurück, und so ist ein ausführlicher Rückausdruck nicht erforderlich. Der obengenannte demonstriert den Gebrauch von Reihen, und verwendet für Schleife nicht, die schneller sein würde.

Referenzen

Außenverbindungen


Netivot / Netanya
Impressum & Datenschutz