{"id":8312,"date":"2020-12-16T09:24:26","date_gmt":"2020-12-16T07:24:26","guid":{"rendered":"https:\/\/atostek.com\/?p=8312"},"modified":"2020-12-16T10:19:00","modified_gmt":"2020-12-16T08:19:00","slug":"ruosteohjelmointia","status":"publish","type":"post","link":"https:\/\/atostek.com\/ruosteohjelmointia\/","title":{"rendered":"Ruosteohjelmointia"},"content":{"rendered":"

Rust on nuori ohjelmointikieli: ei aivan uudenkiilt\u00e4v\u00e4, mutta ei mill\u00e4\u00e4n tavalla <\/strong>vanha tai ruosteinen.<\/strong><\/p>\n

Rust sai alkunsa Mozillalla 2010-luvulla, ja se n\u00e4ytti kelpoisuutensa Firefoxin ytimess\u00e4. Sill\u00e4 kirjoitetut osat tekiv\u00e4t selaimesta nopean. Ohjelmointikielest\u00e4 oli hy\u00f6ty\u00e4 rinnakkaisten taittoalgoritmien k\u00e4ytt\u00f6\u00f6notossa ja n\u00e4yt\u00f6nohjaimen hy\u00f6dynt\u00e4misess\u00e4.<\/p>\n

Rustin k\u00e4ytt\u00f6 teki selaimesta my\u00f6s vakaamman ja turvallisemman. Mozilla Hacks -kirjoituksessaan Diane Hosfelt kertoi k\u00e4yneens\u00e4 l\u00e4pi kaikki Firefoxin taitto- ja piirtomoottorin tietoturvabugit julkaisuvuodesta 2002 alkaen — niit\u00e4 oli kaikkiaan 69 kappaletta. H\u00e4n kirjoittaa, ett\u00e4 51 n\u00e4ist\u00e4 bugeista ei olisi ollut mahdollisia, jos moottori olisi alunpit\u00e4en tehty Rustilla<\/a>.<\/p>\n

Rustin turvallisuus on sellaista, ett\u00e4 ohjelmoijalle tulee luottavainen olo, ett\u00e4 on vaikeaa tai mahdotonta saada aikaan muissa kieliss\u00e4 tyypillisi\u00e4 virheit\u00e4. Yleens\u00e4 ohjelmoinnissa muistinhallintavirheiden v\u00e4ltt\u00e4minen on vaikeaa, ja esimerkiksi C++:ssa virheisiin on aivan liian monia mahdollisuuksia.<\/p>\n

Mit\u00e4 Rust tarjoaa?<\/h2>\n

Stack Overflow:n kehitt\u00e4j\u00e4kyselyss\u00e4 Rust on \u00e4\u00e4nestetty rakastetuimmaksi ohjelmointikieleksi<\/a> joka kerta vuodesta 2016 l\u00e4htien.<\/p>\n

Rust vetoaa kehitt\u00e4jiin tarjoamalla jotain tuttua. Kaari- ja aaltosulkujen tuttu rytmi tuo turvallisen olon monille C:n ja C++:n -sukuisten kielien osaajille.<\/p>\n

Minulle Rustissa juuri ik\u00e4vint\u00e4 on kaari- ja aaltosulkeiden tulva ja muutoinkin tarpeettoman pitk\u00e4piim\u00e4inen muoto. Kun on kerran p\u00e4\u00e4sty tekem\u00e4\u00e4n ohjelmointikieli puhtaalta p\u00f6yd\u00e4lt\u00e4, olisi voinut Haskellista kopioida muiden hyvien ominaisuuksien lis\u00e4ksi my\u00f6s minimalistisen syntaksin. Haskelissa kun on varsin hyvin onnistuttu tekem\u00e4\u00e4n tilaa olennaiselle j\u00e4tt\u00e4m\u00e4ll\u00e4 ylim\u00e4\u00e4r\u00e4inen h\u00e4ly pois.<\/p>\n

Kun onnistun p\u00e4\u00e4sem\u00e4\u00e4n ulkoisten asioiden yli, ihastelen kielen parempia puolia. Parasta on, ett\u00e4 Rust keskittyy nopeuteen, turvallisuuteen ja rinnakkaisuuteen.<\/strong> Juuri sellaisiin asioihin joilla on v\u00e4li\u00e4, kun haluan rakentaa liikkuvia robotteja.<\/p>\n

Rust tarjoaa j\u00e4m\u00e4k\u00e4n staattisen tyypityksen ja selke\u00e4n semantiikan. Rust ottaa vahvan kannan m\u00e4\u00e4rittelem\u00e4t\u00f6nt\u00e4 toimintaa kohtaan: sit\u00e4 ei hyv\u00e4ksyt\u00e4. C++:ssa m\u00e4\u00e4rittelem\u00e4t\u00f6n toiminta luuraa aina varjoissa, josta se saattaa p\u00e4\u00e4st\u00e4 vapaaksi huonona hetken\u00e4. Sellainen yll\u00e4pit\u00e4\u00e4 jatkuvaa pient\u00e4 ahdistusta.<\/p>\n

Rinnakkaisuuden kanssa Rust on tarkka, mutta huolellinen. K\u00e4\u00e4nt\u00e4j\u00e4 tarkistaa, ettei koodissa vahingossa s\u00f6rkit\u00e4 toiselle s\u00e4ikeelle kuuluvaa muistia, eik\u00e4 tehd\u00e4 muitakaan vastaavia pikkuvirheit\u00e4. Vaikeasti selvitett\u00e4vien rinnakkaisuusvirheiden mahdollisuus pienenee automaattisesti.<\/p>\n

Kielen hienoja ominaisuuksia kehitelt\u00e4ess\u00e4 nopeudesta ei ole suostuttu tinkim\u00e4\u00e4n. Sen sijaan koodin kirjoittaja joutuu ajoittain v\u00e4\u00e4nt\u00e4m\u00e4\u00e4n k\u00e4\u00e4nt\u00e4j\u00e4n kanssa, ett\u00e4 saa tahtonsa l\u00e4pi, ja lopulta jompi kumpi taipuu. Kannattaa muistaa, ett\u00e4 k\u00e4\u00e4nt\u00e4j\u00e4 on tiukkapipo hyv\u00e4st\u00e4 syyst\u00e4. Se haluaa varmistaa, ettei tuotteessa ole virheit\u00e4, jotka konekin olisi osannut v\u00e4ltt\u00e4\u00e4.<\/p>\n

Rustin k\u00e4ytt\u00f6 kasvaa koko ajan. Siit\u00e4 tykk\u00e4\u00e4v\u00e4t niin harrastajat, tieteentekij\u00e4t, j\u00e4rjestelm\u00e4kehitt\u00e4j\u00e4t kuin pelikoodaajatkin. Jotkut ovat jo ilmoittaneet, etteiv\u00e4t en\u00e4\u00e4 tule koodamaan C++:lla.<\/p>\n

Marraskuussa Mozilla Foundationin suunnatessaan voimavarojaan uudelleen, Rustin yll\u00e4pito siirtyi Linux Foundationille. Uskon, ett\u00e4 Rust saa sielt\u00e4 hyv\u00e4n kodin, ja j\u00e4\u00e4n mielenkiinnolla seuraamaan kielen kehityst\u00e4.<\/p>\n

Lue my\u00f6s:<\/strong>
\n\u00bb
RustDDS \u2013 Data Distribution Service implemented in Rust<\/a><\/p>\n


\n
\n
\n

Harri J\u00e4rvi<\/strong>
\nOhjelmistoarkkitehti<\/em><\/p>\n

 <\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"

Rust on nuori ohjelmointikieli: ei aivan uudenkiilt\u00e4v\u00e4, mutta ei mill\u00e4\u00e4n tavalla vanha tai ruosteinen. Rust sai alkunsa Mozillalla 2010-luvulla, ja se n\u00e4ytti kelpoisuutensa Firefoxin ytimess\u00e4. Sill\u00e4 kirjoitetut osat tekiv\u00e4t selaimesta nopean. Ohjelmointikielest\u00e4 oli hy\u00f6ty\u00e4 rinnakkaisten taittoalgoritmien k\u00e4ytt\u00f6\u00f6notossa ja n\u00e4yt\u00f6nohjaimen hy\u00f6dynt\u00e4misess\u00e4. Rustin k\u00e4ytt\u00f6 teki selaimesta my\u00f6s vakaamman ja turvallisemman. Mozilla Hacks -kirjoituksessaan Diane Hosfelt kertoi k\u00e4yneens\u00e4…<\/p>\n","protected":false},"author":4,"featured_media":8283,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false},"categories":[104],"tags":[115,199,234,233],"_links":{"self":[{"href":"https:\/\/atostek.com\/wp-json\/wp\/v2\/posts\/8312"}],"collection":[{"href":"https:\/\/atostek.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atostek.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atostek.com\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/atostek.com\/wp-json\/wp\/v2\/comments?post=8312"}],"version-history":[{"count":0,"href":"https:\/\/atostek.com\/wp-json\/wp\/v2\/posts\/8312\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/atostek.com\/wp-json\/wp\/v2\/media\/8283"}],"wp:attachment":[{"href":"https:\/\/atostek.com\/wp-json\/wp\/v2\/media?parent=8312"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atostek.com\/wp-json\/wp\/v2\/categories?post=8312"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atostek.com\/wp-json\/wp\/v2\/tags?post=8312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}