Nyelvtervezési alapelvek
a jól megtervezett tartományspecifikus nyelv vagy általában egy nyelv felhatalmazza az embereket arra, hogy gyorsan és tömören fejezzék ki gondolataikat, valamint könnyen megértsék a visszacsatolási választ. Különösen fontos a kutatás, mert közvetlenül befolyásolja, hogy milyen gyorsan lehet iterálni — tesztelni az új ötleteket és megérteni a közbenső eredményeket. A gyors iterációk lehetővé teszik a paraméterek szélesebb körének tesztelését, beleértve azokat is, amelyek első pillantásra nem működhetnek, lehetővé téve, hogy sokkal jobban megértse a vizsgált domaint. Így a nyelvi tervezés közvetlenül nem csak a probléma nemlineáris módon történő megoldásához szükséges teljes időt érinti, gyakran a megoldás megtalálásának kulcsa.
fontos kérdés merül fel — mi a jó nyelv? Vannak-e olyan irányelvek, amelyeket minden domain-specifikus nyelvnek követnie kell? Hisszük, hogy két alapelv létezik:
- az embereknek azonnali kapcsolatra van szükségük ahhoz, amit csinálnak
ezt az elvet először Brett Victor, az ember-számítógép interakció látnok vezette be nyilvánosan, az elv feltalálása című előadásában. Ennek az elvnek bármilyen megsértése elidegeníti a felhasználót a tényleges problémáktól, amelyeket megpróbál megoldani, ami következésképpen csökkenti a megértést és növeli a hibák számát. - az embereket nem korlátozhatja az általuk használt eszköz
az emberek hajlamosak elutasítani minden olyan eszközt, amely nyilvánvalóan korlátozza kifejezőképességüket. Ez a pontos oka annak, hogy olyan sok WYSIWYG megoldás, mint a weboldal készítői, a játékkészítők vagy a vizuális programozási nyelvek, soha nem felzárkóznak. Bármely, a WYSIWYG szövegszerkesztőnél összetettebb DSL könnyen megsértheti ezt az elvet azáltal, hogy a felhasználók számára túl korlátozott előre meghatározott, magas szintű összetevőket biztosít. Még akkor is, ha ezek az összetevők kódírással bővíthetők, az alapul szolgáló programozási nyelv igénybevételének szükségessége rontja a tervezést, és használhatatlanná teszi a kevésbé technikai közönség számára.
elv megsértése
ezen elvek bármelyikének megsértése mindig nem optimális megoldáshoz vezet. Tekintsük újra a grafikai tervezést. A Photoshop használata mindig jobb, mint HTML, Sass és JavaScript kód írása? Vitathatatlanul. Ezek a megoldások sértik az első, illetve a második elvet. A Photoshop egy WYSIWYG digitális vásznat kínál korlátozott előre definiált, alig bővíthető eszközökkel. A HTML, a Sass és a JavaScript viszont szöveges felületet biztosít, és így elidegeníti a felhasználót a valódi létrehozásától, de nem állít be szigorú korlátozást az expresszivitásra. Vegyünk két felhasználási esetet:
- egy weboldal tervezése. A menüsorban öt, egyenletesen elrendezett elem található. Ha új elemet szeretne hozzáadni és megváltoztatni a weboldal színpalettáját, mindössze annyit kell tennie, hogy egyetlen sort módosít a HTML-ben és egy színváltozót a Sass-ban. Nem számít, mennyire összetett a webhely, minden elem automatikusan frissül. Ugyanez a Photoshop — ban több nagyságrenddel több időt igényel-hozzon létre egy új menüpontot, használjon egy Igazító eszközt az elemek elrendezéséhez, a színek manuális megváltoztatásához, és valószínűleg újra alkalmazhat néhány átalakítást és szűrőt a bonyolultabb webhelyterületeken.
- művészi festmény. A HTML, SVG és Sass használata egy szövegszerkesztőben művészi elképzelés kifejezésére aligha lehetséges. Minél kreatívabb és felfedezhetőbb a folyamat, annál fontosabbá válik a WYSIWYG eszközkészlet és az azonnali visszacsatolási hurok.
lehetséges lenne mindkét megközelítés egyesítése? Ez nem csak lehetséges, már vannak megoldások a helyes irányba. Gondoljon a Sketch – re, amely a Mac OS végső tervezési eszköztárává vált. Miért olyan sok ember inkább a Photoshop helyett? A válasz meglepően egyszerű-A Sketch kevésbé korlátozza felhasználói kifejezőképességét, mint a Photoshop. Ez lehetővé teszi, hogy újrafelhasználható tervezési elemeket hozzon létre, majd tömegesen frissítse paramétereit, akárcsak a Sass, de interaktív, WYSIWYG környezetben. Sok más módja van a tervező élményének további javítására. Nézze meg Brett Victor újabb beszédét, dinamikus Vizualizációk rajzolása, további inspirációért.
A DSLs átka
ha ismerjük a tökéletes tartományspecifikus nyelv alapelveit, miért nincsenek még rendelkezésre álló tartományspecifikus eszközök? Miért nem élünk korlátlan WYSIWYG világban?
míg a tartományspecifikus nyelvek páratlan módon kezelik és megértik az adatokat, csendben csempészik az elrontott szoftvertervezési mintákat is. Sok kicsi, egymással nem beszélő DSL létezése hosszú távra vezet egy diszfunkcionális, széttöredezett szoftvervilághoz.
a való világban állandó együttműködés van a domainek között. A képmanipulációt gyakran használják a gépi tanulás és a bioinformatika igényeihez, amelyek viszont egyre inkább az építészet és a járműtervezés fontos eszközévé válnak. Az IoT gyors fejlődése kisebb és autonómabb eszközöket eredményez, ami új világot nyit meg a korai betegségfelismerés, az Egészségfigyelő rendszerek vagy az intelligens városok számára.
a szoftvervilágban azonban alig van együttműködés. A szoftverfejlesztők újra és újra ugyanazt a kódot írják, ami magas fejlesztési költségekhez és az innováció stagnálásához vezet. Nem lehet csak úgy elvenni egy alakzatszerkesztőt a kedvenc grafikus szoftveréből, finomhangolni az Ön igényeinek megfelelően, ragasztani gépi tanulási eszközökkel, és létrehozni egy AI-támogatott 3D modellező eszközt a 3D nyomtatás igényeihez. Órák helyett jelenleg napokra vagy hónapokra van szüksége az ilyen feladat elvégzéséhez. Még akkor is, ha olyan könyvtárakat talál, amelyek hasonló funkciókat valósítanak meg, hatalmas mennyiségű munkát kell elvégezni, mielőtt a “határok nélkül” elvet követné, és valóban rugalmas környezetet biztosítana, így a felhasználók finomhangolhatják a modell felépítését. Ennek eredményeként a meglévő összetevők fejlesztése vagy az adatok manipulálásának új módjainak feltalálása helyett a fejlesztők minden új alkalmazásban újra megvalósítják az ismert megoldásokat.
Luna, a nyelv
a tartományspecifikus nyelveknek az első elv követésére vonatkozó irányelvei egyértelműek. Annak érdekében, hogy az emberek és a létrehozásuk közötti közvetlen kapcsolat létrejöjjön, a tartományspecifikus nyelveknek egyetlen, zökkenőmentes élményben kell ötvözniük a gazdag adatmegjelenítést és az intuitív adatmanipulációt. Nincs azonban ökölszabály, hogyan kell helyesen csinálni. Erősen függ az adott tartománytól és a felhasználó preferenciáitól, ami még fontosabbá teszi a második paradigmát, az összetevők testreszabásának képességét.
a második elv követése azonban trükkösebb. Hogyan lehet megtervezni egy nyelvet, és biztosítani, hogy az ne korlátozza az emberek kifejezőképességét? Hogyan engedhetjük meg a felhasználóknak, hogy egyedi újrafelhasználható összetevőket hozzanak létre, és mélyen módosítsák a meglévőket, miközben a felület egyszerű marad, és nem követeli meg, hogy programozók legyenek? Az ötlet az, hogy lehetővé tegye a felhasználó számára a perspektíva fokozatos megváltoztatását. Ahelyett, hogy egy mögöttes programozási nyelvhez folyamodnánk, megengedhetjük, hogy szó szerint belemerüljünk minden komponensbe, és ugyanazt (vagy nagyon hasonló) nyelvet használjuk annak leírására, hogy az alösszetevők hogyan kommunikálnak. A beágyazott komponensekbe történő további merülés lehetővé teszi a felhasználók számára, hogy igény szerint fokozatosan haladjanak az absztrakció magas vagy alacsony szintjétől.
pontosan ez az, amit Luna csinál. Három fő koncepcióra épült:
- adatmegjelenítés és manipulációs környezet
a legmagasabb szempontból a Luna lehetővé teszi az adatok vizualizálását és manipulálását interaktív és bővíthető WYSIWYG komponensekkel. Ezenkívül a Luna lehetővé teszi az új összetevők egyszerű meghatározását, a meglévők módosítását és megosztását a közösséggel. - adatfolyam-grafikon
szó szerint kicsinyítheti, hogy lássa, hogyan vannak összekötve a magas szintű összetevők adatfolyam-grafikont alkotva. Újradefiniálhatja őket, vagy új összetevőket helyezhet be a grafikon működésének újradefiniálásához. A Luna olyan komponenseket szállít, amelyek az absztrakció minden szintjére kiterjednek, a magastól az alacsonyig. A vászon statisztikai függvényeken keresztüli festésétől a bitenkénti operátorokig - beágyazott adatfolyam-grafikonok és kódábrázolás
A Luna minden összetevője kivétel nélkül más komponensekből épül fel. Mindig merülhet egészen az absztrakció kívánt szintjéig, és finomhangolhatja az Ön igényeinek megfelelően. Azt is összeomlik több csatlakoztatott alkatrészek egy új, erősebb egyet, és ossza meg másokkal. Ezenkívül a Luna egyedülálló lehetőséget biztosít a felhasználók számára a reprezentációk közötti váltáshoz — az adatfolyam-grafikonról a kódra és fordítva. Nagyon fontos igazságot jelent-a grafikon ugyanolyan erős, mint a kód.
a Luna-t úgy tervezték, mint egy egységes környezetet a vizuálisan gazdag domain-specifikus nyelvek építéséhez és tárolásához. Elmossa a tartományok közötti határokat, lehetővé téve a különböző területekről származó eszközök számára, hogy zökkenőmentesen kommunikáljanak és egymás mellett éljenek.