Ohjelmoinnin sanakirja - raskas IDE ja random konffaukset
“ Veivataan alkuun se raskas IDE käyntiin. Jonglöörataan new projectia ja ties mitä GUI nappulaa. Laitetaan Vimiä sit random-konffeihin. Voidaan lopputulos kopioida git repoon, jossa palvelun runko on pystyssä jo tunnissa swagger dokumentaatiolla. “
Kyselin taannoin Instagramissa seuraajiltani IT-alan eri termeistä, sekä teknologiajargonista, joka eritoten kuulostaa varsinkin aloittelevan koodarin korvaan jopa kryptiseltä. Mitkä termit ovat googlailusta huolimatta vielä enemmän tai vähemmän hepreaa? Mistä termistä kuulet puhuttavan paljon, mutta sen merkitys alalla ei kuitenkaan ole vielä täysin selkeää? Tässä blogipostauksessa tulen avaamaan yhdeksän (9) erilaista ohjelmointi- ja teknologiamaailmaan liittyvää käsitettä esimerkkien kera.
Lupaan, että tämän postauksen luettuasi ymmärrät teknologiajargonista taas hieman enemmän!
RELAATIOKANTA
Jos SQL on sinulle entuudestaan tuttua, olet takuulla päässyt tutustumaan relaatiokantojen toimintaan. Relaatiotietokannassa (eng. relational database) tieto on jäsenneltynä riveinä ja sarakkeina eri tauluihin, jotka ovat liitoksilla sidoksissa toisiinsa. Tietomallin eheyssäännöt (eng. integrity rules) pakottavat käyttäjän antamaan tietokannalle määräyksiä, jotta kantaan tallennettaisiin vain oikeata tietoa, oikeassa muodossa. Siksi relaatiokantaa hyödynnetään erityisesti isojen datamassojen organisoimisessa, jossa tiedon tulee olla helposti saatavilla, sekä tehokkaasti hallittavissa.
Avaimet ovat tärkein elementti relaatiokantojen toiminnassa. Relaatiokannassa taulut ovat sidoksissa toisiinsa viiteavaimen (eng. foreign key) avulla. Viiteavain muodostaa suhteen, eli relaation kahden tai useamman taulun välille. Viiteavaimen lisäksi relaatiokannoissa käytetään pääavainta (eng. primary key), jonka on oltava uniikki jokaisessa taulussa. Pääavaimen tehtävänä on varmistaa, ettei taulussa ole duplikaattirivejä. Pääavain toimii usein jonkin toisen taulun viiteavaimena.
Taulussa voi olla vain yksi pääavain, mutta taulussa voi olla useita viiteavaimia. Suhteiden avulla tietokanta pysyy eheänä, estäen tietojen rikkoutumisen tai ristiriitaisuuden taulujen välillä.
IDE
Ohjelmointiympäristöstä puhuttaessa käytetään usein lyhennettä IDE (eng. Integrated Development Environment) joista muutamia tunnetuimpia ovat Visual Studio, Atom, PyCharm, sekä Android Studio, joka on nimensä mukaisesti suunniteltu erityisesti android-sovellusten kehittämiseen. IDE tarkoittaa siis yksinkertaisimmillaan editoria, jolla kirjoitat koodia.
IDE:n kuitenkin erottaa tavallisesta tekstieditorista (esim. MS Word) sen sisäänrakennetut ominaisuudet: IDE usein tunnistaa koodin jota kirjoitat, sekä osaa myös kääntää sen sellaiseen konekieliseen muotoon, jonka tietokone ymmärtää.
REPO
Ohjelmointimaailmassa ‘reposta’, eli repositoriosta (eng. repository) puhuttaessa tarkoitetaan tietovarastoa, joka pitää sisällään tiedot kaikista (koodi)projektiin kuuluvista tiedostoista muutos- ja tapahtumakohtaisine lokeineen. Samassa asiayhteydessä puhutaan usein myös versionhallinnasta, joka mahdollistaa tiedostojen eri versioiden tallentamisen repositorioihin.
Repoja on olemassa kahdenlaisia: etärepositorio (eng. remote repository) ja paikallinen repositorio (eng. local repository). Paikallinen repositorio sijaitsee nimensä mukaisesti tietokoneellasi, kun taas etärepositorio sijaitsee palvelimella, etäällä omalta tietokoneeltasi. Etärepositorioista tunnetuimpia ovat mm. Github, Bitbucket ja Gitlab. Kun etärepo ja paikallinen repo yhdistetään, niiden välillä on mahdollista siirtää tietoa.
Ohjelmistokehittäjät voivat versionhallinnan avulla ladata koodin yhteisestä etärepositoriosta, tehdä siihen muutoksia, ja lähettää tiedoston muutoksineen takaisin repositorioon muiden nähtäväksi.
PILVIPALVELUT JA SERVERLESS
Pilvipalveluista (eng. cloud service) puhuttaessa viitataan yksinkertaisimmillaan palveluihin, jotka sijaitsevat verkossa. Voit ajatella pilvipalveluita vielä yksinkertaisemman esimerkin kautta:
Kuvitellaan, että sinulla on tärkeä tiedosto koneellasi, joka sinun pitäisi tallentaa. Sen sijaan että tallentaisit tiedostoja aina tietokoneesi paikalliseen muistiin, tallennatkin ne internetin ‘pilveen’.
Pilveen tallennetut tiedostot ovat aina varmemmin turvassa, jos oma tietokoneesi ei jostain syystä sattuisikaan enää käynnistymään. Ne helpottavat myös tiedostojen säilyttämistä ja jakamista muille, sillä pilveen tallennettuihin tiedostoihin pääset käsiksi myös muilta laitteilta, sekä kotiverkkosi ulkopuolelta. Tallennustilan lisäksi pilvipalveluina voidaan tarjota niin yksityishenkilöille kuin yrityksille esimerkiksi sähköposti- tai kalenteripalveluita (Outlook, Google Kalenteri), tiedostojen jakamispalveluita (Dropbox), tai tekstinkäsittelyohjelmia (Google Docs).
Serverless termillä puolestaan viitataan erityiseen pilvipalvelumalliin, jossa ohjelmistokehittäjien ei tarvitse keskittyä juurikaan varsinaisen IT-infran, eli laitteiston, palvelimien, verkkolaitteiden, ja verkkojen pystytykseen, sillä palveluntarjoajat (esim. Amazon tai Microsoft Azure) vastaavat tästä. Kehittäjät voivat keskittyä siis täysin koodin kirjoittamiseen ja ajamiseen. Termin suomennettu nimi “palveliton” ei varsinaisesti tarkoita palvelimien, eli laitteiden puuttumista: ne eivät vain ole näkyvillä fyysisesti missään. Serverless-ympäristöt ovat poikkeuksetta lähes aina toimintavarmempia, sillä palveluntarjoaja vastaa pilvi-infran päivitysten ajantasaisuudesta, tietojen varmuuskopioinnista, sekä tietoturvasta.
Sekä serverless-kehittäminen, että pilvipalvelut tapahtuvat molemmat internetin “pilvessä”. Serverless-termillä viitataan kuitenkin ohjelmistokehitykseen, kun taas pilvipalveluilla tarkoitetaan laajempaa ja monipuolisempaa tietotekniikan palveluntarjontaa internetin välityksellä.
DEBUGGAUS
Koodisi toimii syntaksiltaan oikein, mutta lopputulos ei välttämättä ole täysin oikea? Vai ilmeneekö koodissa odottamattomia virheitä tai toimintahäiriöitä? Debuggaus (eng. debugging) tarkoittaa lyhyesti virheiden etsimistä koodista. Debuggaus suoritetaan usein debuggerilla, eli ohjelmalla, jonka avulla koodi käydään läpi vaihe vaiheelta, tarkastellen samanaikaisesti sen eri tiloja. Useammat IDE:t tarjoavat sisäänrakennetun ohjelman debuggausta varten, jonka käyttäminen kannattaakin opetella.
Debuggauksen avulla varmistetaan ohjelman toimivuus ja vakaus: jos koodiin tehdään muutoksia, on hyvä debugata se läpi, jotta muutokset toimivat kuten pitäisi.
KONFIGUROINTI
‘Konffaus’, ‘konffata’ eli konfiguroida (eng. configuration). Konfigurointi on olennainen osa ohjelmistokehitystä, sillä sen avulla optimoidaan järjestelmän taikka ohjelman asetukset toimimaan oikein. Esimerkiksi ohjelmistot konfiguroidaan vastaamaan niitä käyttävän yrityksen käyttötarkoitusta: mitä käyttöoikeuksia ja rooleja määritetään, mistä tietoa tuodaan ja mihin sitä viedään, mitkä parametrit tarvitaan tietokantayhteyden muodostamiseen, sekä mitä mahdollisia integraatiota tehdään muiden yrityksessä käytettävien järjestelmien kanssa.
Konfigurointiasetukset säilytetään usein erillisessä tiedostossa avain=arvo -pareina. Tiedostoon sisällytetään kaikki tarvittava tieto ohjelman käyttäytymisestä, sekä ohjeet sen käyttöönottoon. Myös sensitiivinen data, kuten esimerkiksi tietokantayhteyden salasanat pidetään konfigurointitiedostossa, kokonaan erillään ohjelman omasta koodista. Tiedostoa voidaan ajatella eräänlaisena ‘siltana’ ohjelman ja sen käyttäjän välillä.
ENKOODAUS JA DEKOODAUS
Ohjelmoinnin maailmassa enkoodaus (eng. encoding) tarkoittaa lyhyesti jonkun asian koodaamista toiseen muotoon. Yksinkertaisimmillaan se voi olla esimerkiksi tekstin muuttamista binäärimuotoon (= nolliin ja ykkösiin), jotta tietokone osaa käsitellä sitä. Enkoodauksen vastakohtana on dekoodaus, joka ‘purkaa’ binäärimuodossa olevan tiedon alkuperäiseen muotoon, eli tekstiksi.
Enkoodaus on tarpeellinen, jos tietoa halutaan siirtää eri järjestelmien välillä. Hyvä esimerkki tästä on tiedonsiirto verkossa: kun tietoa siirretään internetin yli, se enkoodataan. HTTP-protokollassa, jota selaimet ja WWW-palvelimet käyttävät tiedostojen siirtoon, hyödynnetään usein UTF-8-enkoodausta varmistamaan, että teksti siirtyy järjestelmien välillä oikein. HTML-tiedostoihin merkataankin tieto <meta charset="UTF-8">, joka tarkoittaa, että tiedosto on enkoodattu UTF-8 merkistöllä. Selain osaa tällöin muuttaa sen luettavaksi tekstiksi.
Enkoodauksen tarkoituksena ei kuitenkaan ole välitettävän tiedon salaaminen, vaan pikemminkin sen muuttaminen oikeaan muotoon. Siksi sitä ei pidä sekoittaa enkryptaukseen, jossa teksti tai muu välitettävä data on muutettu tarkoituksella sellaiseen muotoon, että se on lähes mahdotonta avata ilman oikeaa salausavainta.
Olivatko kaikki yllämainitut termit sinulle jo aiemmin tuttuja, vai oliko joku termeistä kenties kokonaan uusi? Kerro kommenteissa, mistä muista ohjelmointimaailman termeistä haluaisit kuulla lisää tulevaisuudessa!