Näytetään tekstit, joissa on tunniste softat. Näytä kaikki tekstit
Näytetään tekstit, joissa on tunniste softat. Näytä kaikki tekstit

keskiviikko 15. helmikuuta 2012

Ohjelmointikieliä aloittelijoille


Kuva: Ramotion Blog (http://www.flickr.com/photos/ramotion/)
Huolimatta siitä, että useampikin nörttitytoistämme on joko huvikseen tai ammatikseen ohjelmoija, ei tässä blogissa ole vielä aikaisemmin ollut juurikaan puhetta ohjelmoinnista. Näinpä ajattelin täyttää tämän aukon antamalla pikakurssin ohjelmointikielien ihmeelliseen maailmaan. Muutaman huomion jälkeen on jokaisesta ohjelmointikielestä malli ns Hello Worldistä. Se on (yleensä, ei nyt puhuta APL:stä) yksinkertaisin ohjelmaesimerkki; ohjelma, joka ajaessaan tulostaa ruudulle tekstin "Hello World".

Assembly
Assembly on askel ylöspäin Matrixista tutuista ykkösistä ja nollista. Se näki päivänvalon 50-luvulla ja sitä käytetään pääasiassa esimerkiksi mikroprosessorien ohjelmointiin. Sen tarjoamat toiminnot ovat kohtuullisen yksinkertaisia ja näin ollen se on (ainakin teoreettisesti) helppo oppia. Assemblyllä on kuitenkin äärimmäisen helppoa tehdä suuria ohjelmointivirheitä, kuten loputtomia kiertoja ja monimutkaisemman ohjelman koodin lukeminen on vähintäänkin rasittavaa.

Hello World:
title   Hello World!                             (hello.asm)

dosseg
.model small
.stack 100h

.data
message db 'Hello, World!',0dh,0ah,'$'

.code
main  proc
      mov    ax,@data
      mov    ds,ax

      mov    ah,9
      mov    dx,offset message
      int    21h

      mov    ax,4C00h
      int    21h
main  endp
end   main

COBOL
COBOL on ohjelmointikielien torakka. Se näki alkunsa 1959 ja COBOL-sovellukset luultavasti jatkavat pyörimistään maailmanlopun jälkeenkin niin kauan kuin virtaa vain riittää. Ja kun koneet käynnistyvät uudelleen, ne aloittavat taas pyörimisen. COBOL on tuskallista ylläpitää ja kehittää, alkaen siitä, että kääntäjät ovat edelleen pääasiassa kaupallisia. Sen tekstinkäsittelykyky on surkea. Se on myös äärimmäisen tehokas ja kykeneväinen käsittelemään massiivisia määriä tapahtumia, joka tekee siitä edelleen suositun esimerkiksi pankkimaailmassa.

Hello World (RM/1 kääntäjälle):
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID.     HELLOWORLD.
000300
000400*
000500 ENVIRONMENT DIVISION.
000600 CONFIGURATION SECTION.
000700 SOURCE-COMPUTER. RM-COBOL.
000800 OBJECT-COMPUTER. RM-COBOL.
000900
001000 DATA DIVISION.
001100 FILE SECTION.
001200
100000 PROCEDURE DIVISION.
100100
100200 MAIN-LOGIC SECTION.
100300 BEGIN.
100400     DISPLAY " " LINE 1 POSITION 1 ERASE EOS.
100500     DISPLAY "Hello world!" LINE 15 POSITION 10.
100600     STOP RUN.
100700 MAIN-LOGIC-EXIT.
100800     EXIT.

C
C kehitettiin vuosien 1969 ja 1973 välillä. Se suurilta osin korvasi Assemblyn sulautettujen järjestelmien koodauskielenä. Sulautettuja järjestelmiä ovat monet, joita ei helposti tule ajatelleeksi hallinnoitavan ohjelmistolla; autojen mottorin hallinta, jarrut, luistonesto, televisiot ja koodasipa entinen opettajani C:llä joskus työkseen sprinklerijärjestelmiäkin. Oma kokemukseni C:stä on, että se on paljon helpompi oppia kuin Assembly huolimatta sen laajemmasta komentovalikoimasta, mutta se voi johtua siitäkin, että olen sillä tavalla vain vähän outo.

Hello World:
#include <stdio.h>
int main(void)
{
  printf("Hello world!");
  return 0;
}

C++
C++ saapui kuvioihin 1983, käytännössä C:n laajennetuna versiona. C++ tarjosi C-kieleen luokkamallin ja tyypitykset, joka helpotti esimerkiksi tekstin käsittelyä. Se on C:tä korkeamman tason kieli, niin sanottu keskitason kieli , koska se yhdistää sekä korkean tason, että alhaisen tason ominaisuuksia. Käytännössä esimerkiksi C++:lla on mahdollisuus tehdä fyysisen muistin varauksia, mutta se ei ole välttämätöntä. Monet pelit koodataan edelleen C++:llä, kuin myös tietokoneeseen liitettävien laitteiden ajurit ja muut vastaavat.

Hello World (huomattavaa on, että edellinen C:n esimerkki toimii myös C++:na, kunhan .c-tiedostomuodon vaihtaa .cpp-tiedostomuodoksi) :
#include <iostream.h>
int main(void)
{
  cout << "Hello world!" << endl;
  return 0;
}

Java
Kuva: Hillary Hartley (http://www.flickr.com/photos/hillaryandanna/)
Jos COBOL on ohjelmointikielien torakka, on Java ohjelmointikielien aasi. Sen tultua kuvioihin 1995 se on pitkälti vallannut maailman. Tähän on kaksi syytä; ensinnäkin Java on alusta lähtien ollut täysin ilmainen niin kirjastojen kuin kääntäjänkin suhteen ja toisekseen se toi mukanaan JVM:n eli Java Virtual Machinen. Kaikki Javalla tehdyt ohjelmat pyörivät JVM:n päällä, poistaen niiltä tarpeen keskustella alla olevan käyttöjärjestelmän kanssa. Tämä tarkoittaa, että Javalla kerran tehty ohjelma ainakin teoreettisesti (ja yleensä myös käytännössä) pyörii missä tahansa käyttöjärjestelmässä, joka oli tuolloin lähes ennen kuulumatonta. Vuosien varrella tämä aasi on kuitenkin lihonut ja hidastunut ja keksinyt omia erikoisia ja rasittavia oikkujaan. Se on silti erittäin laajasti erilaisissa liiketoimintaohjelmistoissa käytössä ja näin ollen kokeneella Java-ohjelmoijalla riittää työn puolesta kysyntää riesaksi asti.

Hello world:

 class Hello {
   public static void main(String[] args) {
     System.out.println("Hello world!");
   }
 }

C#
Vuonna 2001 julkaistiin .Net alusta ja sen myötä C#-ohjelmointikieli. Sitä juhlittiin monissa piireissä Javan tappajana; kevyempänä, nopeampana, helpompana, puhtaampana olio-ohjelmointikielenä. Toisissa piireissä tätä Microsoftin kehittämää kieltä taas kutsuttiin kalpeaksi kopioksi Javasta. C#:lla graafisten käyttöliittymien tekeminen on suoraan sanottuna mukavaa, varsinkin verrattuna Javaan. Toisin kuin Java, C# mahdollistaa nykyään myös funktionaalisen ohjelmoinnin, joka on yksinkertaistettuna paluuta lähemmäs datan matemaattista käsittelytapaa. Ajan kuluessa myös C# on hidastunut, joskin se on myös kehittynyt Javaa nopeammin ja pidemmälle. Se on oppinut Javalta virtuaalikoneajattelua, joskin oman kokemukseni mukaan (josta on myönnettävästi jo jonkin verran aikaa) se ei suju aivan yhtä saumattomasti.

Hello world:

public class Hello1
{
   public static void Main()
   {
      System.Console.WriteLine("Hello, World!");
   }
}

Ruby
Ruby esiteltiin maailmalle 1995, mutta se pysyi pitkään pelkästään yliopistomaailmassa. Vasta Rails-kehikon saavuttua vuoden 2005 aikoihin räjähti Ruby todella laajan yleisön tietoisuuteen. Toisin kuin tässä aiemmin mainitut kielet, Ruby on dynaamisesti tyypitetty kieli, joka tarkoittaa, että kerran luotuun olioon voidaan laittaa millaista dataa tahansa ilman erillisiä toimenpiteitä. Tämä ei välttämättä kuulosta merkittävältä, mutta takaan, että jokainen Javan ClassCastExceptioneita päivitellyt sai tuikkeen silmiinsä kuultuaan tuon ensimmäisen kerran. Ruby on vahvimmillaan selainsovellusten kehityksessä. Esimerkiksi alkeellisen verkkokaupan pystyttäminen nollasta vie noin kymmenen minuuttia Ruby on Railsillä, kun taas esimerkiksi Javalla siihen saattaa mennä päiväkausia. Nopeasti nähtävien tulosten ja helpon ymmärrettävyyden takia Ruby on saavuttanut alaa ns Ensimmäisenä Ohjelmointikielenä ja esim Future Female on Suomessa järjestänyt kurssitusta kielen alkeisiin niin sanotusti pystymetsästä saapuville.


Hello world:

puts 'Hello world'


Scala
Scala, henkilökohtainen suosikkini (jota pääsen kuitenkin käyttämään työssäni aivan liian harvoin), saapui estradille 2003. Se on alusta alkaen suunniteltu hyödyntämään parhaita puolia sekä olio-ohjelmoinnista, että funktionaalisesta ohjelmoinnista. Sen pääasiallisena alustana toimii niin hyvässä kuin huonossakin JVM ja se toimiikin (lähes) saumattomasti aikaisempien Java-ohjelmien kanssa. Scalasta on tehty myös versio .Net alustalle ja se pyörii nätisti myös Android-puhelimissa. Kuten Ruby, myös Scala on laajasti ja jopa pääasiallisesti käytössä selainten hallitsemassa maailmassa. Monet suositut sivustot on toteutettu joko osittain tai kokonaan Scalalla, hyvinä esimerkkeinä vaikka Twitter, Foursquare ja Guardianin verkkosivusto. Scalalle saatavilla oleva Lift-kehikko tarjoaa samat nopeasti nähtävät tulokset, jotka Ruby saavuttaa, kun taas JVM tai (.Net, jos sattuu olemaan sinne päin kallellaan) tarjoaa jämäkkyyttä ja laajennettavuutta.

Hello world:

  object HelloWorld {
    def main(args: Array[String]) {
      println("Hello, world!")
    }
  }


Useita katkeria taisteluita on väännetty netin keskustelupalstoilla, pubeissa ja kaikkialla missä useampi kuin yksi ohjemoija kerääntyy siitä, mikä ohjelmointikieli onkaan kaikkein paras. Ja jos totta puhutaan, ainakin tämä ohjelmoija on onnistunut väittelemään aiheesta myös ihan yksinäänkin. Tärkein asia, joka ohjelmointikielistä kannattaa kuitenkin muistaa on, että ne ovat loppujen lopuksi työkaluja. Vaikka se olisikin mahdollista, Rubylla ei välttämättä kannata lähteä tekemään pankkien taustajärjestelmiä, eikä Cobolilla verkkokauppaa. Ohjelmointikielien kirjo on laaja ja tuskin kukaan pystyy oppimaan käyttämään kaikkia. Tämä setti on vain esimerkki minulle tutuimmista ohjelmointikielistä ja siitä puuttuu monia tärkeitä ja laajasti käytettyjä ohjelmointikieliä (Lisp, Haskell, APL, Smalltalk, PHP, F# ja monia muita), joista joku muu varmasti mielellään jatkaa juttua.

lauantai 14. tammikuuta 2012

Tätinörttiys on häiriö


Lupasin pohtia sitä, miten tätinörttiys istuu kulttuurisiin kuviin keski-ikäisestä naisesta. Tästä ei pidä kuitenkaan säikähtää. Tiedossa ei ole laadullisen tutkimuksen jargonia, merkitysrakenteita ja teemoja. Tämä setti vedetään toisenlaisessa tyylilajissa.


Photo courtesy of sethmeranda 
Alkajaisiksi on kai syytä kertoa, että olen tietoinen Nörttitytöt-blogissa käydystä termikeskustelusta ja tunnustan suosiolla, että käytän sanaa nörtti väärin ja teen sen aivan tahallani. Twitter-tilini englanninkielisessä esittelytekstissä kerron olevani geek lady, mutta geek-sanan suomennos nyt vaan on korni.


Nörttiyteni tai jos nyt sitten  ihan tarkkoja ollaan, giikkiyteni, perusta on osittain siinä, että olen patalaiska ja mukavuudenhaluinen. Siksi olen suunnattoman innostunut aina kun löydän sovelluksia tai keksin sovellusten käyttötapoja, jotka auttavat tekemään asioita vaivattomammin ja antavat täten lisäaikaa vielä mukavammille asioille. Olisiko tämä nyt jonkinlaista life hackingia (se joka keksii tuolle termille hyvän suomennoksen, saa erityismaininnan jossakin tulevaisuudessa tai rinnakkaistodellisuudessa ehkä-julkaistavissa muistelmissani). Toinen intohimoni on PowerPoint-halvauksen estäminen.

Tätinörtti on täysin itseironinen nimitys. Täti viittaa siihen, että kuuluun 40+ osastoon ja nörttiyden ironia on siinä, että saan usein kuulla olevani “nörtti” tai kuuluvani johonkin merkilliseen lahkoon “te tekniikkaihmiset”, vaikka en ole tippaakaan kiinnostunut tekniikasta. Muodolliselta koulutukseltanikin olen pesunkestävä humanisti ja kasvatustieteilijä. Tekniikka sinänsä on minusta suunnattoman unettavaa, se kiva juttuhan ovat sovellukset ja appsit. Tätinörtti-nimityksen  ironisuus taas on siinä, että tätihän ei voi olla nörtti eikä oikein edes giikkikään, koska hänen pitää olla valmis rientämään avuksi ja uhrautumaan aina kun lähipiirin hyvinvointi tai mukavuudenhalu sitä edellyttävät.

Kesällä löysin anoppilasta 2000-luvun alussa julkaistun Kotilieden, jossa haastatellut 40+ naiset valittivat muuttuneensa läpinäkyviksi. Lue: Miehet eivät vislaa perään. Naistenlehdet ovat merkittävä kulttuuristen mielikuvien tuottaja, olipa niiden maailmankuvasta ja sisältöjen syvällisyydestä mitä mieltä hyvänsä. Katsotaanpa mitä saadaan saaliiksi kun selataan tuoretta Sara-lehteä, joka on julistautunut 40+ -ryhmän äänenkannattajaksi: Hienoa! Tädin ei tarvitse pukeutua jakkupukuihin vaan hänen liikkumavaransa on paljon laajempi. Myöskään ruoanlaiton ei tarvitse olla prioriteetti numero yksi - helpotus! Miehetkin voivat vislata perään, jos ottaa kehitystehtäväkseen puumanaiseuden. Mutta melko tavanomaisissa asioissa pitäisi pysyä mahtuakseen Sara-lehden profiiliin. Samalla linjalla liikkuu Gloria-lehti. Välillä nostetaan roolimallliksi joku tieteen alalla kunnostautunut tutkijanainen, mutta muuten pyöritään avainsanoissa vaatekaappi, kosmetologi, kampaaja, lifting, kauneusleikkaus, botox, ruokamuoti, luksusturismi, valtavirtakulttuuri, selluliitti, pms ja vaihdevuodet.  


No eihän vaatteissa, kengissä tai pms-oireiden hoitamisessa ole mitään pahaa, mutta arvelen kuitenkin, että suurin osa lehden lukijoista tekee itsensä tälläämisen ohella tietotyötä. Täten he myös käyttävät tietotekniikkaa sekä työssään että vapaa-ajallaan. Laitteet näkyvät lehdissä lähinnä asusteina. Joskus olen havainnut laimean yrityksen kirjoittaa sosiaalisesta mediasta. Eikö naaman liftingin ohella tietotyötaitojen kohentamiseenkin voisi edes kehottaa, vaikka aiheen tunnetuksi tekeminen ei julkaisun päätehtävä olisikaan? Lehdissä kyllä sivutaan työuraan liittyviä asioita, joten kyse ei voi olla siitäkään, että haluttaisiin jättää lehti joksikin työn ulkopuoliseksi saarekkeeksi. Jos suoraan sanon, niin naistenlehtien maailmankuvat ovat pahasti ajastaan jäljessä.

Photo courtesy of brutapesquisa

Naistenlehtiä laajemmassa todellisuudessa stereotypiat tytöistä ja naisista tietotekniikan käyttäjinä ovat toki muuttuneet niistä ajoista kun aloitin IT-tukitehtävissä 90-luvulla. Mm. kotikaupungin tietokonekauppiaat tietävät jo, että kaupan syntyminen on todennäköisempää, mikäli ei ryhdy puhumaan pääni yli ostosreissulle mukaan sattuneelle aviomiehelle. Myös asiakkaat tuntuvat pitävän ihan luonnolliseen maailmanjärjestykseen kuuluvana sitä, että kouluttaja on aikuisen iässä oleva naisihminen.

Ihmisten on kai helpompi käsitellä yksittäistapauksia, mutta yleinen keskustelu tietotekniikasta, iästä ja osaamisesta junnaa merkillisen yksipuolisena. Se huolestuttaa sisäistä kasvatustieteilijääni, koska luutuneet asenteet tulevat mm. olemaan yksi este eläkeiän päästä toteutuvalle työurien pidentämiselle.  Ikätutkijat sanovat, että ikään liittyvät käsitykset muuttuvat vanhanaikaisiksi heti muodostuttuaan koska jokainen uusi sukupolvi luo niitä uudestaan itse elämällä. Käsitysten aataminaikuisuutta ei ehkä huomaa muu kuin se jota ne koskevat, koska muille yksinkertainen luokittelu on helpoin tie. Onko tietäväisempää kuin Y-sukupolveen kuuluva julkkis, joka on päästetty kolumnistiksi tuomaan avarakatseisuutensa hedelmiä muidenkin luettavaksi. Asiantuntevasti hän kehottaa “ikääntyviä apps-kammoisia työntekijöitä” hakeutumaan nuorempien diginatiivien oppiin. Justiinsa. Tunnen monta parikymppistä, joilta oppisin mahdottomasti uutta ja aivan yhtä monta, joille leikepöydän Liitä määräten -toiminto on extreme-laji. Toisaalta esimerkiksi Taloussanomien ja Kauppalehden ikäkirjoittelun kunniaksi on sanottava, että sukupuoleen liittyvä ahdasmielisyys ei sanottavasti häiritse, vaikka keski-ikäiset akat kuulemma kovasti kiukuttelevatkin työpaikolla.

Jos nyt ammattiympyröissä useimmat kestävät sen, että täti innostuu appseista ja softasta enemmän kuin kakkuresepteistä ja liftingvoiteista niin suurin osa sukulaisista ja ns. maallikkotuttavista ovat ymmällään. Ne, joille netti on vierasta ja pelottavaa, näkevät minut saatanasta seuraavana. Ei ole harvinaista, että hihaani liimaudutaan jupisemaan netin kamaluudesta. Onko niin, että kun moraalin peruskallioksi mielletty täti-ihminen puhuu kukkahattunsa lierin varjosta vaarallisen netin ja hömppäyhteisöpalveluiden puolesta, se on liian ahistavaa. Y-sukupolven nettimyönteisyys on helpompi ohittaa vähätellen “nuorten juttuna”. Ehkä tätinörtti asettaa myös paineita antamalla vaivalloisen mallin, sillä onhan yleisille ikään liittyville käsityksille antautuminen helppoa. Annetaan vain periksi sohvan seireenikutsulle kun lehdessäkin sanotaan, että aivot alkavat muuttua muusiksi jo 45-vuotiaana. Eihän kaikkien tarvitse mitenkään erityisesti hurahtaa, mutta ei pidä kitistä ikäsyrjinnästä jos Microsoft Word 2.0 oli viimeisin uusi asia, jonka suostui opettelemaan.

Me tädit kuitenkin jaksamme heilua ja nörttäilläkin. Tämä tätsä poistuu nyt tuolin ja näppäimistön välistä pelaamaan pari kierrosta äkälintuja - parasta päännollausta, koska siitä ei tule krapulaa eikä silmäpusseja.