Remove pagebreaks for now, I plan adding text
This commit is contained in:
parent
6fc4750cdc
commit
d12d412a84
3 changed files with 0 additions and 28 deletions
|
@ -11,8 +11,6 @@ Automaattiselle roskienkeruulle on aikaisemmin ollut vaihtoehtona vain manuaalin
|
|||
|
||||
Rustin yhtenä pääominaisuutena on mainostettu sen uudenlaista näkökulmaa muistinhallintaan: omistajuutta \cite{rust:ownership}. Siinä jokaisella arvolla on omistaja, ja kun omistaja menee näkyvyysalueen ulkopuolelle, niin menevät myös sen omistamat arvotkin, eli ne vapautetaan muistista. Arvojen omistajuutta voi siirtää joko pysyvästi tai väliaikaisesti lainaamalla.
|
||||
|
||||
\clearpage
|
||||
|
||||
\begin{code}
|
||||
\inputminted{Rust}{code/ownership.rs}
|
||||
\captionof{listing}{Omistajuus Rustissa}
|
||||
|
@ -54,8 +52,6 @@ Niissä tapauksissa, joissa tyypille voi olla useita vaihtoehtoja, tai silloin j
|
|||
|
||||
Koodiesimerkissä \ref{code:rust:type-notation} valitsin arvolle ''age'' tyypin u8, koska se on pienin kokonaislukutyypeistä ja sen arvo voi olla välillä 0-255. Näin voi potentiaalisesti vähentää ohjelman muistin käyttöä. Lisäksi tyypeillä voi myös karkeasti rajata funktion parametrien arvojen vaihteluväliä. Esimerkiksi jos on kirjoittamassa funktiota, joka ottaa parametrina henkilön iän, u8 on hyvä valinta, koska ihmisen ikä ei voi olla negatiivinen ja yksikään ihminen tuskin elää yli 255 vuotta.
|
||||
|
||||
\clearpage
|
||||
|
||||
Edellä mainittu tyyppi u8 on niin kutsuttu etumerkitön kokonaisluku (eng. \textbf{u}nsigned integer). Etumerkillisissä kokonaisluvuissa (eng. signed integer) käytetään yksi bitti merkkaamaan sitä, onko luku positiivinen vai negatiivinen. Etumerkittömissä luvuissa tätä ei tehdä, joten luku voi olla hieman isompi kuin etumerkillinen luku, mutta se ei voi olla negatiivinen.
|
||||
|
||||
\def\2^#1{\hbox to1.6em{$2^{#1}$\hss}}
|
||||
|
@ -109,8 +105,6 @@ Toisin kuin C- ja C++ -kielissä, Rustissa on oletuksena etumerkittömien kokona
|
|||
\label{code:rust:integer-overflow}
|
||||
\end{code}
|
||||
|
||||
\clearpage
|
||||
|
||||
\subsection{Muuttumaton data}
|
||||
Rustissa kaikki arvot ovat oletuksena muuttumattomia (engl.\ immutable). Jos muuttumattoman datan sijasta tarvitsee muuttujia (engl. mutable), voi käyttää avainsanaa ''mut'', esimerkiksi \mintinline{Rust}{let mut name = "Marko"}. Myös lainaukset suoritetaan oletuksena muuttumattomasti ja muutettavan lainauksen voi tehdä samalla avainsanalla, esimerkiksi \mintinline{Rust}{say_hello(&mut name)}
|
||||
|
||||
|
@ -122,8 +116,6 @@ Rustia kehitettäessä on aina ollut tavoitteena luotettavuus. Tämä tarkoittaa
|
|||
|
||||
Myös Rustin kääntäjään on panostettu paljon, ja virheiden sattuessa se on todella hyvä työkalu ohjelmoijalle. Se alleviivaa ongelmakohdat ja selittää lyhyesti, mistä ongelma johtuu. Jossain tapauksissa kääntäjä jopa antaa pieniä koodin pätkiä, mistä voi olla apua ongelman ratkaisemisessa [koodiesimerkki \ref{code:rust:help}].
|
||||
|
||||
\clearpage
|
||||
|
||||
\begin{code}
|
||||
\inputminted[linenos=false]{shell}{code/compiler-help}
|
||||
\captionof{listing}{Rustin kääntäjä auttaa unohtuneen importin lisäämisessä}
|
||||
|
@ -156,8 +148,6 @@ Yksi todella mielenkiintoinen ominaisuus Rustissa on makrot. Se on toiminnallisu
|
|||
\label{code:rust:macro}
|
||||
\end{code}
|
||||
|
||||
\clearpage
|
||||
|
||||
Makron sisällä suluissa olevat lauseet ovat verrattavissa Rustin ''match''-lauseeseen. Kun makron syöte vastaa jotakin näistä lauseista, hakasulkujen sisällä oleva koodi generoidaan. Makrossa käytetty ''println!()'' on myös itsessään makro, joka tulee Rustin ''std'' -kirjaston mukana.
|
||||
|
||||
\bigskip
|
||||
|
@ -179,8 +169,6 @@ Aloitin itsekin opiskelemaan Rustia vain hieman ennen tämän insinöörityön a
|
|||
\label{sect:paketinhallinta}
|
||||
Rustin paketinhallinta on toteutettu Cargo-nimisellä ohjelmalla. Sitä voi käyttää koko ohjelmiston elinkaaren ajan aina projektin luomisesta sen julkaisemiseen. Cargon käsittelemiä paketteja kutsutaan laatikoiksi (eng. crate), jotka julkaistaan crates.io \cite{rust:cratesio} pakettirekisterissä. Laatikot voivat myös olla riippuvaisia toisista laatikoista. Laatikon tiedot ja riippuvuudet määritetään Cargo.toml-tiedostossa [koodiesimerkki \ref{code:rust:cargo-toml}].
|
||||
|
||||
\clearpage
|
||||
|
||||
\begin{code}
|
||||
\inputminted{TOML}{code/Cargo.toml}
|
||||
\captionof{listing}{Projektin palvelinpuolen Cargo.toml}
|
||||
|
@ -194,8 +182,6 @@ WebAssembly \cite{webassembly:home} on kehitteillä oleva asiakaspuolen ohjelmoi
|
|||
|
||||
Kehittäjän ei ole tarkoitus kirjoittaa WebAssemblya itse, vaan käyttää työkaluja, joilla olemassa olevia ohjelmointikieliä voi kääntää WebAssemblyksi. Rust on tästä hyvä esimerkki, sillä WebAssembly on yksi sen kääntäjän natiiveista ''targeteista'', samalla tavalla kuin vaikka x86-prosessorit.
|
||||
|
||||
\clearpage
|
||||
|
||||
WebAssembly on siis ensisijaisesti binääriformaatti, mutta sen voi muuntaa myös tekstiformaatiksi, jonka nimi on WebAssembly text \cite{webassembly:text}. WebAssembly text käyttää syntaksissaan S-lausekkeita \cite{s-expression}. Se on notaatio puurakenteiselle datalle, joka on kehitetty Lisp-ohjelmointikieltä varten, joten WebAssembly text muistuttaa syntaksiltaan hyvin paljon Lispiä. WebAssembly textiä käytetään tilanteissa, joissa ihmisen täytyy ymmärtää, mitä koodissa tapahtuu. Tätä hyödynnetään esimerkiksi WebAssemblyn sisäisessä kehityksessä ja web-ohjelmistojen debuggereissa.
|
||||
|
||||
\bigskip
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue