itthon / Közösségi média / Draw.io oroszul. Az Io nyelven elérhető operátorok

Draw.io oroszul. Az Io nyelven elérhető operátorok

Draw.io- ingyenes alkalmazás, üzleti folyamatok diagramjainak és folyamatábráinak modellezésére készült. Lehetőség van az integrációra Google Dokumentumok, Dropbox, OneDrive, JIRA, Confluence, Chrome és GitHub. A Confluence Server és a JIRA Cloud kiegészítő fizetős kiegészítők. Online verzió a szinkronizáláshoz Google Drive Két változatban kapható – Google Apps támogatással és anélkül. A webes verzió mellett van egy PC-telepítő, amely támogatja a Windows, MacOS és Linux rendszereket.

Az alkalmazás hasznos lesz a vállalatok vezetőinek és vezetőinek, akiknek szükségük van egy eszközre az üzleti folyamat diagramok felépítéséhez. A szolgáltatás olyan szakemberek számára alkalmas, akiknek tevékenysége prezentációk és adatbázisok készítéséhez, mérnöki és hálózati diagramok készítéséhez, szoftvertervezéshez kapcsolódik.

A szerkesztő segítségével bármilyen sematikus képet készíthet - diagramokból elektromos áramkörök az üzleti modell struktúráihoz. A lehetőségek között szerepel diagramok, grafikonok és UML-modellek készítése. Az alakzatkönyvtárban több tucat alakzat található kategóriákba csoportosítva. Az objektumok formázhatók a betűtípusok, a színek, a színátmenet, a vonalvastagság és az átlátszósági szint megváltoztatásával. A Google Drive-val való szinkronizálás lehetőségének köszönhetően több felhasználó dolgozhat egyszerre dokumentumokon. A kész képek elmenthetők a számítógép merevlemezére, vagy beilleszthetők wikikbe és blogokba. A rendelkezésre álló exportformátumok a következők: PDF, GPG, SVG, XML és JPG.

Főbb jellemzők

  • Ingyenes integráció Google szolgáltatások
  • Fizetett integráció a Confluence és a JIRA Cloud szolgáltatással
  • HTML kliens IE 6-8 támogatással
  • Támogatás okostelefonokhoz és táblagépekhez
  • Dokumentumok exportálása ide PDF formátumok, GPG, SVG, XML és JPG
  • Offline alkalmazás Windows, MacOS és Linux rendszerekhez
  • 27 nyelv támogatása

Végre megtaláltam, amit kerestem. Ingyenes modellező eszköz, amely támogatja az üzleti folyamatok leírását – Draw.io

Draw.io egy eszköz diagramok és folyamatábrák online készítésére. Ugyanakkor hatalmas számú sablon, amely lehetővé teszi, hogy bármit rajzoljon, amit a szíve kíván. Eszközök Draw.io nagyon emlékeztet az MS Visióra, és valószínűleg arra készült, azonban az alkalmazás a Microsoft program fizetett, és online szolgáltatás Draw.io- teljesen ingyenes, és ami a legfontosabb nem igényel regisztrációt.

Hasonló funkciók már a felhő verzióban is megtalálhatók – ez azonban egy rendszer ezt a rendszert fizetős, bár az előfizetés olcsó, de nehéz felvenni a versenyt az ingyenesekkel.

Vélemény arról Draw.io

És bár módszertanilag ez az eszköz nem olyan jó, rajzolni lehet, főleg úgy, hogy előre beállítunk egy modellezési konvenciót a képzés hallgatói számára. És bár az eszköz nem olyan szép, mint az ingyenes, a felhőalapú megvalósítás versenyképessé teszi.

Egy blokkmodell online létrehozásához mindössze egy új dokumentumot kell létrehoznia az eszköztárban.

Az objektum panelen, akárcsak az MS Visio esetében, ki kell választani egy kategóriát, és az egérkurzorral át kell helyezni az objektumot a modell mezőbe. Rengeteg objektum van, így ezek bőven elegendőek egy teljes értékű üzleti folyamatmodell létrehozásához (ellentétben a -val, amelyben az objektumok és modellek készlete erősen korlátozott).

A modellobjektumok egymáshoz kapcsolásához ki kell választani egy objektumot, és az egérmutatót egy másik fölé kell mozgatni, majd megjelenik egy zöld zászló, amelyet rá kell húzni az objektumra.

A legfontosabb, hogy az üzleti folyamatmodell elkészítése után a Fájl - Exportálás menüponton keresztül képformátumban (PNG, GIF, JPG, PDF) lehet exportálni a számítógépére.

És természetesen a felhő funkció - a Draw.io szolgáltatás szinkronizálva van a Google Drive-val, amely lehetővé teszi a projekt közvetlen mentését a Google Drive-ra.

Általában tetszett az eszköz, úgy tűnik Draw.io nagyon alkalmas üzleti folyamatok online megjelenítésére. És bár még mindig szinte nincs verseny a nagy projektekben szövetségi szinten, az üzleti folyamataikat leíró kisvállalatok számára ez egy megfelelő eszköz.

