Miksi Python?
”Yhden kielen leimaaminen ”oikeaksi” tai ”vääräksi” aloituskieleksi on virheellistä eikä sitä tulisi harjoittaa.
Sen sijaan usean erilaisen ohjelmointikielen käyttäminen pitkällä aikavälillä on järkevämpää,
jolloin aloituskieleksi tulisi valita se, joka on helpoin oppia.
Näiden havaintojen perusteella voidaankin väittää,
että Pythonilla on taipumus tuottaa parempia tuloksia kuin C-kielen
kun sitä käytetään ensimmäisen ohjelmointikurssin opetuskielenä.”
Siirtyminen C-kielestä Pythoniin ohjelmoinnin perusopetuksessa.
Jussi Kasurinen, Lappeenrannan teknillinen yliopisto, 2007
Ei ole yhtä ainoaa oikeaa kieltä, ei aloituskieleksi, eikä varsinkaan työkieleksi.
Kieli valitaan tehtävän mukaan.
Tosi ammattilaisen tulee osata koodata useaa kieltä.
Ensimmäiseksi kieleksi valitaan se joka on helpoin oppia.
Mikroprosessori, CPU, ymmärtää vain konekoodia, siis ykkösiä ja nollia.
Konekielen oppiminen ja varsinkin työskentely sillä on tosi työlästä.
Siksi koodit kirjoitetaan ihmisläheisillä kielillä ja käännetään/tulkataan CPU:n ymmärtämään muotoon.
Ei tarvitse olla neropatti oppiakseen ohjelmoinnin perusteet.
Riittää kun osaa lukea, kirjoittaa ja ennenkaikkea, ajatella.
Kun käsitteet muuttuja, haarautuminen (valinta), silmukat (toisto) ja funktiot (aliohjelmat)
ovat hallussa, niin niillä tekee koodia monenlaiseen käyttöön.
Ohjelmointiin käytetään yhä enemmän komentosarja- eli skriptikieliä.
Skriptikieliä ei käännetä ennalta,
vaan ne tulkataan ohjelmaa ajettaessa rivi kerrallaan prosessorin ymmärtämään muotoon.
Python on tällainen tulkattava skriptikieli.
Oikeastaan nykyinen Python on täysverinen ohjelmointikieli, tosin sen taustana on skriptikieli.
Pythonia pidetään helppona oppia, koska kielen syntaksi, ”kielioppi”,
on yksinkertainen ja johdonmukainen ja se sisältää vähän opeteltavia yksityiskohtia.
Siksi siitä on tullut ohjelmoinnin opiskelun ensimmäinen työkalu.
Ja tehokkaana kielenä se sopii myös ammattilaisten käyttöön.
Tässä on oma merkityksensä Pythonin monipuolisilla kirjastoilla (valmista koodia heti käyttöön).
Jos osaat jo jonkun muun kielen,
niin Pythonin ohjelmarakenteet osoittautuvat tutuiksi monista muista ohjelmointikielistä.
Toisaalta samasta syystä uusien kielien oppiminen Pythonin jälkeen on helpompaa.
Alussa on hyvä oppia ”ohjelmoinnin ajattelumalli” ja kokeilla kaikenlaista.
Siten saadaan koodauksen työskentely-ympäristö eli työkalut ja ohjelmoinnin perusteet haltuun.
Oma kokemukseni:
laiteläheinen ohjelmointi motivoi opiskelijaa erityisesti (”näkee heti kuinka LED vilkkuu
tai sähkömoottori lähtee pyörimään”).
Vähäiselläkin osaamisella pääsee tekemään jotain näyttävää,
se lisää motivaatiota ja sehän taas on kaiken oppimisen perusedellytys.
Tehdään opiskelu kuitenkin oikeassa järjestyksessä:
aloitetaan ohjelmointiin perehtyminen korkean abstraktiotason ohjelmointikielen opiskelulla ja
vasta kun käsitteet ja perustaito on hallussa, opetellaan laitteistotason ohjelmointia.
Sama Python-koodi, ellei se ole laiteläheistä,
toimii aivan samoin sekä pöytäkoneen x86-, että RasPin ARM-ympäristössä.
Siksi kielen alkuopinnot, ensimmäiset koodit, voi ajaa kummassa ympäristössä tahansa.
Guido van Rossum
Python-ohjelmointikielen historiaa
Guido van Rossum aloitti kielen kehitystyön, harrastuksena, jouluna 1989.
Tarkoituksena oli sijoittaa Python shell-skriptikielen ja C-kielen väliin.
Myöhemmin kehitystyöhön perustettiin Python Software Foundation,
joka julkaisi kielelle virallisen tulkin 2001.
Silloin syntyi alkuperäisestä Python kielestä jalostettu Python 2.0 ja
joulukuussa 2008 julkaistiin Python 3.0.
Python on siten yhtä vanha kuin GNU/Linux, sen kehittely alkoi samoihin aikoihin (1991).
Python-kielen ominaisuuksia
- sama koodi toimii eri prosessoriympäristöissä ja eri käyttöjärjestelmissä
- perusasennuksen mukana tulee laaja standardikirjasto jossa on moduuleita vaikka mihin
- lisäkirjastojen avulla Python soveltuu laiteläheiseen koodaukseen
- ei tarvita erillistä käännösprosessia vaan kieli tulkataan ohjelman ajon aikana
- helppo oppia sen yksinkertaisen syntaksin ja korkean tason tietorakenteiden takia
- Python-koodi on selkeää ja helposti luettavaa. Ei riitä että tietokone osaa lukea koodiasi,
myös Sinun ja muiden koodarien on sitä osattava lukea.
- muuttujia ei tarvitse esitellä taikka alustaa tietotyypillä ennen niiden käyttöönottoa
- koodiosioiden, lohkojen erottelussa ei käytetä aaltosulkuja, vaan sisennystasoja.
Täten ohjelmoija ”pakotetaan” kirjoittamaan koodia siten, että siitä tulee selkeää ja
siten myös helposti tulkittavaa, ymmärrettävää
- se on vapaa ohjelmisto, ilmainen
- laajan nettiyhteisö antaa tarvittaessa apuja
- se ei ole niin nopea kuin C-kieli, mutta Pythoniin on liitettävissä C-kielisiä osioita
Python ja IDE
Työskentely tulee mielekkääksi ja helpommaksi kun käytetään ammattilaisten editoria,
IDE, Integrated Development Environment ja
samalla työkalulla hoidetaan debuggaus eli ohjelmointivirheiden etsintä ja korjaus.
Näitähän löytyy: NetBeans, Eclipse, Geany, jne.
Mutta me aloitamme koodauksen Raspbianin Thonny-editorilla.
Se on tehty erikoisesti Pythonin opiskeluun, helppo ottaa käyttöön ja kuitenkin riittävän monipuolinen.
Python ja kirjastot
Pythonin Standard Kirjasto sisältää yli 200 moduulia.
Se tarkoittaa valmista koodia eri tarkoituksiin, jotka helpottavat koodin kirjoittajan työtä.
Ohjelmoijan ei tarvitse muistaa moduulien sisältöä ulkoa, vaan riittää kun tietää,
mistä voi etsiä tietoa niistä. https://docs.python.org/3/library/index.html
Kirjastoja löytyy mm. pelien kehittämiseen kuten pyGame, math matematiikan laskutoimituksiin,
random satunnaislukujen käsittelyyn, Tkinter graafiset käyttöliittymät, time kellonaika ja kalenteri,
Bluetooth- ja input-kirjastoja, ja vaikka mitä.
Google on ystäväsi.
Laiteläheinen Python
Kirjastojen avulla saadaan Python-koodaukseen laiteläheisyys joten päästään operoimaan myös bittitasolla.
Laiteläheisyys, nykyisin käsite on teollinen internet, IoT, Internet of Things,
tarkoittaa sulautettujen järjestelmien yhdistämistä internettiin ja niistä saatavan tiedon hyödyntämistä.
Sulautetussa järjestelmässä tietokone ja sen ohjelmistot ovat ”upotettu” jonkin laitteen sisään antamaan lisäominaisuuksia.
Sulautettu järjestelmä on reaktiivinen, ts. se odottelee jotain tapahtuvan.
Kun tapahtuma on havaittu, esim. lämpötila on tietyllä tasolla, astiat pesty, ikkuna/ovi on auki/kiinni tms., ryhdytään töihin.
Tällaiseen ohjaukseen ja valvontaan tietokone ohjelmineen soveltuu mainiosti.
Kun Pythonilla on opittu ohjelmoinnin perusteet, kivijalka, siirrytään laiteläheiseen koodaukseen.
Siihenkin se yhdessä RasPin kanssa taipuu.
Laitteistolähtöisessä koodauksessa opiskelu aloitetaan laitteistojen alimmalta rautatasolta,
siis mikrokytkimistä, LED-lampuista, erilaisista antureista, jne.
Tästä lähdetään etenemään kohti www-ohjausta ja tietokantoja.
Python ja netti
Pythonia käytetään paljon nettisovellusten ohjelmoinnissa.
Siihenkin löytyy laajat kirjastot, joilla tuetaan yleisimpiä verkkoprotokollia, kuten XML-, XHTML- ja HTML-datan käsittelyä.
Flask-ohjelmisto soveltuu erinomaisesti Raspberryn I/O-pinnien hallintaan lähiverkon kautta.
Flaskin avulla Python-koodi integroidaan nettiin.
Perus-Flask ei sisällä mitään ylimääräistä vaan se on käyttäjän tarpeista riippuen laajennettavissa.
Eräs tutustumisen arvoinen juttu on Raspberry Pi Foundationin suosittelema Adafruitin Web IDE.
Python ja oliot
Kokemuksen mukaan olio-ohjelmointi ensimmäisenä opittavana asiana on turhan vaikeaa.
Vaikka eräät koulukunnat sen puolesta kiivailevatkin.
Heti alussa olisi opittava käsitys luokista, näkyvyydestä, periytyvyydestä, jne.
Aloittelijalle nuo tuottavat turhaa tuskaa.
Opetellaan oliot vasta kun ohjelmoinnin perusteet ovat hanskassa.
RasPi ja Python
Python on Raspberry Pin virallinen ohjelmointikieli.
Se takaa paljon hyödynnettävää materiaalia ja suuren yhteisön tuen.
Python on IDE-työkaluineen esiasennettuna RasPiin, joten se on heti käyttövalmis.
Aluksi opetellaan ohjelmoinnin idea, terminologia ja peruskäsitteet ja samalla opitaan tekemään koodia.
Pienimuotoista jotta oppiminen on mukavaa ja kuitenkin tehokasta.
Sitten liitämme RasPin GPIO-liitäntään erilaisia antureita ja toimilaitteita ja
opiskellaan laiteläheistä ohjelmointia (home automation).
Laite-internetiä varten asennamme RasPiin NGINX-web-serverin ja
perehdytään web-sivujen tekoon ja laiteohjauksiin netin kautta.
Ja sitten ollaankin jo guruja.
Tulevaisuus
Tulevaisuus on jo matkalla kohti teollista ja langatonta internettiä ja
kännykästä/tabletista on tullut tuon langattoman netin älykäs yhteystietokone.
Jossa kaikissa on käyttöjärjestelmänä Linux-Android.
Applen iOS on myös Unix/Linux pohjimmiltaan.
Ylläoleva suomennettuna:
opiskelemalla ohjelmoimaan teollista internettiä, sen sulautettuja järjestelmiä, ARM-ohjaimilla ja
Open Source-työkaluilla Linux-ympäristössä,
hankkii samalla valmiudet mielenkiintoiseen ja rahakkaaseen ammattilaisuuteen.