Limbajul de programare Dragon. Instrucțiuni pentru lucrul cu IS Dragon

Care este forța motrice a programului? Ce generează un rezultat util? Desigur, algoritmul. Algoritmul creează efectul pentru care a fost scris programul. Algoritmul nu funcționează singur. Funcționează împreună cu structurile de date. Dar algoritmii sunt cei care alcătuiesc cea mai mare parte a programului.


Din punct de vedere istoric, algoritmii din programe au fost scriși ca text sursă. Aproape nimeni nu se îndoiește că textul este cel mai bun mijloc de prezentare a algoritmilor. Algoritmul este codificat în interiorul funcțiilor într-un limbaj de programare precum C sau JavaScript. Pentru cei care doresc să înțeleagă algoritmul din vedere de pasăre, este furnizat pseudocod. Cu toate acestea, există probleme serioase cu textul. Faptul este că o persoană nu este optimizată pentru text continuu. O persoană este optimizată pentru percepția grafică. Textul este o invenție relativ nouă, dar organismele procesează informații grafice de milioane de ani.


Pe baza acestui lucru, ar fi logic să compunem algoritmi în formă grafică. Uită-te la ingineri. Ei folosesc planuri peste tot. De ce sunt programatorii mai răi? Și ei ar putea să elaboreze planuri ale algoritmilor. Unii de aici vor obiecta: programarea vizuală se presupune că este ineficientă. UML este incomod, iar diagramele de flux sunt ușor de pierdut. Este mai bine să programați în mod tradițional - cu text. În programarea structurată, există cel puțin o structură și oferă ordine și uniformitate. Și în plus, desenarea diagramelor este lung și dificil. Tastarea este mai rapidă decât desenarea.


Deci, sunt programatorii sortiți să lucreze toată viața doar cu text?
Poate că nu e tot rău. Există limbaje vizuale pentru reprezentarea algoritmilor care au și ordine și structură, cum ar fi Diagramele de acțiune DRAGON, BPMN și LML. Aici ne vom uita la limbajul algoritmic vizual DRAGON.

Cum se programează în limbajul DRAGON

DRAGON nu este un limbaj de programare independent. Funcționează în tandem cu un limbaj bazat pe text, cum ar fi JavaScript, Python sau C++. Împreună cu limbajul text, DRAGON formează un limbaj hibrid: DRAGON-JavaScript, DRAGON-Python sau DRAGON-C++.


Programarea într-un limbaj hibrid se desfășoară după cum urmează:

  1. Să desenăm o diagramă DRAGON.
  2. În interiorul pictogramelor plasăm bucăți mici de cod în limbajul de programare corespunzător.
  3. Programul de traducere convertește circuitul DRAKON într-un fișier text cu cod sursă.
  4. Acest fișier text este inclus în proiect ca de obicei.
    Astăzi, mai mulți editori acceptă generarea de cod din diagrame. Exemplele din acest articol au fost realizate în DRAKON Editor.

Generarea codului dintr-o diagramă

În diagramă, DRAGON preia controlul asupra fluxului de execuție. Prin urmare, bucățile de cod sursă din pictograme nu ar trebui să conțină cuvinte cheie precum dacă, altfel, intrerupator, caz, pentru, in timp ceși așa mai departe.


În interiorul pictogramelor ar trebui să existe doar cod simplu, fără ambiguitate: expresii aritmetice, atribuiri de valori, apeluri de funcții, comparații. Dar ramificarea și ciclurile sunt implementate de constructe ale limbajului DRAGON.



Generarea codului are loc după cum urmează:

  • Din fiecare diagramă se creează o funcție.
  • Titlul diagramei devine titlul funcției.
  • Parametrii funcției sunt preluați din pictograma „Parametri formali”, care se află în partea dreaptă a numelui diagramei.
  • Corpul funcției este generat pe baza structurii diagramei și a conținutului pictogramelor.

În fig. 1 prezintă un exemplu de diagramă mică în limbajul hibrid DRAGON-JavaScript și codul generat în JavaScript:


Dreptunghi cu text console.log(pisică, câine)în fig. 1 este pictograma „Acțiune”. Cât cod puteți pune într-o pictogramă Acțiune? Ar trebui să vă străduiți să vă asigurați că o pictogramă conține un singur gând. Uneori este o singură linie de cod, alteori mai multe.
Codul generat este prevăzut cu comentarii care indică numerele pictogramelor. În timp ce vă aflați în editor, puteți sări rapid la orice pictogramă apăsând Ctrl+I.

Fig 1. Diagrama în DRAGON-JavaScript și codul generat din aceasta.

Pictograma „Întrebare”

Pentru ramificare, sunt folosite pictogramele „Întrebare” și „Alegere”.


Pictograma „Întrebare” (Fig. 2) corespunde designului dacă-atunci-altfel.


Vă rugăm să rețineți că în loc de cuvinte AdevăratȘi fals cuvintele folosite daȘi Nu(poate fi comutat la daȘi Nu).


„Adevăr” și „fals” - acest lucru sună impresionant, într-un mod științific. Cu toate acestea, o persoană este mai aproape de „da” și „nu” familiar din prima copilărie.


Inscripții daȘi Nu poate fi schimbat. Locația ieșirilor din pictograma „Întrebare” rămâne neschimbată. O ieșire coboară și cealaltă merge la dreapta. Ramificarea în limba DRAGON este întotdeauna direcționată spre dreapta, astfel încât ieșirea din partea stângă a pictogramei este interzisă. Această predictibilitate face diagrama mai ușor de citit, deoarece cititorul știe dinainte unde să caute ieșirile.


O altă caracteristică a limbajului DRAGON este că pentru ramificare se folosește nu un romb complet, ci unul trunchiat. Acest lucru economisește spațiu pe diagramă.




Fig 2. Pictograma „Întrebare”

Formule logice vizuale

Limbajul DRAGON face ca operatorii logici să nu fie necesari ȘI, SAUȘi NU, precum și operatorul „nu este egal”. Operațiile logice în sine sunt, desigur, necesare. Dar în loc de operatori text, DRAGON introduce formule logice vizuale.


Pentru a obține o formulă logică vizuală, ar trebui să conectați mai multe pictograme „Întrebare” (ca în Fig. 3).


Este deosebit de plăcut să scapi de negare. Negarea nu este intuitivă, aduce greșeli și neplăceri. Negație (operator logic NU) se realizează în limbajul DRAGON prin rearanjarea etichetelor daȘi Nu.


Înregistrarea textului expresiilor logice este cu siguranță mai compactă. Cu toate acestea, formulele vizuale sunt mai ușor de citit. Fiecare dintre combinațiile posibile de valori ale operanzilor poate fi urmărită cu un deget.




Fig 3. Formule logice vizuale

Ciclu cu săgeata

Săgețile nu sunt necesare pentru a indica ordinea obișnuită de execuție în limbajul DRAGON. Următoarea pictogramă este întotdeauna în partea de jos. Săgeata este necesară doar atunci când firul de execuție trebuie să sară în sus diagrama. Acest salt în sus înseamnă un ciclu. În consecință, săgeata în limba DRAGON este un semn al unui ciclu. La o privire rapidă asupra diagramei DRAGON, săgețile sunt imediat vizibile. Aceasta înseamnă că ciclurile sunt imediat vizibile. Acesta este un avantaj serios al DRAGON în comparație cu alte limbaje grafice. Nu trebuie să cauți cicluri.


Deci, dacă conectați pictograma Întrebare cu o săgeată, obțineți un ciclu. Acesta este un analog al structurilor in timp ceȘi face în timp ce. Figura 4 prezintă mai multe tipuri de cicluri cu săgeți.
Pictograma Întrebare într-o buclă cu o săgeată verifică condiția de ieșire din buclă. Desigur, în loc de o pictogramă „Întrebare”, pot fi mai multe. Apoi, o formulă logică vizuală este responsabilă pentru ieșirea din ciclu.




Fig 4. Cicluri de săgeți

Pictograma Alegere

Pictograma „Întrebare” conține o expresie logică, adică poate avea două semnificații: daȘi Nu. Un exemplu tipic este compararea a două obiecte. Dacă trebuie să comparați o anumită expresie cu mai multe valori, utilizați pictograma „Selectați” (Fig. 5). Aceasta se potrivește cu designul caz de vrăjitoare.


Valorile cu care se va compara expresia din pictograma „Alegere” sunt plasate în pictogramele „Opțiune”. Dacă nu există text în opțiunea cea mai din dreapta, înseamnă „toate celelalte valori”. Această opțiune goală este similară cu un cuvânt cheie Mod implicitîn interiorul unei declarații intrerupator.
Opțiunea din dreapta se poate termina cu o săgeată care indică în sus. În acest caz, avem din nou de-a face cu un ciclu de săgeți. Într-o astfel de buclă, pictograma „Alegere” va fi responsabilă pentru condiția de ieșire, nu pictograma „Întrebare”.




Fig 5. Pictogramă de alegere și pictograme de opțiune

Pictograma „Ciclul PENTRU”

În loc de bucle pentruȘi pentru fiecare DRAGON-JavaScript folosește pictograma „LOOP FOR”. Pictograma „Ciclul PENTRU” (Fig. 6) poate fi de mai multe tipuri.


Dacă după cuvântul cheie pentru fiecareși există o variabilă înaintea punctului și virgulă, apoi este generat codul pentru a itera prin matrice. Elementele matricei (dar nu indicii lor) vor fi plasate în variabilă.


Dacă după cuvântul cheie pentru fiecare Există două variabile, DRAKON Editor va înțelege că este necesară o iterație peste proprietățile obiectului (intrări din tabelul hash). Doar proprietățile proprii ale obiectelor vor fi incluse în enumerare.


A treia versiune a buclei implică prezența a trei expresii separate prin punct și virgulă. Acesta este un ciclu tradițional pentru, caracteristic limbajelor C și Java.


Puteți părăsi mai devreme un ciclu controlat de pictograma „Ciclul PENTRU” folosind pictograma „Întrebare” sau „Selectare”. Această ieșire corespunde aproximativ cuvântului cheie pauză.




Fig 6. Diferite tipuri de pictogramă „Cycle FOR” în DRAGON-JavaScript

O singură intrare pe buclă

În limbajul DRAGON există o limitare a buclelor. Fiecare buclă poate avea o singură intrare. Scopul acestei limitări este de a asigura lizibilitatea. Această limitare menține DRAGON în cadrul programării structurate, așa cum este descris de Dijkstra.


Sunt acceptabile mai multe ieșiri din buclă, dar ar trebui să existe o singură intrare. În fig. Figura 7 prezintă bucle care au două ieșiri. Este permis. În fig. Figura 8 prezintă exemple de cicluri interzise. Interzise deoarece pot fi introduse în diferite moduri.
Cu toate acestea, nu ar trebui să memorați aspectul acestor cicluri interzise. DRAKON Editor va detecta automat astfel de bucle și va emite o eroare.




Fig 7. Bucle permise cu două ieșiri


Figura 8. Bucle interzise cu două intrări

Diferențele față de programarea structurată text

După cum puteți vedea, pictogramele și macroicoanele din limbajul DRAGON corespund constructelor standard de programare structurată cu text. Cu toate acestea, există și diferențe. Textul, chiar și cu indentare, este un obiect unidimensional. Și diagrama este bidimensională. Există un grad suplimentar de libertate în diagramă, ceea ce crește expresivitatea. Încercați, de exemplu, într-un limbaj de programare bazat pe text fără repetări și mergi la descrieți un astfel de algoritm ca în fig. 9.


În ciuda libertății suplimentare față de text, DRAGON încă nu permite să cadă în anarhie. Regulile sale sunt suficient de stricte pentru a preveni tulburările. DRAGON oferă un compromis rezonabil între flexibilitate și rigoare.



Figura 9. Un algoritm care este greu de descris doar în text

Avantajele unui limbaj grafic

Limba DRAGON are o soartă interesantă. Principiile sale de bază au fost stabilite chiar de Dijkstra. DRAGON și-a dobândit forma actuală în adâncul industriei spațiale rusești. Este de remarcat faptul că regulile limbajului DRAGON nu au apărut întâmplător. Ele au fost mai întâi testate în grupuri de discuție și apoi perfecționate în proiecte spațiale reale.
Deci, care sunt mai exact punctele forte ale DRAGON?


Să începem cu faptul că DRAGON este un limbaj grafic. Și un limbaj grafic are avantaje fundamentale față de text.


În primul rând, gândurile nu sunt împrăștiate aleatoriu pe linii, ci sunt conținute în pătrate sau pictograme. Un gând - un pătrat. Gândurile diferite nu se lipesc într-o singură mizerie.


În al doilea rând, calea prin algoritm poate fi urmărită cu degetul (sau privirea). După dacă nu este nevoie sa cauti altfel. Urmați linia și vă veți găsi în pătratul dorit. Nu este nevoie să-ți treci ochii prin codul sursă în căutarea unui răspuns la întrebarea: ce s-a întâmplat mai departe?


Și diagramele au, de asemenea, o proprietate aproape magică. Se întâmplă ca o persoană să se uite la o diagramă și dintr-o dată vine o înțelegere suplimentară. Conexiunile invizibile anterior devin evidente. Acest lucru se întâmplă rar cu textul.

Reguli ergonomice speciale

