Johdanto Meta Kielten jaotteluja Historia. Aloitusluento. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho

Samankaltaiset tiedostot
TIEA255 Tietotekniikan teemaseminaari ohjelmointikielet ja kehitysalustat. Antti-Juhani Kaijanaho. 16. helmikuuta 2011

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Imperatiivisten ohjelmien organisointiparadigmojen. historia

Imperatiivisten ohjelmien organisointiparadigmojen historia

Ohjelmointikielten periaatteiden taustaa

815338A Ohjelmointikielten periaatteet

1. Olio-ohjelmointi 1.1

Ohjelmoinnista. Ohjelmien toteutukseen tarjolla erilaisia välineitä:

815338A Ohjelmointikielten periaatteet

Tällä kurssilla tarkastellaan ohjelmointikieliä. Lienee tarpeen yrittää rajata, mitä

T harjoitustehtävät, syksy 2011

Johdatus ohjelmointiin

Ohjelmoinnin perusteet Y Python

Koodi. Antti-Juhani Kaijanaho. 11. marraskuuta Sisältö

Ohjelmointikielten kehityshistoriaa

Maarit Harsu. O h j e l m o i n t i k i e l e t Periaatteet, käsitteet, valintaperusteet

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

Johdantoa ohjelmointikielten periaatteisiin

Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet

T harjoitustyö, kevät 2012

Kurssin sisältö. Kurssilla vähemmän. Johdatus ohjelmistotekniikkaan. Mitä on ohjelmistotekniikka? Miten ohjelmistoja suunnitellaan ja toteutetaan?

Ohjelmointikielten periaatteet. Antti-Juhani Kaijanaho

Tähtitieteen käytännön menetelmiä Kevät 2009

Ohjelmointikielen määritteleminen (tai edes tyhjentävä luonnehtiminen) on todella vaikeaa. Voisi yrittää vaikka näin:

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmointikielten periaatteet. Antti-Juhani Kaijanaho

Ohjelmoinnin peruskurssien laaja oppimäärä

11/20: Konepelti auki

Tietotekniikan valintakoe

OHJELMOINTIKIELTEN PERIAATTEET ANTTI-JUHANI KAIJANAHO

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen

.NET ajoympäristö. Juha Järvensivu 2007

Tietokoneverkot. T Tietokoneverkot (4 op) viimeistä kertaa CSE-C2400 Tietokoneverkot (5 op) ensimmäistä kertaa

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

Johdanto. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 8. maaliskuuta 2012

Ohjelmoinnin peruskurssi Y1

TIE542 Ohjelmointikielten periaatteet, syksy Antti-Juhani Kaijanaho. 6. syyskuuta 2010

Ohjelmointi 1 / syksy /20: IDE

4. Lausekielinen ohjelmointi 4.1

Ohjelmointikielten periaatteet Syksy Antti-Juhani Kaijanaho

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus


Ohjelmoinnin perusteet Y Python

Ruby. Tampere University of Technology Department of Pervasive Computing TIE Principles of Programming Languages

T Ohjelmistojen määrittely- ja suunnittelumenetelmät

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012

Johdanto. 1. Mikä on ohjelmointikieli?

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. lokakuuta 2016

Ohjelmoinnin peruskurssien laaja oppimäärä

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015

KEVÄTLUKUKAUSI 2011 Lukujärjestys

Funktionaalisten kielten oppimisesta ja valinnasta

KOODI OPINTOJAKSO NIMI OPETTAJA OPETUSMUO- OPETUKSEN VIIKON- KELLON- SALI PÄIVÄMÄÄRÄT & HUOMAU- TO & KOKEET MÄÄRÄ (h) PÄIVÄ AIKA TUKSET

Prolog kielenä Periaatteet Yhteenveto. Prolog. Toni ja Laura Fadjukoff. 9. joulukuuta 2010

Ohjelmointikielten periaatteet Syksy Antti-Juhani Kaijanaho

Ohjelmoinnin peruskurssi Y1

Alityypitys. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos

T Ohjelmistotekniikan seminaari

ASM-kaavio: reset. b c d e f g. 00 abcdef. naytto1. clk. 01 bc. reset. 10 a2. abdeg. 11 a3. abcdg

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

Käännös, linkitys ja lataus

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

Ohjelmoinnin peruskurssien laaja oppimäärä


Oliot ja tyypit. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos

Ohjelmointikielten periaatteet Syksy Antti-Juhani Kaijanaho

TIE Principles of Programming Languages. Seminaariesityksen essee. Ryhmä 18: Heidi Vulli, Joni Heikkilä

Varhaiset oliokielet Modula, CLU ja Smalltalk. T : Seminar on the History of Programming Languages Kari Koskinen Otaniemi 29.9.

.NET ja C# Virtuaalikone. Common Language Infrastructure (CLI) Periaate. Etuja. Haittoja. Mikä on CLI. CLI standardin merkitys (CLS, Ecma)

