Heim / Soziale Netzwerke / Draw.io auf Russisch. In der Io-Sprache verfügbare Operatoren

Draw.io auf Russisch. In der Io-Sprache verfügbare Operatoren

Draw.io- kostenlose App, entwickelt für die Modellierung von Diagrammen und Flussdiagrammen von Geschäftsprozessen. Es gibt eine Option zur Integration mit Google Dokumente, Dropbox, OneDrive, JIRA, Confluence, Chrome und GitHub. Der Confluence Server und das Add-on JIRA Cloud sind kostenpflichtige Add-ons. Die Online-Version zur Synchronisierung mit Google Drive wird in 2 Versionen angeboten - mit und ohne Google Apps-Unterstützung. Neben der Webversion gibt es ein PC-Installationsprogramm, das Windows, MacOS und Linux unterstützt.

Die Anwendung wird für Manager und Führungskräfte von Unternehmen nützlich sein, die ein Tool zum Erstellen von Geschäftsprozessdiagrammen benötigen. Der Service ist für Fachleute geeignet, deren Aktivitäten mit der Erstellung von Präsentationen und Datenbanken, der Erstellung von Ingenieur- und Netzwerkdiagrammen und dem Softwaredesign zusammenhängen.

Mit dem Editor können Sie beliebige schematische Bilder erstellen - aus Diagrammen Stromkreise zu Geschäftsmodellstrukturen. Unter den Möglichkeiten - die Konstruktion von Diagrammen, Graphen und UML-Modellen. Es gibt Dutzende von Formen, die in der Formenbibliothek in Kategorien gruppiert sind. Objekte können durch Ändern von Schriftart, Farbe, Farbverlauf, Linienstärke und Transparenzgrad formatiert werden. Dank der Möglichkeit zur Synchronisierung mit Google Drive können mehrere Benutzer gleichzeitig an Dokumenten arbeiten. Fertige Bilder können auf einer PC-Festplatte gespeichert oder in Wikis und Blogs eingefügt werden. Verfügbare Exportformate sind PDF, GPG, SVG, XML und JPG.

Hauptmerkmale

  • Kostenlose Integration mit Google-Dienste
  • Kostenpflichtige Integration mit Confluence und JIRA Cloud
  • HTML-Client mit IE 6-8-Unterstützung
  • Unterstützung für Smartphones und Tablets
  • Exportieren Sie Dokumente nach PDF-Formate, GPG, SVG, XML und JPG
  • Offline-Anwendung für Windows, MacOS und Linux
  • Unterstützt 27 Sprachen

Endlich habe ich gefunden, wonach ich gesucht habe. Ein kostenloses Modellierungstool, das Funktionen zur Beschreibung von Geschäftsprozessen unterstützt – Draw.io

Zeichnen.io ist ein Tool zum Online-Erstellen von Diagrammen und Flussdiagrammen. Gleichzeitig eine riesige Anzahl von Vorlagen, mit denen Sie zeichnen können, was Ihr Herz begehrt. Werkzeug Zeichnen.io Erinnert sehr an MS Visio und machte dafür eventuell die Anwendung aus Microsoft-Programm bezahlt und Onlineservice Zeichnen.io- völlig kostenlos und vor allem erfordert keine Anmeldung.

Eine ähnliche Funktionalität ist bereits in der Cloud-Version enthalten – dies ist jedoch ein System dieses System bezahlt, obwohl das Abonnement günstig ist, aber es ist schwer, gegen kostenlos zu konkurrieren.

Meinung zu Zeichnen.io

Und obwohl dieses Tool methodisch nicht so gut ist, ist es möglich, zu zeichnen, insbesondere durch die Vorgabe einer Modellierungskonvention für die Studenten des Trainingskurses. Und obwohl das Tool nicht so schön ist wie das kostenlose, macht die Cloud-Implementierung es konkurrenzfähig.

Um ein Blockmodell online zu erstellen, müssen Sie lediglich ein neues Dokument im Toolkit erstellen.

Im Objektbereich müssen Sie wie in MS Visio eine Kategorie auswählen und das Objekt mit dem Mauszeiger in das Modellfeld verschieben. Es gibt viele Objekte, also reichen sie völlig aus, um ein vollwertiges Geschäftsprozessmodell zu erstellen (im Gegensatz zu , bei dem die Menge an Objekten und Modellen stark eingeschränkt ist).

Um Modellobjekte miteinander zu verbinden, müssen Sie ein Objekt auswählen und den Mauszeiger über ein anderes bewegen, woraufhin eine grüne Fahne erscheint, die Sie auf das Objekt ziehen müssen.

Am wichtigsten ist, dass es nach der Erstellung eines Geschäftsprozessmodells möglich ist, es im Bildformat (PNG, GIF, JPG, PDF) über das Menü auf Ihren Computer zu exportieren: Datei - Exportieren.

Und natürlich die Cloud-Funktion – der Draw.io-Dienst wird mit Google Drive synchronisiert, wodurch es möglich ist, das Projekt direkt auf Google Drive zu speichern.

Im Allgemeinen mochte ich das Tool, wie es scheint Zeichnen.io gut geeignet, um Geschäftsprozesse online darzustellen. Und obwohl es auf Bundesebene bei Großprojekten noch kaum Konkurrenz gibt, ist es für kleine Unternehmen, die ihre Geschäftsprozesse beschreiben, durchaus ein geeignetes Werkzeug.