Bármely mérnök, informatikus, marketinges, üzleti elemző, menedzser munkája különféle diagramok, folyamatábrák és grafikonok készítésének szükségességével jár. Erre a célra remek a linken elérhető „húzás” szolgáltatás.

Fő előnye, hogy ingyenes. Az erőforrás használatáért nem kell fizetni, ami még élvezetesebbé teszi. Ezenkívül a teljes értékű munkához nem kell regisztrálnia, és nem kell átmennie az unalmas engedélyezési folyamaton a webhelyen.

Belépéskor kezdőlap válasszon elérési utat a projekt mentéséhez. A végeredmények tárolhatók távoli tárhelyen - „felhőkben” („Google Drive”, „Dropbox”, „OneDrive”), a „GitHub” erőforráson, az „Eszköz” merevlemezén vagy közvetlenül a környezetben webalkalmazás-fejlesztés és Trello programok menedzselése.

Alapértelmezés szerint a jelölőnégyzet be van jelölve a kiválasztott beállítások jövőbeni mentéséhez.

Az online szolgáltatás lehetőségeivel való megismerkedés egyszerűsítése érdekében változtassuk meg a felület nyelvét a „Nyelv” gombra kattintva.

A kívánt nyelv beállítása után újra kell töltenie az oldalt, hogy a változtatások életbe lépjenek.

Most térjünk át egy új projekt létrehozására, amelyhez kattintson az "Új diagram létrehozása" gombra, amely után megtörténik az átállás a munka grafikus részére.

Megnyithat egy üres mezőt, és saját maga is létrehozhat diagramot, vagy használhat különféle grafikus sablonok könyvtárát. "Ishikawa diagramjai" (más néven "halfark"), "Üzleti folyamatok leírására szolgáló sémák", "Struktúra diagramok", "Folyamatábrák", " Elektromos áramkörök”, „Programblokkok” - ez csak egy kis része annak, ami már üresen van.

A felhasználók számára nagy érdeklődésre tart számot az üzleti folyamatok leírásának lehetősége a draw.io szolgáltatás segítségével.

A kezdéshez válassza az „Üres diagram” lehetőséget az „Alap” sablonkategóriából.

Példaként ismertetjük egy modern, kisméretű webáruház munkájához kapcsolódó főbb üzleti folyamatokat.

A munka grafikus részéhez szükségünk van a "BPMN általános" és a "BPMN események" szakaszokra.

Egy példánál nem a bolti promóció szűk sajátosságaiba, az igazgatói, keresőoptimalizálói, tartalommenedzseri, rendszeradminisztrátori munkába fogunk belemenni, akik közvetlenül is részt vesznek egy vállalkozás életében, hanem a kiindulópont figyelembe vesszük az ügyféltől érkező megrendelés beérkezését és a feldolgozási oldalon szükséges lépéseket.

Hozzon létre egy eseményt a diagramon - egy jelentkezés beérkezése az online áruházat fenntartó vezetőhöz, amelyre a jelentkezés (bejövő üzenet) beérkezését szimbolizáló boríték ikont és a reakciót leíró "Feladatok" tárolót húzzuk. a fellebbezés.

Hozzuk létre a kapcsolatot úgy, hogy egy nyilat helyezünk a két blokk közé.

A draw.io online eszköz használatának kényelmét szolgálja felső panel vezérlő, amely tartalmazza a műveletek törlésére, méretezésre, görgetésre és rétegkezelésre szolgáló gombokat, valamint a leggyakrabban használt elemeket (vezérlőpontok, összekötő nyilak).

A bal egérgomb dupla kattintásával szerkesztjük a blokkon lévő szöveget, átnevezve a „Feladat”-ot „Raktáron lévő megrendelt áruk elérhetőségének ellenőrzése”-re. Ettől a lépéstől kell az online áruház vezetőjének megkezdenie a megrendelés elemzését, mivel ettől függ az ügyféllel való kommunikáció további lépései.

Logikus feltételezni, hogy a következő blokk egy olyan feltétel, amely meghatározza a műveletek sorrendjét a készletegyenlegek ellenőrzésének különböző eredményeihez.

* Fontos megjegyezni, hogy az üzleti folyamatokat nem papírra írják, hanem hétköznapi emberek, vállalati alkalmazottak számára. Minél részletesebb és részletesebb a tanulmány, annál kevesebb hiba fordul elő a jövőben. Megvalósítása sikerének 80%-a a feladat kitűzésétől függ.

Ha az áru raktáron van, akkor a „Felhasználó által kitöltött adatok helyességének ellenőrzése”, ha nincs, a „Pontos szállítási dátum megadása” menüpontra léphet. Ahhoz, hogy megjegyzést írhasson bármely blokk vagy nyíl fölé, ki kell választania az "Általános" lapot és a "Szöveg" elemet. Ebben az esetben ezek az "Igen / nem" utasítások jelzései.

Elemezzük a negatív ágat, és írjuk fel a diagramra a cselekvés minden további lépését.

