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