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.

C++ vs. Rust : Vertailua muistinhallinnan helppokäyttöisyydestä

Ahvenniemi, Jarkko (2025)

 
Avaa tiedosto
AhvenniemiJarkko.pdf (677.2Kt)
Lataukset: 



Ahvenniemi, Jarkko
2025

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ä
2025-12-10
Näytä kaikki kuvailutiedot
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-2025121011440
Tiivistelmä
Ohjelmointikielen helppokäyttöisyydellä on suora vaikutus ohjelman tuottamisen haastavuuteen, minkä takia se on otettava huomioon kielen valinnassa. Tässä kandidaatintyössä tutkitaan C++- ja Rust-ohjelmointikielten muistinhallinnan helppokäyttöisyyttä, sillä kielille on samanlaisia käyttökohteita ja kielten muistinhallintamallit poikkeavat toisistaan merkittävästi. Työn tavoitteena on selvittää, miten ohjelmointikielen helppokäyttöisyyttä voi mitata, mitä yhtäläisyyksiä ja eroja vertailtujen kielten välillä on ja onko yksi kielistä muistinhallinnaltaan merkittävästi helppokäyttöisempi kuin toinen.

Työ jakaantuu teoria- ja vertailuosioihin. Kirjallisuuskatsauksena toteutetussa teoriaosiossa esitellään ohjelmointikielen helppokäyttöisyyteen vaikuttavia tekijöitä. Lisäksi esitellään vertailtavat ohjelmointikielet ja niiden tärkeimmät erot erityisesti muistinhallinnan näkökulmasta. Vertailuosiossa pohditaan kielten muistinhallinnan helppokäyttöisyyttä esitettyjen helppokäyttöisyystekijöiden mukaisesti.

Ohjelmointikielen helppokäyttöisyyden osa-alueiksi tunnistetaan syntaksin selkeys, kääntäjän tai tulkin ilmoitukset, oppimiskäyrät, ohjelmointikielelle saatavilla oleva dokumentaatio sekä kielen ympärille muodostuneen käyttäjäyhteisön tarjoama apu. Modernin C++:n muistinhallinta perustuu älykkäiden osoittimien hyödyntämiseen ja vakiintuneiden ohjelmointikäytäntöjen noudattamiseen. Rustissa muistiturvallisuus saavutetaan omistuksiin pohjautuvan mallin turvallisuussäännöillä, joiden noudattamista valvotaan käännösaikana.

Vertailussa havaitaan, että C++ sallii enemmän implisiittistä käyttäytymistä, kun taas Rust vaatii selkeyttä eksplisiittisellä syntaksilla. Rustin kääntäjän todetaan antavan tarvittaessa yksityiskohtaisempaa tietoa esiintyneestä virheestä. Molempien kielten oppimiskäyriä pidetään haastavina, mutta eri tavoilla. C++:lla kirjoitettu ohjelma kääntyy helpommin, mutta muistinhallintavirheiden välttäminen on vaikeampaa. Vastaavasti Rustilla on haastavampaa saada ohjelma kääntymään, mutta lopputulos on muistiturvallisempi. Dokumentaatiota ja yhteisön apua todetaan olevan hyvin saatavilla molemmille kielille.

Vertailun tuloksista päätellään, että Rust on helppokäyttöisempi vaihtoehto silloin, kun muistiturvallisuus on ehdoton vaatimus ohjelmalle. Rustin turvallisuussääntöjä rikkova ohjelma ei käänny lainkaan, kun taas C++:ssa ajoaikaiset ongelmat ovat yleisempiä, vaikka ohjelma kääntyisi ongelmitta. C++:aa pidetään kuitenkin helppokäyttöisempänä yksinkertaisempien ohjelmien kirjoittamiseen, sillä ohjelma on helpompi saada kääntymään.
Kokoelmat
  • Kandidaatintutkielmat [10646]
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