Hyppää sisältöön
    • Suomeksi
    • In English
Trepo
  • Suomeksi
  • In English
  • Kirjaudu
Näytä viite 
  •   Etusivu
  • Trepo
  • Kandidaatintutkielmat
  • Näytä viite
  •   Etusivu
  • Trepo
  • Kandidaatintutkielmat
  • Näytä viite
JavaScript is disabled for your browser. Some features of this site may not work without it.

Rinnakkaisuus ohjelmointikielissä : Rust ja Go

Koski, Topi (2023)

 
Avaa tiedosto
KoskiTopi.pdf (377.9Kt)
Lataukset: 



Koski, Topi
2023

Tieto- ja sähkötekniikan kandidaattiohjelma - Bachelor's Programme in Computing and Electrical Engineering
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2023-12-15
Näytä kaikki kuvailutiedot
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-2023121310812
Tiivistelmä
Rinnakkaisuus on ollut osana ohjelmointia jo pitkään ja sen merkitys ohjelmistoissa on kasvanut moniydinprosessorien yleistyessä. Ohjelmoijan kannalta rinnakkaisuus tarjoaa mahdollisuuden tehostaa ohjelman suoritusta jakamalla ohjelma erillisiin osiin, jotka voidaan suorittaa yhtäaikaisesti. Tämä tuo kuitenkin vastaan ongelmia, joiden ratkaiseminen on pitkälti ohjelmoijan vastuulla.

Lähes kaikki nykypäivän ohjelmointikielet tarjoavat keinoja ohjelmoijalle rinnakkaisuuden toteuttamiseen. Tässä työssä käsiteltävät kielet Rust ja Go ovat kummatkin käännettäviä avoimen lähdekoodin ohjelmointikieliä. Molempien ensimmäinen versio on julkaistu 2010-luvulla, ja ne ovat saaneet suosioita sekä yksittäisten ohjelmoijien että suurten ohjelmistoyritysten keskuudessa. Rustin tavoitteena on olla turvallinen ja nopea järjestelmäohjelmointiin tarkoitettu kieli. Go on taas tarkoitettu suurempiin projekteihin, joihin tarvitaan skaalautuva ja yksinkertainen ohjelmointikieli.

Tässä työssä tutkitaan, miten Rust- ja Go-ohjelmointikielissä on toteutettu rinnakkaisuus standardikirjastossa, miten nämä toteutukset eroavat toisistaan, sekä mitä yhtäläisyyksiä niissä on. Näiden lisäksi käydään myös läpi kielten pääasialliset käyttötarkoitukset, sillä ne vaikuttavat siihen, mitä kielet painottavat toteutuksissaan. Vertailu tapahtui tutkimalla kielten dokumentaatioita, niihin liittyviä tutkimuksia ja muuta kirjallisuutta. Tarkoituksena on saada yleiskuva kielten rinnakkaisuudesta.

Kummatkin ohjelmointikielet antavat ohjelmoijalle mahdollisuuden toteuttaa rinnakkaisuutta perinteisten synkronointimekanismien ja kanavien avulla. Go kuitenkin painottaa enemmän kanavien käyttöä rinnakkaisuudessa, kun taas Rust tarjoaa standardikirjastossa vain tiettyjä ominaisuuksia ja kannustaa ohjelmoijaa käyttämään omia tai ulkoisia kirjastoja. Suurin ero kielten välillä on säikeiden toteutuksissa. Rustissa luotavat säikeet ovat käyttöjärjestelmän säikeitä vastaavia, mikä tukee laitteistonläheistä ohjelmointia. Go:ssa luotavat gorutiinit ovat taas kevyitä säikeitä, joiden luomisen yleiskustannukset ovat paljon pienemmät, kuin käyttöjärjestelmäsäikeiden luonti. Tämä tukee Go:n tarkoitusta olla yksinkertainen kieli.
Kokoelmat
  • Kandidaatintutkielmat [10744]
Kalevantie 5
PL 617
33014 Tampereen yliopisto
oa[@]tuni.fi | Tietosuoja | Saavutettavuusseloste
 

 

Selaa kokoelmaa

TekijätNimekkeetTiedekunta (2019 -)Tiedekunta (- 2018)Tutkinto-ohjelmat ja opintosuunnatAvainsanatJulkaisuajatKokoelmat

Omat tiedot

Kirjaudu sisäänRekisteröidy
Kalevantie 5
PL 617
33014 Tampereen yliopisto
oa[@]tuni.fi | Tietosuoja | Saavutettavuusseloste