Ergonomiska grafiskā algoritmu aprakstīšanas valoda DRAKON
Ingars Ribners2015.gada 16.aprīlis
Autors, grāmata
Паронджанов В.Д. Дружелюбные алгоритмы, понятные каждому. Как улучшить работу ума без лишних хлопот.
— М.: ДМК Пресс, 2014. — 464с. — Иллюстраций 223. — ISBN 978-5-94074-606-5
Владимир Паронджанов (1938)
Blokshēmas
• ISO 5807-85• ГОСТ 19.701-90
Kas ir ne visai labi ar blokshēmām?
BPMN diagramma
UML Activity diagramma
Blokshēmas
Uztveres process
Tikai galvas smadzenes vien patērē 20% no visas organisma patērētās enerģijas (un uztveres process notiek ne tikai galvas smadzenēs)
Uztvere nenotiek pa veltiUztverot, mēs tērējam enerģiju
ErgonomikaNo vikipēdijas:
Vārds ergonomika ir cēlies no grieķu valodas un tulkojumā nozīmē ergon — darbs, spēks, nomos — likums, noteikumi.
Tātad, ergonomika ir mācība par “spēka noteikumiem” – kur, kad un kādā veidā jāpieliek spēks, lai vajadzīgo darbu padarītu maksimāli efektīvi, bez lieka enerģijas patēriņa.
Algoritma ergonomika
Algoritma ergonomika ir algoritma dizaina mērs, kas apgriezti proporcionāls vidējajam enerģijas patēriņam, kas lasītājam jāpatērē, lai to uztvertu.
Jo ergonomiskāks algoritms – jo mazāk enerģijas jāpatērē, lai to uztvertu.
Algoritma ergonomika
Jo ergonomiskāks algoritma apraksts –> jo mazāku spēju cilvēks to spēs uztvert
–> jo plašāk tas tiks lietots.
Valodas DRAKON mērķis
1. Primitīvu (ikonu, makroikonu) kopa, no kuriem sastāv grafiska algoritma shēma
2. Skaidru prasību kopa, kurām ir jāatbilst grafiskai algoritma shēmai, lai to varētu uzskatīt par ergonomisku
3. Ekvivalentu pārveidojumu paņēmienu kopa, kurus pielietojot, neergonomisku algoritma shēmu var pārveidot par ergonomisku
DRAKON valodas pamatelementiElementārie bloki (ikonas)
DRAKON valodas “burti”
DRAKON valodas pamatelementiSaliktie bloki (makroikonas)Elementārie bloki (ikonas)
DRAKON valodas “burti” “zilbes”
DRAKON valodas pamatelementi
«Iesma» bloki:• Ikonas (3, 5-10, 12-16, 18, 20-21)• Makroikonas (2-20)
«Zars»
Divi algoritmu attēlošanas veidi valodā
“DRAKON-shēmas” – 2 veidi
1 2
Piemērs
Piemērs
Noteikums: “No vairāk pa labi – jo vēlāk”
Algoritma “cepurīte”
Trīs “karaliskie” jautājumi, uz kuriem algoritma “cepurīte” dod atbildes
1. Kāds ir uzdevuma nosaukums?2. No cik daļām uzdevums sastāv?3. Kā saucas katra no uzdevuma daļām?
Faktiski, “cepurīte” mums ātri iedod informāciju par pašu algoritmu (metainformāciju), kas ļauj ātri uztvert algoritma būtību un kopējo struktūru.
Piemērs 1
Piemērs 2
Piemērs 3
Siluets (“ar sliedēm”)
Siluets ar “izjauktām sliedēm”
No algoritma loģikas viedokļa – šis ir ekvivalents iepriekšējam.
No ergonomikas viedokļa – šis ir sliktāks variants, nekā iepriekšējais.
Siluets (vēlreiz “ar sliedēm”)
1. “Sliedes” palīdz saturēt kopā algoritma vizuālo tēlu. Šādi algoritms tiek uztverts kā vienots veselums.
2. Pa “sliedēm” vieglāk sekot līdzi algoritma loģikai (mazāks iekšējās enerģijas patēriņš to uztverot, nekā bez tām)
Algoritma “iesms”
Noteikums: Nosaukuma ikonas izejai un beigu ikonas ieejai jāatrodas uz vienas vertikāles
Vai algoritmā ir “karaliskais” ceļš?
Algoritmā, kas attēlots primitīva formā, algoritma galvenajam maršrutam jāiet pa “iesmu” (vertikāli uz leju)
Ja tā nav, tad algoritma shēma jāpamaina tā, lai tā būtu.
Piemērs
Mazākas nozīmes ceļi algoritmā
Princips: “Jo ceļš ir vairāk pa labi – jo sliktāks variants”
(“sliktāks” vietā var būt jebkurš cits kritērijs, galvenais, lai maršruti būtu sakārtoti)
Piemērs...
Jo vairāk pa labi – jo sliktāk
Vēl viens piemērs
Jo vairāk pa labi – jo ātrums lielāks
Kad izmantot primitīvu, bet kad – siluetu?
Kad izmantot primitīvu, bet kad – siluetu?
Primitīvu algoritma aprakstīšanai ieteicams izmantot, ja algoritma shēma satur līdz 10 elementiem.
Ja >10, tad ieteicams dalīt shēmu pa “zariem” un noformēt solueta formā.
Piemērs
19 ikonas primitīva formā
Piemērs
…tās pašas 19 ikonas - silueta formā
“Karaliskais” ceļš siluetā
Silueta “zara” gadījumā gadījumā darbojas abi tie paši likumi, kas primitīva gadījumā
1. Galvenais maršruts iet pa “zara” “iesmu”;
2. Jo mazāk svarīgs maršruts “zarā” – jo vairāk pa labi tas atrodas (“svarīgs” vietā var būt cits autora izvēlēts kritērijs)
Silueta galvenais maršruts ir secīgi savienoti silueta “zaru” galvenie maršruti.
Piemērs...
Līniju ierobežojumi algoritma shēmā
• Līniju krustojumi ir aizliegti;• Līniju pārrāvumi ir aizliegti;• Līniju savienotāji ir aizliegti.
Līniju krustojumi un pārrāvumi algoritma shēmā
T1
Jebkuru strukturētu* programmu valodā DRAKON var attēlot gan kā primitīvu, gan kā siluetu.
* nozīmē, ko izmanto E.Dijkstra u.c. autori
Līniju krustojumi un pārrāvumi algoritma shēmā
T2
Patvaļīgu (nestruktētu) programmu valodā DRAKON ne vienmēr var attēlot kā primitīvu. Tomēr, veicot galīgu skaitu ekvivalentu pārveidojumu, kas pieļauj jaunu mainīgo (“zaru” identifikatoru) ievešanu, programmu vienmēr var attēlot kā siluetu.
Piemērs
NEPAREIZI PAREIZI
DRAKON noteikumu kopsavilkums (1)
1. Sarežģītu algoritmu (>10 ikonu) valodā DRAKON rekomendē zīmēt kā siluetu, bet vienkāršu algoritmu (<=10 ikonu) – kā primitīvu.
2. Ikonā “Virsraksts” aizliegts rakstīt vārdu “Sākums”; tā vietā šeit jānorāda skaidrs un precīzs algoritma nosaukums.
3. Sadaliet sarežģītu algoritmu jēgpilnās daļās, katru no tām noformējiet kā silueta “zaru”. Katrai no daļām dodiet saprotamu un skaidru nosaukumu, ko ierakstiet ikonā “Zara nosaukums”.
4. Nokļūšana “zarā” iespējama tikai caur tā sākumu.5. Ikonā “Adrese” atļauts rakstīt tikai kādu no “zaru” nosaukumiem, citi uzraksti te
aizliegti.6. “Zaru” novietojumam telpā jāatbilst principam “Jo vairāk pa labi – jo vēlāk”.
Izņemot situācijas, kad veidojas “zaru” cikls.7. Primitīvam obligāti ir “iesms”. Tas nozīmē, ka primitīvam ikonas “Virsraksts” un
“Beigas” vienmēr atrodas uz vienas vertikāles, kura saucas “iesms”.
DRAKON noteikumu kopsavilkums (2)
8. Katram “zaram” obligāti ir “iesms”. Labās malas “zaram” tā ir vertikāle, kas savieno ikonas “Zara nosaukums” un “Beigas”. Pārējiem “zariem” par “iesmu” kalpo vertikāle, kas savieno ikonu “Zara nosaukums” un “Adrese”, bet, ja “zarā” ir vairākas “adreses” tipa ikonas – ar kreiso no tām.
9. Primitīva algoritmam vienmēr jābūt galvenajam maršrutam, kuram ir jāiet pa “iesmu”.
10.Mazāk svarīgiem maršrutiem primitīvā ir jābūt sakārtotiem pēc autora izvēlētā kritērija, piemēram: jo vairāk pa labi – jo sliktāk.
11.Uz silueta “zariem” arī attiecas noteikumi 9, 10.12.Ikonā “Beigas” ir jāraksta vārds “Beigas”.13.Savienotājlīnijas iet vai nu horizontāli, vai vertikāli. Slīpas līnijas nav atļautas.
Līnija nevar iet uz augšu.14.Līniju krustošanās ir aizliegta.15.Līniju pārtraukšana ir aizliegta.16.Savienotāju izmantošana ir aizliegta.
DRAKON-shēmas ekvivalentās pārveidošanas paņēmieni
Paņēmieni, kurus var izmantot, lai algoritma shēmu izmainītu, līdz tas atbilst iepriekšējos slaidos aprakstītajiem ergonomisku DRAKON-shēmu veidošanas noteikumiem.
DRAKON-shēmas ekvivalentās pārveidošanas paņēmieni
1. “Rokāde”2. Vertikālā apvienošana3. Horizontālā apvienošana4. Ikona “Iekļaušana”
Ikona “Jautājums”
Makroikona “Atzarojums”
Makroikona “Atzarojums”
Vienkāršu atzarojumu varianti
Vienkāršs atzarojums satur tikai vienu ikonu “Jautājums”
Saliktu atzarojumu piemēri
Atzarojumu sauc par saliktu, ja tā plecos ir vismaz viens vienkāršs vai salikts atzarojums
Paņēmiens “Rokāde”
“Rokāde” ir algoritma ekvivalents pārveidojums, kura rezultātā algoritma atzarojuma labais un kreisais plecs samainās vietām.
Piemērs
Piemērs
Vēl viens piemērs
1. Galvenais maršruts neiet pa “iesmu”;
2. Pārkāpts likums “jo vairāk pa labi – jo sliktāk”
Vēl viens piemērs
1. Galvenais maršruts neiet pa “iesmu”;
2. Pārkāpts likums “jo vairāk pa labi – jo sliktāk”
Vēl viens piemērs
Pārkāpts likums “jo vairāk pa labi – jo sliktāk”
Vēl viens piemērs
1. Galvenais maršruts iet pa “iesmu”;
2. Maršruti sakārtoti pēc kritērija “jo vairāk pa labi – jo sliktāk”
Atkārtošanās aizliegums
Noteikums: Vienādu ikonu atkārtošanās DRAKON-shēmā ir aizliegta.
Paņēmiens “Vertikālā apvienošana”
Paņēmiens “Vertikālā apvienošana”
Paņēmiens “Horizontālā apvienošana”
Paņēmiens “Horizontālā apvienošana”
Paņēmiens “Horizontālā apvienošana”
Izvairīšanās no kustojumiem
Algoritma shēmas ekvivalents pārveidojums, lai izvairītos no līniju krustojumiem
Atkārtošanās aizlieguma korekcija
Noteikums: Veicot apvienošanu, lai izvairītos no līniju krustojumiem, drīkst apvienot nevis visas vienādās ikonas, bet tikai blakusesošās vienādās ikonas.
Piemērs
Ko darīt, ja ergonomikas prasības ir savstarpēji pretrunīgas?
Piemēram, pretrunā var nonākt mērķis “samazināt vertikāļu skaitu” un mērķis “jo vairāk pa labi – jo sliktāk”
Ko darīt, ja ergonomikas prasības ir savstarpēji pretrunīgas?
Prioritātes princips: mērķim “jo vairāk pa labi – jo sliktāk” ir lielāka prioritāte, nekā vertikāļu skaita samazināšanai
Piemērs
Ergonomiskuma uzlabošanaabstraktām “DRAKON-shēmām”
Vartikālās un horizontālās apvienošanas noteikumus var piemērot abstraktām “DRAKON-shēmām” (automātiski)
Noteikumu “jo vairāk pa labi – jo sliktāk” abstraktām DRAKON-shēmām automātiski piemērot nevar (svarīga semantika)
Piemērs
Ekvivalentie DRAKON-shēmas pārveidojumi “vertikālā apvienošana” un “horizontālā apvienošana” ļauj pārveidot neergonomisku algoritmu (kreisajā pusē) uz tam ekvivalentu algoritmu (labajā pusē)
Ikona “Iekļaušana”
No iepriekš apskatītajiem noteikumiem (līniju ierobežojumiem) izriet, ka DRAKON-shēma nevar būt lielāka, kā tāds, kas pilnībā ievietojas vienā lapā.
Var izmantot šādus paņēmienus, lai to panāktu:1. Izmantot siluetu;2. Sadalīt algoritma shēmu daļās, izmantojot ikonu “Iekļaušana”
Piemērs
Vēl daži noteikumi ergonomisku algoritmu shēmu veidošanai
Algoritmam jābūt skaistam
“Skaists” ~ “ergonomisks”
Vēl daži noteikumi ergonomisku algoritmu shēmu veidošanai
Noteikumi skaistu algoritmu veidošanai:
1. Algoritma redzamajam tēlam jābūt lakoniskam. Visām nevajadzīgajām, liekajām detaļām jābūt atmestām
2. Lai algoritmu būtu ērti lasīt, tā līniju lauzumu skaitam jābūt minimālam
Piemērs (1)
Piemērs (2)
Piemērs (3)
DRAKON shēmas tekstuāla reprezentācija
• Ciklu attēlošana DRAKON-shēmās
• Loģikas izteiksmju vizualizācija DRAKON-shēmās
• Reālā laika algoritmu attēlošana DRAKON-shēmās
Atlikušās tēmas no šīs grāmatas
Паронджанов В.Д. Дружелюбные алгоритмы, понятные каждому. Как улучшить работу ума без лишних хлопот.
Kāpēc tas strādā?
1. Pareizi izmantota valodas struktūra• Burts -> zilbe -> vārds -> teikums -> proza• Burts -> proza
2. Algoritma vizuālajā reprezentācijā, kas veidots, atbilstoši DRAKON vadlīnijām, iekodēta algoritma struktūra (metainformācija), kas• apskatot algoritmu, tiek uztverta vispirms;• paātrina turpmāko algoritma uztveršanu vai vajadzīgās vietas atrašanu
tajā.
3. Tiek ņemta vērā ergonomika• Uztveres process nav bezmaksas• Katras smadzeņu sinapses darba process līdzinās procesam negaisa laikā
(zibens – lēna uzlāde – zibens – lēna uzlāde) – tas prasa daudz enerģijas.
DRAKON valodas trūkumi
• Valodā šobrīd nav iespējas attēlot subjektus (business units)
• Rīki, kas ļauj aprakstīt algoritmus valodā DRAKON, šobrīd ir ļoti pieticīgi. Rīki, kas ļautu automātiski pārveidot algoritmu shēmas uz ergonomiskākām – man šobrīd nav zināmi
DRAKON valodu saime
DRAKON-1 grafiska pseidovaloda neformālai algoritmu aprakstīšanai;
DRAKON-Basic, DRAKON-Pascal, DRAKON-C++, DRAKON-Erlang, DRAKON-Python, DRAKON-Lua u.c. grafiskas valodas kas pieļauj algoritmu aprakstīšanu un koda ģenerāciju konkrētās programmēšanas valodās.
Vēsture
• Был разработан в рамках космической программы «Буран» (с 1986 года при участии ФКА (Научно-производственный центр автоматики и приборостроения им. акад. Н. А. Пилюгина, Москва) и РАН (Институт прикладной математики им. М. В. Келдыша).
• Основной задачей разработчиков было создание единого универсального языка программирования и моделирования, который своей доступностью и мощностью способен заменить специализированные языки: ПРОЛ2 (для разработки бортовых комплексных программ Бурана), ДИПОЛЬ (для создания наземных программ Бурана) и ЛАКС (для моделирования).
• Работы по разработке языка были закончены в 1996 году.
• Эта технология эксплуатируется начиная с 1996 года в программах: международный проект «Морской старт», разгонный блок космических аппаратов «Фрегат», модернизированная ракета-носитель тяжёлого класса «Протон-М», ПРО «Тополь-М» и др.
http://drakon.su - informācija, grāmatas
https://ru.wikipedia.org/wiki/ДРАКОН - apraksts, vēsture, reālu algoritmu piemēri dažādās pielietojumu sfērās
http://drakon-editor.sourceforge.net - DRAKON-shēmu redaktors
Informācija tīklā
Jautājumi?
Paldies par uzmanību!