For faster navigation, this Iframe is preloading the Wikiwand page for Ruby.

Ruby

Wikipediasta

Tämä artikkeli käsittelee ohjelmointikieltä. Nimen muita merkityksiä on lueteltu täsmennyssivulla.
Ruby
Paradigma olio, proseduraalinen, funktionaalinen
Tyypitys vahva, dynaaminen (”duck typing”)
Yleinen suoritusmalli tulkattava
Muistinhallinta roskienkeräys
Julkaistu 1995
Kehittäjä Yukihiro Matsumoto
Vakaa versio 3.3.5 ()[1]
Merkittävimmät toteutukset JRuby
Vaikutteet Ada, Perl, Smalltalk, Python, Lisp, Dylan ja CLU
Käyttöjärjestelmä alustariippumaton
Verkkosivu ruby-lang.org
Uutisryhmä comp.lang.ruby

Ruby on tulkattava, dynaaminen ja dynaamisesti tyypittävä oliopohjainen ohjelmointikieli. Rubyyn ovat eniten vaikuttaneet Lisp, Smalltalk ja Perl.[2] Ruby muistuttaa paljon muita tunnettuja ohjelmointikieliä, ennen kaikkea Smalltalkia, Pythonia ja Perliä.[2]

Yukihiro Matsumoto alkoi kehittää Ruby-kieltä 24. helmikuuta 1993 ja julkaisi sen vuonna 1995.lähde?

Matsumoto aloitti kielen kehittämisen NEWS-OS:llä (Sony NEWS-työasemissa), mutta siirtyi myöhemmin SunOS:lle ja lopulta Linuxille.[3]

Matsumoton mukaan ohjelmointikieli on ohjelmoijalle käyttöliittymä ohjelmakoodin tekoon ja siksi sen pitäisi noudattaa käyttöliittymäsuunnittelun periaatteita. Näitä ovat Matsumoton mukaan ytimekkyys, johdonmukaisuus ja joustavuus.[2]

Ytimekkyys tarkoittaa, että Rubylla pystyy antamaan voimakkaita komentoja lyhyesti. Johdonmukaisuus tarkoittaa, että Ruby toimii niin kuin ohjelmoija olettaa sen toimivan. Kun on oppinut Rubyn kantavat periaatteet, niitä pystyy soveltamaan mahdollisimman monissa tilanteissa. Rubyn katsotaan noudattavan vähäisimpien yllätysten periaatetta, jonka mukaan kielessä tulee olla vähän yllätyksiä aiheuttavia piirteitä. Lisäksi Rubyyn on lainattu muista ohjelmointikielistä hyviksi osoittautuneita ominaisuuksia sellaisinaan, joten Rubyn opiskelun pitäisi olla muita kieliä tuntevalle helppoa. Joustavuus tarkoittaa, että käyttäjä voi muokata Rubya mahdollisimman vapaasti omien tarpeidensa mukaiseksi. Kielen ydin, jota ei voi muuttaa, on pyritty pitämään niin pienenä kuin mahdollista.

Ominaisuuksia

[muokkaa | muokkaa wikitekstiä]

Ruby on puhdas oliopohjainen ohjelmointikieli joka on suunniteltu tekemään ohjelmoinnista hauskaa. Ruby tukee myös proseduraalisia ja funktionaalisia ohjelmointityylejä.[2]

Merkittäviä ominaisuuksia ovat puhdas oliopohjaisuus, siisti lausekepohjainen syntaksi, dynaaminen tyypitysjärjestelmä ja ”ankka-tyypitys” (”duck-typing”)[4], sekä metaohjelmointiominaisuudet.

  • Täysin oliopohjainen – kaikki elementit ovat objekteja. Yksinkertainen perintä ja modulaarinen perintä (”mix-ins”) moninperinnän (”multiple inheritance”) sijaan.
  • Joustava dynaaminen tyypitysjärjestelmä asettaa tyypit muuttujien arvoille ja tarkistaa tyypit ajonaikaisesti.
  • Monimuotoinen ankka-tyypitys tyypittää oliot niiden ominaisuuksien mukaan – ”jos se kävelee kuin ankka, vaakkuu kuin ankka ja näyttää ankalta, se on varmasti ankka!”
  • Niukka syntaksi minimoi syntaksihälyn ja tarjoaa pohjan täsmäkielille (DSL).
  • Syntaksi kohtelee kaikkia ilmaisuja lausekkeina (palauttavat arvon evaluoiduttuaan).
  • Metaohjelmoinnin mahdollistavat olioiden ajonaikainen muokkaus ja itseheijastus.[2]

