Ruby (gjuhë programuese)
Ruby është një gjuhë programuese me qëllime të përgjithshme, dinamike, reflektive dhe eorientuar në objekt. U dizajnua dhe zhvillua në mesin e viteve 1990 nga Yukihiro "Matz" Matsumoto në Japoni.
Sipas krijuesit të saj, Rubi u ndikua nga Perl, Smalltalk, Eiffel, Ada, dhe Lisp.[1] Ajo mbështet disa paradigma të programimit, duke përfshirë funksionale, e orientuar në objekt, dhe e domosdoshme. Ajo gjithashtu ka edhe një sistem lloji dinamik dhe menaxhim memorie automatik.
Historia
RedaktoKoncepti i hershëm
RedaktoRuby u konceptua më 24 shkurt të vitit 1993. Në vitin 1999, në një postim të 'ruby-talk', autori i Ruby Yukihiro Matsumoto përshkruan disa nga idetë e tij të hershme në lidhje me gjuhën:[2]
Matsumoto përshkruan dizajnin e Ruby sikur të jetë një gjuhë Lisp e thjeshtë në thelb, me një sistem objekti sikur ai i Smalltalk, blloqe të frymëzuara nga funksione të rendit më të lartë dhe dobi praktike si ajo e Perl.[3]
Emri "Ruby"
RedaktoEmri "Ruby" origjinoi gjatë një bisede online ndërmjet Matsumoto dhe Keiju Ishitsuka me 24 shkurt, 1993, para se të ishte shkruar sado pak kod për gjuhën.[4] Fillimisht dy emrat e propozuar ishin: "Koral" dhe "Ruby". Matsumoto zgjodhi këtë të fundit në një e-mail më të vonë te Ishitsuka. Matsumoto më vonë vuri në dukje një faktor në zgjedhjen e emrit "Ruby" - ishte 'guri i lindjes' (xhevahiri) i njërit prej kolegëve të tij.[5][6]
Publikimi i parë
RedaktoLëshimi i parë publik i Ruby 0.95 u shpall në grupe lajmesh të brendshme japoneze me 21 dhjetor, 1995.[7][8] Më pas tri versione tjera të Ruby u lëshuan në dy ditë.[4] Lëshimi përkoi me nisjen e listës postuese ruby-list, e cila ishte lista e parë postuese për gjuhën e re programuese.
Veç të pranishme në këtë fazë të zhvillimit ishin shumë tipare të njohura në lëshimet e mëvonshme të Ruby, duke përfshirë dizajnin e orientuar në objekt, klasat me trashëgimi, mixins, iterators, closures, menaxhimit të përjashtimeve dhe mbledhjes së plehrave.[9]
Publikimet e hershme
RedaktoPas publikimit të Ruby 0.95 në vitin 1995, disa versione stabile të Ruby u publikuan në vitet në vazhdim:
- Ruby 1.0: 25 dhjetor, 1996[4]
- Ruby 1.2: dhjetor 1998
- Ruby 1.4: gusht 1999
- Ruby 1.6: shtator 2000
Në vitin 1997, artikulli i parë në lidhje me Ruby u publikua në Web. Në të njëjtin vit, Matsumoto u punësua nga netlab.jp për të punuar në Ruby si zhvillues me orar të plotë.[4]
Në vitin 1998, Arkiva e Aplikacioneve të Ruby u fillua nga Matsumoto, së bashku me një faqe hyrëse të thjeshtë, në anglisht, për Ruby.[4]
Në vitin 1999, lista e parë postuese në gjuhën angleze ruby-talk filloi, gjë që sinjalizoi një rritje në interesimin rreth gjuhës jashtë Japonisë.[10] Po këtë vit, Matsumoto dhe Keiju Ishitsuka shkruan librin e parë rreth Ruby, Gjuha Skriptuese e orientuar në objekt Ruby (オブジェクト指向スクリプト言語 Rubin), e cila u botua në Japoni në tetor të vitit 1999. Ajo do të ndiqej nga rreth 20 libra rreth Ruby në fillim të viteve 2000, të publikuara në japonisht.[4]
Në vitin 2000, Ruby ishte më i popullarizuar se Python në Japoni.[11] Në shtator të vitit 2000, libri i parë anglisht Programming Ruby u botua, i cili më vonë u lëshua për publikun, duke zgjeruar edhe më tej miratimin e Ruby mes folësve të anglishtes. Në fillim të vitit 2002, lista postuese ruby-talk në anglisht po merte më shumë mesazhe se ruby-talk në japonisht, duke demonstruar ngritjen e popullarizimit të Ruby në botën anglisht-folëse.
Ruby 1.8
RedaktoRuby 1.8 u lëshua fillimisht në gusht të vitit 2003, ishte i qëndrueshëm për një kohë të gjatë, dhe doli në pension në qershor të vitit 2013.[12] Edhe pse i kundërshtuar, ka ende kod që është i bazuar në të. Ruby 1.8 është vetëm pjesërisht i pajtueshëm me Ruby 1.9.
Ruby 1.8 ka qenë subjekt i disa standardeve të industrisë. Specifikimet e gjuhës për Ruby u zhvilluan nga Qendra për Promovimin e Standardeve të Hapura e Agjensisë për Promovimin e Teknologjisë Informative (agjensi e qeverisë Japoneze) për paraqitje te Komiteti Japonez i Standardeve Industriale (JISC) dhe pastaj te Organizata Ndërkombëtare për Standardizim (ISO). U pranua si Standard Industrial Japonez (JIS X 3017) në vitin 2011,[13] dhe si standard ndërkombëtar (ISO/IEC 30170) në vitin 2012.[14]
Rreth vitit 2005, interesi në gjuhën Ruby u rrit me Ruby on Rails, web framework i shkruar në Ruby. Rails shpesh kreditohet me rritjen e popullarizimit të Ruby[15]
Ruby 1.9
RedaktoRuby 1.9 u lëshua në dhjetor të vitit 2007. Efektiv me Ruby 1.9.3, lëshuar me 31 tetor, 2011,[16] Ruby kaloi nga të qenurit dyfish-i licensuar nën Licensën Ruby dhe GPL për të qenë i dyfishtë-i licensuar nën Licensën Ruby dhe licensën dy-pikëshe BSD.[17] Miratimi i 1.9 u ngadalësua nga ndryshimet e 1.8 që kërkuan shumë librari të popullarizuara të palëve të treta të rishkruhen.
Ruby 1.9 paraqet shumë ndryshime të dukshme ndaj serisë 1.8.[18] Shembuj:
- bllokimi i variablave lokale (variablat që janë lokale në bllokun në të cilin janë të deklaruara)
- një sintaksë shtesë lambda:
- enkodimet e karaktereve per-string mbështeten
- API me prizë (gropë) të re (mbështetje IPv6)
require_relative
importo sigurinë
Ruby 1.9 ka dalur nga përdorimi që nga 23 shkurti i vitit 2015,[19] dhe nuk do të marrë më rregullime të sigurisë dhe problemeve. Përdoruesit këshillohen të marrin versione më të reja.
Ruby 2.0
RedaktoRuby 2.0 shtoi disa karakteristika të reja, duke përfshirë:
- method keyword arguments,
- një metodë të re,
Moduli#prepend
, për zgjerimin e një klase, - një literale të re për krijimin e një grupi të simboleve,
- API të re për vlerësimin dembel të Enumerableve, dhe
- një konventë të re për përdorimin e #to_h për të kthyer objektet në Hashes.[20]
Ruby 2.0 ka për qëllim të jetë plotësisht e pajtueshme me Ruby 1.9.3. Qysh prej lëshimit zyrtar 2.0.0 në 24 shkurt të vitit 2013, ka pasur vetëm pesë mospërshtatje (të vogla).[21]
Ka qenë jashtë përdorimit qysh nga 22 shkurti i vitit 2016 dhe nuk do të marrë më rregullime të sigurisë dhe problemeve. Përdoruesit këshillohen të marrin versione më të reja.
Ruby 2.1
RedaktoRuby 2.1.0 u lëshua në Ditën e Krishtlindjeve në vitin 2013.[22] Lëshimi përfshin shpejtime, rregullime të problemeve, dhe librari të reja.
Duke filluar me 2.1.0, politika e verzionimit të Ruby është më shumë si verzionim semantik .[23] Edhe pse të ngjashme, politika e verzionimit të Ruby nuk është e përshtatshme me verzionimin semantik:
Ruby | Verzionimi Semantik |
---|---|
KRYESORE: Lëshohet kur ka ndryshime mospërshtatjeje që nuk mund të lëshohen në të vogla. Rezervohet për raste të veçanta. |
KRYESORE: Lëshohet kur bëhen ndryshime të papërshtatshme API |
Të vogla: lëshohet çdo Krishtlindje, mund të jenë të papërshtatshme me API. | Të vogla: Lëshohet kur shton funksionalitet në një mënyrë backwards-compatible |
Të vockla: Rregullime në siguri ose probleme që mirëmbajnë përshtatshmërinë e API. Mund të jetë më shumë se 10 ( si 2.1.11), dhe del çdo 2-3 muaj. | PATCH: Lëshohet kur bën rregullime në bugs që janë backwards-compatible |
PATCH: Numri i problemeve qysh nga lëshimi i fundit i të vogla (rikthehet në 0 kur lëshohet të vogla). | - |
Verzionimi semantik gjithashtu mundëson etiketa shtesë për para-lëshime.
Ruby 2.2
RedaktoRuby 2.2.0 u lëshua në Ditën e Krishtlindjeve në vitin 2014.[24] Lëshimi përfshin shpejtime, rregullime të problemeve, bibloteka të reja dhe heqjen e disa API-ve të kundërshtuara. Ajo që ia vlen të përmendet është se Ruby 2.2.0 prezanton ndryshime në trajtimin e memories - një mbledhës plehrash më të madh, përkrahje për mledhjen e plehrave të simboleve dhe opsionin për të përpiluar drejtpërdrejt kundër jemalloc. Gjithashtu përmban përkrahje eksperimentale duke përdorur vfork(2) me system() dhe spawn(), dhe përkrahje të shtuar për specifikimin Unicode 7.0
Karakteristikat që janë nxjerrur jashtë përdorimit ose janë fshirë përfshijnë callcc, DL library, Digest::HMAC, lib/rational.rb, lib/complex.rb, GServer, Logger::Application si dhe funksione C API të ndryshme. [25]
Ruby 2.3
RedaktoRuby 2.3.0 u lëshua me 25 dhjetor të vitit 2015. Disa ndryshime të rëndësishme përfshijnë:
- Aftësia për të shënuar të gjitha string literals si të ngrira nga fillimi ku si pasojë ka rritje të madhe të performancës në string operations.[26]
- Hash krahasimin për të lejuar kontrollin e drejtpërdrejtë të çifteve çelës/vlerë në vend të vetëm çelësave.
- Një operator i ri i navigacionit të sigurtë
&.
që mund të lehtësojë trajtimin e zeros (p.sh. në vend tëbj && obj.foo && obj.foo.bar
, mund të përdorimnëse obj&.foo&.bar
). - Perla did_you_mean tani është e lidhur nga fillimi dhe e kërkuar në ndezje për të sugjeruar automatikisht përputhje të emrave të ngjashëm në një NameError ose NoMethodError.
- Hash#dig dhe Array#dig për të nxjerrur lehtë vlera të mbivendosura thellë (p.sh. duke dhënë
profilin = { sociale: { wikipedia: { name: 'Foo Baz' } } }
, vlera Foo Baz tani mund të shikohet mirret ngaprofili.gërmoj(:sociale, :wikipedia :emri)
). .grep_v(regexp)
e cila do të përputh të gjithë shembujt negativ të një shprehje të rregullt të dhënë në shtim të karakteristikave të reja.
Dega 2.3 gjithashtu përfshin shumë përmirësime të performancave, përditësime dhe përmirësime të problemeve duke përfshirë ndryshime në Proc#call, Socket dhe IO, Trajtimin e Thread#name, lidhjet pasive Net:FTP, dhe largimin e Rake nga stdlib.[27]
Tabela e versioneve
RedaktoVersion | Versioni më i fundit i vockël | Data fillestare e lëshimit | Fundi i fazës përkrahëse | Fundi i fazës së mirëmbajtjes së sigurisë |
---|---|---|---|---|
1.8.7-p375[28] | 2003-08-04[29] | 2012-06[30] | 2014-07-01[31] | |
1.9.3-p551[32] | 2007-12-25[33] | 2014-02-23[34] | 2015-02-23[35] | |
2.0.0-p648[36] | 2013-02-24[37] | 2015-02-24[36] | 2016-02-24[36] | |
2.1.8[38] | 2013-12-25[39] | Mars në vitin 2016 [1] | ||
2.2.4[40] | 2014-12-25[41] | |||
2.3.0 | 2015-12-25[42] | |||
2016-12-25 |
Filozofi
RedaktoMatsumoto ka thënë se Ruby është dizajnuar për produktivitetin dhe kënaqësinë e programerëve, duke ndjekur principet e dizajnit të mirë të ndërveprimit të përdoruesit.[43] Në një Google Tech Talk në vitin 2008 Matsumoto deklaroi më tej, "Shpresoj ta shoh Ruby-n duke i ndihmuar çdo programeri në botë të jetë produktiv, dhe ta shijojë programimin, dhe të jetë i lumtur. Ky është qëllimi kryesor i gjuhës Ruby.[44] Ai thekson se dizajni i sistemeve duhet të theksojë nevojat njerëzore më shumë se ato kompjuterike:[45]
Ruby është e thënë të ndjek parimin e habisë më së paktë (POLA), që nënkupton se gjuha duhet të sillet në atë mënyrë saqë të zvogëlojë konfuzionin për përdoruesit me eksperiencë. Matsumoto ka thënë se qëllimi kryesor i dizajnit ka qenë që të bëjë një gjuhë që edhe ai vetë pëlqen ta përdor, duke zvogëluar punën e programerit dhe konfuzionin e mundshëm. Ai ka thënë se nuk e ka aplikur parimin e habisë më së paktë në dizajnin e Ruby,[45] por megjithatë kjo frazë ka dalur të jetë e lidhur ngushtë me gjuhën programuese Ruby. Vetë fraza ka qenë burim surprize, pasi që përdoruesit fillestar mund të nënkuptojnë se sjelljet e Ruby mundohen ti përshtaten sjelljeve të njohura nga gjuhët e tjera. Në një diskutim në Maj të 2005 në grupin e lajmeve comp.lang.ruby, Matsumoto provoi të distanconte Ruby-n nga POLA, due shpjeguar se sepse çfarëdo zgjedhje dizajni do të jetë surprizuese për dikënd, ai vetë përdor një standard personal në vlerësimin e surprizës. Nëse ai standard personal mbetet i qëndrueshëm, do të kishte pak surpriza për ata që janë të familiarizuar me standardin.[46]
Matsumoto e definoi kësi mënyre në një intervistë:[45]
Dallime nga gjuhët e tjera
RedaktoReferences
Redakto- ^ "About Ruby". Marrë më 2 mars 2014.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ Shugo Maeda (17 dhjetor 2002). "The Ruby Language FAQ". Marrë më 2 mars 2014.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ Yukihiro Matsumoto (13 shkurt 2006), ruby-talk: Re: Ruby's lisp features, arkivuar nga origjinali më 20 nëntor 2013, marrë më 2 mars 2014
{{citation}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ a b c d e f http://blog.nicksieger.com/articles/2006/10/20/rubyconf-history-of-ruby History of Ruby
- ^ "The Ruby Language FAQ – 1.3 Why the name 'Ruby'?". Ruby-Doc.org. Marrë më 10 prill 2012.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ Yukihiro Matsumoto (June 11, 1999).
- ^ "More archeolinguistics: unearthing proto-Ruby". Arkivuar nga origjinali më 6 nëntor 2015. Marrë më 2 maj 2015.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ "[ruby-talk:00382] Re: history of ruby". Arkivuar nga origjinali më 16 korrik 2011. Marrë më 2 maj 2015.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ "[ruby-list:124] TUTORIAL - ruby's features". Arkivuar nga origjinali më 24 maj 2003. Marrë më 2 maj 2015.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ http://www.linuxdevcenter.com/pub/a/linux/2001/11/29/ruby.html An Interview with the Creator of Ruby
- ^ Yukihiro Matsumoto (tetor 2000). "Programming Ruby: Forward". Marrë më 5 mars 2014.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ "We retire Ruby 1.8.7". Marrë më 2 maj 2015.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ "IPA 独立行政法人 情報処理推進機構:プレス発表 プログラム言語RubyのJIS規格(JIS X 3017)制定について". Arkivuar nga origjinali më 2 shkurt 2015. Marrë më 2 maj 2015.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ "IPA 独立行政法人 情報処理推進機構:プレス発表 プログラム言語Ruby、国際規格として承認". Arkivuar nga origjinali më 1 shkurt 2015. Marrë më 2 maj 2015.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ Web Development: Ruby on Rails Arkivuar 3 mars 2016 tek Wayback Machine.
- ^ "Ruby 1.9.3 p0 is released". ruby-lang.org. 31 tetor 2011. Marrë më 20 shkurt 2013.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ "v1_9_3_0/NEWS". Ruby Subversion source repository. ruby-lang.org. 17 shtator 2011. Arkivuar nga origjinali më 6 nëntor 2015. Marrë më 20 shkurt 2013.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ Ruby 1.9: What to Expect Arkivuar 4 mars 2016 tek Wayback Machine.
- ^ "Support for Ruby 1.9.3 has ended". Marrë më 2 maj 2015.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ Endoh, Yusuke. (2013-02-24) Ruby 2.0.0-p0 is released.
- ^ Endoh, Yusuke. (2013-02-24) Ruby 2.0.0-p0 is released.
- ^ "Ruby 2.1.0 is released". 25 dhjetor 2013. Marrë më 26 dhjetor 2013.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ "Semantic Versioning starting with Ruby 2.1.0". 21 dhjetor 2013. Arkivuar nga origjinali më 27 dhjetor 2013. Marrë më 27 dhjetor 2013.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ "Ruby 2.2.0 Released". 25 dhjetor 2014. Marrë më 4 janar 2015.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ "ruby/NEWS at v2_2_0 · ruby/ruby · GitHub". GitHub. Marrë më 2 maj 2015.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ Ruby 2.3.0 changes and features – Frozen string literals
- ^ "Ruby/NEWS at v.2_3_0 - ruby/ruby - Github". GitHub. Marrë më 25 dhjetor 2015.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ A Patch in Time: Securing Ruby
- ^ ruby-1.8.0 released!
- ^ Plans for 1.8.7
- ^ EOL for Ruby 1.8.7 and 1.9.2
- ^ Ruby 1.9.3-p551 Released
- ^ Ruby 1.9.0 Released
- ^ Support for Ruby version 1.9.3 will end on February 23, 2015
- ^ Support for Ruby 1.9.3 has ended
- ^ a b c Ruby 2.0.0-p648 Released
- ^ Ruby 2.0.0-p0 is released
- ^ Ruby 2.1.8 Released
- ^ Ruby 2.1.0 is released
- ^ Ruby 2.2.4 Released
- ^ Ruby 2.2.0 Released
- ^ Ruby 2.3.0 Released
- ^ "The Ruby Programming Language". Marrë më 2 maj 2015.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ Google Tech Talks – Ruby 1.9 në YouTube
- ^ a b c Bill Venners. "The Philosophy of Ruby". Marrë më 2 maj 2015.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ "Ruby Weekly News 23rd – 29th May 2005". Arkivuar nga origjinali më 4 korrik 2017. Marrë më 19 mars 2016.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!)