Vizuální programovací jazyk



Podobné dokumenty
Vizuální programování

SPECIFICKÝCH MIKROPROGRAMOVÝCH ARCHITEKTUR

Č.J. PPR /ČJ PRAHA Počet listů: 10

Příloha č. 18. Specifikace bloku PŘÍPRAVA. Příloha k zadávací dokumentaci veřejné zakázky Integrační nástroje, vstupní a výstupní subsystém

DUM 01 téma: Úvod do počítačové grafiky

Opakování k maturitní zkoušce z informatických předmětů

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

Software je ve světě IT vše, co není Hardware. Do softwaru patří aplikace, program, proces, algoritmus, ale i data (text, obrázky), operační systém

Databázový systém Matylda

Úvod do počítačové grafiky

IB111 Programování a algoritmizace. Programovací jazyky

Virtualizace. Lukáš Krahulec, KRA556

Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework

Řešení problému vážené splnitelnosti booleovské formule pokročilou iterativní metodou

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Obsah. Kapitola 1 Stažení a instalace Kapitola 2 Orientace v programu a základní nastavení Úvod... 9

SPIRIT Nové funkce. SOFTconsult spol. s r. o., Praha

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

DUM 01 téma: Úvod do Corelu

TECHNICKÁ UNIVERZITA V LIBERCI FAKULTA UMĚNÍ A ARCHITEKTURY. Studijní program: B8206 Výtvarná umění. Obor: Vizuální komunikace BAKALÁŘSKÁ PRÁCE

Aritmetika s velkými čísly na čipové kartě

III/ 2 Inovace a zkvalitnění výuky prostřednictvím ICT

COLORMANAGEMENT Potřebujeme konzistentní barvy?

Implementace A* algoritmu na konkrétní problém orientace v prostoru budov

Gramatická evoluce a softwarový projekt AGE

IB111 Úvod do programování skrze Python Přednáška 13

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Barvy na počítači a grafické formáty

Technická specifikace předmětu veřejné zakázky Zhotovení interaktivního webového portálu a mobilních aplikací

Matematika v programovacích

Výukový materiál vytvořen v rámci projektu EU peníze školám "Inovace výuky" registrační číslo CZ.1.07/1.5.00/

Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu

Semestrální práce implementuje univerzální tokenizer založený na stavovém automatu. Jsou implementovány následující automaty:

POLOPROVOZ ZNALOSTNÍ DATABÁZE INTERPI DOKUMENTACE

Informační a komunikační technologie Inovace výuky prostřednictvím šablon pro SŠ

Multimediální systémy. 02 Reprezentace barev v počítači

A Konstrukce mapy 15, Mapová osnova ODPO CÍL OTÁZKA VÁHA SKÓRE VĚĎ

Principy operačních systémů. Lekce 7: Souborový systém

1 Úvod do kompilátorů

OBSAH. ÚVOD...5 O Advance CADu...5 Kde nalézt informace...5 Použitím Online nápovědy...5. INSTALACE...6 Systémové požadavky...6 Začátek instalace...

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG )

Toto zadání je podepsané děkanem a vedoucím katedry, po obhajobě).

Vývojové nástroje jazyka Java

XAMARIN 10 PRAKTICKÝCH ZKUŠENOSTÍ. Roman Fischer

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

CTUGuide (XXX-KOS) D1

Analýza požadavků na zpracování obrazových dat, metodika uložení a jejich správa na ÚMČ Praha 1

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

DATA ARTICLE. AiP Beroun s.r.o.

. Seznámení se systémem TEX. Zpracování textů na počítači. Ing. Pavel Haluza, Ph.D. ústav informatiky PEF MENDELU v Brně haluza@mendelu.

Úvod do programování v jazyce Java

Rozšířený datový model pro handicapované osoby a metodika jeho interpretace při navigaci. Jan Kufner, Eva Mulíčková

Software. Mgr. Renáta Rellová. Výukový materiál zpracován v rámci projektu EU peníze školám

Semestrální práce KIV/PC Řešení kolizí frekvencí sítě vysílačů Zdeněk Bečvář A14B0466P 10. ledna 2016

Tablexia. Vývoj multiplatformních her pomocí opensource technologie libgdx. Matyáš Latner

ADVANTA group.cz Strana 1 ze 40. Popis řešení Řízení IT projektů. group.cz

DUM 14 téma: Barevné korekce fotografie

Text úlohy. Kolik je automaticky generovaných barev ve standardní paletě 3-3-2?

MAPOVÁNÍ BIOTOPŮ BIOTOP ARCGIS SERVER