Dar DRAGON nu este orice diagramă, ci diagrame elaborate. Diagramele DRAGON sunt mai ușor de înțeles decât diagramele obișnuite. Acest lucru este asigurat de tehnici ergonomice speciale. Aici sunt câțiva dintre ei.

  • Este interzisă trecerea liniilor. Deloc. Intersecțiile fac analizatorul nostru vizual să bănuiască că liniile se ating și, prin urmare, cumva conectate. Aceste suspiciuni creează o muncă mentală suplimentară. Lucrările inutile trebuie aruncate.
  • Începutul conține numele algoritmului și este întotdeauna situat în colțul din stânga sus al diagramei. Prin urmare, nu este nevoie să cauți nici măcar începutul. Este acolo unde este de obicei.
  • Diagrama are un singur capăt. Indiferent de ce se întâmplă pe parcurs (cu excepția excepțiilor), vom ajunge întotdeauna la final.
  • Sunt permise doar linii drepte. Fără curbe, îndoituri sau îndoiri inutile.
  • Sunt permise doar linii strict verticale și strict orizontale. Liniile înclinate sunt interzise. Explicație pentru iubitorii de matematică: Diagrama DRAGON este un grafic dreptunghiular plat (graficul Manhattan). Aparatul vizual uman prinde instantaneu obiecte conectate prin linii drepte ortogonale. Dar urmărirea unde va duce „curba visului american” necesită concentrare suplimentară din partea cititorului.
  • Schema DRAGON este executată de sus în jos. Această regulă evită nevoia de a scana frenetic diagrama cu ochii în căutarea următoarei pictograme. Următoarea pictogramă este întotdeauna în partea de jos. Intrarea în pictogramă este în partea de sus, iar ieșirea este în partea de jos. Deoarece știm unde este următoarea pictogramă, atunci nu este nevoie de săgeți. Liniile simple sunt suficiente. Săgețile de lângă fiecare pictogramă sunt zgomot vizual. Prin eliminarea sarcinii de conectare a pictogramelor din săgeți, le puteți atribui o misiune specială. În DRAGON, săgeata semnifică un ciclu.
  • Ramificarea are loc doar spre dreapta. Acesta este un ajutor enorm în ceea ce privește predictibilitatea și uniformitatea.
  • Pictogramele situate pe aceeași verticală trebuie să aibă aceeași lățime. Acest lucru dă sentimentul că icoanele aparțin unui singur întreg. Când toată lumea are aceeași lățime și nu există pictograme parvenite, ochiul alunecă ușor și liber peste diagramă.

Regulile de mai sus au o valoare practică enormă. Pe de o parte, sunt concepute pentru a reduce nebunia artistului. Este mai greu să creezi o diagramă confuză cu ele. Pe de altă parte, ele aduc recunoaștere diagramelor. Diagramele devin inteligibile nu numai pentru autorii lor.


Diagramele din fig. 10 și 11 demonstrează tehnici ergonomice ale limbajului DRAGON folosind exemple reale.




Figura 10. Tehnicile ergonomice ale limbajului DRAGON ca exemplu


Figura 11. Un alt exemplu de diagramă în limbajul DRAGON
Pe lângă tehnicile ergonomice, limbajul DRAGON are caracteristici unice care nu se găsesc nicăieri altundeva.

Cu cât mai la dreapta, cu atât mai rău

DRAGON are o facilitate de imagine drum fericit, sau drumul regal. Drumul Regal este calea cea mai de succes prin algoritm. În unii algoritmi, conceptele de „reușit/nereușit” și „bun/rău” nu se aplică. În ele, drumul regal arată calea cea mai așteptată. Drumul Regal trece de-a lungul liniei verticale situate în partea stângă a diagramei. Această verticală se numește frigărui. Scenariile mai puțin probabile și mai puțin reușite, precum și gestionarea erorilor, sunt plasate în partea dreaptă a diagramei. Mai mult, cu cât situația este mai proastă, cu atât ar trebui să fie localizată mai în dreapta. Este o practică bună să plasați codul care aruncă excepții sau returnează un cod de eroare în partea dreaptă a diagramei.


Destin comun

Uneori se întâmplă ca pe căi diferite printr-un algoritm să fie necesar să se efectueze acțiuni diferite, dar oarecum legate. De exemplu, punerea diferitelor valori într-o variabilă. Soarta obișnuită este atunci când acțiunile conexe stau pe linii verticale diferite, dar pe aceeași linie orizontală.


Orez. 12 prezintă o frigărui cu drumul regal, precum și utilizarea tehnicii „soarta comună”.




Figura 12. Drumul Regal și soarta comună

Siluetă

Silueta este un adevărat diamant DRAGON. Silhouette vă permite să împărțiți diagrama în părți logice. În programare, acest lucru se face de obicei prin descompunere folosind subrutine. Rutinele sunt o metodă puternică. Dar uneori ați dori să plasați o subrutină aproape vizual de programul principal și, de asemenea, să evitați agitația cu transmiterea parametrilor și returnarea valorilor. Silueta este perfectă pentru aceste scopuri. O altă aplicație a siluetei sunt mașinile cu stări finite. Dar despre asta vom vorbi în altă parte.
Se întâmplă ca algoritmul să nu poată fi extins pe un plan, astfel încât să nu existe intersecție de linii. În acest caz, în funcție de situație, se folosește fie descompunerea folosind subrutine, fie silueta.


Silueta constă din mai multe diagrame mici conectate într-un bloc complet. Aceste mici diagrame se numesc ramuri siluete. În partea de sus a fiecărei ramuri există o pictogramă „Antet de sucursală”, în partea de jos este o pictogramă „Adresă”. Numele filialei date este plasat în antetul filialei, iar numele sucursalei următoare este indicat în adresă. Numele ramurilor sunt situate pe o linie orizontală în partea de sus a diagramei. Datorită acestui lucru, puteți înțelege esența algoritmului rulând numai prin anteturile ramurilor. Silueta răspunde la trei întrebări regale:

  1. Care este numele problemei?
  2. Din cate piese este compusa?
  3. Cum se numesc aceste părți?

Să ne uităm la exemplul din fig. 13. Iată răspunsurile la întrebările regelui:

  1. Care este numele problemei? Sortați lista legată.
  2. Din cate piese este compusa? Din patru.
  3. Cum se numesc aceste părți? Construiți o matrice de conexiuni. Verificați ciclurile. Treceți prin matricea de conexiuni. Complet.


Figura 13. DRAGON-schemă „siluetă”

Ciclu de siluetă

Ramurile de siluetă trebuie comandate de la stânga la dreapta. În unele cazuri, este necesar să executați o ramură sau un grup de ramuri de mai multe ori. Acest design se numește ciclu de siluetă. Dacă pictograma „Adresă” indică către propria sa ramură sau către o ramură situată în stânga, aceasta ar trebui să fie marcată cu o etichetă specială. Același marcaj trebuie plasat pe pictograma corespunzătoare „Cap de ramură” (vezi Fig. 14). Scopul mărcii este de a face vizibil ciclul siluetei.




Figura 14. Bucla de siluetă și semne

Conectarea ramurilor siluetei este interzisă

Conexiunile a două ramuri siluete (ca în Fig. 15) sunt interzise. Fiecare ramură din interiorul siluetei ar trebui să fie independentă.




Figura 15. Conectarea ramurilor siluetei este interzisă.

Dimensiunea graficului

La programarea în limbajul DRAGON apare întrebarea: ce dimensiune ar trebui să aibă diagramele? Răspunsul este: mai puțin este mai bine. Cu cât sunt mai puține obiecte pe scena vizuală, cu atât este mai clară. În programarea textului există un astfel de ghid: este bine dacă întreaga funcție se potrivește în întregime pe ecran. Sfaturi similare pot fi date pentru schemele DRAGON. Evitați diagramele uriașe. Când întreg algoritmul este vizibil în întregime, este mult mai ușor de înțeles.
Pentru programare pe DRAGON este mai bine sa ai un monitor mare. Cel puțin 1080 de pixeli în înălțime. Atunci nu va trebui să scurtați artificial circuitele DRAGON.


DRAGON-schema siluetă ar trebui să se potrivească pe ecran în înălțime, dar nu neapărat în lățime. Diagrame siluetă poate fi destul de lată, mult mai lată de 2000 de pixeli. Este în regulă. Nu este necesar să vedeți toate ramurile siluetei în același timp. Principalul lucru este că ramura cu care lucrați în prezent este complet vizibilă pe ecran.

Critică la adresa programării DRAGON

Să ne uităm la principalele domenii de critică la adresa programării DRAGON și să încercăm să le răspundem.

  • „Diagramele DRAGON ocupă mai mult spațiu pe ecran decât programele text.” Asta este adevărat. Dar trebuie să ținem cont de faptul că sarcina DRAGONULUI este să arate complexitatea așa cum este. Cititorul programului nu trebuie să despacheteze structuri complexe în capul său. Ele trebuie să-i fie arătate în mod explicit.
  • „Algoritmii simpli arată mai bine sub formă de text.” Pot fi. Hello World arată elegant în orice limbă. Dar în viața reală, nu totul este simplu. De îndată ce apare unul dacă cuibărit în interiorul altuia dacă, DRAGON câștigă.
  • "DRAGON nu are mijloace de a afișa excepții." Există o astfel de problemă. Excepții au fost adăugate recent la limbajul DRAGON, dar nu toate implementările le acceptă. Până la sosirea implementărilor, puteți scrie blocuri try/catch în limbajul de programare corespunzător.
  • „Desenarea diagramelor DRAGON durează mult.” În editorii specializati este mult mai ușor să desenezi diagrame DRAGON decât, de exemplu, în Visio. Și în unele dintre ele, desenul a devenit aproape la fel de ușor ca și scrisul.
  • „Lipsesc instrumente pentru diferențiere și îmbinare”. Acest lucru este, din păcate, adevărat. Când lucrați cu un sistem de control al versiunilor, trebuie să comparați fișierele sursă generate.
  • „Nu există mijloace pentru depanarea circuitelor DRAKON.” Asta este adevărat. Dar puteți depana codul generat. Are etichete care indică unde din diagramă aparține o anumită bucată de cod.

Dragon Language Review

Figura 16 oferă o privire de ansamblu asupra limbajului DRAGON.




Figura 16. Prezentare generală a limbajului DRAGON

Instrumente pentru lucrul cu limbajul dragonului

Prima implementare a limbajului DRAGON a fost sistemul GRAPHITE-FLOX (Fig. 17). GRAPHITE-FLOX a fost creat în 1986-1996. specialişti de la Federal State Unitary Enterprise NPC AP numită după. Pilyugin sub conducerea lui V.D. Parondzhanova. Acest mediu a fost destinat proiectării sistemelor de control pentru vehicule de lansare și nave spațiale.


GRAPHITE-FLOX este o dezvoltare închisă, așa că se știe relativ puțin despre ea. Poate fi vizualizată o listă de nave spațiale create folosind GRAPHITE-FLOX.


La începutul anilor 90, a fost creat un alt editor DRAGON. Dezvoltarea a fost realizată la Institutul de Matematică Aplicată denumit după M.V. Keldysh sub conducerea lui L.K. Eisymont. Editorul Eisamont (Figura 18) poate fi descărcat și rulat, dar nu mai este acceptat. Editorul este scris sub MS DOS, astfel încât DOSBox poate fi necesar să ruleze pe computerele moderne.


În 2008, a fost lansat editorul Dragon IP de la Gennady Tyshov (Fig. 19). IP Dragon este susținut și dezvoltat în mod activ. Dragon IS implementează generarea de cod de program din diagrame. Una dintre caracteristicile interesante ale Dragon IS este capacitatea de a plasa cod într-un limbaj de programare și o descriere în limbaj natural într-o singură pictogramă. Avantajul incontestabil al IS Dragon este așa-numitul „calcul icoanelor”. Calculul cu pictograme este o tehnică de editare care ajută utilizatorul să deseneze o diagramă și se asigură că diagrama nu încalcă regulile limbajului DRAGON. Printre dezavantajele Dragon IS se numără o interfață de utilizator non-standard și unele inconveniente la generarea codului. IP Dragon este un produs comercial.


DRAKON Editor este un alt editor modern DRAGON (Fig. 20). DRAKON Editor a fost dezvoltat de un grup de entuziaști condus de Stepan Mitkin. DRAKON Editor nu acceptă numărarea pictogramelor. Aceasta înseamnă că circuitele DRAGON sunt asamblate manual din primitive, ca în editorii de grafică vectorială. Dar interfața cu utilizatorul din DRAKON Editor este cât se poate de simplă. Este construit după un design mai familiar decât Dragonul IS. Principalul avantaj al mediului DRAKON Editor este ușurința de programare și generare de cod. DRAKON Editor acceptă mai multe limbaje de programare, inclusiv C, C++, C#, Java, Processing, JavaScript, Lua, Erlang, Python, Tcl, Verilog, AutoHotkey, D și Go. Pentru unele limbi este posibil să se genereze mașini cu stări finite. Sunt acceptate regulile pentru sistemul expert nools. Un subset al limbajului UTOPIST de E. Tyugu a fost implementat. DRAKON Editor este open source.


O aplicație interesantă pentru limbajul DRAGON a fost inventată de Oleg Garipov în proiectul său Integrator CodeView. CodeView vă permite să vizualizați codul existent ca un set interconectat de diagrame DRAKON. Particularitatea Integrator CodeView este că nu sunt vizualizate metodele individuale, ci întregul proiect, inclusiv graficul de apel, stiva etc. Integrator CodeView este, de asemenea, unic prin faptul că arată în mod clar nu numai algoritmi, ci și date. Motorul de vizualizare a datelor din sistemul Integrator funcționează împreună cu DRAGON.


DRAKON Editor Web este o soluție comercială cloud bazată pe limbajul DRAGON. DRAKON Editor Web este conceput pentru sarcini tehnice, proceduri de afaceri și liste de verificare. DRAKON Editor Web nu este conectat în niciun fel la DRAKON Editor și nu acceptă generarea de cod din diagrame. Printre avantajele DRAKON Editor Web se numără un editor convenabil, colaborarea și suportul pentru dispozitive mobile.




Figura 17. Schema DRAGON în sistemul GRAPHITE-FLOX


Figura 18. DRAGON-editor Eisymont


Figura 19. Program cu explicații în IS Dragon


Figura 20. DRAKON Editor

concluzii

Să rezumam. DRAGON este un limbaj practic asezonat în spațiu. El a adus structură, ordine și uniformitate diagramelor de flux. Previzibilitatea și ordinea circuitelor DRAGON înseamnă că programarea vizuală lucrări.


Experiența proiectelor reale a arătat că programarea în DRAGON este posibilă. Pe de o parte, DRAGON este mai expresiv decât textul. Pe de altă parte, crește lizibilitatea programelor. Și, în plus, programele sub formă de scheme DRAGON arată, ei bine, direct dintr-o navă spațială extraterestră (deși multe depind de schema de culori). Personal, am trecut cu ușurință la DRAGON. Poate fi incomod când, dimpotrivă, uneori trebuie să programați într-un stil tradițional de text.

