Rubin | ||
![]() | ||
Dato for første version | 1995 | |
---|---|---|
Paradigmer | Fortolket , objekt , bydende nødvendigt , samtidig , funktionel | |
Forfatter | Yukihiro matsumoto | |
Udviklere | Yukihiro Matsumoto og bidragydere | |
Sidste version | 3.0.1 (5. april 2021) | |
Indtastning | Stærk , dynamisk | |
Påvirket af | Eiffel , Lisp , Smalltalk , Perl , Python , Dylan , Ada og CLU | |
Påvirket | D sprog , Groovy , Perl 6 | |
Implementeringer | Ruby, YARV , Ruby MRI , JRuby , XRuby, Rubinius , Cardinal, Gardens Point Ruby.NET, IronRuby , MacRuby, mruby android-ruby | |
Skrevet i | VS | |
Operativ system | Tværplatform | |
Licens | Ruby License , GNU General Public License version 2 og BSD 2-klausuler ( d ) | |
Internet side | www.rubylang.org | |
Filudvidelse | rb og rbw | |
Ruby er et gratis programmeringssprog . Det fortolkes , objektorienteret og multi- paradigme . Sproget blev standardiseret i Japan i 2011 ( JIS X 3017: 2011) og i 2012 af Den Internationale Standardiseringsorganisation (ISO 30170: 2012).
Yukihiro "Matz" Matsumoto er skaberen af Ruby. Frustreret over hans erfaring inden for Smalltalk og Lisp-udvikling begyndte han at designe et nyt sprog i 1993 under Emacs , hvorefter han udgav en første version i 1995 under en gratis licens . Han fortsætter siden de nye versioner.
Større versionændringer har fundet sted:
Siden ankomsten af en engelsktalende dokumentation og Ruby on Rails -webrammen i 2004, har Ruby oplevet en vis dille, som er fortsat med at vokse indtil 2008 i programmeringsverdenen, så en langsom erosion, hvis vi dømmer efter hans Tiobe-indeks .
Ruby er stærkt objektorienteret og kommer derfor tæt på Smalltalks objektparadigme :
På trods af dette udelukkende objekt- aspekt er proceduremæssig programmering mulig og hyppig. Ruby bruger en simpel syntaks , inspireret af Eiffel og Ada .
Sprog præsenteres ofte for at undgå ubehagelige overraskelser så meget som muligt ifølge princippet om mindst overraskelse . Men da det ikke er muligt at undgå alle brugeres overraskelse , specificerer Yukihiro Matsumoto , at han frem for alt søger at undgå sin egen overraskelse. Jo mere vi kender sproget, jo mere kender vi forfatterens logik, og jo mindre er vi overraskede over de funktionaliteter, vi opdager.
De vigtigste funktioner er:
Den officielle tolk , Ruby MRI , fungerer på mange operativsystemer : UNIX , Linux , Microsoft Windows , MS-DOS , OS X , OS / 2 , ReactOS , AmigaOS osv. Det frigives under GNU GPL gratis dobbelt licens og Ruby licens.
Ruby leveres med irb , en interaktiv kommandotolker til grundigt at teste, hvordan sproget fungerer. Der er en web- udgave af IRB til test Ruby i en browser.
Siden 1 st januar 2007, udviklingen af Ruby (1.9) er baseret på YARV- tolk skrevet af Koichi Sasada . Denne nye tolk bringer en bemærkelsesværdig gevinst i ydeevne.
Udover YARV er der flere andre Ruby-tolke:
JRuby det er skrevet i Java og fortolker kildekoden skrevet i Ruby direkte. XRuby Det konverterer Ruby-kode til Java bytecode og er hurtigere på nogle benchmarks end version 1.8.5 af den officielle tolk. Rubinius En forenklet virtuel maskine, inspireret af Smalltalk-80 , implementeret i Ruby selv. Kardinal en tolk, der kører på papegøje . Gardens Point Ruby.NET En tolk, der kører på .NET framework . IronRuby en compiler, der kører på DLR i .NET framework . Ruby til .Net en kompilator, der kører på CLR i .NET framework, som er blevet opgivet til fordel for IronRuby . MacRuby OS X specifik Ruby 1.9 implementering , der kører på toppen af Objective-C runtime , så indfødte brug af Cocoa komponenter , i modsætning RubyCocoa bindinger:. Truffleruby Understøttet og udviklet af Oracle, er det en implementering af Ruby-sproget på GraalVM, hvilket giver ydeevne bedre end MR. Imidlertid forhindrer implementeringsfejl installationen af nogle populære perler .
Der er også en ikke-fri løsning, der markedsføres af HipByte baseret på arbejdet i MacRuby- projektet , kaldet RubyMotion oprettet af Laurent Sansonetti
Version 2.0 giver dig mulighed for at oprette grafikapplikationer til macOS og iOS .
Ruby har en programmeringsgrænseflade på C-sprog, der gør det muligt at integrere den i anden software . Rubin kan især anvendes i:
RPG Maker -software til oprettelse af videospil indeholder i sine XP- og VX-versioner et bibliotek kaldet RGSS, Ruby Game Scripting System, der tillader brug af scripts i Ruby.
Der er mange biblioteker med funktioner, der kan føjes til sproget. Disse bibliotekers historiske lager er Ruby Application Archive (RAA). Den indeholder yderligere funktioner til Ruby, såsom klasse- og modulbiblioteker, men også udvidelser til brug af tredjepartsbiblioteker.
Den RAA indeholder også software skrevet i Ruby. Blandt denne software finder vi især Rubygems, som er et emballage- og installationsværktøj til Ruby-udvidelser. Det muliggør hurtig implementering af Ruby-biblioteker og -programmer.
Over tid er Rubygems perle- database blevet benchmark i bibliotekslagring for Ruby (over 49 milliarder downloads) - gennem Bundle- værktøjet r (også udviklet i Ruby) downloades projektafhængigheder som standard fra Rubygems .
Den Rubyforge hjemmeside var også en stor række programmer og biblioteker skrevet i Ruby, dog lukket af dets udvikler i 2014.
Den klassiske Hello-verden :
puts 'Hello World!'Brug af genstande:
# Tout est objet, même les nombres: -199.abs # 199 'ruby is cool'.length # 12 'Rick'.index 'c' # 2 "Nice Day Isn't It?".downcase.split(//).sort.uniq.join # " '?acdeinsty" module AnimalSkills def eat puts "I'm eating !" end def move puts "I'm moving !" end def express; puts "I'm expressing !" end end class Animal include AnimalSkills # mixin @@name = 'an animal' # variable de classe def initialize(size, weight, color) # initialisation des variables d'instance @size = size.to_i @weight, @color = weight.to_i, color.to_s end def describe puts "I'm #{@@name} !" puts "I'm #{@size} meter tall, I weigh #{@weight} kilograms and I'm " + @color end end class Zebra < Animal # héritage @@name = 'a zebra' # rédéfinition de la variable de classe: maintenant tous les animaux sont des zèbres ! def initialize(size, weight, color = 'black and white') # surcharge super # appel de la méthode de la classe mère (Animal) end end z = Zebra.new(1, 50) z.describe # => I'm a zebra ! / I'm 1 meter tall, I weigh 50 kilograms and I'm black and white z.eat # => I'm eating !