Dynaaminen kääntäminen ja Java HotSpot
|
|
- Topi Nieminen
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 Dynaaminen kääntäminen ja Java HotSpot Jukka Eskola Kimmo Kulovesi Tatu Säily Helsinki HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
2 Sisältö 1. Johdanto JIT-kääntäjän ongelmat Dynaaminen kääntäminen Toiminta ja hyödyt Käyttötavat HotSpot ja dynaaminen kääntäminen Profiloija Dynaaminen kääntäjä Käytännön suorituskyky Yhteenveto Lähteet...8
3 1. Johdanto Sun Microsystemsin v aloittaman tutkimusprojektin tuotoksena syntynyt Javaohjelmointikieli on yksi merkittävimmistä viime aikojen teknisistä innovaatioista tietotekniikan ja erityisesti ohjelmoinnin alalla. Java yhdistää yhteen kieleen useita muiden ohjelmointikielien ominaisuuksia, joista mainittakoon olio-ohjelmointi ja alustasta riippumattomuus siirrettävyydessä. Java-kielinen lähdekoodi (.java) käännetään ensin kääntäjällä.class-tiedostoksi eli Javatavukoodiksi, jota voidaan sitten haluttaessa suorittaa eri alustoilla Javan virtuaalikoneella (engl. Java Virtual Machine, lyh. JVM). Alunperin JVM:n toteutukset suorittivat tavukoodia mm. tulkkaukseen tai Just-In-Time (JIT) kääntämiseen perustuen. Tulkkaukseen perustuvan JVM-toteutuksen lisäksi on siis kehitetty useita suoritustekniikoita mm. pienentämään Java-ohjelmien suoritusaikaa. Kuvassa 1 on esitelty vaihtoehtoisia JVM:n käyttämiä tekniikoita. Kuva 1: Vaihtoehtoisia tekniikoita suorittaa Java-tavukoodia [2]. Alkuperäinen tapa suorittaa Java tavukoodia on ollut tehdä se Java-tulkin (interpreter) avulla. Tulkki emuloi eli matkii kohdeprosessorin operaatioita suorittamalla JVMohjelmaa. Toisin sanoen, suorituksessa oleva JVM-ohjelma lukee ja suorittaa käyttäjän tekemän Java-ohjelman jokaisen tavukoodin järjestyksessä. Tulkkauksessa on muutamia 1
4 etuja verrattuna perinteisesti käännettyyn suorittamistapaan; se ei vaadi paljoakaan muistia ja se on suhteellisen yksinkertainen toteuttaa. Vastaavasti huonona puolena voidaan yleisesti pitää suorituksen hitautta. Toinen tapa suorittaa Java-ohjelmia on tehdä se kääntäjällä, joka kääntää Java-tavukoodia natiiviksi konekieleksi. Aivan kuten korkean tason ohjelmointikielten kääntäjät, ns. suora Java -kääntäjä (a direct Java compiler) aloittaa kääntämisen lähdekoodista (tai vaihtoehtoisesti tavukoodista) ja tuottaa sen kohdekoneen prosessorilla suorittavaksi konekieleksi [1]. Koska käännös tehdään staattisesti, niin kääntäjä voi käyttää perinteisiä optimointitekniikoita (yleensä aikaavieviä) parantaakseen käännetyn koodin suorittamista, sen suoritusaikaa ja esitysmuotoa. Just-In-Time eli JIT-kääntäjä (JIT compiler) sitä vastoin kääntää dynaamisesti Javan tavukoodia suorituksen aikana ja voi käyttää erilaisia optimointitekniikoita nopeuttamaan natiivin konekielen suorittamista. Pääasiallinen ero suoran Java-kääntäjän ja JIT-kääntäjän välillä on se, että JIT-kääntäjä suorittaa kääntämisen tavukoodista jokaisella ajokerralla erikseen. 1.1 JIT-kääntäjän ongelmat JIT-kääntäjä parantaa tuntuvasti tavukoodin suoritusnopeutta kääntämällä sen ensiksi natiiviksi konekieleksi ja tekemällä siihen jonkinasteista optimointia ennen sen varsinaista suoritusta. Sitä osaa Java-ohjelman tavukoodista, jota ei suoriteta ei myöskään käännetä, joten JIT ei tuhlaa turhaan aikaan sellaisen koodin optimoimiseen, jota ei koskaan suoriteta. Koska Java-ohjelman kokonaissuoritusaika on yhdistelmä käännökseen ja virtuaalikoneen suorittamiseen kuluvaa aikaa, on JIT-kääntäjän tasapainoiltava toisaalta ajan kanssa, jonka se kuluttaa generoidun koodin optimointiin, ja toisaalta ajan kanssa, jonka se säästää optimoinnilla. Yksi koodin optimointia rajoittava tekijä on kääntämisen näkyvyyssäännöt. Koska kääntäminen tapahtuu vaadittaessa yhdelle luokalle tai metodille kerrallaan, on JITkääntäjän vaikea suorittaa ei-paikallisia optimointeja. Rajoituksista huolimatta JIToptimoinnit ovat yleensä melko yksinkertaisia. 2
5 Vaikka JIT-kääntäjät ovat yleensä aikavaativuudeltaan tehokkaampia kuin tulkit, niin tulkkien käytölle löytyy toki vielä etuja. Yksi näistä eduista on sen parempi soveltuvuus ohjelmille, joista korjataan tai jäljitetään virheitä (engl. debugging). Toinen etu on se, että tulkki kääntää esim. metodista ainoastaan ne käskyt, joita todellisuudessa tarvitaan suorituksessa, kun taas JIT kääntää koko metodin samalla kertaa. Varsinkin silloin, jos aina vain pientä osaa metodin sisältämästä tavukoodista suoritetaan ja metodia suoritetaan harvoin, niin sitä aikaa, joka kuluu JIT-kääntämiseen ei koskaan kaapata takaisin suoritusajan alenemisella. Koska JIT-kääntäjä yleensä optimoi kaiken minkä se näkee, niin paljon aikaa saatetaan kuluttaa ihan turhaan mm. alustuskoodien ja ns. kertakäyttömetodien optimoimiseen. Dynaaminen kääntäminen pyrkii paikkaamaan sekä tulkkaamisen että JIT-kääntämisen ongelmia yhdistämällä niiden parhaat puolet. Sun Microsystemsin kehittämä Java HotSpot Virtual Machine [3] on Java-virtuaalikone, joka sisältää tavukooditulkin lisäksi myös dynaamisen kääntäjän. Sen tavoitteena alunperin oli parantaa muistin käyttöä, tehostaa roskienkeruuta sekä optimoida muutenkin virtuaalikoneen suoritusta. Java HotSpotin perusideana on optimoida vain se koodin osa, jota suoritetaan säännöllisesti ja usein (ns. hotspotit). 2. Dynaaminen kääntäminen Joissakin teksteissä dynaamista kääntämistä käytetään myös JIT-kääntämisen synonyymina [4], mutta tässä sillä tarkoitetaan ainoastaan sellaista kääntäjää, joka kerää ajon aikana tietoa ohjelman rakenteesta ja käyttää sitä suorituksen tehokkuuden parantamiseen. 2.1 Toiminta ja hyödyt Dynaamisella kääntämisellä pyritään virtuaalikoneiden yhteydessä korjaamaan JITkääntämisen ongelmana oleva huonosti optimoitu konekielinen koodi, joka aiheutuu siitä, että JIT-kääntäminen ei saa viedä kovin paljon aikaa [2]. Tämä saavutetaan kääntämällä optimoidusti ainoastaan eniten ajetut ohjelman osat. Suurin osa ohjelmista toimii siten, että suurin osa ajasta käytetään pientä osaa koodista suorittaessa. Erään arvion mukaan 80 prosenttia suoritukseen käytetystä ajasta kuluu suorittaessa 20 prosenttia koodista [1]. Siksi ainoastaan näiden hotspoteiksi kutsuttujen osien optimointi johtaa yleensä suuriin parannuksiin suorituskyvyssä, mutta kääntämiseen kuluva aika ei kasva merkittävästi. 3
6 Useimmin ajettuja ohjelman osia ei voida tietää etukäteen, joten hotspotit määritellään vasta kun ohjelmaa on ajettu jonkin aikaa [2]. Sitä ennen kaikki ohjelman osat ajetaan samalla tavalla kuin hotspotien ulkopuoliset osat, eli esimerkiksi kääntämällä ne ensin optimoimatta kuten IBM:n Java-virtuaalikoneessa, tai tulkkaamalla ne kuten Sunin Java HotSpot -virtuaalikoneessa. Virtuaalikone tarkkailee ajon aikana mitä ohjelman osia ajetaan eniten ja kääntää sekä optimoi ne taustalla. Optimoitavien osien valinta vaihtelee ohjelman ajokertojen välillä ohjelman saamien syötteiden perusteella, jotka osittain määräävät mitkä ohjelman osat tulevat ajetuksi useimmin. Aiemmin optimoidusti käännettyjä ohjelman osia ei tyypillisesti tallenneta myöhempiä ajoja varten [1]. Vaikka kääntäminen joudutaan suorittamaan myöhemmin uudelleen, tämä nopeuttaa latausaikaa ja säästää levytilaa. Toinen dynaamisen kääntämisen etu JIT-kääntämiseen nähden optimoinnin lisäksi on ohjelman käynnistymisajan lyheneminen niissä ratkaisuissa, joissa optimoimattomat ohjelman osat suoritetaan tulkkaamalla. Ohjelman suoritus alkaa näissä tapauksissa välittömästi, koska ensimmäisten metodien kääntämistä ei tarvitse jäädä odottamaan. 2.2 Käyttötavat Hyvin toteutettu dynaaminen kääntäminen virtuaalikoneissa on huomattavasti tulkkaamista ja JIT-kääntämistä nopeampaa. Ohjelman ajaminen on kuitenkin nopeampaa tavallisesti staattisella kääntäjällä konekielelle käännetyssä muodossa. Dynaamisen kääntämisen mahdollistaman ajon aikana tapahtuvan optimoinnin kehittäminen kuitenkin voi tulevaisuudessa pienentää tätä eroa tai jopa tehdä siitä staattista kääntämistä nopeampaa [1]. Dynaamiseksi kääntämiseksi kutsuttua menetelmää käytettiin ensimmäisen kerran Smalltalk-80-ohjelmointikielen virtuaalikoneessa [5]. Sitä jalostettiin tehokkaammaksi Self-kielen toteutuksessa uusien optimointitapojen avulla. Myöhemmin dynaamista kääntämistä on käytetty esimerkiksi IBM:n Jalapeno- ja Sunin HotSpot- virtuaalikoneissa Java-kielelle [2]. Java-virtuaalikone on nykyisin tärkein ja tunnetuin dynaamisen kääntämisen käyttökohde. 4
7 3. HotSpot ja dynaaminen kääntäminen Sunin HotSpot-teknologia on kuulunut viralliseen Java-virtuaalikoneeseen versiosta 1.3 alkaen. HotSpot-virtuaalikone (kuva 2) sisältää sekä normaalin tavukooditulkin että dynaamisen kääntäjän, jota käytetään tuottamaan optimoituja natiivikonekielisiä versioita ohjelman ns. hotspoteista metodeista joissa käytetään eniten suoritusaikaa. Ohjelmaa aletaan suorittaa tulkkaamalla tavukoodia suoraan. Kun hotspot-metodeja löydetään, niistä käännetään suorituksen taustalla optimoidut natiiviversiot, joita voidaan käyttää tulkkauksen sijaan myöhemmillä kutsukerroilla. Kuva 2: HotSpotin rakenne [1]. 5
8 3.1 Profiloija HotSpot-virtuaalikoneeseen kuuluu oleellisena osana profiloija, jonka tehtävänä on etsiä ajettavan ohjelman hotspotit kullakin hetkellä suorituksen aikana. Tätä varten profiloija pitää kirjaa eri metodeissa vietettävästä suoritusajasta, ja päättelee aikatilastoista missä metodeissa vietetään suurin osa suoritusajasta. Valitakseen sopivat metodit käännettäviksi profiloijan on tehtävä arvio kunkin metodin kääntämiseen ja optimointiin kuluvasta ajasta. Tätä arviota verrataan metodissa käytettävään suoritusaikaan, minkä perusteella voidaan päätellä onko kääntäminen natiivikoodiksi kannattavaa. Tarkkoja kriteerejä hotspot-metodien valintaan ei ole julkistettu, ja ne luultavasti muuttuvat ja parantuvat teknologian kehittyessä. Koska hotspot-metodien löytäminen perustuu arvioihin ja todennäköisyyksiin, eivät päätökset voi aina mennä oikein. Eräs valintaa vaikeuttava tekijä on hotspottien mahdollinen siirtyminen: esimerkiksi jotakin metodia saatetaan kutsua usein ohjelman alussa, mutta sen jälkeen ei enää ollenkaan. Tällaisissa tapauksissa on mahdollista että metodi tulee käännetyksi, mutta käännettyä versiota ajamalla ei ehditä saada takaisin kääntämiseen kulunutta aikaa. Menetelmän tarkoitus on kuitenkin saada ohjelman suoritus keskimäärin mahdollisimman nopeaksi, eikä tehdä jokainen yksittäinen valinta varmasti oikein. 3.2 Dynaaminen kääntäjä Varsinaisen kääntämisen ajoalustan natiivikonekielelle suorittaa HotSpot-virtuaalikoneen sisältämä dynaaminen kääntäjä. Kääntäjä tuottaa profiloijan valitsemista hotspotmetodeista optimoidut versiot ohjelman suorituksen taustalla. Optimointiin on tällöin käytettävissä melko runsaasti aikaa, sillä tulkki voi jatkaa tavukoodiversion suorittamista kääntämisen ollessa vielä kesken. Optimoinnissa käytetään monin tavoin hyödyksi kääntäjän dynaamisuutta ja saatavilla olevaa ajonaikaista tietoa. Staattiseen kääntäjään verrattuna saatetaan tietää esimerkiksi joidenkin muuttujien kaikki mahdolliset oikeat arvot, joita saattaa olla ratkaisevasti vähemmän kuin muuttujan tyypin arvoalueeseen kuuluvia arvoja olisi. Näiden tietojen perusteella voidaan metodit optimoida tehokkaasti tilanteen mukaan. 6
9 HotSpot-kääntäjällä on tavalliseen kääntäjään verrattuna toinenkin merkittävä etu: sillä on käytettävissä varalla tavukooditulkki, joka voi tarvittaessa suorittaa saman metodin myös tulkkaamalla. Kääntäjä hyödyntää tätä seikkaa suorittamalla optimistista kääntämistä vaikeasti optimoitavat tapaukset, kuten poikkeukset, voidaan jättää kokonaan pois. Ideana on optimistisesti toivoa että vaikeat tapaukset ovat harvinaisia (siis poikkeuksellisia), jolloin kokonaisuuden kannalta on parempi jättää ne tavukooditulkin varaan ja tuottaa itse useimmissa tapauksissa toimiva, paremmin optimoitu versio. Tämä pienentää optimoitavan koodin määrää, jolloin säästyy aikaa ja koodin koko pysyy pienempänä. Eräs tärkeä kääntäjän käyttämä optimointimenetelmä on koodin laventaminen (engl. inlining). Tämä tarkoittaa usein kutsuttujen metodien kutsun korvaamista suoraan metodin koodilla, jolloin säästytään metodikutsun tuomalta lisärasitteelta. Yleisessä tapauksessa laventamisen varjopuoli on ollut koodin koon kasvu, kun sama metodi kopioidaan useaan eri paikkaan. HotSpotissa tämä ongelma ei ole kovin suuri, sillä siinä laventaminen rajautuu vain pienelle, mutta merkittävälle alueelle: hotspotteihin. Lisäksi siihenkin voidaan soveltaa optimistista lähestymistapaa: ajonaikaisten tietojen perusteella voidaan päätellä todennäköisimmin tapahtuvat metodikutsut ja laventaa vain ne. 3.3 Käytännön suorituskyky Erilaisia käyttötarkoituksia varten HotSpot-virtuaalikoneessa on kaksi vaihtoehtoista, loppukäyttäjän valittavissa olevaa tilaa dynaamiseen kääntämiseen: asiakas- ja palvelinversio. Asiakasversio käynnistyy nopeammin ja kuluttaa vähemmän muistia, joten se sopii erityisen hyvin interaktiivisiin ohjelmiin. Palvelinversio puolestaan suorittaa enemmän tehtäviä etukäteen ja optimoi aggressiivisemmin, mutta se käynnistyy hitaammin ja kuluttaa enemmän muistia. Käynnistyttyään palvelinversio toimii kuitenkin melko tasaisen nopeasti, siinä missä asiakasversio saattaa välillä toimia epätasaisemmin suorittaessaan kääntämistä taustalla. Oletuksena käytössä on asiakasversio. Käytännössä Java-ohjelmat käyttävät aikaa muuhunkin kuin itse Java-koodin suorittamiseen. Muistin varaaminen ja roskienkeruu vie keskimäärin noin 20% Javaohjelman suoritusajasta, kuten myös säikeiden synkronointi. HotSpotin dynaaminen kääntäminen ei kaikessa optimistisuudessaankaan juuri kykene auttamaan asiaa näiltä osin. Voikin olla että joissakin yksittäisissä ohjelmissa siitä ei ole juuri ollenkaan hyötyä, vaan 7
10 suorituskyky riippuu muista virtuaalikoneen ominaisuuksista, esimerkiksi roskienkeruu- ja rinnakkaisuusalgoritmeista. Poikkeustapauksista huolimatta HotSpot onnistuu keskimäärin nopeuttamaan Javaohjelmien suoritusta merkittävästi verrattuna pelkästään tulkitseviin tai pelkästään JITkääntäviin virtuaalikoneisiin. On luultavaa että sen dynaamista kääntämistä kehitetään eteenpäin tulevaisuudessa, esimerkiksi älykkäämpien profilointi- ja optimointimenetelmien muodossa. 4. Yhteenveto Kun dynaamisen kääntämisen menetelmät kehittyvät yhä tehokkaammiksi, välikielille käännettyjen monilla laitealustoilla toimivien kielten käyttömahdollisuudet kasvavat samalla. Jo nykyisin esimerkiksi Java-kieltä on mahdollista käyttää WWW-sivuille upotettujen sovelmien lisäksi perinteisten sovellusten toteutukseen sekä palvelinohjelmiin. Jos optimistisimmat ennustukset toteutuvat ja HotSpot-teknologia ylittää staattisella kääntämisellä saavutetun suoritusnopeuden, häviää yksi viimeisistä syistä olla tukematta laite- ja käyttöjärjestelmäriippumattomia ohjelmistoja. 5. Lähteet [1] Armstrong, E. Hotspot: A new breed of virtual machine. Java World, March [2] Kazi, I. H., Chen, H. H., Stanley, B. and Lilja, D. J. Techniques for Obtaining high performance in Java programs. In ACM Computing Surveys, 32(3): , September [3] The Java HotSpot(tm) Virtual Machine, v1.4.1,d2. Technical Whitepaper, Sun Microsystems Inc., Whitepaper, [4] Agesen, O. and Detlefs, D. Mixed-mode Bytecode Execution. Technical Whitepaper, Sun Microsystems Inc., [5] Deutsch, L. P. and Schiffman, A. M. Efficient implementation of the Smalltalk-80 system. In Conference Record of the 11th Annual ACM Symposium on Principles of Programming Languages, Salt Lake City, pages , January
.NET ajoympäristö. Juha Järvensivu 2007
.NET ajoympäristö Juha Järvensivu juha.jarvensivu@tut.fi 2007 Käännösprosessi C# lähdekoodi C# kääntäjä CILtavukoodi JITkäännös Ajettava natiivikoodi Kehitysympäristössä ohjelmoijan toimesta Ajonaikana.NET
LisätiedotVirtuaalikoneiden generointi Vmgen-kääntäjällä
Virtuaalikoneiden generointi Vmgen-kääntäjällä Risto Saarelma Helsinki 18.4.2005 Ohjelmointikielten kääntäjät -kurssi HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 1 Johdanto 1 Virtuaalikoneet ovat
Lisätiedot11/20: Konepelti auki
Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon
LisätiedotConcurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo
Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...
LisätiedotDart. Ryhmä 38. Ville Tahvanainen. Juha Häkli
Dart Ryhmä 38 Ville Tahvanainen Juha Häkli 1.LYHYESTI Dart on luokkapohjainen, yksiperintäinen, puhdas olio-ohjelmointikieli. Dart on dynaamisesti tyypitetty. Sovellukset on organisoitu modulaarisiksi
Lisätiedot4. Luokan testaus ja käyttö olion kautta 4.1
4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään
Lisätiedot4. Lausekielinen ohjelmointi 4.1
4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,
LisätiedotCommon Language Runtime
hyväksymispäivä arvosana arvostelija Common Language Runtime Jukka Katajisto Helsinki 16.4.2005 Ohjelmointikielten kääntäjät -kurssin seminaarityö HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisältö
LisätiedotTIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli
TIE-20306 PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli Seminaariesitelmä ryhmä 24 Markku Ahokas Jani Kuitti i SISÄLLYSLUETTELO 1. YLEISTÄ EIFFELISTÄ... 1 1.1 Historia ja tausta... 1 1.2
LisätiedotELM GROUP 04. Teemu Laakso Henrik Talarmo
ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................
Lisätiedot5. HelloWorld-ohjelma 5.1
5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2
Lisätiedot5. HelloWorld-ohjelma 5.1
5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2
LisätiedotOhjelmistojen testaus ja hallinta. Gradle
Ohjelmistojen testaus ja hallinta Gradle Perinteiset koontityökalut Ant Maven 2 Maven XML-pohjaiset koontitiedostot (pom.xml) Pohjautuu käytäntöihin (vain poikkeukset käytännöistä kirjoitetaan koontitiedostoon)
LisätiedotKieliversiointityökalu Java-ohjelmistoon. Ohje
Kieliversiointityökalu Java-ohjelmistoon Ohje 2/6 SISÄLLYSLUETTELO 1 YLEISTÄ OHJELMASTA... 3 2 PÄÄ-IKKUNA...4 3 YLÄVALIKKO... 4 3.1 TIEDOSTO... 4 3.2 TOIMINTO... 4 3.3 ASETUKSET... 5 3.4 OHJE... 5 4 VÄLILEHDET...5
LisätiedotBlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä
Pekka Ryhänen & Erkki Pesonen 2002 BlueJ:n käyttö Nämä ohjeet on tarkoitettu tkt-laitoksen mikroluokan koneilla tapahtuvaa käyttöä varten. Samat asiat pätevät myös muissa luokissa ja kotikäytössä, joskin
Lisätiedot8. Näppäimistöltä lukeminen 8.1
8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)
LisätiedotChapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen
Chapel TIE-20306 Ryhmä 91 Joonas Eloranta Lari Valtonen Johdanto Chapel on Amerikkalaisen Cray Inc. yrityksen kehittämä avoimen lähdekoodin ohjelmointikieli. Chapel on rinnakkainen ohjelmointikieli, joka
LisätiedotOppimistavoitteet kurssilla Tietokoneen toiminta
Oppimistavoitteet kurssilla Tietokoneen toiminta (Oppimistavoitteita tullaan muokkaamaan keväällä 2007 opiskelijoilta jo saatujen kommenttien pohjalta. Lisää kommentteja ja mielipiteitä oppimistavoitteiden
LisätiedotJAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?
JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,
LisätiedotPedacode Pikaopas. Java-kehitysympäristön pystyttäminen
Pedacode Pikaopas Java-kehitysympäristön pystyttäminen Pikaoppaan sisältö Pikaoppaassa kuvataan, miten Windowstyöasemalle asennetaan Java-ohjelmoinnissa tarvittavat työkalut, minkälaisia konfigurointeja
LisätiedotVirtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).
1 Virtualisoinnin avulla voidaan purkaa suora linkki suoritettavan sovelluksen (tai käyttöjärjestelmän tms.) ja sitä suorittavan laitteiston välillä. Näin saavutetaan joustavuutta laitteiston käytössä.
LisätiedotKäännös, linkitys ja lataus
Luento 10 (verkkoluento 10) Käännös, linkitys ja lataus Ohjelmasta prosessiin Käännösyksikkö Kääntämisen vaiheet Makrot, literaalit Staattinen ja dynaaminen linkitys Nimien sidonta Lausekielestä suoritukseen
LisätiedotTIE Principles of Programming Languages CEYLON
TIE-20306 Principles of Programming Languages CEYLON SISÄLLYSLUETTELO 1. YLEISTIETOA KIELESTÄ JA SEN KEHITTÄMISESTÄ... 1 2. CEYLONIN OMINAISUUKSIA... 2 2.1 Modulaarisuus... 2 2.2 Tyypit... 2 2.3 Muita
LisätiedotOhjelmointi 1. Kumppanit
Ohjelmointi 1 Kumppanit November 20, 2012 2 Contents 1 Mitä ohjelmointi on 7 2 Ensimmäinen C#-ohjelma 9 2.1 Ohjelman kirjoittaminen......................... 9 A Liite 11 3 4 CONTENTS Esipuhe Esipuhe 5
Lisätiedot4. Lausekielinen ohjelmointi 4.1
4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Hyvä ohjelmointitapa. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen
Lisätiedot8. Näppäimistöltä lukeminen 8.1
8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)
Lisätiedot811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu
811312A Tietorakenteet ja algoritmit, 2018-2019, Harjoitus 3, Ratkaisu Harjoituksessa käsitellään algoritmien aikakompleksisuutta. Tehtävä 3.1 Kuvitteelliset algoritmit A ja B lajittelevat syötteenään
LisätiedotOhjelmointi 1 / syksy /20: IDE
Ohjelmointi 1 / syksy 2007 10/20: IDE Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/8 Tämän luennon rakenne
LisätiedotSisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2
6. Metodit 6.1 Sisällys Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen Olio-ohjelmoinnissa ohjelma
Lisätiedot.NET ja C# Virtuaalikone. Common Language Infrastructure (CLI) Periaate. Etuja. Haittoja. Mikä on CLI. CLI standardin merkitys (CLS, Ecma)
.NET ja C# Virtuaalikone Periaate Virtuaalikone on tapa abstrahoida allaoleva toteutus yhteisen rajapinnan taakse. Virtuaalikoneet muodostavat hierarkian. Hierarkiassa ylempänä oleva käyttää alemman tarjoamaa
LisätiedotTIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op FT Ari Viinikainen Tietokoneen rakenne Keskusyksikkö, CPU Keskusmuisti Aritmeettislooginen yksikkö I/O-laitteet Kontrolliyksikkö Tyypillinen Von Neumann
LisätiedotOngelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä
Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä olevilla komponenteilla? Voisiko jollakin ohjelmointikielellä
LisätiedotSisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4
Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.
LisätiedotCUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen
CUDA Moniydinohjelmointi 17.4.2012 Mikko Honkonen Yleisesti Compute Unified Device Architecture Ideana GPGPU eli grafiikkaprosessorin käyttö yleiseen laskentaan. Nvidian täysin suljetusti kehittämä. Vuoden
LisätiedotSoveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen
Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen ohjelmointiin Jukka Talvitie Valvoja: Professori Jorma Jormakka Paikka: TietoEnator oyj Ongelma Ideologia Lifebelt
LisätiedotGIS-automatisointi ja ohjelmointi/skriptaus. Harri Antikainen
GIS-automatisointi ja ohjelmointi/skriptaus Harri Antikainen Mistä nyt puhutaan? Automatisointi: Mikä tahansa tapa teettää tietokoneella asioita ilman että käyttäjän tarvitsee tehdä muuta kuin laittaa
LisätiedotKahden virtualisointiohjelmiston suorituskyvyn testaus (valmiin työn esittely)
Kahden virtualisointiohjelmiston suorituskyvyn testaus (valmiin työn esittely) Jani Laine 31.10.2017 Ohjaaja: DI Jimmy Kjällman Valvoja: Prof. Kai Virtanen Työn saa tallentaa ja julkistaa Aalto-yliopiston
LisätiedotClojure, funktionaalinen Lisp murre
Clojure, funktionaalinen Lisp murre Principles of Programming Languages, S2015 Jukka Pekka Venttola & Pietari Heino Taustaa Clojuren pohjana on käytetty Lisp ohjelmointikieltä, jonka historia ulottuu 1950
LisätiedotTulkinta ja emulointi
Luento 11 (verkkoluento 11) Tulkinta ja emulointi Java ohjelman suoritus Tavukoodi JVM Tulkinta Java-suoritin Käännös ja JIT-käännös JVM vs. Titokone Java ohjelmien suoritus Java virtuaalikone SW HW Java
Lisätiedot12. Näppäimistöltä lukeminen 12.1
12. Näppäimistöltä lukeminen 12.1 Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit.
LisätiedotSisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten
Sisällys 16. Ohjelmoinnin tekniikkaa Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. For-lause lyhemmin. If-else-lause vaihtoehtoisesti
Lisätiedot16. Ohjelmoinnin tekniikkaa 16.1
16. Ohjelmoinnin tekniikkaa 16.1 Sisällys Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. For-lause lyhemmin. If-else-lause vaihtoehtoisesti
LisätiedotOhjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka
LisätiedotLohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3
16. Lohkot 16.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 16.2 Lohkot Kaarisulut
LisätiedotSolidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi
Solidity älysopimus ohjelmointi Sopimus suuntautunut ohjelmointi Merkle puu Kertausta eiliseltä Solidity on korkean tason älysopimus ohjelmointikieli Muistuttaa olio-ohjelmointia Javalla Sopimuskoodi on
LisätiedotÄlysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi
Älysopimusten kehittäminen Sopimus suuntautunut ohjelmointi There are currently 5,000 blockchain developers. By 2020, we project a global need for over 500,000 - ConsenSys Älysopimus alustat q Ethereum
Lisätiedot16. Ohjelmoinnin tekniikkaa 16.1
16. Ohjelmoinnin tekniikkaa 16.1 Sisällys For-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. If-else-lause vaihtoehtoisesti
LisätiedotTinkimätöntä tietoturvaa kaikkiin virtuaaliympäristöihin
Tinkimätöntä tietoturvaa kaikkiin virtuaaliympäristöihin SECURITY FOR VIRTUAL AND CLOUD ENVIRONMENTS Suojaus vai suorituskyky? Virtuaalikoneiden määrä ylitti fyysisten koneiden määrän jo vuonna 2009. Tällä
LisätiedotJavaohjelmien suoritus (3) Jakso 11 Tulkinta ja emulointi. Java-virtuaalikone (JVM) (5) JVM:n tietorakenteet (8) JVM:n tietorakenteet (jatkuu) (6)
Jakso 11 Tulkinta ja emulointi Tulkinta ja emulointi Java-ohjelman suoritus, tulkinta ja kääntäminen Suorittimen emulointi: ttk-91, Crusoe 1 Javaohjelmien suoritus (3) Java-virtuaalikone - instr ( esimerkiksi)
LisätiedotJAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++
JAVA alkeet JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++ ja Javascriptin kanssa. Huom! JAVA ja JavaScript eivät silti ole sama asia, eivätkä edes sukulaiskieliä.
LisätiedotRekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä
Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,
LisätiedotInteraktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.
Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen
LisätiedotKäyttöjärjestelmien historia. Joni Herttuainen Henri Jantunen Markus Maijanen Timo Saksholm Johanna Tjäder Eetu Turunen
Käyttöjärjestelmien historia Joni Herttuainen Henri Jantunen Markus Maijanen Timo Saksholm Johanna Tjäder Eetu Turunen Käyttöjärjestelmien jaottelu Voidaan jaotella erilaisin menetelmin Aikajana (määrä,
LisätiedotInteraktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.
Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen
LisätiedotITKA203 Käyttöjärjestelmät, kesä Kesäkurssi Opettaja: Paavo Nieminen
Kesäkurssi 22.5.-27.7.2007 Opettaja: Paavo Nieminen Luento 3 24.5.2007 Ohjelmointi ja ohjelmointikieli suoritus ja konekieli Aiheet: Pääteyhteys ja interaktiivisen shellin käytön idea;
Lisätiedot815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.
LisätiedotIntegrointi. Ohjelmistotekniikka kevät 2003
Integrointi Ohjelmistotekniikka kevät 2003 ERP (Toiminnanohjausjärjestelmä) Myynti Henkilöstö, palkanlaskenta Kirjanpito Myynti Myyjät Extranet Tietovarasto Laskutus, reskontrat Asiakas ERP Asiakasrekisteri
LisätiedotSisällys. 16. Lohkot. Lohkot. Lohkot
Sisällys 16. ohkot Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 16.1 16.2 ohkot aarisulut
Lisätiedot15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:
Lisätiedotsamalla seuraavaan puoliavaruuteen (sukupolveen), jota siivotaan harvemmin.
3.2. OLIOT 31 Myös tästä menetelmästä on olemassa muunnelmia, jotka pyrkivät vähentämään yksittäisen pysähdyksen pituutta. Nämä ovat niinsanottuja ikäperustaisia (generational) menetelmiä, joissa muisti
LisätiedotOhjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista
582101 - Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista 1 Ohjelmistotuotannon työkaluuista Projektinhallintatyökalut (ei käsitellä tällä kurssilla) CASE- ja mallinnustyökalut (esim. Poseidon)
Lisätiedot4.2. ALIOHJELMAT 71. Tulosvälitteisyys (call by result) Tulosvälitteinen parametri kopioidaan lopuksi
4.2. ALIOHJELMAT 71 sisältyä kaikki tarvittavat kontrollia ohjaavat rakenteet. Jos se on lause (yleensä lohko), niin on ratkaistava, miten paluuarvo ilmaistaan. Joissakin kielissä (esimerkiksi Pascal)
LisätiedotIDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit
IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
LisätiedotTIEA255 Tietotekniikan teemaseminaari ohjelmointikielet ja kehitysalustat. Antti-Juhani Kaijanaho. 16. helmikuuta 2011
TIEA255 Tietotekniikan teemaseminaari ohjelmointikielet ja kehitysalustat Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 16. helmikuuta 2011 Sisällys Sisällys Ohjelmointikieli? programming language n. a
LisätiedotOnnistunut ohjelmistoprojekti
Onnistunut ohjelmistoprojekti ICT-ajankohtaisseminaari 15.4.2009 Hermanni Hyytiälä Reaktor Innovations Oy Agenda Yritysesittely Keinoja onnistuneeseen ohjelmistoprojektiin Ihmiset Menetelmät Käytännöt
LisätiedotATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014
18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
LisätiedotSisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin
Sisällys 17. Ohjelmoinnin tekniikkaa for-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. if-else-lause vaihtoehtoisesti
LisätiedotTestiraportti Android virtuaalikone vs. natiivikoodi Ville Laine, Delta 23
Testiraportti Android virtuaalikone vs. natiivikoodi Ville Laine, Delta 23 1 Sisällys 1. Johdanto...3 2. Testiohjelma...3 2.1. Testi 1: Raaka funktiokutsu...3 2.2. Testi 2: Yhteenlaskutesti...3 2.3. Testi
Lisätiedot15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien
LisätiedotTestauksen tuki nopealle tuotekehitykselle. Antti Jääskeläinen Matti Vuori
Testauksen tuki nopealle tuotekehitykselle Antti Jääskeläinen Matti Vuori Mitä on nopeus? 11.11.2014 2 Jatkuva nopeus Läpäisyaste, throughput Saadaan valmiiksi tasaiseen, nopeaan tahtiin uusia tuotteita
LisätiedotPong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana
Muilla kielillä: English Suomi Pong-peli, vaihe 3 Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Jaetaan ohjelma pienempiin palasiin (aliohjelmiin) Lisätään peliin maila (jota ei voi vielä
Lisätiedot12. Monimuotoisuus 12.1
12. Monimuotoisuus 12.1 Sisällys Johdanto. Periytymismekanismi määrittää alityypityksen. Viitteiden sijoitus ja vertailu. Staattinen ja dynaaminen luokka. Myöhäinen ja aikainen sidonta. Parametrinvälitys
LisätiedotErlang. Miika Heinonen ja Lassi Uosukainen (Group 92) TIE Principles of Programming Languages Seminaariessee. Yleistä
Yleistä Erlang Miika Heinonen ja Lassi Uosukainen (Group 92) TIE-20306 Principles of Programming Languages Seminaariessee Erlang on Ericcsonin kehittämä funktionaalinen ohjelmointikieli ja ajoympäristö,
LisätiedotSisällys. 15. Lohkot. Lohkot. Lohkot
Sisällys 15. Lohkot Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.1 15.2 Lohkot Aaltosulkeet
LisätiedotOhjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit
Ohjelmiston testaus ja laatu Ohjelmistotekniikka elinkaarimallit Vesiputousmalli - 1 Esitutkimus Määrittely mikä on ongelma, onko valmista ratkaisua, kustannukset, reunaehdot millainen järjestelmä täyttää
LisätiedotLuento 11 Tulkinta ja emulointi
Luento 11 Tulkinta ja emulointi Tulkinta ja emulointi Java ohjelman suoritus, tulkinta ja kääntäminen Suorittimen emulointi 1 Java ohjelmien suoritus (3) Java virtuaalikone Java tulkki Pentium II load
LisätiedotTietokanta (database)
Tietokanta Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja 1 Tiedosto Ohjelmointikielissä apumuistiin tallennettuja tietoja käsitellään
Lisätiedot2 Konekieli, aliohjelmat, keskeytykset
ITK145 Käyttöjärjestelmät, kesä 2005 Tenttitärppejä Tässä on lueteltu suurin piirtein kaikki vuosina 2003-2005 kurssin tenteissä kysytyt kysymykset, ja mukana on myös muutama uusi. Jokaisessa kysymyksessä
LisätiedotLohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3
15. Lohkot 15.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.2 Lohkot Aaltosulkeet
LisätiedotObjective-C. Ryhmä 35: Ilpo Kärki Aleksi Pälä
Objective-C Ryhmä 35: Ilpo Kärki Aleksi Pälä Sisällysluettelo 1 Yleistä...3 1.1 Lyhyesti...3 1.2 Historiaa...3 1.3 Hybridikieli...3 2 Muistinhallinta...5 2.1 Manual Retain Release (MRR)...5 2.2 Automatic
LisätiedotStaattinen metaohjelmointi
Staattinen metaohjelmointi Karri Kulmala karriku@iki.fi Markus Silván mape@st.jyu.fi Juho Yli-Honkola juylihon@cc.jyu.fi 1 Johdanto Sanakirjassa sana metakieli (metalanguage) määritellään seuraavasti[]:
LisätiedotOngelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?
Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön? 2013-2014 Lasse Lensu 2 Systeemiohjelmat ovat tietokoneen laitteistoa lähellä olevia ohjelmia,
Lisätiedot13/20: Kierrätys kannattaa koodaamisessakin
Ohjelmointi 1 / syksy 2007 13/20: Kierrätys kannattaa koodaamisessakin Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy
LisätiedotTulkkauspalvelut maahanmuuttajille Ohjeita maahanmuuttajille ja viranomaisille
Maahanmuuttopalvelut Toukokuu 2013 Tulkkauspalvelut maahanmuuttajille Ohjeita maahanmuuttajille ja viranomaisille SELKOESITE Tekstit Sara Vainikka, Konsernipalvelut / Viestintä Tuija Väyrynen, Maahanmuuttopalvelut
LisätiedotOliot ja tyypit. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos
Oliot ja tyypit TIES542 Ohjelmointikielten periaatteet, kevät 2007 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 19. maaliskuuta 2007 Olion tyyppi? attribuutti on oikeastaan metodi,
Lisätiedot815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/
LisätiedotC-ohjelmoinnin peruskurssi. Pasi Sarolahti
C! C-ohjelmoinnin peruskurssi Pasi Sarolahti Mitä haluan oppia C-kurssilla? ja miksi? Tutustu lähimpään naapuriin Keskustelkaa miksi halusitte / jouduitte tulemaan kurssille 3 minuuttia è kootaan vastauksia
LisätiedotOhjelmoinnin perusteet, syksy 2006
Ohjelmoinnin perusteet, syksy 2006 Esimerkkivastaukset 1. harjoituksiin. Alkuperäiset esimerkkivastaukset laati Jari Suominen. Vastauksia muokkasi Jukka Stenlund. 1. Esitä seuraavan algoritmin tila jokaisen
LisätiedotArkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14
Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 1.0 19.10.2007 Suanto 0.3 18.10.2007 Matti Eerola 0.2 17.10.2007
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print
Lisätiedot4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T
SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen
LisätiedotOngelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle,
Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle, sovellusohjelmille ja käyttäjille? 2012-2013 Lasse Lensu
LisätiedotOhjelmistojen mallintaminen
Ohjelmistojen mallintaminen - Mallit - Ohjelmiston kuvaaminen malleilla 31.10.2008 Harri Laine 1 Malli: abstraktio jostain kohteesta Abstrahointi: asian ilmaiseminen tavalla, joka tuo esiin tietystä näkökulmasta
Lisätiedot815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 4 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten lauseisiin, lausekkeisiin ja aliohjelmiin liittyvät kysymykset. Tehtävä 1. Mitä
LisätiedotJava ohjelmien suoritus (3) Luento 11 Tulkinta ja emulointi. Java virtuaalikone (JVM) (5) JVM:n tietorakenteet (8) JVM:n tietorakenteet (jatkuu) (6)
Luento 11 Tulkinta ja emulointi Tulkinta ja emulointi ohjelman suoritus, tulkinta ja kääntäminen Suorittimen emulointi 1 ohjelmien suoritus (3) virtuaalikone tulkki load k = i+j; ohjelma byte-koodi ( esimerkiksi)
LisätiedotArkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14
Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2
LisätiedotTIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö
TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö Tekijät: Eemeli Honkonen Joni Metsälä Työ palautettu: SISÄLLYSLUETTELO: 1 SEMINAARITYÖN KUVAUS... 3 2 TIETOKANTA... 3 2.1 MITÄ TIETOKANNAT SITTEN OVAT?... 3
LisätiedotTietokoneen toiminta (Computer Organization I)
581305-6 toiminta (Computer Organization I) Teemu Kerola Helsingin yliopisto Tietojenkäsittelytieteen laitos Kesä 2002 Avoin yliopisto 1 Aihepiiri Sovellukset Teknologia Samanaikaisuus Ohjelmointikielet
LisätiedotTietokoneen toiminta (Computer Organization I)
581305-6 toiminta (Computer Organization I) Tiina Niklander Helsingin yliopisto Tietojenkäsittelytieteen laitos Kalvot: Teemu Kerola 1 Aihepiiri Sovellukset Teknologia Samanaikaisuus Ohjelmointikielet
LisätiedotTulkkauspalvelut maahanmuuttajille
Maahanmuuttopalvelut Toukokuu 2013 Tulkkauspalvelut maahanmuuttajille Ohjeita maahanmuuttajille ja viranomaisille SELKOESITE Tekstit Sara Vainikka, Konsernipalvelut / Viestintä Tuija Väyrynen, Maahanmuuttopalvelut
Lisätiedot