Adaugă etichete

Dezvoltator de programe Tyshov Ghenadi Nikolaevici
Severodvinsk, a lucrat la OJSC SPO Arktika, www.spoarktika.ru.

Programul IS Dragon este destinat:
- algoritmizarea practică a activităților dvs.
- formularea sarcinilor dvs.,
- formalizarea cunoștințelor dumneavoastră.

Programul este un instrument:
- tehnici vizuale de gândire și comunicare,
- proiectarea vizuală a algoritmilor și programelor de activitate,
- programare vizuala,
- formarea bazelor de activitate algoritmică.

Programul „IS Dragon” (Integrated Environment Dragon) este un mediu de lucru cu algoritmi Dragon.
Cu ajutorul IS Dragon, o cultură algoritmică este introdusă în multe tipuri de activități.

Descărcați programul „IS Dragon”.

Instrucțiuni pentru utilizator

    Utilizatorul poate salva un fișier grafic al unei foi Dragon sau o diagramă Dragon. Prin deschiderea unui fișier grafic într-un editor grafic, puteți adăuga, de exemplu, atribute grafice ale organizației și puteți imprima o copie pe hârtie.

    Utilizatorul poate copia imaginea Dragon Sheet sau Dragon Scheme în memoria tampon de sistem. O imagine din memoria tampon de sistem poate fi inserată în documente text sau grafice editate. Imaginea poate fi copiată în buffer de pe ecran cu elemente ale procesului de editare (cu evidențierea cursorului grafic, punctele de intrare a pictogramei), acest lucru vă permite să compilați manuale despre utilizarea Dragon IS și manuale pentru utilizatorii algoritmilor Dragon.

    Pe lângă o copie pe hârtie a algoritmului Dragon, utilizatorul poate primi un fișier text cu informații însoțitoare din textele A, B, P. Acest lucru creează posibilitatea publicării unor algoritmi Dragon complet funcționali.

    Utilizatorul poate specifica nume de fișiere sau o legătură de internet în textele algoritmilor Dragon. Când evidențiați un nume de fișier, puteți rula fișierul sau puteți deschide un fișier sau un link. Deschiderea se realizează folosind asocierea extensiilor de fișiere și a aplicațiilor instalate pe computer. Dacă nu există nicio cale în numele fișierului, fișierul este selectat prin căutarea fișierului în folderul programului. În viitor, se plănuiește căutarea unui fișier și în subdosarul " DFiles" În viitor, se plănuiește să se poată plasa nume de fișiere și link-uri în „ » pentru a executa folosind o tastă rapidă fără evidențierea în text.

    Utilizatorul, folosind capacitatea de a specifica fișiere, creează un mediu informațional extern și contextual algoritmului, inclusiv spațiul de internet.

Instrucțiuni pentru programator

    Utilizatorul poate avea un fișier text cu șabloane de cod de program în limbajul de programare selectat și îl poate copia în fereastra de mesaje. Selectați un șablon în fereastra de mesaj și utilizați memoria tampon de sistem pentru a transfera textul șablonului în textele algoritmului.

    Utilizatorul poate seta utilizarea fișierului batch " Dragon.liliac» la asamblarea codului de program în fișiere de program într-un limbaj de programare. În acest caz, o listă de fișiere de program este generată, transferată în fișierul de comandă, iar fișierul de comandă este lansat pentru execuție. Acest lucru permite ca programarea să fie combinată cu traducerea și depanarea.

    Utilizatorul poate seta modul de asamblare a codului programului cu înlocuirea textului P care lipsește din pictograme cu un comentariu cu textul „ ……Fără text" Acest lucru vă permite să blocați mesajele de eroare și să efectuați traduceri la începutul dezvoltării algoritmului.

    Utilizatorul poate seta modul de generare a codului de program pentru a activa codul de urmărire pentru executarea pictogramelor marcate.

    Utilizatorul poate genera textul de listare a algoritmului pentru foaia Dragon. Textul listării algoritmului vă va permite să comparați programatic versiunile algoritmului și să găsiți locurile de modificări.

    Utilizatorul poate seta proprietatea pentru schema Silhouette Mașinărie pentru a efectua programarea automată a mașinilor cu stări finite folosind tehnologie INTRERUPATOR. Oportunitatea a fost introdusă la propunerea S.D. Efanova.

    Se recomandă, pe lângă foile Dragon cu algoritmi și coduri de program, să creați și foile Dragon cu instrucțiuni de operare software pentru utilizatori. Instrucțiunile sunt transmise utilizatorilor împreună cu Dragon IS. Aceasta este practica de a lucra la IS Dragon de către A.A. Araptanov în sistemul 1C.

Programul are instrumente de personalizare pentru diferite limbaje de programare. Programul vă permite să asamblați scheme Dragon în coduri sursă ale programelor în limbi care au operatori: comentariu, etichetă, salt necondiționat (GOTO), salt după condiție; de exemplu, limbile din familiile 1C, Delphi, C Codul programului pictogramă este asamblat într-un fișier de către traducătorul intern de rută.

Screensaver-ul programului IS Dragon


Ce este frunza de dragon?


    Frunza de dragon este afișată în modul de programare.

    Punctele de introducere a textului (până la 4 pătrate) sunt textele A, B, S, P.

    Punctele A, B sunt destinate introducerii informațiilor însoțitoare, punctul P este pentru introducerea codului programului, punctul S este pentru vizualizarea codului programului colectat. Dacă există text, pătratul se întunecă.

    Mă cunoști? Sunt marcate locurile obligatorii pentru introducerea textului în pictograme.

Editarea unei diagrame dragon

Pictograma 3 este selectată pentru editare.
Semnul "?" pictogramele Adresă și Sucursală indică absența transferului de control. Transferul controlului este indicat vizual printr-o linie întreruptă.


Particularități

O caracteristică distinctivă a programului este gradul ridicat de automatizare a intrării grafice.

A doua caracteristică este că fiecare pictogramă are mai multe (până la 4) niveluri de introducere a textului. Unul dintre aceste niveluri este afișat pe „corpul” pictogramei, celălalt poate conține un fragment de cod de program. Nivelurile rămase (A-text, B-text, P-text, S-text) pot fi utilizate în mod arbitrar, de exemplu, conținând comentarii detaliate, link-uri și informații de sprijin.

Pentru a afișa procesele de afaceri, pictogramele sunt completate cu numele participanților la procesul de afaceri.

Toate textele afișate pot fi pe mai multe rânduri și mari.
Numărul maxim de linii dintr-o pictogramă este setat în setările programului; textul complet este afișat într-un editor de text din filă.

Descrierea formatului DRT

Instrucțiuni pentru lucrul cu IS Dragon

Pentru a imprima, procedați astfel: salvați fișierul grafic, imprimați-l în PAINT. Există opțiuni de imprimare cu scalare și aspect pe mai multe coli A4, există setări pentru imprimare.

Lecții de la DRAGON

Pentru a stăpâni tehnicile de lucru cu programul Dragon IS, este util să vizionezi videoclipuri. Este afișat procesul de la prima lansare a editorului până la încărcarea firmware-ului rezultat în microprocesor.

Site-ul web suplimentar al programului IS Dragon

Opțiuni de text și fișiere ale planurilor de lecție Dragon

Schițe de Gennady Tyshov

Informațiile însoțitoare pot conține o indicație de documente legislative, organizatorice și administrative și pot conține fragmente de documente.

Disponibilitatea informațiilor însoțitoare este importantă pentru persoanele care lucrează cu algoritmi semnificativi din punct de vedere legal. Prezența informațiilor însoțitoare pentru icoană justifică originea și valabilitatea normei legale afișate în icoană. Prezența informațiilor însoțitoare determină relevanța algoritmului Dragon semnificativ din punct de vedere juridic.

Programul Dragon IS este dezvoltat pe baza limbajelor algoritmice vizuale Dragon și Gnome create de V.D. Paronjanov și standardul de stat GOST 19.701-90 (ISO 5807–85). Ideile și scopurile limbajului Dragon au fost dezvoltate pentru o utilizare practică și pe scară largă.

Cunoștințe procedurale, algoritm - descrie ordinea acțiunilor cu un obiect, afișată în diagramele Dragon de formă PrimitivȘi Siluetă.
Cunoașterea declarativă- răspunde la întrebarea: „Ce este asta?”, afișată în diagrama Dragon a formularului Pitic.

Crearea și editarea diagramelor Dragon se realizează în Dragon IS.

Algoritmi Dragon pe tablete
Unele probleme legate de utilizarea algoritmilor Dragon creați în Dragon IS sunt discutate pe forum în subiectul „Dragon IS și Android”.

IS Dragon funcționează în alte sisteme de operare
În sistemul de operare UNIX, funcționează cu programul Wine.
Pe MacOS funcționează cu Parallels Desktop.

Acțiunile la pictogramele 19 și 21 sunt efectuate de participanții la procesul de afaceri.
Frunza de dragon este afișată în modul de programare.
Punctele de introducere a textului (până la 4 pătrate) sunt textele A,B,S,P: A,B pentru introducerea informațiilor însoțitoare, P pentru introducerea codului programului, S pentru vizualizarea codului programului colectat. Dacă există text, pătratul este întunecat.
Foaia poate fi însoțită de anteturi și subsoluri: mijloc sus, stânga jos, mijloc jos, dreapta jos.
Semnul „?” marchează locurile necesare pentru introducerea textului în pictograme, locuri pentru introducerea pictogramelor într-un bloc de pictograme pentru a asigura funcționalitatea blocului.

Ultima editare de PBworks acum 12 ani, 3 luni

RELEVATE ALE LIMBAJULUI DRAGON

CRITICA DIAGRAMELOR DE DEBIT

Un instrument eficient pentru îmbunătățirea înțelegerii algoritmilor este vizualizarea programării, iar în acest scop au fost folosite diagrame de flux ceva mai vechi. Cu toate acestea, diagramele de flux au fost recent criticate. Oponenții diagramelor de flux susțin că acestea nu sunt potrivite pentru programarea structurată, nu pot fi formalizate și, prin urmare, „nu pot fi folosite ca program pentru introducerea directă într-o mașină”. Ele ocupă multe pagini și „informații foarte limitate pot fi introduse în celulele diagramelor de flux”. Diagramele „degradează învățarea și reduc performanța de înțelegere”. În plus, nu sunt convenabile pentru toată lumea - lucrul cu organigrame este preferat doar de „persoanele cu emisfera principală dreaptă, orientate către informații vizuale, intuitive, recunoașterea modelelor”, dar sunt evitate de „persoanele cu emisfera principală stângă, orientate spre informarea verbală, înclinată spre raționamentul deductiv”, etc.

În timp ce diagramele de flux erau instrumentul cel mai utilizat înainte de 1980, astăzi ele „nu mai sunt considerate necesare și sunt în scădere în popularitate”. Deși există încercări individuale de a adapta diagramele de flux la nevoile moderne (limbaj SDL etc.), în general, diagramele de flux s-au găsit în mod clar pe marginea procesului de vizualizare a programării în curs de dezvoltare, iar capacitățile lor potențiale enorme nu sunt efectiv utilizate. Limbajul DRAGON vă permite să eliminați sau să slăbiți semnificativ deficiențele observate ale diagramelor bloc.

Pentru a desemna diagrame de flux construite conform regulilor limbajului DRAKON, se folosește termenul „diagrame dragon”.

AVANTAJELE SCHEMELOR DRAGON

Cum diferă diagramele dragon de diagramele flux? Diagramele de flux nu traduc automat un algoritm în codul mașinii. Schemele Dragon, dimpotrivă, sunt potrivite pentru înregistrarea oficială, primirea automată a codului și executarea acestuia pe computer. Cu toate acestea, a doua diferență (cognitivă) este mai importantă. Deși organigramele îmbunătățesc uneori înțelegerea programelor, acest lucru nu se întâmplă întotdeauna, iar gradul de îmbunătățire este mic. În plus, există multe cazuri în care organigramele executate prost devin confuze și greu de înțeles. În schimb, schemele-dragon satisfac criteriul de comprehensibilitate ultra-înaltă.

Datorită utilizării unor tehnici cognitive formale și informale speciale, diagramele dragon fac posibilă reprezentarea soluției oricărei probleme tehnologice, oricât de complexă, într-o formă extrem de clară, vizuală și inteligibilă, ceea ce poate reduce semnificativ efortul intelectual al personalului. necesare pentru percepția vizuală, înțelegerea, verificarea și soluționarea fără erori a problemelor.

Pictograme și macroicoane

Elementele grafice (litere grafice) ale limbajului DRAGON se numesc pictograme (Fig. 1). Așa cum literele sunt combinate în cuvinte, pictogramele sunt combinate în pictograme compuse - pictograme macro(Fig. 2).

Prin conectarea pictogramelor și macroicoanelor conform anumitor reguli, puteți construi diverși algoritmi, exemple dintre care sunt prezentate în Fig. 3, 4, 6, 8-11.

Bloc de frigarui- parte din circuitul dragonului, având o intrare de sus și o ieșire de jos, situate pe aceeași verticală. Exemple de blocuri de frigărui sunt pictogramele I3 - I10, I12 - I16, I18, I20, I21 (Fig. 1) și macropictogramele 2-20 (Fig. 2).

DE CE AI NEVOIE DE O SUCURSALA?

Când Prințesa Anne a divorțat de marchizul Le Chatelier, a apărut o dispută cu privire la împărțirea proprietății. Judecătorul a cerut să indice ce achiziții a făcut prințesa înainte de căsătorie și care după.