TIES542 kevät 2009 Tyyppijärjestelmän laajennoksia

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Edward Sapir ja Benjamin Whorf esittivät viime vuosisadan alkupuolella kielitieteellisen

17/20: Keittokirja IV

Kotimaisten kielten ja kirjallisuuksien kandiohjelma (180 op) Suomen kielen ja kulttuurin opintosuunta lukuvuosi

213a. MS-A0503 Todennäköisyyslaskenna n ja tilastotieteen per; M (vkot 3-7)

812341A Olio-ohjelmointi, I Johdanto

Laskennan teoria

Geneeriset tyypit. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos

8/20: Luokat, oliot ja APIt

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Ohjelmistojen varhaisesta kehityksestä Tommi Kärkkäinen (Ceruzzi ss )

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

Imperatiivisten ohjelmien organisointiparadigmojen historia

19/20: Ikkuna olio-ohjelmoinnin maailmaan

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin

samalla seuraavaan puoliavaruuteen (sukupolveen), jota siivotaan harvemmin.

Ohjelmoinnin peruskurssi Y1 Huom: Istukaa joka paikalle sali tulee täyteen!

Ohjelmointi Linuxissa. Sisällysluettelo. 1. Mitä tarvitaan sovellusten tuottamiseen? Tehnyt: Antti Martikainen ( )

Samanaikaisuuden hallinta

Ohjelmoinnin peruskurssien laaja oppimäärä

Algoritmit 1. Luento 2 Ke Timo Männikkö

Ryhmäharjoitus III: Mitä on koodaaminen? A. TIEY4 Tietotekniikkataidot, kevät 2017 Tehdään ryhmäharjoitustunnilla 20.3.

Luento 4 Aliohjelmien toteutus

Transkriptio:

Aloitusluento TIES542 Ohjelmointikielten periaatteet, kevät 2007 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 8. tammikuuta 2007

Luennoija Antti-Juhani Kaijanaho <antti-juhani.kaijanaho@jyu.fi> IRC: ibid AgC416.1 vastaanotto ke 12-14 (ei ajanvarausta) ohjelmistotekniikan assistentti tutkimusaiheena ohjelmointikielet (Jyväskylän käräjäoikeuden lautamies)

Sisältö Johdanto Meta Kielten jaotteluja Historia

Kurssi syventävä valinnainen ohjelmistotekniikka 5 opintopistettä (133 h) 3 opintoviikkoa (120 h) luentoja, demoja, seminaari tentti tai oppimispäiväkirja WWW: http://www.mit.jyu.fi/antkaij/opetus/okp/2007/ IRC: #ties542 (IRCnet), kanava-avain okp2007

Luennot 20 luentoa (40 h) maanantaisin kello 12 14 tiistaisin kello 10 12 AgC234.1 läsnäolo ei pakollista mutta suositeltavaa poikkeuksia luentoaikoihin tarvittaessa luennoija istuu käräjiä ainakin ma 22.1.

Demot Ville Tirronen <aleator@jyu.fi> pitää alkaa ensi viikon tiistaina (16.1.) tiistaisin kello 12 14 AgC234.1 demotehtävät julkistetaan viimeistään edellisenä keskiviikkona tekeminen erittäin suotavaa demohyvitys: 50 % +1, 80 % +2

Seminaari maanantaina 23.4. kello 10 16 Ag Beeta läsnäolo pakollista (force majeure -poikkeuksin) seminaarityö n. 10 sivua 2 hengen ryhmissä seminaariesitelmä n. 30 minuuttia aiheista myöhemmin

Oppimispäiväkirja korvaa tentin, suositeltava http://www.mit.jyu.fi/antkaij/opetus/okp/2007/opk

Tentti vaihtoehto oppimispäiväkirjalle muistitentti, materiaalia ei saa ottaa tenttiin 4 5 tehtävää (kukin 6 pistettä) lineaarinen arvosteluasteikko, minimi 50 % maksimista ilmoittautuminen pakollista lopputentti 27.4. uusinta 27.6. kolmas tenttimahdollisuus syyskuussa

Arviontikriteerit 1 heikko (hylätty) Opitussa on merkittäviä puutteita tai opiskelija kykenee pelkästään kurssilla esitettyjen määritelmien, esimerkkien yms. toistamiseen. välttävä (1) Opiskelija kykenee ilmaisemaan keskeiset kurssilla esitetyt asiat omin sanoin. tyydyttävä (2) Opiskelija kykenee ilmaisemaan keskeiset kurssilla esitetyt asiat omin sanoin sekä antamaan niistä esimerkkejä.