Egy kiegészítő blokk „Kapcsolatfelvétel a szállítóval, kérje a pontos szállítási időt”, két fő „Átvétel alternatívák raktáron lévő és csereként felajánlható áruk”, „A kitöltött felhasználói adatok helyességének ellenőrzése” és a „Telefonos kapcsolatfelvétel és a szállítás részleteinek egyeztetése” című kommunikációs blokk az ügyféllel. Fontos, hogy előre felkészüljünk minden eredményre, és ezért alternatívákat dolgozzunk ki. Esetünkben a draw.io szolgáltatásban olyan üzleti folyamatot hoztunk létre, amely alternatívák kiválasztásához kapcsolódik, amely segít megtartani az ügyfelet abban az esetben, ha a szállítási határidővel nem ért egyet. A segédblokkok szaggatott vonalként jelennek meg, elérhető a "BPMN General" fülön.

Ha az üzlet a vásárlói hűségén dolgozik, akkor lehetőség van még egy blokk hozzáadására egy alternatív termék személyi kedvezmény nyújtásához kapcsolódóan, ha a határidők a webáruház hibájából késnek (pl. , a fennmaradó áruk hibásan jelennek meg (a "raktáron" oldalon, és Valójában az áruk véget ért)).

Most még egy feltételt kell hozzáadni: "Az ügyfél elfogadja a megrendelést." Ebben a szakaszban dől el minden tevékenység kimenetele, vagy a megrendelés feldolgozásba kerül, majd az "Ellátási Szolgálathoz" kerül, vagy a menedzser lezárja a megrendelést, felajánlva, hogy értesítést kap a raktáron lévő áruk átvételéről a webhely látogatója, aki elhagyta az alkalmazást.

Így mindössze 5 percnyi idő elteltével az értékesítési vezetőhöz kapcsolódó draw.io szolgáltatásban üzleti folyamatokat dolgoztunk ki. Hasonlóképpen diagramokat készíthet külön lapokon az online áruház tevékenységében részt vevő többi részlegről, valamint összefoglalhatja a vállalat összes szolgáltatását.

Egy dokumentum jövőbeni megnyitásához csak fel kell lépnie a szolgáltatás webhelyére, és a „Meglévő diagram megnyitása” lehetőség kiválasztásával keresse meg a korábban mentett xml-projektet.

A végeredményeken túl a korábban megadott formátumban lehetőség van diagramok és diagramok exportálására pdf és html dokumentumokat, valamint képek formájában és vektoros grafika(SVG).

Nemrég lehetővé vált a draw.io letöltése programként PC-re (működik Windows rendszerek, MacOs, Chrome OS, Linux) és telepítse másként mobil alkalmazás amely iOS és Android rendszeren is működik.

Ebből a célból kattintson a "Speciális" gombra a vezérlőpulton, és válassza a "Letöltés" lehetőséget a megnyíló menüben.

Az áttekintésben bemutatott információk elégségesek ahhoz, hogy elkezdhessünk dolgozni a projekten, függetlenül attól, hogy melyik iparághoz, tevékenységi területhez vagy termeléshez tartozik, legyen szó programozásról, adminisztrációról, tervezésről, menedzsmentről, forgalmazásról vagy ellátásról stb.

Ha nehézségekbe ütközik, mindig elolvashatja az online szolgáltatás weboldalán található utasításokat és hivatalos dokumentációt.

Helló, kedves Habrazhitel! Bemutatom Francesco Zuppichini cikkének fordítását a Draw.io-ból a Vue.js alkalmazásba.


Ez az első publikációm a Habréról, és úgy döntöttem, hogy először lefordítok egy cikket egy nagyszerű eszközről, amely lehetővé teszi Vue.js alkalmazás létrehozását UML diagramból.
Meglepődött? Csak csodálkoztam, amikor belebotlottam.


Természetesen, mint minden béta verzióban, itt is van min dolgozni. Például először felvettem a kapcsolatot a szerzővel, és azt mondtam, hogy javítani szeretnék az összetevősablon szerkezetén és az elérési út elnevezésén. A szerző egy órán belül felvette a kapcsolatot, közzétette a kódot a GitHubon, és írt egy kis oktatóanyagot. A PR elfogadása után engedélyt kaptunk a cikk fordítására, az eredeti hivatkozással.


Kinek érdekes - kérdezem kat alatt.

A Draw.io-tól a Vue.js alkalmazásig


Az alkalmazás elkészítésének olyan egyszerűnek kell lennie, mint egy grafikon megrajzolása a draw.io alkalmazásban
Francesco Saverio

Mi lenne, ha azt mondanám, hogy ezt átalakíthatod:






Az eredmény egy Vue.js projekt, amely tartalmazza az összes fájlt és importálást, amelyre szüksége van a nagyszerű termék felépítéséhez. Klassz, ugye?


Készítettem egy rövid bemutató videót, amit itt nézhet meg:


A webalkalmazás csak egy grafikon