Acum să uităm de această dramă de familie și să comparăm orezul unul cu celălalt. 3a și 3b. Este ușor de observat că primul nu permite să răspundă la întrebarea judecătorului. În ceea ce privește al doilea, acesta, dimpotrivă, conține informațiile necesare. Mai mult, algoritmul din fig. 3b este tras în mod deliberat, astfel încât achizițiile făcute înainte și după căsătorie să fie clar împărțite în două liste. Aceste liste sunt separate vizual și spațial, astfel încât împărțirea algoritmului în două părți, indiferent de voința cititorului, este literalmente uimitoare. Această tehnică se numește ruperea algoritmului în părți semantice conform principiului „M-am uitat și a devenit imediat clar!” Și blocurile semantice în sine sunt numite ramuri.

Cuvântul „ramură” are două sensuri. Pe de o parte, aceasta este o „piesă” semantică a algoritmului. De exemplu, algoritmul din fig. 3b are două ramuri („Cumpărături înainte de căsătorie” și „Cumpărături după căsătorie”). În fig. 4 - patru ramuri („Pregătirea pentru pescuit”, „Așteptați o mușcătură”, „Munca de pescuit”, „Întoarcere”). Pe de altă parte, branch este un operator compus al limbajului DRAGON, care nu are analogi în limbile cunoscute. Operatorul „ramură” este format din trei părți: începutul firului(pictograma „numele sucursalei”), corpuri de ramuri(care poate conține un număr mare de pictograme) și capătul ramului(care conține una sau mai multe pictograme „adresă” sau o pictogramă „sfârșit”).

Deci de ce avem nevoie de o ramură? Pentru a ajuta lucrătorul în cunoștințe, programatorul și dezvoltatorul de tehnologie să oficializeze împărțirea semantică a unei probleme, program sau proces tehnic în părți și să dea părților nume semantice convenabile. În același timp, împărțirea problemei în N părțile semantice sunt implementate prin împărțirea algoritmului în N ramuri.

CUM FUNcționează O SUCURSALA?

O ramură are o intrare și una sau mai multe ieșiri. Intrarea este pictograma „nume sucursală”, care conține ID-ul sucursalei. Operatorul vizual „nume de ramură” nu efectuează nicio acțiune, este doar o etichetă care declară numele părții semantice a programului. Execuția algoritmului dragon începe întotdeauna din ramura cea mai din stânga (Fig. 3, 4).

Ieșirea dintr-o ramură este pictograma „adresă”, în care este scris numele următoarei ramuri în ordinea execuției. Pictograma „adresă” este un operator de tranziție deghizat (goto), dar nu transferă controlul nicăieri, ci doar la începutul ramurii selectate. Intrarea într-o sucursală este posibilă doar prin începutul acesteia. Ieșirea din ultima ramură se realizează prin pictograma „sfârșit”.

CUM TREBUIE ASEAZATE CURENTELE ÎN CÂMPUL DE DESENARE?

Ramurile sunt ordonate în două moduri: logic și spațial. Logic Secvența de execuție a ramurilor este determinată de marcajele scrise în pictogramele „adresă”. Cu toate acestea, ordinea logică nu este totul. În fig. 5 prezintă trei metode diferite spațială locații ale filialelor care au aceeași ordine logică. Pentru a elimina ambiguitatea spațială și pentru a facilita înțelegerea semnificației diagramei dragonului, este introdusă regula „cu cât mai în dreapta, cu atât mai târziu”. Înseamnă: ramura desenată la dreapta funcționează mai târziu decât toate ramurile din stânga.

Un algoritm desenat după regula „cu cât mai în dreapta, cu atât mai târziu” este considerat bun și ergonomic (Fig. 5c). Schemele în care această regulă este încălcată sunt declarate rele (Fig. 5a, b), iar utilizarea lor este interzisă.

În algoritmii admiși (ergonomici), are loc următoarea ordine de funcționare (Fig. 3, 4, 5c, 6a):

  • Ramura din stânga lucrează prima, ramura din dreapta durează;
  • ramurile rămase trec controlul între ele de la stânga la dreapta (se poate întâmpla ca unele ramuri să fie sărite);
  • uneori se formează un așa-numit „ciclu de ramificație”. Acest lucru se întâmplă atunci când pictograma „adresă” conține numele propriei ramuri sau una dintre ramurile din stânga. În fig. 4 și 6a, ciclul ramurilor este marcat cu triunghiuri negre.

CE ESTE O PĂLĂRIE?

Din punctul de vedere al cititorului, orice algoritm non-trivial nefamiliar sau uitat este o problemă extrem de dificilă pe care încearcă cu disperare să o înțeleagă, depășind puternica „rezistență a materialului”. Pentru a simplifica lucrurile și pentru a facilita sarcina de înțelegere, este necesar ca cititorul să „vadă lumina” și, după ce a împărțit problema în părți, să vadă structura ei semantică în ceea ce privește domeniul subiectului. Mai mult, l-am văzut nu în sensul figurat al cuvântului, nu cu ajutorul imaginației, nu cu ochiul spiritual, ci cu cei doi ochi ai mei - pe hârtie sau pe un ecran.

Dar cum să faci asta? Dificultatea este că niciuna dintre limbile existente nu oferă cititorului care studiază un program complex sau o tehnologie un ajutor eficient care îi permite să înțeleagă instantaneu (în câteva secunde) structura acestuia, adică împărțirea în blocuri semantice. Limbajul DRAGON are instrumente speciale care oferă o soluție la problemă.

Antetul este partea superioară a diagramei dragonului (Fig. 4), care include titlul algoritmului și un set de pictograme „numele ramurilor”. Scopul antetului este de a ajuta cititorul instantaneu (în cel mult câteva secunde) să navigheze problema și să primească un indiciu puternic - răspunsul la cele mai importante trei întrebări:

  1. cum se numeste problema?
  2. Din cate piese este compusa?
  3. cum se numeste fiecare parte?

La urma urmei, cu aceste întrebări, cunoașterea noastră cu orice sarcină începe cu o abordare rațională a problemei.

Iată răspunsurile pentru fig. 4.

  • Care este numele problemei? Pescuit.
  • Cate piese are problema? Din patru.
  • Care este numele fiecărei părți? 1. Pregătirea pentru pescuit. 2. Așteptând o mușcătură. 3. Munca de pescuit. 4. Drumul înapoi.

Facilități suplimentare sunt asociate cu faptul că antetul ocupă un loc „ceremonial” în câmpul desenului, iar numele părților semantice sunt plasate în cadrul unor cadre speciale cu o formă unică și, datorită acestui lucru, atrag instantaneu atenția cititorului. fără nici un efort din partea lui.

Astfel, DRAGON oferă cititorului o metodă eficientă în trei pași pentru înțelegerea unei probleme nefamiliare sau uitate. În prima etapă, prin analiza antetului, cititorul învață scopul algoritmului și împărțirea acestuia în părți semantice (ramuri). Pe al doilea, se efectuează o analiză aprofundată a fiecărei ramuri. La a treia etapă se analizează interacțiunea ramurilor.

CE E MAI BUN: PRIMITIV SAU SILUETA?

Diagrama dragonului cu ramuri se numește siluetă, fara ramuri - primitiv. Silueta prezentată în fig. 6a poate fi descris ca o primitivă (Fig. 6b). Primitiva este o conexiune în serie a pictogramei „întâmpinare” a blocurilor de frigărui și a pictogramei „sfârșit”. Într-o primitivă, pictogramele „antet” și „sfârșit” trebuie să se afle pe aceeași verticală, care este numită frigarui. Verticalele principale ale blocurilor de frigărui se află pe aceeași linie. Figurat vorbind, frigăruia pătrunde în icoanele primitive (poate nu toate), la fel cum o frigăruie adevărată pătrunde bucăți de kebab.

Se recomandă utilizarea primitivului dacă diagrama dragonului este foarte simplă (primitivă) și nu conține mai mult de 5...15 pictograme. În caz contrar, pentru a îmbunătăți lizibilitatea programului, este mai avantajos să folosiți o siluetă. Încălcarea acestei reguli este de obicei plină de probleme, deoarece împiedică cititorul să identifice esența problemei care se rezolvă și, în consecință, îngreunează și încetinește înțelegerea sensului programului.

De exemplu, algoritmul din fig. 6b pare greoaie și nerezonabil de greu de înțeles. Acest lucru se datorează faptului că conține 19 icoane, dar este reprezentat într-o formă primitivă. Crima este că diagrama din Fig. 6b nu permite cititorului să recunoască instantaneu (în câteva secunde) structura vizuală și semantică a algoritmului. De fapt, din câte părți constă problema rezolvată? Privind Fig. 6b, este destul de dificil să răspunzi la această întrebare și este imposibil să răspunzi rapid. Situația se schimbă radical când ne uităm la Fig. 6a, unde același algoritm este reprezentat în siluetă. Aici, după cum se spune, este o idee simplă: algoritmul constă din patru părți: „căută un autobuz”, „așteaptă să te îmbarce”, „urcar într-un autobuz”, „călătorie”. Totuși, acesta nu este tot: nu mai puțin important este faptul că complexitatea modelului vizual a dispărut și diagrama a dobândit o nouă calitate estetică (ergonomică): eleganță, claritate și transparență.

Astfel, în cazuri complexe, silueta poate reduce semnificativ efortul intelectual petrecut pentru înțelegerea algoritmului. În siluetă, sunt evidențiate clar părți structurale mari ale programului (ramurile), acestea sunt distanțate spațial în câmpul desenului, formând în același timp o imagine vizuală ușor de recunoscut, stabilă, previzibilă și holistică. Și într-o primitivă, părțile structurale nu sunt selectate și amestecate („totul este într-un singur heap”), ceea ce face dificilă citirea și analiza algoritmilor complecși. Cu toate acestea, pentru cazuri simple (mai puțin de 5...15 pictograme), primitivul, de regulă, se dovedește a fi mai preferabil.

CUM SE DESCRIE O SILUETĂ FOLOSIND LIMBAJUL TEXTULUI?

Din fig. 7 se poate observa că pentru a descrie ramurile au trebuit să se facă o serie de modificări la limbajul textului. În special, au apărut doi operatori de text noi care nu se găsesc în limbile tradiționale:

SUCURSALA< идентификатор ветки >

ABORDARE< идентификатор ветки >

Operatorul de limbaj text BRANCH declară numele sucursalei (scris în limbaj vizual în interiorul pictogramei „nume sucursală”). Operatorul ADRESĂ transferă necondiționat controlul operatorului text BRANCH, al cărui nume este scris în dreapta operatorului ADRESĂ.

Să luăm în considerare problema. Într-un labirint încurcat care conectează începutul și sfârșitul unui algoritm complex, trebuie să evidențiați o singură rută - un „fir de ghidare” cu care puteți compara vizual toate celelalte rute pentru a naviga cu ușurință prin problemă și a nu vă pierde în încurcătură de furculiţe. Acest fir de ghidare (să-l numim „ruta principală”) ar trebui să fie ușor de distins vizual. Cu alte cuvinte, după ce aruncăm o privire rapidă asupra diagramei dragonului, ar trebui să găsim repere clare, datorită cărora putem vedea imediat și fără greșeală traseul „regal” și celelalte rute ordonate în raport cu acesta.

Pentru a face acest lucru, se introduce o regulă: „Ruta principală a primitivului trebuie să urmeze frigăruia.” Schimbând cuvintele „da” și „nu” în furci și opțiunile din comutatoare (precum și ghirlandele de pictograme atașate acestora), ar trebui să vă asigurați că ieșirea furcii sau a comutatorului care duce la cel mai mare succes se află pe calea regală (Fig. 8) . Și traseele laterale ar trebui aranjate conform următoarei reguli: „Cu cât mai la dreapta, cu atât mai rău”(Fig. 9). Dacă aceste reguli sunt încălcate, circuitul dragonului este considerat rău (Fig. 10a). Cu toate acestea, poate fi întotdeauna transformat într-unul bun (Fig. 10b).

În cazurile în care criteriul „mai bine-mai rău” nu funcționează, ar trebui să fie ales un alt criteriu rezonabil, astfel încât deplasarea la dreapta rutei principale să nu fie întotdeauna arbitrară și haotică, ci atentă și ordonată. De exemplu, la rezolvarea problemelor matematice, ieșirile furcă și opțiunile de comutare pot fi aranjate de la stânga la dreapta în ordinea creșterii sau scăderii valorii matematice (caracteristică) corespunzătoare acestor ieșiri (Fig. 11, 12).

RUTA PRINCIPALĂ A SILUETEI

În paragraful anterior, am învățat cum să ordonăm rutele primitive. Acum este rândul siluetei.

Ramuri frigaruite se numește verticală care conectează pictograma „nume sucursală” cu pictograma „adresă”, iar dacă ramura are mai multe ieșiri - cu cea din stânga. Pentru ramură, ambele reguli „regale” rămân în vigoare:

  • traseul principal al ramului ar trebui să urmeze frigăruia;
  • traseele laterale ale unei ramuri ar trebui ordonate de la stânga la dreapta după un anumit criteriu.

Să presupunem că principiul „cu cât mai la dreapta, cu atât mai rău” este ales drept criteriu. În acest caz, fiecare ramură a siluetei ar trebui să fie construită după o singură regulă: cu cât mai în dreapta (cu cât este mai departe de frigăruia unei ramuri date) următoarea verticală este situată, cu atât acțiunile pe care le efectuează sunt mai puțin reușite.

De exemplu, în Fig. 6a linia „încărcare în autobuz” are trei verticale. Verticala din stânga (traseul principal) descrie cel mai mare succes, deoarece veți sta în autobuz. Verticala potrivită înseamnă cel mai mic succes, din moment ce ai coborât din autobuz și călătoria este amânată. Verticala din mijloc (situată deasupra pictogramei „Vrei să călărești în picioare?”) ocupă o poziție intermediară, deoarece - în funcție de răspuns - poate exista fie succes parțial (vei călărești, dar nu stând, ci în picioare), fie eșec, din moment ce cobori din autobuz cu un sorbiu ușor.

Traseul principal siluetei- conectarea secvenţială a principalelor rute ale ramurilor care funcţionează alternativ. Astfel, DRAGON permite cititorului să vadă instantaneu traseul principal al oricărui algoritm, oricât de complex și ramificat, și, în plus, face ca deplasarea tuturor rutelor laterale față de cea „regală” să nu fie întâmplătoare, ci semnificativă și previzibilă, adică. Ușor de înțeles.