Die Arbeit eines jeden Ingenieurs, IT-Spezialisten, Vermarkters, Business-Analysten oder Managers ist mit der Notwendigkeit verbunden, verschiedene Diagramme, Flussdiagramme und Grafiken zu erstellen. Für diese Zwecke ist der unter dem Link verfügbare „Ziehungs“-Service großartig.

Sein Hauptvorteil ist, dass es kostenlos ist. Für die Nutzung der Ressource fallen keine Gebühren an, was es noch angenehmer macht. Darüber hinaus müssen Sie sich für eine vollwertige Arbeit nicht registrieren und den langwierigen Autorisierungsprozess auf der Website durchlaufen.

Bei der Einreise Startseite Wählen Sie einen Pfad zum Speichern des Projekts. Die Endergebnisse können auf Remote-Speicher gespeichert werden – „Clouds“ („Google Drive“, „Dropbox“, „OneDrive“), auf der „GitHub“-Ressource, auf der Festplatte des „Geräts“ oder direkt in der Umgebung für Verwaltung der Entwicklung von Webanwendungen und Trello-Programmen.

Standardmäßig ist das Kontrollkästchen aktiviert, um die ausgewählten Einstellungen für die Zukunft zu speichern.

Um die Aufgabe zu vereinfachen, sich mit den Funktionen des Onlinedienstes vertraut zu machen, ändern wir die Sprache der Benutzeroberfläche, indem wir auf "Sprache" klicken.

Nachdem Sie die gewünschte Sprache eingestellt haben, müssen Sie die Seite neu laden, damit die Änderungen wirksam werden.

Fahren wir nun mit der Erstellung eines neuen Projekts fort, für das wir auf die Schaltfläche "Neues Diagramm erstellen" klicken, wonach der Übergang zum grafischen Teil der Arbeit erfolgt.

Sie können ein leeres Feld öffnen und selbst ein Diagramm erstellen oder eine Bibliothek mit verschiedenen Grafikvorlagen verwenden. „Ishikawa-Diagramme“ (alias „Fischschwanz“), „Schemata zur Beschreibung von Geschäftsprozessen“, „Strukturdiagramme“, „Flussdiagramme“, „ Stromkreise“, „Programmbausteine“ – das ist nur ein kleiner Teil dessen, was bereits als Leerzeichen vorhanden ist.

Von großem Interesse für die Nutzer ist die Möglichkeit, Geschäftsprozesse über den Dienst draw.io zu beschreiben.

Wählen Sie zunächst „Leeres Diagramm“ aus der Vorlagenkategorie „Einfach“ aus.

Als Beispiel beschreiben wir die wichtigsten Geschäftsprozesse, die mit der Arbeit eines modernen, kleinen Online-Shops verbunden sind.

Für den grafischen Teil der Arbeit benötigen wir die Abschnitte „BPMN General“ und „BPMN Events“.

Bei der Betrachtung eines Beispiels werden wir uns nicht mit den engen Besonderheiten der Ladenwerbung befassen, der Arbeit eines Direktors, eines Suchmaschinenoptimierers, eines Content-Managers, eines Systemadministrators, die auch direkt am Leben eines Unternehmens beteiligt sind, sondern für Startpunkt Wir prüfen den Eingang einer Bestellung des Kunden und die erforderlichen Schritte auf der Abwicklungsseite.

Lassen Sie uns ein Ereignis im Diagramm erstellen - den Eingang einer Bewerbung beim Manager, der den Online-Shop verwaltet, für den wir das Briefumschlagsymbol ziehen, das den Eingang der Bewerbung symbolisiert (eingehende Nachricht) und den Container "Aufgaben", der die Reaktion beschreibt die Beschwerde.

Stellen wir eine Verbindung her, indem wir einen Pfeil zwischen den beiden Blöcken platzieren.

Für die bequeme Nutzung des Online-Tools draw.io gibt es obere Platte Steuerelement, das Schaltflächen zum Abbrechen von Aktionen, zum Skalieren, Scrollen und Verwalten von Ebenen sowie die am häufigsten verwendeten Elemente (Kontrollpunkte, Verbindungspfeile) enthält.

Durch einen Doppelklick mit der linken Maustaste bearbeiten wir den Text auf dem Block und benennen „Aufgabe“ in „Prüfung der Verfügbarkeit bestellter Waren auf Lager“ um. Von diesem Schritt an sollte der Manager des Online-Shops mit der Analyse der Bestellung beginnen, da davon weitere Schritte in der Kommunikation mit dem Kunden abhängen.

Es ist logisch anzunehmen, dass der nächste Block eine Bedingung sein sollte, die die Abfolge von Aktionen für verschiedene Ergebnisse der Bestandsprüfung bestimmt.

* Es ist wichtig, sich daran zu erinnern, dass Geschäftsprozesse nicht für Papier geschrieben werden, sondern für normale Menschen, Mitarbeiter des Unternehmens. Je detaillierter und detaillierter die Studie ist, desto weniger Fehler werden in Zukunft passieren. Der Umsetzungserfolg hängt zu 80 % von der Aufgabenstellung ab.

Wenn die Ware auf Lager ist, können Sie zu „Prüfung der Richtigkeit der vom Benutzer eingegebenen Daten“ gehen, wenn nicht, zu „Genaues Lieferdatum angeben“. Um einen Kommentar über einen beliebigen Block oder Pfeil zu schreiben, müssen Sie die Registerkarte "Allgemein" und das Element "Text" auswählen. In diesem Fall handelt es sich um Richtungsangaben „Ja/Nein“.

Lassen Sie uns den negativen Zweig analysieren und alle weiteren Handlungsschritte in das Diagramm eintragen.