Arviontikriteerit 2 hyvä (3) Opiskelija kykenee soveltamaan useimpia kurssilla esitettyjä asioita opiskelijalle tutuissa mutta kurssilla käsittelemättä jääneissä tilanteissa. kiitettävä (4) Opiskelija kykenee käsittelemään useimpia kurssin asioita analyyttisesti eli luokittelemalla niitä ja purkamalla niitä osiin. Lisäksi tämä analyysi on perusteltua ja onnistunutta. erinomainen (5) Opiskelija kykenee käsittelemään useimpia kurssin asioita niiden toimivuutta, käyttökelpoisuutta perusteellisesti arvioiden ja arviotaan perustellen. erinomainen (5) Opiskelija kykenee rakentamaan kurssin sisältöjen tuella onnistuneesti omaa teoriaansa, ohjelmointikieltään tms.

Näkökulmia syntaksi staattinen semantiikka dynaaminen semantiikka kuvaus konekielelle

Kysymyksiä kurssin järjestelyistä?

I sukupolvi konekielet ohjelma on oktettijono helppo koneelle vaikea ihmiselle koostuu käskyistä konekielistä lisää tiistaina

II sukupolvi symboliset konekielet, assembly (assembler) yksinkertainen rivipohjainen esitysmuoto yksi rivi vastaa yhtä konekielen käskyä lisää tiistaina

III sukupolvi yleiskäyttöiset ohjelmointikielet käytännössä kaikki nykykielet lisää jatkossa...

IV sukupolvi markkinointitermi ei yleisessä käytössä olevaa sisältöä erikoiskielet (SQL) sovelluskehittimet (Delphi) ohjelmoitavat sovellukset (Excel)

V sukupolvi myös markkinointitermi usein päättelypohjaiset tekoälykielet

Käskyohjelmointi imperatiivinen ohjelmointi von Neumann -koneen abstraktio tyypillistä tiedon muuttaminen paikallaan (in place) kontrollivuon ohjaus keskeistä koodi yli tiedon

Kuvausohjelmointi deklaratiivinen ohjelmointi kuvataan ongelma täsmällisesti tietokone (kääntäjä, tulkki) hoitaa loput ei eksplisiittistä kontrollivuon ohjausta tyypillistä tiedon kopiointi tieto yli koodin

Toiminto-ohjelmointi proseduraalinen ohjelmointi aliohjelma perusabstraktiona yleensä käskyohjelmoinnin alalaji vrt. rakenteinen ohjelmointi

Olio-ohjelmointi oliot ja niiden välinen kommunikaatio yleensä käskyohjelmoinnin alalaji huom! olio-ohjelmointi, ei luokkaohjelmointi

Funktio-ohjelmointi toiminto-ohjelmoinnin yleistys yleisin kuvausohjelmoinnin sovellus voi olla myös käskyohjelmoinnin sovellus keskeisin abstraktiokeino matemaattinen funktio tyypillistä funktion käyttäminen datana

Logiikkaohjelmointi periaatteessa kuvausohjelmointia käytännössä käskyohjelmointia keskeinen metafora: ongelma on väite, ratkaisu on todistus

Kieliparadigmat yleinen luokittelutapa ei kovin toimiva kieli kuuluu paradigmaan, jos se taipuu siihen kieli kuuluu paradigmaan, jos se taipuu vain siihen useimmat kielet oikeasti moniparadigmakieliä useimmilla kielillä kuitenkin kotiparadigma

Käskykielet sijoituslause peräkkäistys eksplisiittinen kontrollivuon ohjaus Algol-kielet (C, Pascal, C++, Java, BASIC, Fortran)

Kuvauskielet käskykielen vastakohta Perlis: purely applicative languages are poorly applicable λ-kalkyyli Backusin FP

Toimintokielet tukevat aliohjelmarakennetta useimmat käskykielet kuuluvat tähän

Oliokielet tukevat olioita: identiteetti, tila, käyttäytyminen tukevat käyttäytymisen inkrementaalista muutosta (perintä tai prototyypit) Smalltalk, Python, Java, C++

Funktiokielet tukevat täysivaltaisia funktioita tukevat tiedon halpaa kopiointia suosivat puurakenteita suosivat rekursiota Lisp, Standard ML, O Caml, Haskell, Clean

Ousterhoutin jaottelu järjestelmäohjelmointikielet juontokielet (skriptikielet)

1955 konekielet, symboliset konekielet koodaaminen erittäin vaikeaa

1955 1960 automaattinen ohjelmointi Forteran (1957) LISP (1958) Algol (1958)

1960-luku kielien räjähdysmäinen lisääntyminen Algol 60 (1960), Algol W (1966), Algol 68 (1968) Simula (1960), Simula 68 (1968) Snobol (1962) BASIC (1963) PL/I (1964)

1970-luku modernismi: opitaan menneestä Pascal C Smalltalk ML Scheme Prolog

1980-luku oliokielten nousu, postmodernismi C with classes, C++ Eiffel Ada Tcl Perl Miranda

1990-luku Intenet Java Haskell Python Ruby PHP ECMAScript

2000-luku C# Links???