ÎNTRECĂRI DE LINIE? - Doamne ferește!

Unii experți, predispuși la expresii dure, numesc diagramele tradiționale ale algoritmilor „diagrame de gunoi”, deoarece complexitățile blocurilor descrise pe ele, conectate printr-un haos de linii zdrențuite care merg peste tot, arată mai mult ca o grămadă de gunoi decât o structură obișnuită. DRAGON se distinge prin faptul că modelul său grafic are o justificare matematică și cognitiv-ergonomică strictă și este supus unor reguli stricte și atent gândite. Printre acestea, un loc special îl ocupă regula: „Intersecțiile și rupturile liniilor de legătură sunt interzise.”

Atunci când desenați diagrame bloc convenționale, sunt permise două tipuri de intersecție de linii: explicită, reprezentată printr-o cruce de linii, și deghizat, realizată folosind așa-numiții conectori. După cum știți, un conector „este folosit pentru a rupe o linie și a o continua în alt loc... pentru a evita intersecțiile inutile”.

În limbajul DRAGON, toate trucurile enumerate (intersecții, pauze, conectori) sunt considerate dăunătoare din motive ergonomice și sunt strict interzise, ​​deoarece împrăștie câmpul de desen cu detalii inutile, creează interferențe vizuale pentru ochi și distrag atenția de la lucrul principal. .

Întrucât interzicerea intersecției este o constrângere topologică serioasă, se pune întrebarea: poate fi reprezentat un algoritm arbitrar ca o diagramă dragon?

Teorema 1. Orice program structural poate fi descris în limbajul DRAGON în două moduri: sub forma unui primitiv și sub forma unei siluete.

Teorema 2. Un program arbitrar (nestructural) în unele cazuri nu poate fi descris sub forma unei primitive; cu toate acestea, cu ajutorul transformărilor echivalente care permit introducerea de variabile suplimentare (identificatori de ramuri), acesta poate fi întotdeauna înfățișat ca o siluetă.

Pentru a clarifica problema, să ne uităm la exemple. În fig. 13a prezintă un circuit dragon interzis: o primitivă în care există o intersecție inamovibilă (fără a introduce variabile suplimentare). În fig. 13b prezintă o siluetă, care, după cum puteți vedea cu ușurință, este echivalentă cu primitiva din Fig. 13a și, în același timp, nu conține o singură intersecție. Astfel, exemplul din fig. 13 confirmă validitatea teoremei 2 1.

SINTAXA VIZUALĂ ȘI TEXTUALĂ A DRAGONULUI

DRAGON este un limbaj vizual care folosește două tipuri de elemente: forme grafice ( elemente grafice) și etichete de text situate în interiorul sau în afara formelor grafice ( elemente de text). În consecință, sintaxa DRAGON se descompune în două părți. Sintaxa vizuală acoperă alfabetul elementelor grafice, regulile de plasare a acestora în câmpul de desen și regulile de conectare a elementelor grafice folosind linii de legătură. Sintaxa textului specifică alfabetul simbolurilor, regulile de combinare a acestora și legarea la elementele grafice (legarea este necesară deoarece se folosesc diferite tipuri de expresii în interiorul diferitelor figuri grafice). operator de limbă DRAGON este un element de grafic sau o combinație de elemente de grafic luate împreună cu inscripții text.

Utilizarea simultană a graficii și textului sugerează că DRAGON se adresează nu numai gândirii verbale și logică a autorului și cititorului programului, ci activează în plus gândirea intuitivă, imaginativă, în emisfera dreaptă, stimulând-o cu un program nu scris, ci desenat. , adică un program -o imagine.

FAMILIA LIMBAJULUI DRAGON

DRAGON nu este o singură limbă, ci o întreagă familie, toate limbile ale cărora au aceeași sintaxă vizuală (ceea ce vizual face ca limbile familiei să fie aproape gemene) și diferă în sintaxa textului.

DRAGON-1- pseudo-limbaj vizual, un analog vizual al pseudo-codului text obișnuit. Servește pentru a descrie structura activităților, crearea de tehnologii, algoritmi și proiecte de programe și este utilizat în metoda de detaliere pas cu pas, precum și în formalizarea cunoștințelor profesionale.

DRAGON-2- limbaj de programare vizuală în timp real. El este un element CAZ- tehnologii pentru dezvoltarea de software pentru sistemele de control al rachetelor și obiectelor spațiale, precum și centralelor nucleare, uzinelor petrochimice și metalurgice, producției biotehnologice etc.

În plus, familia include limbaje hibride de programare vizuală: DRAGON-BASIC, DRAGON-PASCAL, DRAGON-S etc. Pentru a obține un limbaj hibrid, de exemplu, DRAGON-S, trebuie să luați sintaxa vizuală a lui DRAGON și să vă alăturați acesteia. conform anumitor reguli ale sintaxei textului SI.

O distincție strictă între sintaxa vizuală și cea textuală face posibilă extinderea domeniului de aplicare a limbajului în măsura maximă, asigurându-i flexibilitatea și versatilitatea. În același timp, uniformitatea regulilor de sintaxă vizuală ale familiei de limbi DRAGON asigură unitatea conceptuală a acestora, iar varietatea regulilor de text (adică capacitatea de a alege orice sintaxă a textului) determină flexibilitatea limbii și adaptare ușoară la diferite probleme și domenii.

Această carte se concentrează pe pseudo-limbajul vizual DRAGON-1. În ceea ce privește celelalte limbi ale familiei DRAKON, sunt oferite doar explicații scurte.

CONCLUZII

Iată un rezumat al regulilor ergonomice care pot îmbunătăți calitatea cognitivă a circuitelor dragon și pot face algoritmii, programele și tehnologiile mai ușor de înțeles.

  1. Un algoritm complex ar trebui desenat ca o siluetă, unul simplu - ca o primitivă.
  2. Este interzisă scrierea cuvântului „început” în pictograma „titlu”; în schimb, ar trebui să furnizați un nume clar și precis pentru algoritm.
  3. Împărțiți un algoritm complex în părți, reprezentând fiecare parte ca o ramură. Dați părților nume inteligibile și clare și scrieți-le în pictogramele „numele ramurilor”.
  4. Intrarea într-o sucursală este posibilă doar prin începutul acesteia.
  5. În pictograma „adresă” este permisă scrierea numelui uneia dintre ramuri; alte inscripții sunt interzise.
  6. Ramurile trebuie așezate în spațiu conform regulii: cu cât mai în dreapta, cu atât mai târziu. Prezența unui ciclu de ramificare modifică această regulă.
  7. Primivul trebuie să aibă o frigărui. Aceasta înseamnă că, pentru o primitivă, pictogramele „antet” și „sfârșit” se află întotdeauna pe aceeași verticală, care se numește „frigărui”.
  8. Fiecare creangă trebuie să aibă o frigărui. Pe ramura din dreapta, frigăruia este o verticală care conectează pictogramele „numele ramurului” și „sfârșitul”. Pentru alte ramuri, frigăruia este o linie verticală care leagă pictogramele „nume ramură” și „adresă”, iar dacă sunt mai multe adrese, cu cea din stânga.
  9. Algoritmul are întotdeauna un traseu principal, care trebuie să urmeze frigăruia.
  10. Traseele laterale trebuie ordonate de la stânga la dreapta conform unuia dintre criteriile selectate, de exemplu: cu cât mai la dreapta, cu atât mai rău.
  11. În pictograma „sfârșit” trebuie scris cuvântul „sfârșit”.
  12. Liniile de legătură pot merge orizontal sau vertical. Nu sunt permise linii înclinate.
  13. Este interzisă trecerea liniilor.
  14. Ruperele de linie sunt interzise.
  15. Utilizarea conectorilor este interzisă.

Care este forța motrice a programului? Ce generează un rezultat util? Desigur, algoritmul. Algoritmul creează efectul pentru care a fost scris programul. Algoritmul nu funcționează singur. Funcționează împreună cu structurile de date. Dar algoritmii sunt cei care alcătuiesc cea mai mare parte a programului.


Din punct de vedere istoric, algoritmii din programe au fost scriși ca text sursă. Aproape nimeni nu se îndoiește că textul este cel mai bun mijloc de prezentare a algoritmilor. Algoritmul este codificat în interiorul funcțiilor într-un limbaj de programare precum C sau JavaScript. Pentru cei care doresc să înțeleagă algoritmul din vedere de pasăre, este furnizat pseudocod. Cu toate acestea, există probleme serioase cu textul. Faptul este că o persoană nu este optimizată pentru text continuu. O persoană este optimizată pentru percepția grafică. Textul este o invenție relativ nouă, dar organismele procesează informații grafice de milioane de ani.


Pe baza acestui lucru, ar fi logic să compunem algoritmi în formă grafică. Uită-te la ingineri. Ei folosesc planuri peste tot. De ce sunt programatorii mai răi? Și ei ar putea să elaboreze planuri ale algoritmilor. Unii de aici vor obiecta: programarea vizuală se presupune că este ineficientă. UML este incomod, iar diagramele de flux sunt ușor de pierdut. Este mai bine să programați în mod tradițional - cu text. În programarea structurată, există cel puțin o structură și oferă ordine și uniformitate. Și în plus, desenarea diagramelor este lung și dificil. Tastarea este mai rapidă decât desenarea.


Deci, sunt programatorii sortiți să lucreze toată viața doar cu text?
Poate că nu e tot rău. Există limbaje vizuale pentru reprezentarea algoritmilor care au și ordine și structură, cum ar fi Diagramele de acțiune DRAGON, BPMN și LML. Aici ne vom uita la limbajul algoritmic vizual DRAGON.

Cum se programează în limbajul DRAGON

DRAGON nu este un limbaj de programare independent. Funcționează în tandem cu un limbaj bazat pe text, cum ar fi JavaScript, Python sau C++. Împreună cu limbajul text, DRAGON formează un limbaj hibrid: DRAGON-JavaScript, DRAGON-Python sau DRAGON-C++.


Programarea într-un limbaj hibrid se desfășoară după cum urmează:

  1. Să desenăm o diagramă DRAGON.
  2. În interiorul pictogramelor plasăm bucăți mici de cod în limbajul de programare corespunzător.
  3. Programul de traducere convertește circuitul DRAKON într-un fișier text cu cod sursă.
  4. Acest fișier text este inclus în proiect ca de obicei.
    Astăzi, mai mulți editori acceptă generarea de cod din diagrame. Exemplele din acest articol au fost realizate în DRAKON Editor.

Generarea codului dintr-o diagramă

În diagramă, DRAGON preia controlul asupra fluxului de execuție. Prin urmare, bucățile de cod sursă din pictograme nu ar trebui să conțină cuvinte cheie precum dacă, altfel, intrerupator, caz, pentru, in timp ceși așa mai departe.


În interiorul pictogramelor ar trebui să existe doar cod simplu, fără ambiguitate: expresii aritmetice, atribuiri de valori, apeluri de funcții, comparații. Dar ramificarea și ciclurile sunt implementate de constructe ale limbajului DRAGON.



Generarea codului are loc după cum urmează:

  • Din fiecare diagramă se creează o funcție.
  • Titlul diagramei devine titlul funcției.
  • Parametrii funcției sunt preluați din pictograma „Parametri formali”, care se află în partea dreaptă a numelui diagramei.
  • Corpul funcției este generat pe baza structurii diagramei și a conținutului pictogramelor.

În fig. 1 prezintă un exemplu de diagramă mică în limbajul hibrid DRAGON-JavaScript și codul generat în JavaScript:


Dreptunghi cu text console.log(pisică, câine)în fig. 1 este pictograma „Acțiune”. Cât cod puteți pune într-o pictogramă Acțiune? Ar trebui să vă străduiți să vă asigurați că o pictogramă conține un singur gând. Uneori este o singură linie de cod, alteori mai multe.
Codul generat este prevăzut cu comentarii care indică numerele pictogramelor. În timp ce vă aflați în editor, puteți sări rapid la orice pictogramă apăsând Ctrl+I.

Fig 1. Diagrama în DRAGON-JavaScript și codul generat din aceasta.

Pictograma „Întrebare”

Pentru ramificare, sunt folosite pictogramele „Întrebare” și „Alegere”.


Pictograma „Întrebare” (Fig. 2) corespunde designului dacă-atunci-altfel.


Vă rugăm să rețineți că în loc de cuvinte AdevăratȘi fals cuvintele folosite daȘi Nu(poate fi comutat la daȘi Nu).


„Adevăr” și „fals” - acest lucru sună impresionant, într-un mod științific. Cu toate acestea, o persoană este mai aproape de „da” și „nu” familiar din prima copilărie.


Inscripții daȘi Nu poate fi schimbat. Locația ieșirilor din pictograma „Întrebare” rămâne neschimbată. O ieșire coboară și cealaltă merge la dreapta. Ramificarea în limba DRAGON este întotdeauna direcționată spre dreapta, astfel încât ieșirea din partea stângă a pictogramei este interzisă. Această predictibilitate face diagrama mai ușor de citit, deoarece cititorul știe dinainte unde să caute ieșirile.


O altă caracteristică a limbajului DRAGON este că pentru ramificare se folosește nu un romb complet, ci unul trunchiat. Acest lucru economisește spațiu pe diagramă.




Fig 2. Pictograma „Întrebare”

Formule logice vizuale

Limbajul DRAGON face ca operatorii logici să nu fie necesari ȘI, SAUȘi NU, precum și operatorul „nu este egal”. Operațiile logice în sine sunt, desigur, necesare. Dar în loc de operatori text, DRAGON introduce formule logice vizuale.


Pentru a obține o formulă logică vizuală, ar trebui să conectați mai multe pictograme „Întrebare” (ca în Fig. 3).


Este deosebit de plăcut să scapi de negare. Negarea nu este intuitivă, aduce greșeli și neplăceri. Negație (operator logic NU) se realizează în limbajul DRAGON prin rearanjarea etichetelor daȘi Nu.


Înregistrarea textului expresiilor logice este cu siguranță mai compactă. Cu toate acestea, formulele vizuale sunt mai ușor de citit. Fiecare dintre combinațiile posibile de valori ale operanzilor poate fi urmărită cu un deget.