WEBOVÝ PROSTOROVÝ DOTAZ

Diplomová práce Prostředí pro programování pohybu manipulátorů

Náklady na odstranění chyby stoupají, v čím pozdější fázi životního cyklu aplikace je chyba nalezena.

C2184 Úvod do programování v Pythonu podzim Mgr. Stanislav Geidl Národní centrum pro výzkum biomolekul Masarykova univerzita.

Počítačová grafika 1. Úvod do grafiky, základní pojmy. Rastrová grafika.

III/ 2 Inovace a zkvalitnění výuky prostřednictvím ICT

Obsah. Položkování 1: Prefix dřívějších osamocených dílů se zachovává...23 Položkování 2: Editace předběžných čísel...23

Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě

Informační Systém Cestovního Ruchu Jihočeského kraje

ALogomanuál PRAVIDLA POUŽITÍ KOMBINOVANÉ ZNAČKY

Osnova přednášky. Formáty uložení dat. Vyjádření hodnot datového typu. Vyjádření hodnot datového typu. Datové formáty. Výpočetní technika I

Nvidia CUDA Paralelní programování na GPU

Teorie barev. 1. Barvený model. 2. Gamut. 3. Barevný prostor. Barevný prostor různých zařízení

NOVINKY V DATABÁZÍCH CEDA

MATLAB a Simulink R2015b

OSGi. Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

IB109 Návrh a implementace paralelních systémů. Organizace kurzu a úvod. RNDr. Jiří Barnat, Ph.D.

Část IV - Bezpečnost 21. Kapitola 19 Bezpečnostní model ASP.NET 23

Formy komunikace s knihovnami

EXTRAKT z mezinárodní normy Extrakt nenahrazuje samotnou technickou normu, je pouze informativním materiálem o normě.

11. Přehled prog. jazyků

Dominik Vymětal. Informační technologie pro praxi 2009, Ostrava

Paralelní systémy. SIMD jeden tok instrukcí + více toků dat jedním programem je zpracováváno více různých souborů dat

Obsah. Obsah. Úvod Spuštění programu Pracovní prostředí Vytvoření a otevření dokumentu Kreslení objektů...

Změňte styly nadpisů takto: Nadpis úvodní styl: Nadpis1 Nadpisy kurzivou Nadpis2 Podtržené nadpisy Nadpis3. Do dokumentu vložte č. stránek.

Obsah. Předmluva Začínáme: překlad, spuštění a ladění 27

Workmonitor. Servisní návod. 24. června 2014 w w w. p a p o u c h. c o m

Michal Vik a Martina Viková: Základy koloristiky ZKO10. Správa barev

PRG036 Technologie XML

Uživatelská příručka

Část 1 Organizace předmětu. Základní pojmy. Část 2 Programování a výpočty. Část 3 Programovací jazyk Java

TECHNICKÁ UNIVERZITA V LIBERCI

Správa barev při digitalizaci archiválií. Magdalena Buriánková

Jedno globální řešení pro vaše Mezinárodní podnikání

TÉMATICKÝ OKRUH Softwarové inženýrství

Teoretické minimum z PJV

Zpracování obrazu v FPGA. Leoš Maršálek ATEsystem s.r.o.

Základy programování Operační systémy (UNIX) doc. RNDr. Petr Šaloun, Ph.D. VŠB-TUO, FEI (přednáška připravena z podkladů Ing. Michala Radeckého)

Vodoznačení video obsahu

Základní úlohy: vytvoření dokumentu...13

Transkript:

Vizuální programovací jazyk Adam Zmrzlý Seminář LaSArIS, 24. 04. 2013

Obsah Motivace Vizuální programování Jazyk Shades Jazyk Tints Interpret a běhové prostředí Shader Vývojové prostředí CodePainter Ukázky vizuálních programů

Motivace Zvýrazňování syntaxe pro různé jazyky v různých IDE V praxi neexistuje jednotná norma stejný jazyk v různých IDE stejné konstrukty jednotlivých jazyků v rámci jednoho IDE

Motivace Java v Netbeans 6+

Motivace JavaScript v Netbeans 6+

Motivace JavaScript v Aptana Studio 3+

Motivace Zvýrazňování syntaxe by mělo pomáhat programátorům pracovat efektivněji subjektivní možnost úpravy nenese žádnou dodatečnou informaci, neukládá se, často ani nelze zkopírovat zvýraznění syntaxe logicky seskupuje jednotlivé tokeny kódu (velmi hrubozrnně) zkusme se na kód se zvýrazněnou syntaxí podívat z jiného úhlu

Motivace

Motivace

Vizuální programování Způsob reprezentace aplikační logiky pomocí grafických elementů Cílem jsou obrázky s přidanou hodnotou Důraz kladen na estetiku výsledných programů Lze použít pro libovolné paradigma Snaha přivést k programování grafiky a designéry, ale neodradit programátory Přináší nové možnosti, využití ale i výzvy

Vizuální programování Nové možnosti: 2D programování a řízení toku výpočtu Nezávislost na konkrétním přirozeném jazyce a národních zvyklostech Platformní nezávislost (u obrázků víceméně zaručena, záleží na interpretu)

Vizuální programování Způsoby využití se liší v závislosti na konkrétním vizuálním jazyce. Možná využití: Chytré profilové obrázky (varianta k Identiconu) Programy reflektující korporátní identitu (vizitky, webové stránky, hlavičkové papíry) Vyplnění hluchých míst v již existujících obrázcích kódem (např. nebe, tráva, ) Steganografie a šifrovací hry

Vizuální programování Výzvy a úskalí: Nový přístup k programování (zatím) neexistují nástroje, komunita strmá křivka učení Pomalejší zpracování intepretace kódu práce s obrazovými daty Vyšší paměťové nároky základní jednotky kódu znak vs. pixel výrazně ovlivněno konkrétním jazykem

Vizuální programování Výzvy a úskalí: Nečitelnost kódu chybí možnost psát komentáře přímo v kódu Obtížné modifikování kódu, pokud modifikace mění velikost obsahu obě tato úskalí musí minimalizovat IDE Jak uživatel pozná, že se jedná o vizuální program a ne pouze o obyčejný obrázek?

Různé přístupy: varianta 1 zdrojový kód zapsán (nakreslen) ve formě obrázku a následně přeložen do spustitelné podoby ztrácí se základní myšlenka vizuálního programování, spíše ezoterický přístup ztráta platformní nezávislosti, nutnost vytvořit minimálně back-endy překladačů pro více operačních systémů a platforem rychlejší běh programů, skrytý zdrojový kód

Různé přístupy: varianta 2 zdrojový kód zapsán jako text a přeložen do podoby interpretovatelného obrázku základní myšlenka vizuálního programování částečně zachována vstupní programovací jazyk může být zcela nový, lze ale použít libovolný již existující nutné řešit mapování konkrétního jazyka do podoby obrázku (anotace, metadata), poměrně složité

Různé přístupy: varianta 2 zdrojový kód zapsán jako text a přeložen do podoby interpretovatelného obrázku musí existovat překladač jazyka do obrázku pro každý takto použitý jazyk musí existovat interpret obrázků (obdoba VM), případně dekompilátor obrázku zpět do původního jazyka a jeho následné zpracování konkrétním interpretem (překladačem), podobně jako v rámci platformy.net

Různé přístupy: varianta 2 zdrojový kód zapsán jako text a přeložen do podoby interpretovatelného obrázku výhodou je možnost použít známé jazyky a již existující nástroje (IDE, profilery, ) nevýhodou je složité mapování kódu do podoby požadovaného obrázku, pomalejší zpracování než v případě první varianty

Různé přístupy: varianta 3 zdrojový kód je nakreslen přímo jako interpretovatelný obrázek plně splňuje myšlenky vizuálního programování vyžaduje vizuální programovací jazyk a interpret přináší prakticky neomezené možnosti použití v závislosti na daném jazyku (zatím) neexistuje žádný takový jazyk ani vývojové nástroje

Různé přístupy: varianta 3 zdrojový kód je nakreslen přímo jako interpretovatelný obrázek podobně jako varianta 2 je pomalejší (samotná režie zpracování obrázku a jeho interpretace) s pomocí vývojových nástrojů lze kombinovat s variantou 2 cílem usnadnění a urychlení vývoje

Jazyk Shades Vytvářený vizuální programovací jazyk Odpovídá výše uvedené variantě 3 IDE umožňuje použít také prvky z varianty 2 Inspirace jazyky Java (včetně nepoužitých prvků z jazyka Oak), Python a JavaScript Nevnucuje konkrétní styl programování podpora jak procedurálního tak objektově orientovaného, včetně kombinací

Jazyk Shades Obsahuje velké množství nových a neotestovaných funkcí spíše výzkumný než produkční jazyk Je vhodný pro interpretaci přímo na koncovém zařízení Dva hlavní cíle možnost napodobit existující obrázek (vhodné pro kresby, loga, symboly, ) vyplnění ploch v obtížně napodobitelných obrázcích (fotografie, složitější grafika, )

Jazyk Shades - struktura kódu Základním prvkem jazyka je odstín reprezentován jedním pixelem sám o sobě nemá žádný význam

Jazyk Shades - struktura kódu Základním prvkem jazyka je odstín reprezentován jedním pixelem sám o sobě nemá žádný význam Odstíny sdružovány do stínovaných bloků souvislé oblasti (čtyřsměrová sousednost) všechny odstíny mají stejný základní barevný tón, liší se pouze světlostí

Jazyk Shades - struktura kódu Odstíny se dělí na tři typy: Základní odstín nenese žádný význam, slouží pouze jako referenční odstín vždy umístěn na souřadnici [0, 0] v rámci daného bloku

Jazyk Shades - struktura kódu Odstíny se dělí na tři typy: Významový odstín základní stavební jednotka kódu vlastní význam určen rozdílem světlosti základního odstínu a konkrétního významového odstínu

Jazyk Shades - struktura kódu Odstíny se dělí na tři typy: Vyplňující odstín nenese žádný význam slouží výhradně k estetickým účelům (vyplnění volných ploch, zarovnání stínovaných bloků do požadovaného obrazce, )

Jazyk Shades - struktura kódu Umístění stínovaných bloků v rámci obrázku nehraje roli Stínované bloky mohou mít libovolný tvar Mohou být dokonce vnořené, ale bez jakékoliv logické vazby (pouze estetický účel) Jediné omezení stínované bloky se stejným tónem základního odstínu spolu nesmí sousedit

Jazyk Shades - barevný model Z důvodu práce se světlostí a barevnými tóny je model RGB nevhodný (navržen primárně pro mapování barev na CRT monitorech) HSL model je ideální pro reprezentaci barev jako kombinace světlosti a tónu (a sytosti) přirozenější model pro vnímání barev lidským okem použit pro interní reprezentaci obrázku

Jazyk Shades - barevná škála RGB model používán jako externí model (využíván většinou grafických formátů) Při převodu může nastat problém se ztrátou informace některé barvy lze v HSL modelu vyjádřit více kombinacemi (typicky achromatické barvy nebo barvy s nízkou sytostí), v RGB však pouze jedinou kombinací nutné omezit použitelnou barevnou škálu

Jazyk Shades - barevná škála Barevná škála byla také omezena z estetických důvodů snaha o eliminaci rušivých a opakujících se artefaktů v obrázku Shades využívá: všech 360 barevných tónů každý tón může nabývat 60 různých úrovní světlosti (rozsah 20-79 % včetně) celkově je možné použít 21 600 odstínů

Jazyk Shades - barevná škála Z estetického hlediska je 21 600 různých odstínů dostatečný počet. Z hlediska vizuální reprezentace dat je však tento počet limitující. Zejména je problémem omezení světlosti: v každém stínovaném bloku je možné rozlišit pouze 60 odstínů pro samotný jazyk není tolik omezující problémem je kódování dat, zejména Unicode textových řetězců

Jazyk Shades - barevná škála Řešením je použití rozšířeného HSLA modelu, který umožňuje specifikovat jednotlivým pixelům také průsvitnost. průsvitnost lze nastavit ve škále od 0 (průhledný pixel) do 255 (neprůsvitný pixel) počet rozlišitelných odstínů v rámci stínovaného bloku zvýšen na 15 360 různé úrovně průsvitnosti slouží k určení typu jednotlivých tokenů v kódu nevýhoda nárůst velikost všech pixelů

Jazyk Shades - vlastnosti Z pohledu konvenčních programovacích jazyků je Shades: interpretovaný dynamicky typovaný imperativní (budoucí rozšíření o funkcionální aspekty programování)

Jazyk Shades - vlastnosti Jednotlivé obrázky mohou obsahovat více tříd i funkcí (obdoba modulu v Pythonu). Členění programu odpovídá Javě (balíková struktura, importy, ) Argumenty funkcí vždy předávány hodnotou (kopírování hodnoty skalárního typu a kopírování reference u složeného typu), dereferencování probíhá automaticky (Java)

Jazyk Shades - API Díky provázanosti s platformou Java využití některých prvků z Java core a utils API (práce s řetězci, I/O, ) Webové API uplatnění zejména při vytváření programů odrážející korporátní identitu Obrázkové API umožňuje lehce generovat konkrétní Shades obrázky (profilové ikony, ) šifrovací hry, výuka kryptografie

Jazyk Tints Doprovodný jazyk pro Shades Jedná se o část jazyka Shades, kterou lze vyjádřit jako text v principu konvenční programovací jazyk nepodporuje aspekty 2D programování (chystané rozšíření o některé aspekty pomocí anotací) Cílem je usnadnění tvorby vizuálních programů v IDE

Jazyk Tints Používán také ve specifikaci jazyka Shades pro pojmenování klíčových slov Klíčová slova jsou primárně v angličtině, ve finální verzi ale bude možné používat lokalizované varianty (podpora nezávislosti na určitém přirozeném jazyce) Ve své podstatě pouze mapování jmen na jednotlivé konstrukty jazyka Shades

Shader Interpret a zároveň běhové prostředí pro jazyk Shades. V prvních verzích jazyka samostatná aplikace běžící nad JVM Po ustálení vývoje nahrazení vlastního běhového prostředí samotnou JVM (využití bytecodové instrukce invokedynamic)

Shader výběr platformy Při výběru platformy pro implementaci interpretu a běhového prostředí bylo zvažováno několik možností. Výběr byl ovlivněn podporou hlavních cílů jazyka Shades, zejména pak platformní nezávislostí. Z tohoto důvodu byla zamítnuta varianta nativní aplikace

Shader výběr platformy V užším výběru 3 platformy:.net rozsáhlé API velká provázanost s rodinou OS Windows s pomocí rámce Mono dostupné také pro Unix-like operační systémy

Shader výběr platformy V užším výběru 3 platformy: JavaScript + webový prohlížeč téměř 100% platformně nezávislé rozdílné chování JavaScriptu v různých prohlížečích, na různých OS poměrně omezené API, i přes standardizaci nekonzistentní chování

Shader výběr platformy V užším výběru 3 platformy: Java velká míra platformní nezávislosti rozsáhlé API open source řešení relativně konzistentní napříč operačními systémy a HW platformami menší rozšířenost na koncových zařízeních

Shader interpret Snaha o maximální využití výhod objektové orientace při návrhu interpretu Zrychlení zpracování vizuálních programů pomocí paralelismu jak na vnitřní, tak vnější úrovni Minimalizace paměťových nároků na reprezentaci gramatiky (opět s využitím objektové orientace, zejména dědičnosti)

Shader běhové prostředí Podobně jako u interpretu snaha o maximální využití výhod objektové orientace Práce s pamětí přenechána JVM otestované a optimalizované algoritmy Programy jsou spuštěny až po zpracování interpretem (včetně všech odkazovaných programů)

CodePainter IDE Zatímco u konvenčního programování lze používat běžný textový editor (byť je to neefektivní a náchylné k chybám), u vizuálního programování je použití speciálních vývojových prostředí víceméně nutnost.

CodePainter IDE Pro tvorbu vizuálních programů je samozřejmě možné použít libovolný grafický editor, ale přináší to s sebou vysokou pravděpodobnost vzniku chyby. Tuto chybu může navíc způsobit samotný grafický editor.

CodePainter IDE Pro tvorbu vizuálních programů je samozřejmě možné použít libovolný grafický editor, ale přináší to s sebou vysokou pravděpodobnost vzniku chyby. Tuto chybu může navíc způsobit samotný grafický editor. Ukázka: Jak určitě nepostupovat :)

CodePainter IDE Ani sofistikovanější grafické editory nejsou příliš vhodné pro vizuální programování. Ukázka: Ani drahé grafické editory nemusejí stačit :)

CodePainter IDE I pro jednoduché vizuální programy je vhodné použít specializované vývojové prostředí. Nejjednodušší programy se skládají z desítek pixelů a jejich manuální tvorba by zabrala netriviální množství času. CodePainter představuje kombinaci běžného vývojového prostředí a grafického editoru I přes značné usnadnění výběru správných pixelů je manuální tvorba programů časově náročná

CodePainter IDE Řešením je využít doprovodný jazyk Tints Kód zapsaný v jazyce Tints je transformován na blok odstínů, který je poté nakreslen na požadované pozici a v tvaru, který vyhovuje uživateli Jedná se o princip dávkového zpracování Dávky lze uložit pro opakované použití Dávky se také automaticky ukládají spolu s celým sezením při uzavření IDE

CodePainter IDE Představení CodePainteru Ukázka: Hello, LaSArIS!

Ukázky Ukázka: Hello, LaSArIS! s využitím korporátní identity

Ukázky Ukázka: I/O a jednoduchá kalkulačka, příklad vyplnění míst v existujícím obrázku

Závěr Vizuální zpracování dat a programování má budoucnost.

Děkuji za pozornost