Ohjelmistokieliin tutustuminen

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 tiedostonimikomennolla. 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

-C++ http://www.ubuntugeek.com/how-to-install-c-and-c-compilers-in-ubuntu-and-testing-your-first-c-and-c-program.html

-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

Leave a comment