Ein Hilfsblock „Lieferant kontaktieren, genaue Lieferzeit erfragen“, zwei Hauptblocks „Abholen Alternativen Ware, die auf Lager ist und als Ersatz angeboten werden kann“, „Prüfung der Richtigkeit der ausgefüllten Benutzerdaten“ und die Kommunikationssperre mit dem Auftraggeber „Telefonische Kontaktaufnahme und Lieferdetails besprechen“. Es ist wichtig, sich im Voraus auf jedes Ergebnis vorzubereiten und daher Alternativen zu erarbeiten. In unserem Fall haben wir im draw.io-Dienst einen Geschäftsprozess erstellt, der mit einer Auswahl von Alternativen verbunden ist, die dazu beitragen, den Kunden im Falle einer Meinungsverschiedenheit mit der Lieferzeit zu halten. Hilfsblöcke werden als gepunktete Linie angezeigt, verfügbar auf der Registerkarte "BPMN Allgemein".

Wenn das Geschäft an der Loyalität seiner Kunden arbeitet, ist es möglich, eine weitere Sperre in Bezug auf die Bereitstellung eines persönlichen Rabatts für ein alternatives Produkt hinzuzufügen, wenn sich die Fristen aufgrund eines Verschuldens des Online-Shops verzögern (z , die verbleibende Ware wurde falsch angezeigt (auf der Seite "auf Lager", und tatsächlich ist die Ware zu Ende)).

Jetzt bleibt noch eine Bedingung hinzuzufügen: "Der Kunde stimmt der Bestellung zu." In dieser Phase wird das Ergebnis aller Aktivitäten entschieden, oder die Bestellung wird bearbeitet und geht dann an den "Lieferservice", oder der Manager schließt die Bestellung und bietet an, eine Benachrichtigung über den Erhalt der Waren auf Lager zu erhalten, wer die Bewerbung verlassen.

Nachdem wir nur 5 Minuten Zeit aufgewendet haben, haben wir Geschäftsprozesse im draw.io-Dienst in Bezug auf den Verkaufsleiter ausgearbeitet. Ebenso ist es möglich, auf separaten Blättern Diagramme für die übrigen Abteilungen zu erstellen, die an den Aktivitäten des Online-Shops beteiligt sind, sowie alle Dienstleistungen des Unternehmens als Ganzes zusammenzufassen.

Um ein Dokument in Zukunft zu öffnen, gehen Sie einfach auf die Service-Website und suchen Sie das zuvor gespeicherte XML-Projekt, indem Sie „Vorhandenes Diagramm öffnen“ auswählen.

Neben den Endergebnissen im zuvor festgelegten Format ist es möglich, Diagramme und Diagramme als pdf und zu exportieren html-Dokumente, sowie in Form von Bildern und Vektorgrafiken(SVG).

Seit kurzem ist es möglich, draw.io als Programm auf einen PC herunterzuladen (funktioniert auf dem Betriebssystem Windows-Systeme, MacOs, Chrome OS, Linux) und installieren als App das funktioniert sowohl auf iOS als auch auf Android.

Für diese Zwecke müssen Sie in der Systemsteuerung auf die Schaltfläche „Erweitert“ klicken und im sich öffnenden Menü „Herunterladen“ auswählen.

Die in der Bewertung präsentierten Informationen reichen völlig aus, um mit der Arbeit an Ihrem Projekt zu beginnen, unabhängig davon, zu welcher Branche, zu welchem ​​Tätigkeitsbereich oder zu welcher Produktion es gehört, ob es sich um Programmierung, Verwaltung, Design, Management, Vertrieb oder Lieferung usw. handelt.

Wenn Sie auf Schwierigkeiten stoßen, können Sie jederzeit die Anweisungen und die offizielle Dokumentation auf der Website des Onlinedienstes lesen.

Hallo, lieber Habrazhitel. Ich präsentiere Ihnen die Übersetzung des Artikels From Draw.io to Vue.js app von Francesco Zuppichini.


Dies ist meine erste Veröffentlichung auf Habré und ich habe mich entschieden, mit der Übersetzung eines Artikels über ein cooles Tool zu beginnen, mit dem Sie eine Vue.js-Anwendung aus einem UML-Diagramm generieren können.
Überrascht? Ich war einfach erstaunt, als ich darüber gestolpert bin.


Natürlich gibt es, wie in jeder Beta-Version, etwas zu tun. Zum Beispiel habe ich als erstes den Autor kontaktiert und gesagt, dass ich Korrekturen an der Komponenten-Template-Struktur und Pfadbenennung vornehmen möchte. Der Autor hat sich innerhalb einer Stunde gemeldet, den Code auf GitHub gepostet und ein kleines Tutorial geschrieben. Nach Annahme des PR wurde die Erlaubnis eingeholt, den Artikel zu übersetzen, mit einem Link zum Original.


Wen es interessiert - ich frage unter kat.

Von Draw.io bis zur Vue.js-App


Das Erstellen einer App sollte so einfach sein wie das Zeichnen eines Diagramms in draw.io
Francesco Saverio

Was wäre, wenn ich Ihnen sagen würde, dass Sie dies umwandeln können:






Das Ergebnis ist ein Vue.js-Projekt mit allen Dateien und Importen, die Sie benötigen, um mit der Erstellung Ihres coolen Produkts zu beginnen. Cool, ja?


Ich habe ein kurzes Demo-Video erstellt, das Sie hier ansehen können:


Eine Webanwendung ist nur ein Diagramm

Jede Webanwendung kann als Graph ausgedrückt werden
Denken wir ein wenig nach. Wenn Sie ein Framework wie React, Angular oder Vue verwenden, haben Sie immer eine Root-Komponente.


In unserem Beispiel ist die Root-Komponente die Komponente App, alles andere ist nur ein Graphknoten. Wir können auf der ersten Ebene identifizieren Heim und Indexknoten als direkte Kinder App.


Ein gängiger Standard bei der Entwicklung von Webanwendungen besteht darin, Komponenten in einer graphbasierten Verzeichnisstruktur zu speichern. Daher wird in der Regel für jede Komponente ein gleichnamiges Verzeichnis angelegt, in dem sich die Komponente selbst und alle ihre Kinder befinden.


Zum Beispiel, Index ist die Wurzel des selbst zusammengesetzten Teilgraphen, Benutzer und Post. Daher ist es sinnvoll, diese Abstraktion in Anwendungsstrukturen nachzuahmen.




Dies bietet zwei Vorteile: Skalierbarkeit, da die Teilgraphen unabhängig sind, und einfaches Verständnis der Struktur und Logik der Anwendung.


Außerdem kann man immer sehen Gesamtstruktur Anwendungen, indem Sie einfach auf die Grafik schauen.

Vom Diagramm zur Anwendung

Also haben wir gesagt, dass jede Webanwendung eigentlich ein Graph ist, also können wir sie daraus generieren.


Schließlich ist jede Datei, die mit einem Diagramm beginnt, einfach. Sie müssen nur die Baumkreuzung finden und jede Datei in ihrem lokalen Stammverzeichnis erstellen, und Sie können dies rekursiv tun.


Das Problem ist, dass wir wissen, dass Komponenten in modernen Webanwendungen andere Komponenten importieren und verwenden. Daher müssen wir jede von ihnen mit ihren Abhängigkeiten verknüpfen und eine dynamische Vorlage basierend auf der aktuellen Programmiersprache erstellen, die die richtige Syntax für den Import enthält.


BEI JavaScript-Dateien so importiert:


import italy from "italy" // importiere das ganze Modul import (Spaghetti) from "italy" // importiere eine einzelne Einheit in italy

Um also vom Diagramm zur Anwendung zu gelangen, müssen wir jede Datei erstellen, sie basierend auf dem Diagramm selbst an der richtigen Position platzieren und die richtige Importvorlage für Abhängigkeiten anzeigen

Drawio2Vuejs

Ich habe ein Paket erstellt, mit dem Sie Ihre Anwendung in draw.io zeichnen und die exportierte XML-Datei verwenden können, um eine Vue.js-Anwendung zu erstellen. Es wird genannt graph2app-drawio2vuejs.


Das Paket finden Sie hier:



Eigentlich ist das keine neue Idee, die ich entwickelt habe vor einiger Zeit eine Möglichkeit, mit Python so ziemlich dasselbe zu tun:



Aber denken Sie daran, dass dies eine neue Version npm-Paket ist viel besser.


Installieren Sie das Paket also zunächst global mit npm:


$ npm i -g graph2app-drawio2vuejs

Jetzt können Sie es im Terminal mit dem Befehl verwenden:


$drawio2vuejs

Aber natürlich müssen Sie mehrere Argumente übergeben:


$ drawio2vuejs --help Verwendung: drawio2vuejs Scaffold Vuejs App von Draw.io Optionen: -V, --version Ausgabe der Versionsnummer -d, --dist Ausgabeziel -x, --xml xmlPath -h, --help gibt Nutzungsinformationen aus

Stellen Sie sicher, dass Sie den Pfad zur xml-Datei draw.io übergeben.


Es ist Zeit zu zeichnen! Gehen Sie zu draw.io , wählen Sie UML auf der linken Seite und klicken Sie auf Objekt:




Jetzt können Sie damit beginnen, den ersten Knoten zu erstellen. Denken Sie daran, dass dies Ihre Root-Komponente sein wird. Für meine Fälle die Root-Komponente immer der erste Knoten was im Diagramm dargestellt ist.




Anschließend können Sie basierend auf der Anwendung, die Sie erstellen möchten, einen weiteren Knoten hinzufügen.




Jetzt wollen wir Heim war untergeordnetes Element App. Also anklicken Heim und verwenden Sie den Pfeil, um eine Verbindung herzustellen App.





Was, wenn wir das auch wollen App importieren Heim als Abhängigkeit? Drücken Sie Pfeil verwenden im UML-Abschnitt auf der linken Seite und platzieren Sie es von App in Heim.




Gut! Sie haben Ihr erstes Diagramm erstellt! Lassen Sie uns damit eine darauf basierende Vuejs-App erstellen.


Wir sagten, wir brauchen eine Akte xml also exportieren ohne Kompression. Klicken Datei > Exportieren als > XML > Komprimiert (keine).


Erstellen Sie nun eine einfache Vue.js-Anwendung mit der Vue-Befehlszeile:


$ vue init Webpack-App

Sobald Sie das getan haben, können wir die Anwendung aus dem Diagramm generieren:


$drawio2vuejs --xml= Abstand =

Bei mir wäre der Befehl:


$ drawio2vuejs --xml=/Benutzer/VaeVictis/Desktop/app.xml --dist=/Benutzer/VaeVictis/Desktop/app/src

Wenn alles richtig funktioniert, sollten Sie das folgende Ergebnis sehen:



Datei app.vue wird aktualisiert, da es bereits vorhanden war, und den richtigen Import für hinzugefügt Heim. Außerdem wird eine neue Komponente erstellt Heim. Wenn wir öffnen app.vue, sollten wir sehen:



Die Komponente wird korrekt importiert und der Ordner Heim mit Datei home.vue wurde richtig erstellt!

graph2app

Paket drawio2vuejs entwickelt mit einem anderen von mir entwickelten Paket: graph2app.



Bald werde ich einen Artikel darüber schreiben, wie man ein Modul mit drei Teilen anwendet:

  • GraphBuilder

App, wo sich die Hauptlogik befindet, erstellt ein Verzeichnis und Dateien aus dem Diagramm. Graph erstellt mit Instanz GraphBuilder. In unserem Fall habe ich erstellt DrawIoGraphBuilder, wodurch es erweitert wird, um die XML-Datei von draw.io zu analysieren.
graph2app-drawio-graph-builder


Entwickler können die Basisinstanz für die Graphenanalyse mit anderen Arten von Schnittstellen erweitern.


Datei ist eine Abstraktion von Knoten in einem Graphen. Er besitzt Probe Der, aus dem die Komponente generiert wird. Wann also graph2app den Graphen bekommt, braucht es auch eine Instanz Datei um die Render-Methode darauf aufzurufen und die Datei ordnungsgemäß zu speichern.



Wie Sie sehen, ist das Paket modular aufgebaut. Das könnten wir auch gebrauchen DrawIoGraphBuilder mit einer anderen Instanz Datei um beispielsweise React-Anwendungen aus demselben draw.io-Graphen zu erstellen.

Fazit

Ich hoffe, Ihnen gefällt dieser Artikel. Ich bin fest davon überzeugt, dass die Visualisierung einer Anwendung die Leistung verbessern kann. Die Bibliothek befindet sich noch in der Beta-Phase und muss verbessert werden. Ich denke, dass die Leute diese Idee mögen und zur Entwicklung beitragen werden.


Lassen Sie mich bitte Ihre Meinung wissen. Danke für dein Interesse.


Francesco Saverio

Tags: Tags hinzufügen

Io - kompakte objektorientierte Programmiersprache

Teil 1. Überblick über die Funktionen und die Syntax der Io-Sprache

Inhaltsserie:

In der Gruppe der Sprachen, die auf dem objektorientierten Programmierparadigma basieren, zeichnet sich Io durch seine Einfachheit und Prägnanz aus. Es gibt keine idealen Programme, die völlig fehlerfrei sind, insbesondere wenn es um die Implementierung einer Programmiersprache geht. Aus diesem Grund ist es notwendig, die Fähigkeiten und Merkmale jeder Programmiersprache (in diesem Fall Io) sowie die Bereiche ihrer Anwendung ausführlich genug zu studieren, bevor ein endgültiges Urteil über ihre Notwendigkeit, Effizienz und Bequemlichkeit für die Entwickler usw.

Die Entstehungsgeschichte der Io-Sprache

Die Io-Sprache erschien im Jahr 2002, als ihr Autor Steve Dekorte, der versuchte, die Prinzipien der Funktionsweise und Implementierung von Programmiersprachen besser zu verstehen, beschloss, Theorie mit Praxis zu verbinden und seine eigene einfache und prägnante Sprache zu schreiben. Decort entwarf Io als reine, prototypbasierte, dynamisch typisierte objektorientierte Sprache, die die Unterscheidung zwischen „Klasse“ und „Instanz“ aufhebt. Wikipedia bemerkt den Einfluss von Sprachen wie Smalltalk (das Prinzip „alles ist ein Objekt“ und dynamisches Tippen), Self und NewtonScript (ein auf Prototypen basierendes Objektmodell), Lisp (Äquivalenz von Anweisungen und Daten im Programmcode) auf Io ) sowie Lua und act1.

Allgemeine Information

Io-Programmcode wird mit einem kompakten, hochportablen Gerät übersetzt und ausgeführt virtuelle Maschine. Io-Pakete für verschiedene Plattformen befinden sich auf seiner Website. Die Io-Sprache wird unter den Bedingungen der BSD/MIT-Lizenz vertrieben.

Haupteigenschaften gegebene Sprache die der Autor selbst hervorhebt, sind konzeptionelle Einfachheit und Prägnanz, Einbettbarkeit (die Fähigkeit, mit in anderen Sprachen geschriebenem Code zu kombinieren) und Erweiterbarkeit, die Fähigkeit, interne Objekte zur Laufzeit dynamisch zu ändern, Introspektion und die Implementierung des Konzepts der Parallelität.

In Io sind alle Entitäten Objekte, die sich während der Programmausführung ändern können. Der Code jedes Programms besteht aus Ausdrücken, die auch während der Ausführung des Programms geändert werden können. Ausdrücke wiederum sind eigentlich Nachrichtenübergabeanweisungen. Implementiert den Mechanismus der Kontextumfänge von Objekten auf der Ebene von Funktionen und Codeblöcken. Akteure werden verwendet, um paralleles Rechnen zu verwalten.

Programmausführung

In Io-Programmen ist das Vorhandensein der Funktion nicht erforderlich. hauptsächlich() oder ein spezielles Objekt, von dem die Ausführung beginnen soll. Somit können Io-Programme gewissermaßen als Skripte betrachtet werden.

Starten des Programms von Befehlszeile wird wie folgt gemacht:

io-Projekte/io/my_first_prog.io

Sie können auch im interaktiven Modus des Io-Interpreters arbeiten, wie in Listing 1 gezeigt.

Listing 1. Interaktive Verwendung des Io-Interpreters
$ io Io 20070410 Io> "Es ist ein Io-Interpreter" println Es ist ein Io-Interpreter ==> Es ist ein Io-Interpreter Io>

Im interaktiven Modus wird nicht nur das Ergebnis der Ausführung des eingegebenen Ausdrucks angezeigt, sondern auch der von diesem Ausdruck zurückgegebene Wert, gekennzeichnet durch das Präfix " ==> ". In diesem Fall entspricht das Ergebnis der Ausführung des Ausdrucks dem Rückgabewert.

Es sei darauf hingewiesen, dass im interaktiven Modus die eingegebenen Ausdrücke im allgemeinen Kontext der obersten Ebene ausgeführt werden, der dem Objekt mit dem Namen Lobby entspricht.

Listing 2. Inhalt des Kontexts der obersten Ebene des Io-Programms
$io Io 20070410 Io> print Object_0x9898a88: Lobby = Object_0x9898a88 Protos = Object_0x9898550 args = method(...) exit = method(...) forward = method(...) launchPath = "/home/alexs/projects/io " ==> Object_0x9898a88: Lobby = Object_0x9898a88 Protos = Object_0x9898550 args = method(...) exit = method(...) forward = method(...) launchPath = "/home/alexs/projects/io" Io>

Im interaktiven Modus können Sie auch Programme ausführen, die in gespeichert sind getrennte Dateien wie nachstehend:

doFile("mein_erstes_prog.io")

Das angegebene Programm wird standardmäßig im Kontext desselben Objekts ausgeführt Empfangshalle. Wenn es erforderlich ist, das geladene Programm im Kontext eines anderen Objekts auszuführen, wird der Name dieses Objekts vor dem Aufruf der Methode angegeben doFile(), und in Bezug auf die Io-Sprache wird eine Nachricht an das Objekt gesendet:

myMainObject doFile("my_first_prog.io")

Syntax der Io-Sprache

Das erste, was Ihnen auffällt, wenn Sie sich mit der Syntax der Io-Sprache vertraut machen, ist das Fehlen von reservierten Schlüsselwörtern und Operatoren, die aus anderen Sprachen bekannt sind. Der Quellcode jedes Programms wird ausschließlich unter Verwendung von Ausdrücken geschrieben, die aus Nachrichten bestehen, von denen jede ein Objekt ist, das jederzeit verfügbar (und veränderbar) ist, wenn das Programm ausgeführt wird.

Zur besseren Übersichtlichkeit können Sie die nicht-strikte Notation der Backus-Naur-Form verwenden (Literale werden in Anführungszeichen gesetzt), wie in Listing 3 gezeigt.

Listing 3. Notation der Io-Sprache
Ausdruck::= ( Nachricht | Abschlusszeichen ) Abschlusszeichen::= "\n" | ";" Nachricht::= Symbol [ Argumente ] Symbol::= Bezeichner | Zahl | Zeichenkettenargumente::= "(" [Ausdruck [ ( "," Ausdruck ) ] ] ")"

Io unterstützt die drei am häufigsten verwendeten Kommentarformate: //, /* */ und # . Die Wege ihrer praktischen Anwendung liegen auf der Hand.

Die Nachricht kann eine Liste von Argumenten enthalten, die als gewöhnliche Ausdrücke übergeben und von dem Objekt ausgewertet werden, das die Nachricht empfängt.

Listing 4. Verwenden einer Nachricht zum Schleifen
Io> for(i, 1, 5, i println) 1 2 3 4 5 ==> 5 Io>

Bedingte Ausdrücke können auch in die Argumentliste aufgenommen werden, wie in Listing 5 gezeigt.

Listing 5. Verwendung von Bedingungen in einer Nachricht
Io> beta:= 7 ==> 7 Io> alpha:= if(beta > 5, beta, 5) ==> 7 Io>

Es sei noch einmal darauf hingewiesen, dass im ersten Fall das Literal zum und im zweiten Fall das Literal wenn sind keine Sonderformen oder reservierten Schlüsselwörter, sondern einfach Nachrichten.

In der Io-Sprache verfügbare Operatoren

Ein Operator ist eine Nachricht, deren Name keine alphanumerischen Zeichen enthält (mit Ausnahme von Satzzeichen und dem Unterstrich). Operatoren enthalten auch Literale: und, oder, zurück. Beispiel für die Verwendung des Operators:

1 + 2

Nach dem Konzept der Io-Sprache setzt sich dieser Ausdruck zu einer Nachricht zusammen:

1 +(2)

Das heißt, der Zahlenwert 1 Die Nachricht wird gesendet " + „mit argument 2 .

In komplexen Ausdrücken entspricht der Vorrang von Standardarithmetikoperatoren dem Vorrang von analogen C-Arithmetikoperatoren.

Benutzerdefinierte Anweisungen werden von links nach rechts ausgeführt.

Es gibt drei Zuweisungsoperatoren in Io:

  • ::= erstellt einen Slot, erstellt einen Setter für diesen Slot und weist dem Slot einen Wert zu;
  • := erstellt einen Slot und weist ihm einen Wert zu;
  • = Wenn der Slot existiert, wird ihm ein Wert zugewiesen, andernfalls wird eine Ausnahme ausgelöst.

Zuweisungsoperatoren werden beim Kompilieren in entsprechende Nachrichten umgewandelt, wie unten gezeigt:

beta::= 7 kompiliert zu newSlot("beta", 7) beta:= 7 kompiliert zu setSlot("beta", 7) beta = 7 kompiliert zu updateSlot("beta", 7)

Die Methoden der oben aufgeführten Nachrichten können überschrieben (dh durch Ihre eigenen Methoden ersetzt) ​​werden. Insbesondere für lokale Objekte die Methoden updateSlot() werden so umgeschrieben, dass keine Ausnahmen ausgelöst werden, wenn den explizit angegebenen Slots dieser lokalen Objekte Werte zugewiesen werden.

Arbeiten mit Saiten

Zeichenfolgen in Io werden als Zeichenfolgen dargestellt, die in doppelte Anführungszeichen eingeschlossen sind. Wenn das doppelte Anführungszeichen selbst in einer Zeichenfolge enthalten ist, muss es mit einem umgekehrten Schrägstrich maskiert werden, zum Beispiel:

string:= "Io fehlt das Konzept von \" Stichwort\", als solche."

Die Zeile kann standardmäßige Esc-Zeichen (\n, \t, \a usw.) enthalten:

string:= "Dies ist die erste Zeile.\nDies ist die zweite Zeile.\nDies ist die dritte Zeile."

Um Escape-Zeichen zu vermeiden und mehrzeilige Textblöcke in ihrer natürlichen Form zu schreiben, müssen Sie einen solchen Block mit drei doppelten Anführungszeichen beginnen und beenden, wie unten gezeigt:

longstring:= """Die Io-Sprache basiert auf dem Konzept "alles ist ein Objekt". Quellcode sind Ausdrücke, die aus Nachrichten bestehen. Operatoren sind ebenfalls Nachrichten."""

Numerische Werte

Beim Schreiben von Zahlen sind fast alle Standardformate erlaubt, außerdem unterstützt Io das Schreiben von Zahlenwerten in hexadezimaler Schreibweise.

Listing 6. In Io unterstützte Zahlenformate
Io> 12 + 18 ==> 30 Io> 3,14 * 2 ==> 6,28000000000000002 Io> 0,987 + 11,003 ==> 11,9900000000000002 Io> 2e4 - 2e3 ==> 18000 Io> 1,655e-2 - 5,1 Io> 0xFF + 0x3 ==> 258 Io> 0XE - 0xa ==> 4 Io>

Arithmetische Ausdrücke werden nach der traditionellen Methode ausgewertet, obwohl die Operatoren, die arithmetische Operationen bezeichnen, innerhalb des Interpreters in Aufrufe der entsprechenden Methoden umgewandelt werden (dieser Mechanismus ist dem Benutzer verborgen):

Io> (9+5)*10-(2+3)*5 ==> 115

Um das Ergebnis von Berechnungen auf ein Objekt zu übertragen, wird die Methode verwendet doString(), wie in Listing 7 gezeigt.

Listing 7. Verwendung der Methode doString()
Io> myNewObject:= Objektklon ==> Object_0x99336f0: Io> myNewObject doString("(18+25)*33") ==> 1419 Io>

If vor dem Aufruf der Methode doString() der Name des Objekts nicht angegeben ist, erfolgt die Berechnung und Ausgabe des Ergebnisses im aktuellen Kontext.

Io-Programmbeispiel

In den meisten Fällen hilft der Quellcode des Programms, der nicht sehr umfangreich und ohne unnötige Komplexität in der Logik ist, dabei, die Syntax einer Programmiersprache besser zu verstehen. Vereinfachte Nachahmung von Transaktionen mit persönlichen Bankkonto für die ersten Erfahrungen durchaus geeignet. Der Quellcode ist in Listing 8 dargestellt.

Listing 8. Persönliche Kontotransaktionen
Konto:= Objekt Klon Kontostand:= 0 Konto Einzahlung:= Methode(Betrag, Saldo = Saldo + Betrag) Konto Auszahlung:= Methode(Betrag, Saldo = Saldo - 1.005 * Betrag) Konto:= Konto Klon Konto Einzahlung(5000.00) Konto abheben (250,00) Kontostand printlnIo> doFile("my_acc.io") 4748,75 ==> 4748,75 Io>

Dieses Programm verwendet fast alle in den vorherigen Abschnitten beschriebenen Syntaxelemente - Nachrichten, Zuweisungsoperatoren und Rechenzeichen, Zahlenwerte. Die Erstellung und Verwendung von Objekten, Slots und Methoden wird im zweiten Artikel der Serie und in besprochen dieser Moment es reicht aus, sie auf einer intuitiven Ebene zu verstehen.

Kontrollstrukturen

Um den Betrieb von logischen Kontrollstrukturen in der Io-Sprache zu gewährleisten, werden spezielle Singletons definiert (Singleton) Stimmt(wahr) und FALSCH(false) sowie ein spezielles Singleton Null, was einen undefinierten Wert bezeichnet ("kein Wert").
Logische Vergleichsoperationen werden mit Methoden durchgeführt: ==!=><>=<= , die zurückkehren Stimmt oder FALSCH. Darüber hinaus gibt es eine Methode vergleichen(), die Werte zurückgibt -1 (weniger), 0 (gleich) bzw 1 (größer als) und verwendet, um spezialisierte Wertvergleichsmethoden zu implementieren.

Methode wenn() wird in folgender Form verwendet:

wenn(<условие>, [, anders ]) if(nenner == 0, "Fehler" println)

Hier ist der optionale Teil anders weggelassen. Ein bedingter Ausdruck wird als wahr betrachtet, wenn sein Ergebnis wahr ist Stimmt, und ob der bedingte Ausdruck das Ergebnis liefert FALSCH oder Null, dann ist es falsch.

Methode wenn() gibt als Wert die aus dem Ergebnis der Prüfung berechnete Nachricht zurück, daher sind die folgenden Ausdrücke äquivalent:

