Ohjelmistokieliin tutustuminen
Tehtävänä oli tutustua kolmeen eri ohjelmistokieleen ja saada niiden avulla tulostettua “Hello World”. Tehtävän suorittamiseen käytin aikaisemmista artikkeleista tuttua ASUS-kannettavaa ja ajankohta oli 18.9.12 klo 19:00-23:00. Valitsin tehtävään Java, C++ ja Ruby-ohjelmistokielet.
Javan kokeilu
Aloitin tutustumisen päivittämällä pakettivarastot, ja sen jälkeen asensin Javan Development Kit:n.
$ sudo apt-get update $ sudo apt-get install openjdk-6-jd
Seuraavaksi selkeyden vuoksi tein oman kansion mihin tallensin esimerkki ohjelman.
$ mkdir java #kansion teko $ cd java #tehtyyn java-kansioon siirtyminen $ nano HelloWorld.java #HelloWorld.java -tiedosto on siis java-kansiossa.
HelloWorld.java -tiedostoon tallensin seuraavanlaisen koodin. Javassa isoilla ja pienillä kirjaimilla on väliä,ja tiedostossa mainittu class -arvo tulee olla sama kuin tiedoston nimen.
class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } #tallennus ctrl+x ,ja tallennuksen hyväksyminen y-näppäin, jonka lisäksi hyväksyin vielä tiedostonimen enter-näppäimellä.
Tallennuksen jälkeen javac-komennolla käänsin tiedoston javaksi,jotta seuraava java-komento osaa kääntää tiedoston oikein.
antti-ville@baana:~/code/java$ javac HelloWorld.java antti-ville@baana:~/code/java$ java HelloWorld Hello World!
C++ tutustuminen
C++ tutustumisen aloitin etsimällä suoraa ohjetta kielen käyttämiseen. Löysin ohjeen missä C++-kieltä käytettiin ubuntussa, joten ohjeet yksinkertaisen ohjelman tekemiseen löytyi helposti.
Asensin g++-ohjelman kääntämään ohjelman. Asennuksen jälkeen tein kansion cplusplus, ja kansioon tiedoston HelloWorld.cpp
$ sudo apt-get install g++ $ mkdir cplusplus $ cd cplusplus $ nano HelloWorld.cpp
Tiedoston sisällöksi kirjoitin:
#include <iostream> int main() { std::cout << "Hello, World!\n"; } #tallennus ctrl+x ,hyväksyin tallennuksen painamalla y-kirjainta ja #enter-näppäimellä hyväksyin tiedoston nimen.
Seuraavaksi kokeilin ohjelman toimimista kääntämällä tiedoston HelloWorld.cpp ohjelmaksi HelloWorld.
$ g++ HelloWorld.cpp -o HelloWorld #g++ on kääntäjä "compiler",sen #jälkeen tiedoston nimi missä #ohjelma on. #-o -tarkoittaa output,jonka jälkeen #tulee komento millä ohjelma #tulostetaan käyttäjän näkyville, #tässä tapauksessa HelloWorld. $ ./HelloWorld #./ -tarkoittaa kansiota missä on (pwd-komennolla #selviää olinpaikka), ja HelloWorld on kääntämiskomento.
Ruby
Rubya asentaessa tuli vastaan mielenkiintoinen ongelma. Nimittäin ruby-nimisiä paketteja löytyi jopa 277. Tutkailun jälkeen löysin ruby1.9.1.-full-paketin, jonka asensin.
$ sudo apt-get install ruby1.9.1-full
Kokeilin Rubya aluksi interaktiivisessa tulkissa.
$ irb irb(main):001:0> "Hello World" => "Hello World" irb(main):002:0> quit
Seuraavaksi tein tiedoston HelloWorld.rb.
$ nano HelloWorld.rb puts "Hello world!" # tallennus ctrl+x, y -näppäimellä hyväksytään tallentaminen ja enter -näppäimellä hyväksytään tallennuksen nimi.
Tiedoston tekemisen jälkeen kokeilin ohjelman toimimista ajamalla ohjelman. Ohjelma tulosti onnistuneesti Hello World.
$ ruby HelloWorld.rb Hello world!
Pythonin ja Bash:n yhdistäminen
Tarkoituksenani oli tehdä ohjelma, joka kertoo käyttäjälle muutaman hyödyllisen tiedon. Halusin, että ohjelma kertoo käyttäjänimen,tiedostopolun missä on, ip-osoitteen ja tietokoneen käyttäjät. Eli komentojen whoami, pwd, ifconfig, w.
Tein aluksi python-kansion mihin tein tiedoston nimeltään myinfo.py.
$ mkdir python $ cd python $ nano myinfo.py
Tiedostoon kirjoitin seuraavanlaisen ohjelman:
#!/usr/bin/python #!/bin/bash # -*- coding: utf-8 -*- import subprocess print("_________________________________") # alaviivoja selkeyttämään print("Your username is:") # tulosteen lukemista. subprocess.call("whoami", shell=True) print("_________________________________") print("You are at:") subprocess.call("pwd", shell=True) print("_________________________________") print("Your ip-address is:") subprocess.call("ifconfig| grep 'inet addr:' | cut -d: -f2 ", shell=True) print("_________________________________") print("These user(s) are using your computer:") subprocess.call("w", shell=True) # Tallensin tiedoston samaan tapaan kuin aikaisemminkin
Seuraavaksi kokeilin ajaa ohjelman ja sain tulosteeksi:
$ python myinfo.py _________________________________ Your username is: antti-ville _________________________________ You are at: /home/antti-ville/codes _________________________________ Your ip-address is: 127.0.0.0 Mask (tässä oli ip-osoitteeni) Bcast _________________________________ These user(s) are using your computer: 22:06:41 up 1 day, 14:43, 1 user, load average: 0.23, 0.35, 0.44 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT antti-vi tty7 Mon08 38:42m 45:19 0.01s /bin/sh /etc/xd
Eli ohjelma toimi,hienoa! Seuraavaksi yritin saada toimimaan komennon missä vain päätteessä. Tai siis ettei aina tarvitse olla ~/codes/ -kansiossa, kun haluaa ajaa ohjelman.
Oman ohjelman käynnistäminen päätteessä
Tarkoituksena siis käynnistää python kielellä kirjoitettu myinfo.py ohjelma. Jos nyt kokeilee käynnistää ohjelmaa päätteessä tulee virheilmoitus.
bash: ./myinfo.py: Permission denied
Virheilmoituksen mukaan käyttöoikeudet eivät ole oikein, joten muokkasin niitä seuraavaksi.
Käyttöoikeuksien tarkistus tapahtuu ls -l tiedostonimi –komennolla. Ja tiedostolle annetaan ajo-oikeudet chmod ugo+x-komennolla.
$ ls -l myinfo.sh -rw-rw-r-- 1 antti-ville antti-ville 551 Sep 18 22:11 myinfo.py $ chmod ugo+x myinfo.sh -rwxrwxr-x 1 antti-ville antti-ville 551 Sep 18 22:11 myinfo.py
Jotta ohjelman käynnistäminen onnistuu kaikkialta päätteessä, täytyy ohjelma kopioida yhteisiin asetuksiin.
$ sudo cp myinfo.py /usr/local/bin
Tämän jälkeen käynnistäminen onnistuu mistä vain päätteessä. Ennen muutoksia piti olla samassa kansiossa kuin tiedosto,mutta nyt ohjelman voi ajaa heti kun pääte aukeaa:
$ myinfo.py _________________________________ Your username is: antti-ville _________________________________ You are at: /home/antti-ville _________________________________ Your ip-address is: 127.0.0.1 Mask (ip-osoite) Bcast _________________________________ These user(s) are using your computer: 22:49:39 up 1 day, 15:26, 1 user, load average: 0.83, 0.44, 0.41 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT antti-vi tty7 Mon08 39:25m 47:23 0.01s /bin/sh /etc/xd
Lähteet
-Tero Karvinen, Työasemat ja tietoverkot -kurssi – http://terokarvinen.com/2012/aikataulu-%E2%80%93-tyoasemat-ja-tietoverkot-ict1tn002-33-syksylla-2012
-Java http://en.wikipedia.org/wiki/Java_%28programming_language%29
-Ruby – A Programmer’s best friend – http://www.ruby-lang.org/en/documentation/quickstart/
– Antti-Ville Jokela
Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html