Kielisuunnitteluperiaatteet
hyvin suunniteltu verkkotunnuskohtainen kieli, tai kieli yleensä, antaa ihmisille kyvyn sekä ilmaista ajatuksensa nopeasti ja ytimekkäästi että ymmärtää palautteen helposti. Tutkimus on erityisen tärkeää, koska se vaikuttaa suoraan siihen, kuinka nopeasti voi iteroida — testata uusia ideoita ja ymmärtää välituloksia. Nopeat iteraatiot mahdollistavat laajemman parametrien valikoiman testaamisen, mukaan lukien ne, joiden ei pitäisi toimia ensi silmäyksellä, jolloin voit paljon paremmin ymmärtää tutkimaasi verkkotunnusta. Näin kielen muotoilu vaikuttaa suoraan paitsi kokonaisaikaan, joka tarvitaan ongelman ratkaisemiseksi epälineaarisella tavalla, se on usein avain ratkaisun löytämiseen ylipäätään.
esiin nousee tärkeä kysymys — Mikä on hyvä kieli? Onko olemassa ohjeita, joita jokaisen verkkotunnuskohtaisen kielen tulisi noudattaa? Uskomme, että on olemassa kaksi perusperiaatetta:
- ihmiset tarvitsevat välittömän yhteyden siihen, mitä he tekevät
tämän periaatteen esitteli ensimmäisen kerran julkisesti ihmisen ja tietokoneen välisen vuorovaikutuksen visionääri Brett Victor puheessaan, jossa hän keksi periaatteen. Mikä tahansa tämän periaatteen rikkominen vieraannuttaa käyttäjän todellisista ongelmista, joita hän yrittää ratkaista, mikä vähentää ymmärrystä ja lisää virheiden määrää. - ihmisiä ei voi rajoittaa sillä välineellä, jota he käyttävät
ihmiset pyrkivät hylkäämään minkä tahansa työkalun, joka selvästi rajoittaa heidän ilmaisuvoimaansa. Tämä on juuri se syy, miksi niin monet WYSIWYG ratkaisut, kuten verkkosivujen luojat, pelien luojat tai visuaaliset ohjelmointikielet, eivät koskaan saa kiinni. Mikä tahansa WYSIWYG-tekstieditoria monimutkaisempi DSL voi helposti rikkoa tätä periaatetta tarjoamalla käyttäjilleen liian rajallisen joukon ennalta määriteltyjä, korkean tason komponentteja. Vaikka näitä komponentteja voidaan laajentaa kirjoittamalla koodia, tarve turvautua johonkin taustalla olevaan ohjelmointikieleen pilaa suunnittelun ja tekee siitä käyttökelvottoman vähemmän tekniselle yleisölle.
periaatteen rikkominen
jonkin näistä periaatteista rikkominen johtaa aina suboptimaaliseen ratkaisuun. Mietitäänpä vielä graafista suunnittelua. Onko Photoshopin käyttäminen aina parempaa kuin HTML -, Sass-ja JavaScript-koodin kirjoittaminen? Luultavasti. Nämä ratkaisut ovat ensimmäisen ja toisen periaatteen vastaisia. Photoshop tarjoaa WYSIWYG digital canvas rajoitettu joukko ennalta, tuskin laajennettavissa työkaluja. HTML, Sass ja JavaScript puolestaan tarjoavat tekstirajapinnan ja siten vieraannuttavat käyttäjän sen todellisesta luomisesta, mutta eivät aseta tiukkoja rajoituksia ilmaisuvoimalle. Tarkastellaan kahta käyttötapausta:
- verkkosivujen suunnittelua. Valikkopalkissa on viisi tasaisesti aseteltua kohdetta. Jos haluat lisätä uuden kohteen ja muuttaa sivuston väripalettia, sinun tarvitsee vain muokata yhtä riviä HTML: ssä ja Värimuuttujaa Sass: ssä. Riippumatta siitä, kuinka monimutkainen sivusto on, jokainen elementti päivittyy automaattisesti. Saman tekeminen Photoshop vaatii useita suuruusluokkia enemmän aikaa-luo uusi valikko kohde, Käytä kohdistustyökalu järjestää elementit, Manuaalisesti muuttaa värejä ja luultavasti uudelleen soveltaa joitakin muutoksia ja suodattimia monimutkaisempia verkkosivuilla alueilla.
- taiteellinen maalaus. HTML: n, SVG: n ja Sassin käyttäminen tekstieditorissa taiteellisen vision ilmaisemiseen tuskin olisi mahdollista. Mitä luovempi ja löydettävämpi prosessi on, sitä tärkeämmäksi WYSIWYG toolset ja instant feedback loop tulevat.
Olisiko mahdollista yhdistää molemmat lähestymistavat? Se ei ole vain mahdollista, on jo ratkaisuja menossa oikeaan suuntaan. Ajattele Sketch, joka on tullut lopullinen suunnittelu toolkit Mac OS. Miksi niin monet ihmiset mieluummin sitä Photoshop? Vastaus on yllättävän yksinkertainen-Sketch rajoittaa sen käyttäjän ilmaisuvoimaa vähemmän kuin Photoshop. Sen avulla voit luoda uudelleenkäytettäviä sisustuselementtejä ja sitten irtotavarana-päivittää parametrejaan, aivan kuten Sass, mutta vuorovaikutteisessa, WYSIWYG ympäristössä. Suunnittelijan kokemusta voi parantaa monella muullakin tavalla. Katso toinen puhe Brett Victor, piirustus dynaaminen visualisointeja, lisää inspiraatiota.
DSL: n kirous
jos tunnemme täydellisen verkkotunnuskohtaisen kielen perusperiaatteet, miksi saatavilla olevia verkkotunnuskohtaisia työkaluja ei ole vielä olemassa? Miksi emme elä rajattomassa WYSIWYG-maailmassa?
vaikka verkkotunnuskohtaiset kielet tarjoavat vertaansa vailla olevan tavan manipuloida ja ymmärtää dataa, ne myös salakuljettavat vaivihkaa pilaantuneita ohjelmistosuunnittelukuvioita. Monien pienten DSL: ien olemassaolo, jotka eivät voi puhua keskenään, johtaa pitkässä perspektiivissä toimimattomaan, pirstaloituneeseen ohjelmistomaailmaan.
reaalimaailmassa verkkotunnusten välillä on jatkuvaa yhteistyötä. Kuvamanipulaatiota käytetään usein koneoppimisen ja bioinformatiikan tarpeisiin, joista puolestaan tulee yhä tärkeämpi työkalu arkkitehtuurissa ja ajoneuvosuunnittelussa. Nopea IoT-kehitys johtaa pienempiin ja autonomisempiin laitteisiin, mikä avaa uuden maailman sairauksien varhaiselle havaitsemiselle, terveyden seurantajärjestelmille tai älykkäille kaupungeille.
ohjelmistomaailmassa yhteistyötä ei kuitenkaan juuri ole. Ohjelmistokehittäjät kirjoittavat samaa koodia yhä uudelleen, mikä johtaa korkeisiin kehityskustannuksiin ja innovaatioiden pysähtymiseen. Et voi vain ottaa muotoeditoria suosikkigrafiikkaohjelmistostasi, hienosäätää sitä tarpeisiisi, liimata sitä koneoppimistyökaluilla ja luoda tekoälyn avustamaa 3D-mallinnustyökalua 3D-tulostuksen tarpeisiin. Tuntien sijaan tarvitset tällä hetkellä päiviä tai kuukausia tällaisen tehtävän suorittamiseen. Vaikka löydät kirjastoja, jotka toteuttavat samanlaisia toimintoja, valtava määrä työtä on tehtävä ennen kuin se noudattaa ”no limits” – periaatetta ja tarjoaa todella joustavan ympäristön, jotta käyttäjät voivat hienosäätää, miten malli on rakennettu. Tämän seurauksena, sen sijaan, että parannettaisiin olemassa olevia komponentteja tai keksittäisiin uusia tapoja manipuloida tietoja, Kehittäjät uudelleen käyttöön tunnettuja ratkaisuja tyhjästä jokaisessa uudessa sovelluksessa.
Luna, kieli
ohjeet verkkotunnuskohtaisille kielille noudattaa ensimmäistä periaatetta ovat selkeät. Jotta ihmisten ja heidän luomisensa välille syntyisi välitön yhteys, verkkotunnuskohtaisten kielten on yhdistettävä rikas tiedon visualisointi ja intuitiivinen tiedon manipulointi yhdeksi, sujuvaksi kokemukseksi. Ei ole kuitenkaan nyrkkisääntöä, miten se tehdään oikein. Se riippuu vahvasti tietystä verkkotunnuksesta ja käyttäjän mieltymyksistä, mikä tekee toisesta paradigmasta, kyvystä muokata komponentteja, entistä tärkeämmän.
toisen periaatteen noudattaminen on kuitenkin hankalampaa. Miten voimme suunnitella kielen ja olla varmoja, ettei se rajoita ihmisten ilmaisuvoimaa? Miten voimme sallia käyttäjät voivat sekä luoda mukautettuja uudelleenkäytettäviä komponentteja ja syvästi muokata olemassa olevia silti pitää käyttöliittymän yksinkertainen eikä vaadi niitä ohjelmoijia? Ideana on antaa käyttäjälle mahdollisuus muuttaa näkökulmaa asteittain. Sen sijaan, että turvautuisimme taustalla olevaan ohjelmointikieleen, voimme sallia kirjaimellisesti sukeltaa jokaiseen komponenttiin ja käyttää samaa (tai hyvin samankaltaista) kieltä kuvaamaan, miten osakomponentit kommunikoivat. Sukellus syvemmälle sisäkkäisiin komponentteihin antaa käyttäjille mahdollisuuden edetä asteittain korkeista mataliin abstraktiotasoihin kysynnän mukaan.
Luna tekee juuri näin. Se perustui kolmeen pääkäsitteeseen:
- datan visualisointi-ja manipulointiympäristö
korkeimmasta näkökulmasta Luna mahdollistaa datan visualisoinnin ja manipuloinnin interaktiivisten ja laajennettavien WYSIWYG-komponenttien avulla. Lisäksi Luna tarjoaa tavan helposti määritellä uusia komponentteja, muokata olemassa olevia ja jakaa ne yhteisön kanssa. - Datavirtakuvaaja
voit kirjaimellisesti loitontaa nähdäksesi, miten korkean tason komponentit on kytketty yhteen muodostaen datavirtakuvaajan. Voit rewire ne tai lisätä uusia komponentteja uudelleen määrittää, miten kuvaaja toimii. Luna toimittaa komponentteja, jotka leviävät kaikille abstraktiotasoille, korkeista mataliin. Kankaan maalaamisesta tilastollisten funktioiden päälle bittioperaattoreihin - sisäkkäisiin datavirtakuvioihin ja koodiesitykseen
jokainen osa Lunassa on poikkeuksetta rakennettu muista komponenteista. Voit aina sukeltaa alas halutulle tasolle abstraktio ja hienosäätää sen tarpeisiisi. Voit myös romahduttaa useita kytkettyjä komponentteja uudeksi, tehokkaammaksi ja jakaa sen muiden kanssa. Lisäksi Luna tarjoaa käyttäjilleen hyvin ainutlaatuisen kyvyn vaihtaa edustustojen välillä – datavirtakäyrästä koodiin ja päinvastoin. Se merkitsee hyvin tärkeää totuutta — kuvaaja on yhtä voimakas kuin koodi.
Luna suunniteltiin yhtenäiseksi ympäristöksi visuaalisesti rikkaiden verkkotunnuskohtaisten kielten rakentamiseen ja isännöintiin. Se hämärtää alueiden välisiä rajoja, jolloin eri alojen työkalut voivat kommunikoida saumattomasti ja elää rinnakkain.