Fig 3. Formule logice vizuale

Ciclu cu săgeata

Săgețile nu sunt necesare pentru a indica ordinea obișnuită de execuție în limbajul DRAGON. Următoarea pictogramă este întotdeauna în partea de jos. Săgeata este necesară doar atunci când firul de execuție trebuie să sară în sus diagrama. Acest salt în sus înseamnă un ciclu. În consecință, săgeata în limba DRAGON este un semn al unui ciclu. La o privire rapidă asupra diagramei DRAGON, săgețile sunt imediat vizibile. Aceasta înseamnă că ciclurile sunt imediat vizibile. Acesta este un avantaj serios al DRAGON în comparație cu alte limbaje grafice. Nu trebuie să cauți cicluri.


Deci, dacă conectați pictograma Întrebare cu o săgeată, obțineți un ciclu. Acesta este un analog al structurilor in timp ceȘi face în timp ce. Figura 4 prezintă mai multe tipuri de cicluri cu săgeți.
Pictograma Întrebare într-o buclă cu o săgeată verifică condiția de ieșire din buclă. Desigur, în loc de o pictogramă „Întrebare”, pot fi mai multe. Apoi, o formulă logică vizuală este responsabilă pentru ieșirea din ciclu.




Fig 4. Cicluri de săgeți

Pictograma Alegere

Pictograma „Întrebare” conține o expresie logică, adică poate avea două semnificații: daȘi Nu. Un exemplu tipic este compararea a două obiecte. Dacă trebuie să comparați o anumită expresie cu mai multe valori, utilizați pictograma „Selectați” (Fig. 5). Aceasta se potrivește cu designul caz de vrăjitoare.


Valorile cu care se va compara expresia din pictograma „Alegere” sunt plasate în pictogramele „Opțiune”. Dacă nu există text în opțiunea cea mai din dreapta, înseamnă „toate celelalte valori”. Această opțiune goală este similară cu un cuvânt cheie Mod implicitîn interiorul unei declarații intrerupator.
Opțiunea din dreapta se poate termina cu o săgeată care indică în sus. În acest caz, avem din nou de-a face cu un ciclu de săgeți. Într-o astfel de buclă, pictograma „Alegere” va fi responsabilă pentru condiția de ieșire, nu pictograma „Întrebare”.




Fig 5. Pictogramă de alegere și pictograme de opțiune

Pictograma „Ciclul PENTRU”

În loc de bucle pentruȘi pentru fiecare DRAGON-JavaScript folosește pictograma „LOOP FOR”. Pictograma „Ciclul PENTRU” (Fig. 6) poate fi de mai multe tipuri.


Dacă după cuvântul cheie pentru fiecareși există o variabilă înaintea punctului și virgulă, apoi este generat codul pentru a itera prin matrice. Elementele matricei (dar nu indicii lor) vor fi plasate în variabilă.


Dacă după cuvântul cheie pentru fiecare Există două variabile, DRAKON Editor va înțelege că este necesară o iterație peste proprietățile obiectului (intrări din tabelul hash). Doar proprietățile proprii ale obiectelor vor fi incluse în enumerare.


A treia versiune a buclei implică prezența a trei expresii separate prin punct și virgulă. Acesta este un ciclu tradițional pentru, caracteristic limbajelor C și Java.


Puteți părăsi mai devreme un ciclu controlat de pictograma „Ciclul PENTRU” folosind pictograma „Întrebare” sau „Selectare”. Această ieșire corespunde aproximativ cuvântului cheie pauză.




Fig 6. Diferite tipuri de pictogramă „Cycle FOR” în DRAGON-JavaScript

O singură intrare pe buclă

În limbajul DRAGON există o limitare a buclelor. Fiecare buclă poate avea o singură intrare. Scopul acestei limitări este de a asigura lizibilitatea. Această limitare menține DRAGON în cadrul programării structurate, așa cum este descris de Dijkstra.


Sunt acceptabile mai multe ieșiri din buclă, dar ar trebui să existe o singură intrare. În fig. Figura 7 prezintă bucle care au două ieșiri. Este permis. În fig. Figura 8 prezintă exemple de cicluri interzise. Interzise deoarece pot fi introduse în diferite moduri.
Cu toate acestea, nu ar trebui să memorați aspectul acestor cicluri interzise. DRAKON Editor va detecta automat astfel de bucle și va emite o eroare.




Fig 7. Bucle permise cu două ieșiri


Figura 8. Bucle interzise cu două intrări

Diferențele față de programarea structurată text

După cum puteți vedea, pictogramele și macroicoanele din limbajul DRAGON corespund constructelor standard de programare structurată cu text. Cu toate acestea, există și diferențe. Textul, chiar și cu indentare, este un obiect unidimensional. Și diagrama este bidimensională. Există un grad suplimentar de libertate în diagramă, ceea ce crește expresivitatea. Încercați, de exemplu, într-un limbaj de programare bazat pe text fără repetări și mergi la descrieți un astfel de algoritm ca în fig. 9.


În ciuda libertății suplimentare față de text, DRAGON încă nu permite să cadă în anarhie. Regulile sale sunt suficient de stricte pentru a preveni tulburările. DRAGON oferă un compromis rezonabil între flexibilitate și rigoare.



Figura 9. Un algoritm care este greu de descris doar în text

Avantajele unui limbaj grafic

Limba DRAGON are o soartă interesantă. Principiile sale de bază au fost stabilite chiar de Dijkstra. DRAGON și-a dobândit forma actuală în adâncul industriei spațiale rusești. Este de remarcat faptul că regulile limbajului DRAGON nu au apărut întâmplător. Ele au fost mai întâi testate în grupuri de discuție și apoi perfecționate în proiecte spațiale reale.
Deci, care sunt mai exact punctele forte ale DRAGON?


Să începem cu faptul că DRAGON este un limbaj grafic. Și un limbaj grafic are avantaje fundamentale față de text.


În primul rând, gândurile nu sunt împrăștiate aleatoriu pe linii, ci sunt conținute în pătrate sau pictograme. Un gând - un pătrat. Gândurile diferite nu se lipesc într-o singură mizerie.


În al doilea rând, calea prin algoritm poate fi urmărită cu degetul (sau privirea). După dacă nu este nevoie sa cauti altfel. Urmați linia și vă veți găsi în pătratul dorit. Nu este nevoie să-ți treci ochii prin codul sursă în căutarea unui răspuns la întrebarea: ce s-a întâmplat mai departe?


Și diagramele au, de asemenea, o proprietate aproape magică. Se întâmplă ca o persoană să se uite la o diagramă și dintr-o dată vine o înțelegere suplimentară. Conexiunile invizibile anterior devin evidente. Acest lucru se întâmplă rar cu textul.

Reguli ergonomice speciale

Dar DRAGON nu este orice diagramă, ci diagrame elaborate. Diagramele DRAGON sunt mai ușor de înțeles decât diagramele obișnuite. Acest lucru este asigurat de tehnici ergonomice speciale. Aici sunt câțiva dintre ei.

  • Este interzisă trecerea liniilor. Deloc. Intersecțiile fac analizatorul nostru vizual să bănuiască că liniile se ating și, prin urmare, cumva conectate. Aceste suspiciuni creează o muncă mentală suplimentară. Lucrările inutile trebuie aruncate.
  • Începutul conține numele algoritmului și este întotdeauna situat în colțul din stânga sus al diagramei. Prin urmare, nu este nevoie să cauți nici măcar începutul. Este acolo unde este de obicei.
  • Diagrama are un singur capăt. Indiferent de ce se întâmplă pe parcurs (cu excepția excepțiilor), vom ajunge întotdeauna la final.
  • Sunt permise doar linii drepte. Fără curbe, îndoituri sau îndoiri inutile.
  • Sunt permise doar linii strict verticale și strict orizontale. Liniile înclinate sunt interzise. Explicație pentru iubitorii de matematică: Diagrama DRAGON este un grafic dreptunghiular plat (graficul Manhattan). Aparatul vizual uman prinde instantaneu obiecte conectate prin linii drepte ortogonale. Dar urmărirea unde va duce „curba visului american” necesită concentrare suplimentară din partea cititorului.
  • Schema DRAGON este executată de sus în jos. Această regulă evită nevoia de a scana frenetic diagrama cu ochii în căutarea următoarei pictograme. Următoarea pictogramă este întotdeauna în partea de jos. Intrarea în pictogramă este în partea de sus, iar ieșirea este în partea de jos. Deoarece știm unde este următoarea pictogramă, atunci nu este nevoie de săgeți. Liniile simple sunt suficiente. Săgețile de lângă fiecare pictogramă sunt zgomot vizual. Prin eliminarea sarcinii de conectare a pictogramelor din săgeți, le puteți atribui o misiune specială. În DRAGON, săgeata semnifică un ciclu.
  • Ramificarea are loc doar spre dreapta. Acesta este un ajutor enorm în ceea ce privește predictibilitatea și uniformitatea.
  • Pictogramele situate pe aceeași verticală trebuie să aibă aceeași lățime. Acest lucru dă sentimentul că icoanele aparțin unui singur întreg. Când toată lumea are aceeași lățime și nu există pictograme parvenite, ochiul alunecă ușor și liber peste diagramă.

Regulile de mai sus au o valoare practică enormă. Pe de o parte, sunt concepute pentru a reduce nebunia artistului. Este mai greu să creezi o diagramă confuză cu ele. Pe de altă parte, ele aduc recunoaștere diagramelor. Diagramele devin inteligibile nu numai pentru autorii lor.


Diagramele din fig. 10 și 11 demonstrează tehnici ergonomice ale limbajului DRAGON folosind exemple reale.




Figura 10. Tehnicile ergonomice ale limbajului DRAGON ca exemplu


Figura 11. Un alt exemplu de diagramă în limbajul DRAGON
Pe lângă tehnicile ergonomice, limbajul DRAGON are caracteristici unice care nu se găsesc nicăieri altundeva.

Cu cât mai la dreapta, cu atât mai rău

DRAGON are o facilitate de imagine drum fericit, sau drumul regal. Drumul Regal este calea cea mai de succes prin algoritm. În unii algoritmi, conceptele de „reușit/nereușit” și „bun/rău” nu se aplică. În ele, drumul regal arată calea cea mai așteptată. Drumul Regal trece de-a lungul liniei verticale situate în partea stângă a diagramei. Această verticală se numește frigărui. Scenariile mai puțin probabile și mai puțin reușite, precum și gestionarea erorilor, sunt plasate în partea dreaptă a diagramei. Mai mult, cu cât situația este mai proastă, cu atât ar trebui să fie localizată mai în dreapta. Este o practică bună să plasați codul care aruncă excepții sau returnează un cod de eroare în partea dreaptă a diagramei.


Destin comun

Uneori se întâmplă ca pe căi diferite printr-un algoritm să fie necesar să se efectueze acțiuni diferite, dar oarecum legate. De exemplu, punerea diferitelor valori într-o variabilă. Soarta obișnuită este atunci când acțiunile conexe stau pe linii verticale diferite, dar pe aceeași linie orizontală.


Orez. 12 prezintă o frigărui cu drumul regal, precum și utilizarea tehnicii „soarta comună”.




Figura 12. Drumul Regal și soarta comună

Siluetă

Silueta este un adevărat diamant DRAGON. Silhouette vă permite să împărțiți diagrama în părți logice. În programare, acest lucru se face de obicei prin descompunere folosind subrutine. Rutinele sunt o metodă puternică. Dar uneori ați dori să plasați o subrutină aproape vizual de programul principal și, de asemenea, să evitați agitația cu transmiterea parametrilor și returnarea valorilor. Silueta este perfectă pentru aceste scopuri. O altă aplicație a siluetei sunt mașinile cu stări finite. Dar despre asta vom vorbi în altă parte.
Se întâmplă ca algoritmul să nu poată fi extins pe un plan, astfel încât să nu existe intersecție de linii. În acest caz, în funcție de situație, se folosește fie descompunerea folosind subrutine, fie silueta.


Silueta constă din mai multe diagrame mici conectate într-un bloc complet. Aceste mici diagrame se numesc ramuri siluete. În partea de sus a fiecărei ramuri există o pictogramă „Antet de sucursală”, în partea de jos este o pictogramă „Adresă”. Numele filialei date este plasat în antetul filialei, iar numele sucursalei următoare este indicat în adresă. Numele ramurilor sunt situate pe o linie orizontală în partea de sus a diagramei. Datorită acestui lucru, puteți înțelege esența algoritmului rulând numai prin anteturile ramurilor. Silueta răspunde la trei întrebări regale:

  1. Care este numele problemei?
  2. Din cate piese este compusa?
  3. Cum se numesc aceste părți?

Să ne uităm la exemplul din fig. 13. Iată răspunsurile la întrebările regelui:

  1. Care este numele problemei? Sortați lista legată.
  2. Din cate piese este compusa? Din patru.
  3. Cum se numesc aceste părți? Construiți o matrice de conexiuni. Verificați ciclurile. Treceți prin matricea de conexiuni. Complet.


Figura 13. DRAGON-schemă „siluetă”

Ciclu de siluetă

Ramurile de siluetă trebuie comandate de la stânga la dreapta. În unele cazuri, este necesar să executați o ramură sau un grup de ramuri de mai multe ori. Acest design se numește ciclu de siluetă. Dacă pictograma „Adresă” indică către propria sa ramură sau către o ramură situată în stânga, aceasta ar trebui să fie marcată cu o etichetă specială. Același marcaj trebuie plasat pe pictograma corespunzătoare „Cap de ramură” (vezi Fig. 14). Scopul mărcii este de a face vizibil ciclul siluetei.




Figura 14. Bucla de siluetă și semne

Conectarea ramurilor siluetei este interzisă

Conexiunile a două ramuri siluete (ca în Fig. 15) sunt interzise. Fiecare ramură din interiorul siluetei ar trebui să fie independentă.




Figura 15. Conectarea ramurilor siluetei este interzisă.

Dimensiunea graficului