Minden webalkalmazás kifejezhető grafikonként
Gondolkozzunk egy kicsit. Ha olyan keretrendszert használ, mint a React, Angular vagy Vue, mindig van egy gyökérkomponense.


Példánkban a gyökérkomponens a komponens App, minden más csak egy gráf csomópont. Az első szinten tudunk azonosítani itthonÉs index csomópontok mint közvetlen gyerekek App.


A webalkalmazások fejlesztésében elterjedt szabvány a komponensek gráf alapú könyvtárstruktúrában történő tárolása. Ezért általában minden komponenshez létrejön egy azonos nevű könyvtár, ahol maga a komponens és az összes gyermeke található.


Például, Index a saját maga által összeállított részgráf gyökere, felhasználóÉs Hozzászólás. Ezért célszerű ezt az absztrakciót utánozni az alkalmazási struktúrákban.




Ez két előnnyel jár: a méretezhetőséget, mivel az algráfok függetlenek, valamint az alkalmazás szerkezetének és logikájának könnyű megértését.


Ráadásul mindig lehet látni átfogó szerkezet alkalmazásokat csak a grafikonra nézve.

Grafikontól az alkalmazásig

Tehát azt mondtuk, hogy minden webalkalmazás tulajdonképpen egy grafikon, így ebből generálhatjuk őket.


Végül is minden fájl, amely grafikonnal kezdődik, egyszerű. Csak meg kell találnia a fa metszéspontját, és minden fájlt létre kell hoznia a helyi gyökérkönyvtárában, és ezt rekurzívan megteheti.


A probléma az, hogy tudjuk, hogy a modern webalkalmazásokban az összetevők más összetevőket importálnak és használnak. Ezért mindegyiket a függőségeihez kell rendelnünk, és az aktuális programozási nyelv alapján létre kell hoznunk egy dinamikus sablont, amely tartalmazza a megfelelő szintaxist az importálásukhoz.


BAN BEN JavaScript fájlokígy importálva:


olaszország importálása "olaly"-ból // egész modul importálása (Spagetti) "olaly"-ból // egyetlen entitás importálása olaszországból

Ezért ahhoz, hogy grafikonról alkalmazásra léphessünk, minden fájlt létre kell hoznunk, a grafikon alapján a megfelelő pozícióba kell helyeznünk, és meg kell jelenítenünk a megfelelő függőségi importsablont.

Drawio2Vuejs

Létrehoztam egy csomagot, amely lehetővé teszi az alkalmazás rajzolását a draw.io-ban, és az exportált xml-fájl használatával Vue.js alkalmazást hozhat létre. Ez az úgynevezett graph2app-drawio2vuejs.


A csomag itt található:



Igazából ez nem új ötlet, én fejlesztettem Kis idővel ezelött egy módja annak, hogy nagyjából ugyanezt tegye a python használatával:



De ne feledje, hogy ez egy új verzió npm csomag sokkal jobb.


Tehát először telepítse a csomagot globálisan az npm segítségével:


$ npm i -g graph2app-drawio2vuejs

Most már használhatja a terminálban a következő paranccsal:


$drawio2vuejs

De természetesen több érvet is át kell adni:


$ drawio2vuejs --help Használat: drawio2vuejs scaffold Vuejs alkalmazás a Draw.io-ból Opciók: -V, --version a verziószámot adja ki -d, --dist Kimeneti cél -x, --xml xmlPath -h, --help kimeneti használati információk

Ügyeljen arra, hogy adja meg a draw.io xml fájl elérési útját.


Itt az ideje rajzolni! Nyissa meg a draw.io webhelyet, és válassza ki UML a bal oldali panelen, és kattintson a gombra Tárgy:




Most kezdheti az első csomópont létrehozásával. Ne feledje, hogy ez lesz a gyökérkomponense. Az én eseteimben a gyökérkomponens mindig az első csomópont ami a diagramon látható.




Ezután a létrehozni kívánt alkalmazástól függően hozzáadhat egy másik csomópontot.




Most szeretnénk itthon volt gyermek elem App. Szóval kattints itthonés a nyíl segítségével csatlakozzon App.





Mi van, ha mi is akarjuk App import itthon mint függőséget? nyomja meg használja a nyilat a bal oldali UML részben, és helyezze el innen App V itthon.




Bírság! Elkészítette első grafikonját! Készítsünk vele egy Vuejs alkalmazást az alapján.


Azt mondtuk, szükségünk van egy aktára xml szóval exportáld tömörítés nélkül. Kattintson Fájl > Exportálás másként > XML > Tömörített (nincs).


Most hozzon létre egy alap Vue.js alkalmazást a Vue parancssor használatával:


$ vue init webpack alkalmazás

Ha ezt megtette, készen állunk az alkalmazás létrehozására a grafikonból:


$drawio2vuejs --xml= dist=

Számomra ez lenne a parancs:


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

Ha minden megfelelően működik, a következő eredményt kell látnia:



Fájl app.vue frissítésre kerül, ahogyan már ott volt, hozzáadva a megfelelő importálást a számára itthon. Egy új komponens is létrejön itthon. Ha kinyitjuk app.vue, látnunk kell:



