Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Web Analytics
Cookie Policy Terms and Conditions Ruby – Wikipedia

Ruby

Wikipedia

Tämä artikkeli käsittelee ohjelmointikieltä. Ruby on myös egyptiläinen laulaja.
Paradigma olio, proseduraalinen, funktionaalinen
Tyypitys vahva, dynaaminen ("duck typing")
Yleinen suoritusmalli tulkattava
Muistinhallinta roskienkeruu
Julkaistu 1995
Kehittäjä Yukihiro Matsumoto
Viimeisin vakaa versio 1.8.6
Viimeisin julkaisupäivä 12. maaliskuuta 2007
Viimeisin kehitysversio -
Merkittävimmät toteutukset Ruby, JRuby
Vaikutteet Ada, Perl, Smalltalk, Python, Lisp, Dylan ja CLU
Vaikuttanut
Murteet
Käyttöjärjestelmä alustariippumaton
WWW-sivut www.ruby-lang.org
Uutisryhmä comp.lang.ruby

(muokkaa)

Ruby on tulkattava, dynaaminen ja dynaamisesti tyypittävä oliopohjainen ohjelmointikieli. Ruby muistuttaa muista hyvin tunnetuista ohjelmointikielistä ennen kaikkea Perliä ja Pythonia.

Sisällysluettelo

[muokkaa] Historia

Yukihiro "Matz" Matsumoto alkoi kirjoittaa Ruby-kieltä 24. helmikuuta 1993 ja julkaisi sen vuonna 1995. Uusin vakaa versio on 1.8.5, joka julkaistiin elokuussa 2006. Myös kehityshaara 1.9, joka tähtää versioon 2.0, on ollut pitkään kehitteillä.

[muokkaa] Periaatteet

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.

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.

[muokkaa] Ominaisuuksia

Ruby on puhdas oliopohjainen ohjelmointikieli. Kielen kaikki elementit ovat objekteja, myös funktiot ja numerot. Esimerkki:

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 kolmeKertaa
  yield
  yield
  yield
end
kolmeKertaa 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ä.

Ruby on monessa suhteessa mielenkiintoinen kieli, mutta sitä ei pidetä vielä aivan yhtä valmiina ja helposti opittavana kuin Pythonia, jonka kanssa se lähinnä kilpailee. Toisaalta 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 meta-ohjelmointiominaisuuksien vuoksi.

[muokkaa] Katso myös

[muokkaa] Aiheesta muualla

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu