wiki:KohtuullisenKorkeaOpettelukynnys
Last modified 3 years ago Last modified on 2015-05-25 22:25:32

Kohtuullisen korkea opettelukynnys

Yleensä tämä lausahdus tarkoittaa, että joku on jo oppinut jotain muuta, josta poisoppiminen on joko hankalaa tai epämotivoivaa. Lausahdus on siis hyvin riippuvainen sen antajasta. Aiheesta, ja sen vierestä, voi katsoa mainion luennon osoitteessa http://www.infoq.com/presentations/Simple-Made-Easy

Lyhyesti: simple → yksinkertainen, yksioikoinen, yksi jotain; complex → monimutkainen, monta jotain; easy → lähellä, tunnettu, helppo; hard → vahva, hankala

⇒ Helppous on suhteellista.

Editorit

Mitä tämä tarkoittaa ohjelmointikielten editorien kohdalla? Alunperin tekstitiedostoeditorit olivat kovin ankeita, voit katsoa ed-nimistä ohjelmaa Linuxeissa ja Unixeissa. Syy oli yksinkertainen, ei ollut näyttöjä, ja rivikirjoittimella editoitiin tiedostoja riveittäin. Editorit olivat modaalisia, tilallisia, eli pystyit joko syöttämään tekstiä (syöttötila) tai muokkaamaan sitä (muokkaustila). Näyttöjen myötä myös tekstieditointi muuttui.

vi(m) ja modaalisuus

Vi on seuraava vaihe. Sen tekee joillekin vieraaksi ymmärtää sen modaalisuus. Vaikka koko teksti, tai ainakin näytölle mahtuva osuus näkyikin, sitä muokattiin kahdessa eri tilassa. Tämä teki hyvin helpoksi muokkauskomentojen antamisen, ja yleensä mahdolliseksi, koska kontrollinäppäimet ja -laitteet, kuten hiiret, odottivat vielä keksimistään. Eli syöttötilassa voitiin jälleen syöttää tekstiä kuin kirjoituskoneella kirjoittaen, kun taas muokkaustilassa voitiin lyhyillä komennoilla muokata tekstiä, esim. 2,8s/kissa/koira/g korvaa (substitutes) riveiltä 2—8 kaikki merkkijonot 'kissa' merkkijonoilla 'koira'. Muokkaustilasta siirrytään syöttötilaan esim. i-komennolla (insert), ja syöttötilasta siirrytään muokkaustilaan (nykyisin) esc-näppäimellä. Tämä tilallisuus tekee vi:n ja Vimin joillekin kaukaiseksi, toisille se on tehokkaan kirjoittamisen apuväline.

Nykyisin Vim on paljolti korjannut vi:n, ja se sisältääkin jo hiiri- ja GUI-tuen, joten monelle läheiset valikotkin komentoineen löytyvät siitä tekstin muokkaamista varten. Ainakin Windows-asennus tarjoaa Vimistä myös Easy-version, joka on aina syöttötilassa, ja muokkaus tehdään valikkokomennoilla ja komentokuvakkeilla, kuten vaikkapa ConTextissa?.

Emacs ja näppäinoikotiet

Modaalisuuden rinnalle kehittyi suoran muokkaamisen malli, eli tekstinmuokkauskomennot annettiin käyttäen erilllisiä kontrollinäppäimiä. Emacs edustaa tätä koulukuntaa hyvin vahvasti. Monissa nykyeditoreissakin on nk. pikanäppäimiä, esim. Ctrl-s, joilla saadaan usein käytettyjä toimintoja tehtyä nopeasti, nostamatta sormia näppäimistöltä. Jos näitä komentoja on paljon, ei näppäimistössä riitä näppäimet. Tämän lisäksi on vaikea keksiä mielekkäitä näppäimiä samannimisille toiminnoille, esim. Copy -> Ctrl-c ja Cut Ctrl-x. Näitä ongelmia voi helpottaa käyttämällä useampitasoisia näppäinkomentoja, ja tämä taas tuntuu kovin kaukaiselta joidenkin mielestä. Esimerkiksi Emacsissa avustustoiminnot löytyvät yleensä näppäilemällä Ctrl-h ja jotain muuta, esim. Ctrl-h b listaa sen hetken aktiiviset näppäinkomennot, kun taas Ctrl-h k selittää seuraavaan näppäilyyn tai hiirieleeseen liittyvän komennon. Myös yksinkertaisia pikanäppäimiä löytyy, esim. funktionäppäin F1 aktivoi avustustoiminnon.

Tämä ei ole kuitenkaan mitenkään Emacsin yksinoikeutta. Wanhoille Ohjelmoijille on varmasti syöpynyt selkärankaan Wordstarin lohkokomennot Ctrl-k b, Ctrl-k k ja kumppanit heidän Turbo Pascal ohjelmointisessioistaan. Nykyisin esim. Eclipse- ja MS Visual Studio -ohjelmistokehittimet sisältävät monitasoisia komentoja. Ero Emacsiin on siinä, että Emacsissa sama näppäily tekee eri tiedostoille samankaltaisen asian eri tavalla, eli esim. Java-tiedostolle Ctrl-c Ctrl-c kääntää sen, samoin kuin useille muille ohjelmakielitiedostoille (jos kääntäjä tai ajoympäristö löytyy tietokoneeseen asennettuna ja Emacsiin konfiguroituna) kun taas LaTeX tiedostoille se ensimmäisellä kerralla latoo ne (eli "kääntää" LaTeX-ohjelmalla) toisella kerralla (jos tiedosto ei ole välissä muuttunut) se näyttää ladotun tiedoston. Tämä on toki hieman monimutkaista, mutta vastaa hyvin kehitysprosessia, ja oppimisen jälkeen se on hyvin helppoa.

Mainittakoon vielä, että nykyisin Emacsin oletusasetukset tarjoavat valikot ja pikapainikkeet, joita voi käyttää ennenkuin näppäinkomennot tuntuvat tutuilta. Käyttöliittymä on tässäkin siis kuten ConTextissa, tosin monipuolisemmin ominaisuuksin, sillä esim. japanin kirjoittaminen on helppoa, kun emacs tunnistaa kanjit romanji-kirjoituksesta ilman lisäpakettien asenteluja. どのように単純な!

Eli…

Helppous on suhteellista. Emacs ja Vim ovat nykyään samanlaisen opettelukynnyksen takana kuin muutkin editorit, mutta niiden tehokäytön opettelu on toki suuremman kynnyksen takana. Kovin moni muu editori ei vaan pääse edes lähelle tämän parivaljakon ominaisuuksia, vaan niiden ominaisuuksien selittäminen on sitten toisen sivun sisältö.