A komponens importálása megfelelően megtörtént, és a mappa itthon fájllal otthon.vue helyesen lett létrehozva!

graph2app

Nejlonzacskó drawio2vuejs egy másik általam fejlesztett csomag segítségével fejlesztettem ki: graph2app.



Hamarosan egy cikket fogok készíteni róla, hogyan kell egy modult alkalmazni három részből:

  • GraphBuilder

App, ahol a fő logika van, létrehoz egy könyvtárat és fájlokat a gráfból. Példány használatával készült grafikon GraphBuilder. A mi esetünkben én teremtettem DrawIoGraphBuilder, amely kiterjeszti a draw.io XML-fájl elemzésére.
graph2app-drawio-graph-builder


A fejlesztők a gráfelemzés alappéldányát kibővíthetik más típusú interfészekkel.


fájlt egy gráf csomópontjainak absztrakciója. Neki van minta Az, amelyből az összetevő létrejön. Így mikor graph2app megkapja a grafikont, ahhoz is kell egy példány fájlt hogy meghívja rajta a renderelési metódust és megfelelően mentse a fájlt.



Mint látható, a csomag moduláris felépítésű. Ugyanezt használhatnánk DrawIoGraphBuilder egy másik példával fájlt hogy például React alkalmazásokat hozzon létre ugyanabból a draw.io grafikonból.

Következtetés

Remélem, tetszeni fog ez a cikk. Meggyőződésem, hogy egy alkalmazás megjelenítése javíthatja a teljesítményt. A könyvtár még mindig béta állapotban van, és némi fejlesztésre van szüksége. Úgy gondolom, hogy az embereknek tetszeni fog ez az ötlet, és hozzájárulnak a fejlődéshez.


Kérem, mondja el véleményét. Köszönjük az érdeklődést.


Francesco Saverio

Címkék: Címkék hozzáadása

Io - kompakt objektum-orientált programozási nyelv

1. rész. Az Io nyelv jellemzőinek és szintaxisának áttekintése

Tartalom sorozat:

Az objektum-orientált programozási paradigmán alapuló nyelvek csoportjában az Io egyszerűségével és tömörségével tűnik ki. Nincsenek olyan ideális programok, amelyek teljesen mentesek lennének minden hibától, különösen, ha egy programozási nyelv megvalósításáról van szó. Éppen ezért kellő részletességgel kell tanulmányozni bármely programozási nyelv (jelen esetben az Io) képességeit és jellemzőit, valamint alkalmazási területeit, mielőtt végső ítéletet hoznánk a programozás szükségességéről, hatékonyságáról, kényelméről. fejlesztő stb.

Az io nyelv megjelenésének története

Az Io nyelv 2002-ben jelent meg, amikor szerzője, Steve Dekorte, a programozási nyelvek működésének és megvalósításának alapelveit jobban megérteni, úgy döntött, hogy az elméletet a gyakorlattal ötvözi, és megírja saját egyszerű és tömör nyelvét. A Decort az Io-t tiszta, prototípus-alapú, dinamikusan tipizált objektum-orientált nyelvnek tervezte, amely megszünteti az "osztály" és a "példány" közötti különbséget. A Wikipédia megjegyzi az olyan nyelvek Io-ra gyakorolt ​​hatását, mint a Smalltalk (a "minden egy objektum" elve és a dinamikus gépelés), a Self és a NewtonScript (prototípusokon alapuló objektummodell), a Lisp (az utasítások és adatok egyenértékűsége programkód), valamint a Lua és az act1.

Általános információ

Az Io programkódot egy kompakt, nagymértékben hordozható eszköz segítségével fordítják le és hajtják végre Virtuális gép. A különböző platformokhoz tartozó Io-csomagok a webhelyén találhatók. Az Io nyelvet a BSD/MIT licenc feltételei szerint terjesztik.

Főbb tulajdonságok adott nyelv amelyeket maga a szerző is kiemel, az a fogalmi egyszerűség és tömörség, a beágyazhatóság (más nyelven írt kóddal való kombinálhatóság) és a bővíthetőség, a belső objektumok futás közbeni dinamikus megváltoztatásának képessége, az introspekció, valamint a párhuzamosság koncepciójának megvalósítása.

Az Io-ban minden entitás olyan objektum, amely a program végrehajtása során változhat. Bármely program kódja kifejezésekből áll, amelyek a program végrehajtása során is módosíthatók. A kifejezések pedig valójában üzenettovábbítási utasítások. Megvalósította az objektumok környezeti hatókörének mechanizmusát a függvények és kódblokkok szintjén. A szereplőket a párhuzamos számítások kezelésére használják.

Program végrehajtás

Az Io programokban a függvény jelenléte nem szükséges. fő() vagy valamilyen speciális objektum, amelytől a végrehajtást el kell kezdeni. Így az Io-programok bizonyos mértékig szkripteknek tekinthetők.

A program indítása innen parancs sor a következőképpen történik:

io Projects/io/my_first_prog.io

Dolgozhat az Io interpreter interaktív módjában is, amint az az 1. listában látható.

Felsorolás 1. Az Io interpreter interaktív használata
$ io Io 20070410 Io> "It"s Io interpreter" println It"s Io interpreter ==> It"s Io interpreter Io>

Interaktív módban nem csak a beírt kifejezés végrehajtásának eredménye jelenik meg, hanem a kifejezés által visszaadott érték is, amelyet a " előtag jelöl. ==> ". Ebben az esetben a kifejezés végrehajtásának eredménye megegyezik a visszatérési értékkel.

Megjegyzendő, hogy interaktív módban a beírt kifejezések a Lobby nevű objektumnak megfelelő általános felső szintű kontextusban hajtódnak végre.

Lista 2. Az Io program legfelső szintű kontextusának tartalma
$io Io 20070410 Io> print Object_0x9898a88: Lobby = Objektum_0x9898a88 Protos = Objektum_0x9898550 args = metódus(...) exit = metódus(...) forward = metódus(...) launchPath = "/home/alexs/projects/io " ==> Objektum_0x9898a88: Lobby = Objektum_0x9898a88 Protos = Objektum_0x9898550 args = metódus(...) exit = metódus(...) forward = metódus(...) launchPath = "/home/alexs/projects/io" Io>

Interaktív módban a tárolt programokat is végrehajthatja külön fájlokat az alábbi:

doFile("my_first_prog.io")

A megadott program alapértelmezés szerint ugyanazon objektum környezetében fut le előcsarnok. Ha a betöltött programot egy másik objektum kontextusában kell végrehajtani, akkor ennek az objektumnak a neve a metódus meghívása előtt kerül megadásra doFile(), és az Io nyelv szempontjából üzenetet küld az objektumnak:

myMainObject doFile("my_first_prog.io")

Io nyelvi szintaxis

Az első dolog, ami felkelti a figyelmedet, amikor megismerkedsz az Io nyelv szintaxisával, az a fenntartott kulcsszavak és más nyelvekből ismert operátorok hiánya. Bármely program forráskódja kizárólag üzenetekből álló kifejezések használatával íródik, amelyek mindegyike egy objektum, amely a program futása közben bármikor elérhető (és változtatható).

A nagyobb áttekinthetőség érdekében használhatja a nem szigorú Backus-Naur forma jelölést (a betűket idézőjelbe kell írni), a 3. listában látható.

Lista 3. Io nyelv jelölése
kifejezés::= ( üzenet | terminátor ) terminator::= "\n" | ";" üzenet::= szimbólum [ argumentumok ] szimbólum::= azonosító | szám | string arguments::= "(" [kifejezés [ ( "," kifejezés ) ] ] ")"

Az Io a három legszélesebb körben használt megjegyzésformátumot támogatja: //, /* */ És # . Gyakorlati alkalmazásuk módjai nyilvánvalóak.

Az üzenet tartalmazhat argumentumok listáját, amelyeket közönséges kifejezésként adnak át, és az üzenetet fogadó objektum értékeli ki őket.

Felsorolás 4. Üzenet használata hurkoláshoz
Io> for(i, 1, 5, i println) 1 2 3 4 5 ==> 5 Io>

Feltételes kifejezések is szerepelhetnek az argumentumlistában, amint az az 5. listában látható.

Felsorolás 5. Feltételek használata üzenetben
Io> béta:= 7 ==> 7 Io> alfa:= if(béta > 5, béta, 5) ==> 7 Io>

Még egyszer meg kell jegyezni, hogy az első esetben a szó szerinti számára a második esetben pedig a szó szerinti ha nem speciális űrlapok vagy foglalt kulcsszavak, hanem egyszerűen üzenetek.

Az Io nyelven elérhető operátorok

Az operátor olyan üzenet, amelynek neve nem tartalmaz alfanumerikus karaktereket (kivéve az írásjeleket és az aláhúzást). Az operátorok közé tartoznak a literálok is: és, vagy, vissza. Példa az operátor használatára:

1 + 2

Az Io nyelv koncepciója szerint ez a kifejezés üzenetté áll össze:

1 +(2)

Azaz a számérték 1 az üzenet elküldve" + "érvekkel 2 .

Az összetett kifejezésekben a standard aritmetikai operátorok precedenciája megfelel az analóg C aritmetikai operátorok precedenciájának.

A felhasználó által megadott utasítások végrehajtása balról jobbra történik.

Az Io-ban három hozzárendelési operátor található:

  • ::= létrehoz egy slotot, létrehoz egy beállítót az adott réshez, és értéket rendel a slothoz;
  • := létrehoz egy slotot és értéket rendel hozzá;
  • = ha a slot létezik, akkor értéket kap, ellenkező esetben kivételt dob.

A hozzárendelési operátorok fordításkor megfelelő üzenetekké alakulnak, az alábbiak szerint:

beta::= 7 fordítja a newSlot("béta", 7) beta:= 7 fordítja a setSlot("béta", 7) beta = 7 fordítja az updateSlot("béta", 7)

A fent felsorolt ​​üzenetek metódusai felülbírálhatók (azaz saját metódusokkal helyettesíthetők). Különösen a helyi objektumok esetében a metódusok updateSlot()úgy vannak átírva, hogy ne legyenek kivételek, amikor értékeket rendelnek ezeknek a helyi objektumoknak a kifejezetten meghatározott helyeihez.

Munka húrokkal

Az Io-ban szereplő karakterláncok idézőjelek közé zárt karaktersorozatok. Ha maga a dupla idézőjel egy karakterláncban található, akkor azt fordított perjellel kell megszakítani, például:

string:= "Az Io-ból hiányzik a \" fogalma kulcsszó\", mint olyan."

A sor tartalmazhat szabványos Esc karaktereket (\n, \t, \a stb.):

string:= "Ez az első sor.\nEz a második sor.\nEz a harmadik sor."

A karakterek elkerülése érdekében, és a többsoros szövegtömbök természetes formájukban történő megírásához az ilyen blokkot három dupla idézőjellel kell kezdeni és befejezni, az alábbiak szerint:

longstring:= """Az Io nyelv a "minden egy objektumon" koncepción alapul. A forráskód üzenetekből álló kifejezések. Az operátorok is üzenetek."""

Numerikus értékek

Számok írásakor szinte minden szabványos formátum megengedett, és az Io támogatja a numerikus értékek hexadecimális jelöléssel történő írását is.

Lista 6. Az Io által támogatott számformátumok
Io> 12 + 18 ==> 30 Io> 3,14 * 2 ==> 6,28000000000000002 Io> 0,987 + 11,003 ==> 11,9900000000000002 Io> 2e4 = 0,2e4 ->5e4 - 5,1 12e-4 == > 0,0011438 Io> 0xFF + 0x3 ==> 258 Io> 0XE - 0xa ==> 4 Io>

Az aritmetikai kifejezések kiértékelése a hagyományos módszer szerint történik, annak ellenére, hogy az aritmetikai műveleteket jelölő operátorokat az értelmezőben a megfelelő metódusok hívásaivá alakítják (ez a mechanizmus rejtve van a felhasználó elől):

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

A számítások eredményének valamilyen objektumra való átviteléhez a módszert használják doString(), ahogy az a 7. listán látható.

Felsorolás 7. A doString() metódus használata
Io> myNewObject:= Objektum klón ==> Object_0x99336f0: Io> myNewObject doString("(18+25)*33") ==> 1419 Io>

Ha a módszer hívása előtt doString() az objektum neve nincs megadva, akkor az eredmény számítása és kiadása az aktuális kontextusban történik.

Io program példa

A legtöbb esetben egy programozási nyelv szintaxisának jobb megértését segíti a program nem túl nagy méretű és logikailag felesleges bonyodalmakat nélkülöző forráskódja. Személyes tranzakciók egyszerűsített utánzása bankszámla első élményre nagyon alkalmas. A forráskód a 8. listában látható.

Listázás 8. Személyes számla tranzakciók
Számla:= Tárgy klón Számlaegyenleg:= 0 Számla befizetés:= mód(összeg, egyenleg = egyenleg + összeg) Számlakivonás:= mód(összeg, egyenleg = egyenleg - 1.005 * összeg) számla:= Számla klón számla befizetés(5000.00) számla visszavonása(250.00) számlaegyenleg nyomtatáslnIo> doFile("my_acc.io") 4748.75 ==> 4748.75 Io>

Ez a program szinte az összes, az előző részekben leírt szintaktikai elemet – üzeneteket, hozzárendelési operátorokat, ill. aritmetikai operátorok, számértékek. Az objektumok, slotok és metódusok létrehozásáról és használatáról a ciklus második cikkében, illetve ben lesz szó Ebben a pillanatban elég megérteni őket intuitív szinten.

Vezérlési struktúrák

Az Io nyelvben a logikai vezérlőstruktúrák működésének biztosítására speciális szinglitonokat határozunk meg (singleton) igaz(igaz) és hamis(hamis), valamint egy speciális szingli nulla, amely meghatározatlan értéket jelöl ("nincs érték").
A logikai összehasonlítási műveleteket a következő módszerekkel hajtják végre: ==!=><>=<= , amelyek visszatérnek igaz vagy hamis. Ezen kívül van egy módszer összehasonlítani (), amely értékeket ad vissza -1 (Kevésbé), 0 (egyenlő) ill 1 (nagyobb, mint) és speciális érték-összehasonlítási módszerek megvalósítására használják.

Módszer ha() a következő formában használják:

ha(<условие>, [, más ]) if(nevező == 0, "Hiba" println)

Itt van az opcionális rész más kimaradt. Egy feltételes kifejezés akkor tekinthető igaznak, ha az eredménye igaz, és ha a feltételes kifejezés megadja az eredményt hamis vagy nulla, akkor ez hamis.

Módszer ha() az ellenőrzés eredményéből számított üzenetet adja vissza értékként, így az alábbi kifejezések egyenértékűek:

if(összeg< 100, x:= sum, x:= 100) x:= if(összeg< 100, sum, 100)

A feltételes kifejezések kibővített formában is írhatók:

if(összeg< 100) then(x:= sum) else(x:= 100)

Ezenkívül egy módszer támogatott a feltételes kifejezések egymásba ágyazására elseif():

if(összeg< 10) then(x:= 0) elseif(sum < 10) then(x:= 1) else (x:= sum)

A Smalltalk-stílusú módszerek is támogatottak: ha igaz(), ifFalse(), ifNil()És ifNonNil(), amely lehetővé teszi kifejezések írását a következő formában:

(összeg< 100) ifTrue(x:= sum) ifFalse(x:= 100)

Itt különös figyelmet kell fordítani arra, hogy a kezdeti feltételes kifejezést zárójelbe kell írni.

Ciklusok

A ciklus legegyszerűbb típusa a feltétel nélküli végtelen ciklus, amelyet a módszerrel valósítanak meg hurok():

loop("végtelen hurok" println)

Ha a ciklust szigorúan meghatározott számú alkalommal kell megismételni anélkül, hogy bármilyen feltételt ellenőriznénk, akkor a módszert alkalmazzuk ismétlés(), ahogy az a 9. listán látható.

Felsorolás 9. A repeat() metódus használata
Io> 3 ismétlés("Figyelem!" println) Figyelem! Figyelem! Figyelem! ==> Figyelem! Io>

metódussal írunk egy ciklust, amelynek az ismétlődéseinek pontos száma előre nem ismert, de meghatározott feltétellel kell végrehajtani az iterációkat. míg():

míg(<условное_выражение>, <сообщение>)

Ennek a ciklusnak az a jellemzője, hogy ha egynél több üzenetet kell rögzíteni a ciklus törzsében, akkor ezeket az üzeneteket az átmenet szimbólummal kell elválasztani egymástól. új sor, nem vessző, különben a ciklus nem fog megfelelően futni. Ezenkívül célszerű a feltételes kifejezést az első sorban hagyni, és a ciklustörzs minden üzenetét külön sorba írni. Ez a 10. listában látható űrlap ismerősebb lesz.

Lista 10. Példa egy while ciklusra
Io> a:= 10 ==> 10 Io> while(a< 20,)->a println)-> a = a + 2)->) 10 12 14 16 18 ==> 20 Io>

Módszer for() lehetővé teszi egy ciklus megszervezését bizonyos határértékekkel és egy adott számlálólépéssel. A hurok általános formája így néz ki:

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

Ha a számlálómódosítási lépés nincs megadva, akkor a rendszer alapértelmezés szerint az 1-gyel egyenlő lépésértéket veszi fel.

Lista 11. Példa a for ciklus szervezésére
//ebben a ciklusban a számláló változtatás lépése nincs megadva Io> for(i, 0, 3, i println) 0 1 2 3 ==> 3 //ebben a ciklusban a számláló változtatás lépése van megadva Io> for(i, 0, 10, 3, i println) 0 3 6 9 ==> 9 Io>

A fenti ciklusok bármelyikének törzsében módszereket használhat a végrehajtás sorrendjének megváltoztatására: folytatni lehetővé teszi, hogy figyelmen kívül hagyja a huroktörzs többi részét, és új iterációt indítson, és szünet azonnal leállítja a teljes hurkot.

Felsorolás 12. A ciklus végrehajtási sorrendjének szabályozása
Io> for(i, 1, 10,)-> if(i == 2, folytatás))-> if(i > 7, break))-> i print)->) 134567==> nil Io>

Meg kell jegyezni, hogy a hurok nem szabványos befejezése esetén (a szünet) a visszatérési érték definiálatlannak minősül (jelölése: nulla).

Módszer Visszatérés lehetővé teszi, hogy kilépjen egy kódblokk vagy metódustörzs bármely részéből a kívánt visszatérési értékkel, például:

Felsorolás 13. A return metódus használata metódusból származó érték visszaadására
Io> test:= method("első" println; "második" println; return "exit"; "third" println) ==> method("first" println; "second" println; return "exit"; "third" println) Io> teszt első másodperc ==> kilépés Io>

Az Io nyelv egy ciklust is megvalósít az egyes, de gyakorlati alkalmazása némileg eltér a hagyományos ciklusok használatától, ezért a következő cikkekben ezt a ciklust is figyelembe vesszük.

Következtetés

Az Io nyelv tiszta objektumnyelv, vagyis a "minden egy tárgy" koncepció megvalósítása. Szintaxisa egyszerű és világos, bár első pillantásra szokatlannak tűnhet. Az Io megvalósítja az összes de facto szabványos konstrukciót és operátort.

A leírt sorozat első cikke Általános jellemzőkés az Io programozási nyelv szintaxisa. A második cikk a nyelv objektumrendszerét, a harmadik cikk pedig az Io további szolgáltatásait és képességeit vizsgálja.