wenn (Summe< 100, x:= sum, x:= 100) x:= wenn(summe< 100, sum, 100)

Bedingte Ausdrücke können auch in erweiterter Form geschrieben werden:

wenn (Summe< 100) then(x:= sum) else(x:= 100)

Außerdem wird eine Methode zum Verschachteln von Bedingungsausdrücken unterstützt sonst ():

wenn (Summe< 10) then(x:= 0) elseif(sum < 10) then(x:= 1) else (x:= sum)

Methoden im Smalltalk-Stil werden ebenfalls unterstützt: Wenn wahr(), wennFalsch(), ifNil() und ifNonNil(), sodass Sie Ausdrücke in der Form schreiben können:

(Summe< 100) ifTrue(x:= sum) ifFalse(x:= 100)

Hier sollten Sie besonders darauf achten, dass der einleitende Bedingungsausdruck in Klammern geschrieben werden muss.

Fahrräder

Der einfachste Schleifentyp ist eine unbedingte Endlosschleife, die mit der Methode implementiert wird Schleife():

loop("Endlosschleife" println)

Wenn die Schleife eine fest definierte Anzahl von Malen wiederholt werden muss, ohne irgendwelche Bedingungen zu prüfen, wird das Verfahren angewendet wiederholen(), wie in Listing 9 gezeigt.

Listing 9. Verwendung der Methode repeat()
Io> 3 repeat("Warnung!" println) Warnung! Warnung! Warnung! ==> Achtung! Io>

Mit der Methode wird eine Schleife geschrieben, deren genaue Anzahl der Wiederholungen im Voraus nicht bekannt ist, aber eine bestimmte Bedingung vorgegeben wird, unter der die Iterationen durchgeführt werden müssen während():

während(<условное_выражение>, <сообщение>)

Ein Merkmal dieses Zyklus besteht darin, dass, wenn es notwendig ist, mehr als eine Nachricht im Hauptteil des Zyklus aufzuzeichnen, diese Nachrichten durch das Übergangssymbol to voneinander getrennt werden sollten Neue Zeile, kein Komma, sonst läuft die Schleife nicht richtig. Außerdem ist es ratsam, den bedingten Ausdruck in der ersten Zeile zu belassen und jede Nachricht im Schleifenkörper in eine separate Zeile zu schreiben. Dieses Formular, das in Listing 10 gezeigt wird, wird Ihnen bekannter vorkommen.

Listing 10. Beispiel einer While-Schleife
Io> a:= 10 ==> 10 Io> while(a< 20,)->a println)-> a = a + 2)->) 10 12 14 16 18 ==> 20 Io>

Methode zum() ermöglicht es Ihnen, einen Zyklus mit bestimmten Grenzwerten und mit einem bestimmten Zählerschritt zu organisieren. Die allgemeine Form dieser Schleife sieht folgendermaßen aus:

zum(<счётчик>, <начальное_значение>, <конечное_значение>, [<шаг>,] <сообщение>).

Wenn der Zähleränderungsschritt nicht angegeben ist, wird standardmäßig der Schrittwert gleich 1 angenommen.

Listing 11. Ein Beispiel für die Organisation einer for-Schleife
//in dieser Schleife ist der Schritt zum Ändern des Zählers nicht angegeben Io> for(i, 0, 3, i println) 0 1 2 3 ==> 3 //in dieser Schleife ist der Schritt zum Ändern des Zählers angegeben Io> for(i, 0, 10, 3, i println) 0 3 6 9 ==> 9 Io>

Im Hauptteil jeder der oben genannten Schleifen können Sie Methoden verwenden, um die Ausführungsreihenfolge zu ändern: fortsetzen ermöglicht es Ihnen, den Rest des Schleifenkörpers zu ignorieren und eine neue Iteration zu starten, und Unterbrechung beendet die gesamte Schleife sofort.

Listing 12. Steuern der Reihenfolge, in der die Schleife ausgeführt wird
Io> for(i, 1, 10,)-> if(i == 2, Continue))-> if(i > 7, break))-> i print)->) 134567==> nil Io>

Es ist zu beachten, dass im Falle einer nicht standardmäßigen Beendigung der Schleife (mit der Unterbrechung) wird der Rückgabewert als undefiniert betrachtet (bezeichnet als Null).

Methode Rückkehr ermöglicht es Ihnen, jeden Teil eines Codeblocks oder Methodenkörpers mit dem erforderlichen Rückgabewert zu verlassen, zum Beispiel:

Listing 13. Verwenden der return-Methode, um einen Wert von einer Methode zurückzugeben
Io> test:= method("first" println; "second" println; return "exit"; "dritte" println) ==> method("first" println; "second" println; return "exit"; "dritte" println) Io> test first second ==> exit Io>

Die Io-Sprache implementiert auch eine Schleife für jeden, aber seine praktische Anwendung unterscheidet sich etwas von der Verwendung herkömmlicher Zyklen, daher wird dieser Zyklus in zukünftigen Artikeln berücksichtigt.

Fazit

Die Io-Sprache ist eine reine Objektsprache, dh eine Implementierung des Konzepts "alles ist ein Objekt". Die Syntax ist einfach und klar, obwohl sie auf den ersten Blick ungewöhnlich erscheinen mag. Io implementiert alle De-facto-Standardkonstrukte und -operatoren.

Der erste Artikel in der beschriebenen Serie Allgemeine Eigenschaften und die Syntax der Programmiersprache Io. Der zweite Artikel befasst sich mit dem Objektsystem der Sprache, und der dritte Artikel befasst sich mit zusätzlichen Funktionen und Fähigkeiten von Io.