Kielen kaikki elementit ovat objekteja, myös funktiot ja numerot. Esimerkki:

 1.class # => Fixnum: numero 1 on olioluokan Fixnum instanssi
 7.times do
   print "+"
 end
 # tulostaa seitsemän +-merkkiä.

Lohkot ovat Rubyssa tärkeä käsite. Niiden avulla toteutetaan muun muassa iteraatio, ja ne ovat hyvin käteviä luotaessa takaisinkutsumetodeja. Lohko voidaan määritellä joko symbolien { } avulla tai do ... end -rakenteella:

 [ 3, 1, 7, 0 ].sort.reverse.each do |i|
   print i*i
 end
 # tulostaa "49910"

Yllä olevassa lista ensin järjestetään ja käännetään ja lopuksi arvot sijoitetaan yksi kerrallaan i:hin ja suoritetaan print i*i.

Jokainen Rubyn metodi käsittää implisiittisenä parametrina lohkon, jota käyttäjä voi kutsua metodin sisällä yield-lauseen avulla. Esimerkiksi seuraava lohko suoritetaan kolme kertaa:

 def kolme_kertaa
   yield
   yield
   yield
 end
 kolme_kertaa do
   print "Heippa"
 end

Monet asiat Rubyssa näyttävät tavanomaiselta ohjelmointikieleltä, mutta todellinen implementaatio vaatii niiden muuttamista oliomallin mukaiseksi sisäisesti (usein ohjelmointikielissä tätä kutsutaan syntaktiseksi sokeroinniksi). Esimerkiksi "1+1" on vain merkintä olion "1" metodikutsulle "+" argumenttina toinen olio "1". Sama pätee Rubyssa moneen asiaan, mikä voi jättää aloittelijalle hieman sekavan kuvan kielestä.

Rubyssa voi tulostaa merkkijonon moneen kertaan kertolaskun avulla esim. "a"*3 tulostaa aaa, 3*"a" ei kuitenkaan toimi.

Ruby on monessa suhteessa mielenkiintoinen kieli, ja selkeän syntaksin vuoksi sen alkeita pidetään melko helppoina oppia. Ruby on kypsä myös tuotantokäyttöön, josta hyvänä esimerkkinä sen käyttö suositun mikroblogipalvelun Twitterin toteuttamiseen. Rubylla voi kirjoittaa koodia, jossa on paljon vähemmän jätekuormaa, ja yleisesti tehdyille toiminnoille on olemassa oikopolut samaan tapaan kuten Perlissäkin.

Kyky omaksua kieli riippuu ehkä eniten ohjelmointitaustasta — aloittelijalle Ruby voi olla yhtä helppo tai vaikea kuin mikä hyvänsä muu skriptikieli, Perlillä ohjelmoinut kokee olonsa luultavasti heti kotoisaksi lausekeilmaisujen vuoksi, kun taas Pythonin kannattaja saattaa tuntea vastenmielisyyttä kielen epäortogonaalisuutta ja TIMTOWTDI (There Is More Than One Way To Do It)-filosofiaa kohtaan. Toisaalta moni Ruby-käyttäjä on siirtynyt Python-leiristä Rubyn oliopuhtauden ja huomattavasti selkeämpien metaohjelmointiominaisuuksien vuoksi.

  1. Ruby 3.3.5 Released, (viitattu ). Tieto on haettu Wikidatasta.
  2. a b c d e The Ruby programming language, David Flanagan, Yukihiro Matsumoto, ISBN 9780596516178
  3. Ruby: a new language helmikuu 2000. IBM. Arkistoitu . Viitattu 27.10.2019. (englanniksi)
  4. Consider static typing codon.com. 5.2.2015. Viitattu 23.2.2020. (englanniksi)

Aiheesta muualla

[muokkaa | muokkaa wikitekstiä]
{{bottomLinkPreText}} {{bottomLinkText}}
Ruby
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?