La programarea în limbajul DRAGON apare întrebarea: ce dimensiune ar trebui să aibă diagramele? Răspunsul este: mai puțin este mai bine. Cu cât sunt mai puține obiecte pe scena vizuală, cu atât este mai clară. În programarea textului există un astfel de ghid: este bine dacă întreaga funcție se potrivește în întregime pe ecran. Sfaturi similare pot fi date pentru schemele DRAGON. Evitați diagramele uriașe. Când întreg algoritmul este vizibil în întregime, este mult mai ușor de înțeles.
Pentru programare pe DRAGON este mai bine sa ai un monitor mare. Cel puțin 1080 de pixeli în înălțime. Atunci nu va trebui să scurtați artificial circuitele DRAGON.


DRAGON-schema siluetă ar trebui să se potrivească pe ecran în înălțime, dar nu neapărat în lățime. Diagrame siluetă poate fi destul de lată, mult mai lată de 2000 de pixeli. Este în regulă. Nu este necesar să vedeți toate ramurile siluetei în același timp. Principalul lucru este că ramura cu care lucrați în prezent este complet vizibilă pe ecran.

Critică la adresa programării DRAGON

Să ne uităm la principalele domenii de critică la adresa programării DRAGON și să încercăm să le răspundem.

  • „Diagramele DRAGON ocupă mai mult spațiu pe ecran decât programele text.” Asta este adevărat. Dar trebuie să ținem cont de faptul că sarcina DRAGONULUI este să arate complexitatea așa cum este. Cititorul programului nu trebuie să despacheteze structuri complexe în capul său. Ele trebuie să-i fie arătate în mod explicit.
  • „Algoritmii simpli arată mai bine sub formă de text.” Pot fi. Hello World arată elegant în orice limbă. Dar în viața reală, nu totul este simplu. De îndată ce apare unul dacă cuibărit în interiorul altuia dacă, DRAGON câștigă.
  • "DRAGON nu are mijloace de a afișa excepții." Există o astfel de problemă. Excepții au fost adăugate recent la limbajul DRAGON, dar nu toate implementările le acceptă. Până la sosirea implementărilor, puteți scrie blocuri try/catch în limbajul de programare corespunzător.
  • „Desenarea diagramelor DRAGON durează mult.” În editorii specializati este mult mai ușor să desenezi diagrame DRAGON decât, de exemplu, în Visio. Și în unele dintre ele, desenul a devenit aproape la fel de ușor ca și scrisul.
  • „Lipsesc instrumente pentru diferențiere și îmbinare”. Acest lucru este, din păcate, adevărat. Când lucrați cu un sistem de control al versiunilor, trebuie să comparați fișierele sursă generate.
  • „Nu există mijloace pentru depanarea circuitelor DRAKON.” Asta este adevărat. Dar puteți depana codul generat. Are etichete care indică unde din diagramă aparține o anumită bucată de cod.

Dragon Language Review

Figura 16 oferă o privire de ansamblu asupra limbajului DRAGON.




Figura 16. Prezentare generală a limbajului DRAGON

Instrumente pentru lucrul cu limbajul dragonului

Prima implementare a limbajului DRAGON a fost sistemul GRAPHITE-FLOX (Fig. 17). GRAPHITE-FLOX a fost creat în 1986-1996. specialişti de la Federal State Unitary Enterprise NPC AP numită după. Pilyugin sub conducerea lui V.D. Parondzhanova. Acest mediu a fost destinat proiectării sistemelor de control pentru vehicule de lansare și nave spațiale.


GRAPHITE-FLOX este o dezvoltare închisă, așa că se știe relativ puțin despre ea. Poate fi vizualizată o listă de nave spațiale create folosind GRAPHITE-FLOX.


La începutul anilor 90, a fost creat un alt editor DRAGON. Dezvoltarea a fost realizată la Institutul de Matematică Aplicată denumit după M.V. Keldysh sub conducerea lui L.K. Eisymont. Editorul Eisamont (Figura 18) poate fi descărcat și rulat, dar nu mai este acceptat. Editorul este scris sub MS DOS, astfel încât DOSBox poate fi necesar să ruleze pe computerele moderne.


În 2008, a fost lansat editorul Dragon IP de la Gennady Tyshov (Fig. 19). IP Dragon este susținut și dezvoltat în mod activ. Dragon IS implementează generarea de cod de program din diagrame. Una dintre caracteristicile interesante ale Dragon IS este capacitatea de a plasa cod într-un limbaj de programare și o descriere în limbaj natural într-o singură pictogramă. Avantajul incontestabil al IS Dragon este așa-numitul „calcul icoanelor”. Calculul cu pictograme este o tehnică de editare care ajută utilizatorul să deseneze o diagramă și se asigură că diagrama nu încalcă regulile limbajului DRAGON. Printre dezavantajele Dragon IS se numără o interfață de utilizator non-standard și unele inconveniente la generarea codului. IP Dragon este un produs comercial.


DRAKON Editor este un alt editor modern DRAGON (Fig. 20). DRAKON Editor a fost dezvoltat de un grup de entuziaști condus de Stepan Mitkin. DRAKON Editor nu acceptă numărarea pictogramelor. Aceasta înseamnă că circuitele DRAGON sunt asamblate manual din primitive, ca în editorii de grafică vectorială. Dar interfața cu utilizatorul din DRAKON Editor este cât se poate de simplă. Este construit după un design mai familiar decât Dragonul IS. Principalul avantaj al mediului DRAKON Editor este ușurința de programare și generare de cod. DRAKON Editor acceptă mai multe limbaje de programare, inclusiv C, C++, C#, Java, Processing, JavaScript, Lua, Erlang, Python, Tcl, Verilog, AutoHotkey, D și Go. Pentru unele limbi este posibil să se genereze mașini cu stări finite. Sunt acceptate regulile pentru sistemul expert nools. Un subset al limbajului UTOPIST de E. Tyugu a fost implementat. DRAKON Editor este open source.


O aplicație interesantă pentru limbajul DRAGON a fost inventată de Oleg Garipov în proiectul său Integrator CodeView. CodeView vă permite să vizualizați codul existent ca un set interconectat de diagrame DRAKON. Particularitatea Integrator CodeView este că nu sunt vizualizate metodele individuale, ci întregul proiect, inclusiv graficul de apel, stiva etc. Integrator CodeView este, de asemenea, unic prin faptul că arată în mod clar nu numai algoritmi, ci și date. Motorul de vizualizare a datelor din sistemul Integrator funcționează împreună cu DRAGON.


DRAKON Editor Web este o soluție comercială cloud bazată pe limbajul DRAGON. DRAKON Editor Web este conceput pentru sarcini tehnice, proceduri de afaceri și liste de verificare. DRAKON Editor Web nu este conectat în niciun fel la DRAKON Editor și nu acceptă generarea de cod din diagrame. Printre avantajele DRAKON Editor Web se numără un editor convenabil, colaborarea și suportul pentru dispozitive mobile.




Figura 17. Schema DRAGON în sistemul GRAPHITE-FLOX


Figura 18. DRAGON-editor Eisymont


Figura 19. Program cu explicații în IS Dragon


Figura 20. DRAKON Editor

concluzii

Să rezumam. DRAGON este un limbaj practic asezonat în spațiu. El a adus structură, ordine și uniformitate diagramelor de flux. Previzibilitatea și ordinea circuitelor DRAGON înseamnă că programarea vizuală lucrări.


Experiența proiectelor reale a arătat că programarea în DRAGON este posibilă. Pe de o parte, DRAGON este mai expresiv decât textul. Pe de altă parte, crește lizibilitatea programelor. Și, în plus, programele sub formă de scheme DRAGON arată, ei bine, direct dintr-o navă spațială extraterestră (deși multe depind de schema de culori). Personal, am trecut cu ușurință la DRAGON. Poate fi incomod când, dimpotrivă, uneori trebuie să programați într-un stil tradițional de text.

Adaugă etichete

Ultima editare de PBworks acum 12 ani, 2 luni

PROGRAMARE PRIETENOSĂ

LIMBAJ DE PROGRAMARE HIBRID DRAGON-S

Să presupunem că trebuie să construiți un sistem de programare vizuală în limbajul hibrid DRAGON-SI. Problema poate fi rezolvată, de exemplu, folosind trei programe: un editor dragon, un convertor dragon și un compilator de limbaj SI. Folosind editorul dragon, utilizatorul desenează un program în limba DRAGON-SI pe ecranul computerului (Fig. 90, coloana din dreapta). Dragonul convertor convertește apoi reprezentarea internă a codurilor grafice în text sursă SI (Figura 90, coloana din mijloc), după care un compilator SI standard transformă textul sursă în cod obiect.

Astfel, pentru construirea limbajului DRAGON-SI este necesar, după anumite reguli, să se îmbine sintaxa vizuală a DRAGON cu sintaxa textuală a limbajului SI, înlăturând din acesta din urmă toate elementele ale căror funcții sunt implementate de cel vizual. operatorii DRAGON. Perechea de limbi SI și DRAGON-SI sunt echivalente în sensul că se poate construi un convertor care efectuează atât conversie directă, cât și inversă. Un astfel de convertor poate transforma textul sursă al unui program în limba DRAKON-SI (Fig. 90, coloana din dreapta) într-un program SI echivalent (Fig. 90, coloana din mijloc) și invers.

Crearea oricărui limbaj hibrid (de exemplu, DRAGON-SI) poate fi considerată cu greu o dezvoltare originală, deoarece acesta din urmă păstrează aproape complet conceptul, structura, tipurile de date și alte caracteristici ale limbajului original (SI). Este mai corect să spunem că construcția unui limbaj hibrid (DRAGON-SI) este o tehnică tehnică în care, într-un număr de cazuri strict definit, notația textuală a limbii sursă este înlocuită cu una vizuală. Cu toate acestea, această tehnică poate îmbunătăți semnificativ aspectul ergonomic al limbii sursă.

LIMBAJ DE PROGRAMARE HIBRID

DRAGON-MODULA

Să ne uităm la exemplul de sus din Fig. 91. Coloana din mijloc arată un program în limbajul MODULA-2, iar coloana din dreapta arată un program echivalent în limbajul DRAGON-MODULA. Coloana din stânga conține o listă de cuvinte cheie care sunt folosite în programul-modul și sunt „vitale” pentru limbajul MODULA, dar care sunt complet inutile în programul-dragon.

Din punct de vedere ergonomic, acestea și multe alte cuvinte cheie prezente în limbile text nu sunt altceva decât interferențe vizuale care atrage atenția cititorului și îi distrag atenția de la conținutul subiectului. Avantajul ergonomic al DRAGON este că în locul cuvintelor cheie se folosește o imagine vizuală, care este percepută de cititor inconștient, la nivel intuitiv, în timp ce canalul atenției conștiente acționează mai productiv - pentru perceperea celor mai importante, semnificative aspecte. a sarcinii.

EXEMPLU DE OPTIMIZARE ERGONOMICA

PROGRAME

În fig. 91 (mai jos, în coloana din mijloc) este scris un program în PASCAL. Prin analogie cu exemplele anterioare, poate fi ușor convertit într-un program în limbajul DRAGON-PASCAL. Pentru a face acest lucru, desenați un operator vizual „furcătură” și plasați intrarea în pictograma „întrebare”.

K = 1 SAU K = 2

Vom marca ieșirea inferioară a pictogramei „întrebare” cu cuvântul „da” și vom conecta la ea un comutator cu două pictograme „opțiune” și vom conecta ieșirea corectă (răspunsul este „nu”) la pictograma „ieșire” , în care vom scrie WRITELN în partea de sus și ERROR în partea de jos. Ca rezultat, obținem o diagramă dragon, care este, fără îndoială, o soluție absolut corectă la problemă. (Pentru claritate, sfătuim cititorul să realizeze construcțiile descrise pe hârtie.)

Acum să schimbăm starea problemei. Să încercăm să creăm un program care nu ar fi doar echivalent cu programul Pascal din Fig. 91, dar și ergonomic optim pentru cititorul vorbitor de limbă rusă. Programul dorit, scris în limbajul DRAGON-2, este prezentat în aceeași figură de mai jos din dreapta.

Diferența structurală dintre programe este izbitoare. Programul Pascal conține două constructe: dacă-atunci-altfelȘi caz de. Optimizarea ergonomică constă în faptul că programul dragon utilizează un singur operator vizual (un comutator cu trei opțiuni), care totuși „singur” îndeplinește aceleași funcții ca doi operatori text ai limbajului Pascal. Ca urmare, condiția complexă K = 1 SAU K = 2 și alte excese ale programului Pascal sunt eliminate, iar circuitul dragonului este simplificat vizibil și devine concis, transparent și elegant.

PROGRAME DE DIALOG

Să continuăm prezentarea uneia dintre posibilele abordări ale construirii limbajului de programare DRAKON-2. Să vă reamintim încă o dată: cititorul nu va găsi aici o descriere a limbii. Scopul nostru este mult mai modest: să arătăm că formalizarea sintaxei textului pentru limbajul DRAGON este destul de fezabilă și să oferim câteva exemple care confirmă această idee.

Luați în considerare programele de dialog din Fig. 92 și 93, având caracteristici didactice (pedagogice) îmbunătățite. În acest scop, se utilizează o gamă largă de instrumente ergonomice. În special, atunci când completați pictograma „comentare”, utilizați zonarea textului. Pentru a fi mai ușor de citit, textul comentariului este împărțit spațial în două zone, care, în primul rând, au limite clar definite și ușor de distins și, în al doilea rând, diferă în culoarea de fundal (alb și gri). Zona gri conține textul care apare pe ecranul computerului, iar zona albă conține explicații pentru acesta. Separarea textului de pe ecran de explicații face comentariile mai ușor de citit și mai ușor de înțeles.

Tehnica ergonomică a „zonării textului” este utilă pentru a fi folosită nu numai în comentarii, ci și în alte cazuri, de exemplu, în instrucțiunile I/O.

„Mesaj” operator

Operatorul „Mesaj” este folosit pentru a afișa informații pe ecranul computerului. Conține o pictogramă „ieșire”, la ultimul etaj al căreia este plasat cuvântul cheie „Mesaj”, iar la etajul de jos - informațiile afișate. Când se descrie pe acesta din urmă, se utilizează zonarea textului: în zona gri sunt scrise numele variabilelor sau expresiilor (ale căror valori ar trebui să fie afișate pe ecran), în zona albă - informații constante (care sunt afișate pe ecran). ecran fără modificări). O nouă linie este indicată de un cerc negru. De exemplu, în Fig. 92, folosind operatorul „Mesaj”, pe ecran sunt afișate expresia „Suma numerelor este egală” și valoarea expresiei m + n.

Operator „Solicitare”.

Operatorul „Solicitare” introduce valori variabile în computer, afișează informații permanente, nume variabile și valori introduse pe ecran. În partea de sus a pictogramei „intrare” este scris cuvântul cheie „Solicitare”, în partea de jos - informațiile care trebuie introduse și scoase. Aici există și zonarea textului: în zona gri sunt indicate denumirile variabilelor care urmează să fie introduse în computer, în zona albă sunt plasate informații constante.

Să presupunem că trebuie să introduceți valorile m = 23 și n = 45 (Fig. 92). Acest lucru se face, de exemplu, astfel: mutați cursorul în zona m, introduceți numărul 23 pe tastatură și apăsați tasta „întoarcerea căruciorului”. În acest caz, zona m de pe ecran se stinge și numărul 23 se aprinde în locul ei. Valoarea n este introdusă în același mod. Astfel, operatorul „Solicitare” solicită utilizatorului valorile variabilelor, le scrie în memorie și le afișează simultan pe ecran împreună cu informații permanente (dacă acestea din urmă sunt indicate la etajul inferior al operatorului „Solicitare” în zona albă).

Descrierea datelor

Pictograma „raft” este folosită pentru a descrie datele. Cuvântul cheie „Date” este scris la ultimul etaj, iar o descriere a datelor la etajul de jos. De exemplu, în Fig. 92 în pictograma „raft” se indică faptul că variabilele m și n sunt de tip „întreg”.

O altă modalitate poate fi propusă: descrierea datelor este scoasă din diagrama dragonului și plasată într-un tabel separat.

IDENTIFICATORI

Iată regulile de înregistrare a identificatorilor.

  • Lungimea identificatorului este de 1...32 de caractere.
  • Este permisă utilizarea oricăror litere, numere, puncte și, eventual, caractere speciale rusești și latine.
  • Primul caracter trebuie să fie o literă (nu un număr sau un punct).
  • Nu sunt permise spații în cadrul unui identificator.
  • Cuvintele ar trebui separate prin puncte pentru a facilita lectura.
  • Este interzisă utilizarea abrevierilor de cuvinte dacă lungimea identificatorului este mai mică de 32 de caractere.
  • Dacă lungimea identificatorului este mai mare de 32 de caractere, trebuie să înlocuiți unele cuvinte cu abrevieri sau să reduceți numărul de cuvinte.
  • Ar trebui să vă străduiți să veniți cu identificatori inteligibili care să faciliteze înțelegerea sensului conceptului, astfel încât cititorul să înțeleagă rapid esența problemei.

Exemple de identificatori corecti

Număr.de.tren.rapid

Tren.număr.mașină.tren.de pasageri

Preț.bilet.de.tren.la.Magadan

Prețul.la.bilet.de.avion.la.Magadan

Exemple de identificatori incorecți

Un exemplu de reducere a lungimii unui concept complex

Să presupunem că doriți să creați un identificator pentru următorul concept: „Vector de rază al centrului Pământului în centrul pistei în sistemul de coordonate de aterizare”. Descrierea verbală a conceptului conține 92 de caractere. Provocarea este de a reduce o descriere de 92 de caractere la o descriere de 32 de caractere, păstrând în același timp conceptul cât mai clar posibil.

Vom efectua reducerea conform următorului plan:

  • „Vectorul de rază al centrului Pământului” va fi înlocuit cu „Raza Pământului”.
  • În loc de „În centrul pistei” vom scrie „pe pistă”.
  • „În sistemul de coordonate de aterizare” îl vom înlocui cu UCS, deoarece o astfel de abreviere este folosită în mod obișnuit în echipa de dezvoltatori ai acestui sistem.

Ca rezultat, obținem un identificator de 26 de caractere

care păstrează aproape toate cuvintele de sprijin ale conceptului inițial și oferă o înțelegere destul de ridicată.

Reguli de scriere a expresiilor aritmetice

în declarațiile de atribuire

Trebuie să se distingă două cazuri. Dacă expresia este simplă, se recomandă utilizarea unor identificatori de 32 de caractere și a notării „verticale” a formulelor matematice, așa cum se arată în Fig. 94 și 95.

Cu toate acestea, atunci când vine vorba de calcule matematice complexe, metoda descrisă nu este potrivită, deoarece formulele „verticale” cu identificatori de 32 de caractere nu permit cititorului să vadă structura matematică a calculelor, aturându-și atenția către citirea identificatorilor lungi, care paradoxal se transformă dintr-un indiciu util în opusul lor și încep să joace un rol negativ ca pacoste vizuală. Astfel, apare un impas ergonomic: identificatorii scurti nu vă permit să înțelegeți rapid sensul conceptelor, iar cei lungi ascund structura formulelor complexe.

O posibilă abordare a dezlegarii acestui nod gordian este un plan în trei puncte.

  • Pentru fiecare concept matematic, sunt furnizați doi identificatori: lung (32 de caractere) și scurt (alias).
  • În expresiile aritmetice sunt folosite doar aliasuri, ceea ce face ca structura formulei să fie transparentă.
  •  La începutul programului există o pictogramă „comment”, care conține un tabel de corespondențe între aliasuri și identificatori lungi. Acest tabel joacă rolul unei foi de cheat, care se află în același câmp de vizualizare cu operatorii de atribuire și vă permite să vă amintiți rapid ce înseamnă un alias sau altul.

MATRICE DE PROCESARE

În fig. 94 și 95 oferă exemple de programe care conțin operații cu matrice.

Descrierea datelor este situată la etajul de jos al pictogramei „raft”.

înseamnă că este specificată o matrice unidimensională numită „Greutate iepure”, care conține 100 de elemente, fiecare dintre acestea fiind un număr real.

Elementul principal al ambelor programe este bucla FOR. Să ne uităm la regulile pentru proiectarea unui ciclu. În pictograma „început al ciclului PENTRU”, în linia de sus scrieți cuvântul „Cicl” și după un spațiu un alias de un caracter care denotă variabila ciclului (litera k în Fig. 94, 95). Linia de jos indică intervalul modificării sale, de exemplu,

Semnul egal ≡ indică faptul că este urmat de un nume de comentariu, adică un comentariu care este scris conform regulilor de scriere a identificatorilor.

„Câștigul” ergonomic al comentariului formalizat include două avantaje. În primul rând, vă permite să eliminați „uitarea” tradițională a programatorilor și să explicați cititorului într-un mod uman sensul unui identificator abstract: ei spun, k este numărul cuștii iepurilor. În al doilea rând, și important, explicația este plasată pe câmpul de desen exact acolo unde este nevoie (în pictograma „începutul ciclului PENTRU”), conform principiului „un ou scump pentru ziua lui Hristos”. Aceasta înseamnă că cititorul primește un răspuns instantaneu - chiar în acea secundă când a văzut pentru prima dată pseudonimul k și i-a răsărit întrebarea: ce este k?

În pictograma „sfârșitul ciclului PENTRU”, se face o intrare

Semnificația operatorilor care organizează procesarea tablourilor este clară din Fig. 94 și 95 și se explică de la sine.

DIAGRAME ABSTRACTE DRAGON

În această secțiune ne vom uita la conversia unui program vizual în limbajul DRAGON-2 într-un program text în BASIC. Această transformare este utilă în două moduri: vă va oferi o înțelegere mai profundă a vizualizării și vă va introduce în conceptul important al diagramei abstracte a dragonului.

Ca exemplu, să luăm un program școlar numit „Joc de ghicire” și să-l scriem în limba DRAGON-2 (Fig. 96). Apoi eliminăm complet textul din el și obținem un desen orb, care se numește „diagrama abstractă a dragonului” (Fig. 97). Această diagramă este un program invariant care poate fi convertit într-un program în orice limbaj de programare în doi pași.

Să alegem limba BASIC ca scop și să trecem la treabă. În primul pas, vom umple pictogramele goale ale diagramei abstracte cu text în BASIC. Rezultatul va fi un program echivalent în limbajul DRAGON-BASIC (Fig. 98). În al doilea pas, trecem la un program BASIC obișnuit (am ales în mod deliberat o versiune de modă veche a BASIC pentru a demonstra, de dragul varietății, utilizarea declarațiilor goto atunci când descriem echivalentul unui program dragon) - vezi Fig. . 99.

FILOZOFIA LIMBAJULUI DRAGON

Orice limbaj imperativ (SI, PASCAL, ADA, MODULA, BASIC etc.) poate fi împărțit în trei părți, trei limbaje relativ independente: rută, comandă și declarativă.

Limba traseului- un set de operatori de control. Limbajul de comandă conține toți operatorii non-control, cum ar fi operatorul de atribuire, reguli de scriere a expresiilor aritmetice și logice, identificatori, cuvinte cheie etc. Limbajul declarativ servește pentru a descrie date, clase etc.

Să explicăm acest lucru cu un exemplu. Diagrama abstractă a dragonului prezentată în Fig. 97, există o „frază” din limba rutei. Pentru a face sens, textul trebuie plasat în interiorul pictogramelor. Acest text este scris în limbaj de comandă. Cu toate acestea, uneori este recomandabil să mutați datele și descrierile de clasă din diagrama dragonului și să le plasați în altă parte, de exemplu, sub forma unei înregistrări sau a unui tabel separat.

De aici rezultă principiul distingerii a trei sublimbi. Limbajul rutei este limbajul „imaginilor” (diagrame abstracte cu dragon în care nu există deloc text). Limbajul de comandă este folosit pentru a scrie text în interiorul schemei dragon, limbajul declarativ este folosit pentru acele înregistrări care pot fi luate în afara acesteia.

Când construiți următoarea limbă a familiei dragonului, puteți alege sublimbaje de comandă și declarative în orice mod (împrumutând din alte limbi sau inventându-le din nou). Acest lucru asigură bogăția capabilităților DRAGON și configurația flexibilă pentru diverse aplicații. Astfel, familia dragonului are o singură legătură rigidă - limbajul rutei, care nu este altceva decât componentele vizuale ale DRAGON (sintaxă vizuală și semantică).

Limbajul traseului este un standard vizual al familiei dragonului, susținut de editorul vizual dragon (vezi capitolul 14), care este de dimensiuni mici și ușor de reținut. Este cartea de vizită constantă a DRAGON, imaginea sa vizuală standardizată (Fig. 97).

CLASIFICAREA CUNOAȘTERII

Orice program este o anumită cantitate de cunoștințe care poate fi împărțită în părți imperative și declarative. Considerațiile prezentate mai sus ne permit să clarificăm această teză. O nouă privire asupra problemei este prezentată în Fig. 100 și se reduce la asta:

  •  Pentru a analiza cunoștințele cuprinse în textul sursă al unui program de calculator scris într-un limbaj imperativ, este indicat să folosiți două clasificări: de bază și alternativă./li>
  • Clasificarea de bază este că toate cunoștințele conținute în programul sursă sunt împărțite în imperative și declarative.
  • La rândul lor, cunoștințele imperative sunt împărțite în cunoștințe manageriale și de comandă.
  • Ca criteriu pentru o clasificare alternativă, se propune o întrebare: ce mijloace sunt mai bine de folosit pentru a reprezenta cunoștințele - grafică sau text?
  • Răspunsul este acesta. Este mai bine să folosiți grafica (limbajul de rutare) pentru a reprezenta cunoștințele de control pentru cunoștințe de comandă și declarative.
  • Astfel, într-o clasificare alternativă, cunoștințele sunt împărțite în vizuale (control) și textuale (comandă și declarativă).

Ca o notă finală, folosirea textului pentru a reprezenta cunoștințe complexe de control este la fel de incomod ca și încercarea de a descrie o hartă în cuvinte. Faptul că textul este încă folosit în acest scop nu poate fi explicat decât printr-un singur lucru: programarea este mult mai tânără decât geografia!

CONCLUZII

  1. Dacă avem la dispoziție o sintaxă vizuală formală, atunci pentru a construi un limbaj de programare vizuală este suficient să construim o sintaxă formală a textului. Suntem convinși că această problemă este complet rezolvabilă și în mai multe moduri. Ca urmare, se formează o familie de limbaje de programare, atât originale (DRAGON-2), cât și hibride (DRAGON-SI, DRAGON-MODULA, DRAGON-PASCAL, DRAGON-BASIC etc.).
  2. Se poate argumenta că inteligibilitatea limbajelor vizuale este semnificativ mai mare decât inteligibilitatea omologilor lor textuali. Prin urmare, în toate cazurile în care înțelegerea este considerată principalul criteriu pentru calitatea programelor (și există multe astfel de cazuri), limbajele vizuale sunt în afara competiției. Un avertisment este aici: termenul „vizual” în sine nu garantează nimic. Succesul în afaceri este obținut prin aplicarea atentă și scrupuloasă a metodelor științei factorilor umani (ergonomie). Pentru a fi mai precis, vorbim despre sinteza metodelor informatice și ergonomice, formarea unei noi direcții interdisciplinare - infoergonomia și restructurarea întregii clădiri a programării moderne pe baze ergonomice.
  3. Crearea oricărui limbaj de programare de generație următoare ar trebui să înceapă cu o analiză a cerințelor ergonomice și să se termine cu o evaluare a caracteristicilor ergonomice rezultate ale limbajului. Unul dintre principalele obstacole în calea implementării acestui plan este inerția de gândire a multor specialiști și subestimarea importanței metodelor ergonomice. Pentru a schimba stereotipurile existente de gândire, este necesar să se facă schimbări serioase în curriculum și în metodele de predare a informaticii la școală și universitate.