Ruby programmeerimiskeel. Mis on "Ruby"? Ruby programmeerimiskeel

  • Tõlge

ma kohtusin Rubiin suhteliselt hiljuti, tänu suurepärasele raamistikule Ruby on Rails. Ma ei pea end Ruby eksperdiks, kuid olen lugenud PickAxe'i, kirjutanud mitmeid Ruby utiliite isiklikuks kasutamiseks ja arendan ka vabal ajal Railsis.

Ruby peale hetkel, minu põhikeel. Alustasin sellega TurboPascal koolis, õppis C Ja C++ülikoolis, kirjutas väitekirja teemal Java, ja õppisin ka PHP nullist, sest tahtsin õppida veebisaite kiiresti ja lihtsalt tegema. Arvan, et koodi kirjutamine on minu jaoks meelelahutus ja siis kõik muu. Alguses mõtlesin, mis keelt õppida, Python või Ruby. Valisin teise, kuna ei tahtnud, et vale taane mu koodis probleeme tekitaks.

Seal on terve hulk tutvustusi, õpetusi, artikleid ja esseesid, mille on kirjutanud gurud selle kohta, kuidas Rubyst maksimumi võtta. See artikkel pole midagi sellist.

See on tagasihoidlikum, mittetäielik loetelu põhjustest, mis võivad (või ei pruugi) motiveerida teid Rubyt kasutama või viimase abinõuna temaga mängida. Ettevaatust: kui kasutate mõnda muud programmeerimiskeelt tööl või muudel eesmärkidel, siis ärge kurdage mulle, kui te seda enam kasutada ei soovi.

Minuga juhtus täpselt nii, aga minu jaoks pole see nii oluline. Rubiin on imeline ja elegantne keel ning nagu paljud sellised asjad, võib see haarata teie meelt ja murda teie hinge.

Ühesõnaga, teid on hoiatatud.

Miks õppida Rubyt?

Rubiin 1. Saate kõik mugavused (naudingud) ilma trikkideta. laenatud kõik parem teistest programmeerimiskeeltest, alates väike jutt Java juurde , alates väike jutt Python Perl . Siin põhilised võimalused
  • , mida võiksite põhimõtteliselt näha ka teistes keeltes: Erandid. Uskuge või mitte, aga erandid on mis tahes programmide väljatöötamisel üks olulisemaid asju. Programmeerijad kl PHP4 Rubiin, ei tea neist midagi ja ütlen teile, et saate lihtsalt printida (vead) ekraanile või kasutada vigade käsitlemiseks nende oma "super-duper" klassi. Meie kõigi õnneks kaasas proovi/püüa (või veel parem alustada / päästa
  • ). Rubiin Nimeruumid: moodulid C++ Ja Java.
  • muutke nimeruumi kasutamine lihtsaks, peaks see entusiastide jaoks meeldima , alates Sisseehitatud tavalised uskumused: kõigile asjatundjatele // ja see muutub regulaaravaldis, võrdluseks valmis (selleks kasutame operaatorit =~ ).
  • Operaatori ülekoormus: Rubiin võimaldab defineerida selliseid operaatoreid nagu +, -, > jne. mis tahes teie klassi jaoks.
  • Paketid: nimega " kalliskivid"(kivikesed), nad tõesti vastavad oma nimele, pealegi - nad töötavad. Paketid toetavad sõltuvusi ja võivad olla ka platvormidevahelised või platvormidest sõltuvad.
  • Interaktiivne konsool: saab kasutada koodi interaktiivseks testimiseks, nagu konsool Python

2. Sulle meeldivad pisiasjad.

Rubiin graatsiline Miks? Sest ta ei püüa koodi nii napisõnaliseks teha, et see loetavust ja arusaamist segaks. Mõned näpunäited võivad teid aidata:
  • Võite kasutada mõlemat operaatorit, kui Ja välja arvatud juhul tingimuslausetes. Muidugi võite kasutada kui väljendi vastupidise tähendusega, kuid kasutades välja arvatud juhul põhjustab tavaliselt vähem vigu. Lisaks saate mõlemat operaatorit kasutada tingimuslike modifikaatoritena, asetades need pigem avaldise järele kui enne: order.new välja arvatud juhul, kui order.exists
  • Meetodi nime lõpus saate kasutada küsi- ja hüüumärke. See kokkulepe ei ole peale surutud, vaid märk " ? " kasutatakse meetodi naasmisel tõsi või vale, samas kui märk " ! » kasutatakse meetodite puhul, mis teevad midagi pöördumatut, nt kirje kustutamine andmebaasist, poolitamine viimane tegelane nöörist jne.
  • Võite kasutada varjunimesid ( alias) juba loodud meetodite jaoks. Nii saate meetodid kätte olemas Ja on olemas, ei mingeid üldkulusid ega kordamist.
  • Saate kasutada juhiseid attr_reader, attr_writer või attr_accessor Sest automaatne loomine getter/setter klassi liikmetele.
  • Ja veel mõned nimetamistavad: konstandid, klassid ja moodulid on kirjutatud suur täht, meetodid ja klassi liikmed peavad algama väikese tähega, globaalsete muutujate nimed algavad tähega " $ ", objektimuutujate nimed algavad tähega " @ " ja klassi muutujate nimed koos " @@ ", noh jne.
  • Meetodite kutsumisel ei pea sulgusid kirjutama. Kirjutada võib File.open("/home/h3rald/test.txt") või lihtsalt File.open "/home/h3rald/test.txt", mis on eriti mugav argumentideta meetodite puhul.

3. Enam pole vaja semikooloneid kasutada.

Kas soovite kirjutada järgmise juhise? Lihtsalt mine uus rida. Klõpsake " Sisestage"ja oletegi valmis. IN Rubiin nagu sisse Python, eraldab uus rida juhised, nii et te ei pea pidevalt semikooloneid kasutama. Kahjuks tähendab see seda nagu fännid C++, me ei saa kirjutada programmi ühele reale. Aga see pole nii hull, eks?

4.Kõik on objekt, nagu peabki.

Kui ma õppisin Java, mulle öeldi, et kõik on objekt.
- "Mis, 14 ja 374346.678 on objektid?"
- "Ei, rumal, need on numbrid!"

IN Rubiin numbrid, sümbolid, tõeväärtused ja kõik muu on objekt. Tõsiselt. See tähendab, et saate kirjutada selliseid asju:
"TE EI TOHI ALATI SUURTEID KASUTADA". Väiketähtedega # tagastab "te ei tohiks alati kasutada suurtähti", mitte millegi sellise:
#PHP kood
strtolower("TE EI TOHI" ALATI SUURTÄHTE KASUTADA")
See säästab aega, säästab sulgusid ja on loogilisem.

5. Kõik loeb.

Või "pole vaja seda enam kasutada tagasi väärtuste tagastamiseks." Kiiresti öeldes: kõik Ruby avaldused tagastavad väärtuse, isegi muutujate määramised, nii et te ei pea seda kasutama märksõna « tagasi" meetodite lõpus. Alati tagastatakse viimase ülesande väärtus.

6. Saate keskkonda igal võimalikul viisil muuta.

Kui ma seda esimest korda nägin, avaldas see mulle muljet. Kujutage ette tüüpiline olukord: hakkasite kasutama süsteemiklassi või kellegi teise kirjutatud klassi ja mõistsite, et vajate mõnda täiendav meetod selles. Selle probleemi lahendamiseks tavalistes programmeerimiskeeltes on mitu võimalust:
  • Saate muuta klassi lähtekoodi, kui teil on sellele juurdepääs. Kuid tavaliselt on see halb mõte, ära tee seda.
  • Pärite oma klassi sellest ja täiendate seda uus meetod. Tavaliselt on see - hea mõte. Kuid üks meetod võib muuta selle pisut monrolaadseks. Lisaks peate veidi oma teist koodi vastavalt kohandama.
  • Saate luua meetodi lihtsalt väljaspool klassi. See toimib, kuid see pole eriti elegantne ja läheb ka vastuollu OOP.
IN Rubiin saate lisada meetodi algsele klassile ilma lähtekoodi muutmata. Seda saab teha isegi süsteemiklassi jaoks.
Kas tahame lisada meetodi väärtuste teisendamiseks meetritest jalgadeks? Pikendame lihtsalt klassi Numbriline nagu näidatud:
klass Numbriline
def jalad
ise*3,2808399
lõppu
lõppu

Nüüdsest on kõigil meie numbritel uus meetod, mida saab kasutada nagu kõiki teisigi:
5.jalga # tagastab 16.4041995
Klassid sisse Rubiin kunagi sulgeda ja seda saab igal ajal ja kõikjal laiendada. Seda võimalust tuleb loomulikult kasutada ettevaatlikult!

7.Lindudelt ükssarvikuid ei saa, aga eesleid saab soovi korral.

Mäletan selgelt, kuidas mu õpetaja C++, kasutas loomi, et illustreerida objektorienteeritud programmeerimise põhimõisteid – klassid ja pärimine. Midagi salapärast oli, kui ta selgitas meile mitmekordset pärandit, moodustades "lindudest" ja "hobustest" "Pegasuse". Hullud asjad Rubiin ei luba mitmekordne pärimine. Tundub trendina ja lõpuks on see maitse asi. Ma ei ole mitmekordse pärimise fänn, kuna see võib viia ettearvamatuteni. Vaatamata sellele on moodulite abil võimalik midagi sarnast luua Rubiin, nii et ühe mooduli muutujad ja meetodid lisatakse teatud klassi, kui moodul on selles.

8. XML on tõesti ebavajalik.

XML- ilus, sageli kasutatav märgistuskeel, mida saavad töödelda kõik programmeerimiskeeled ja mida kasutatakse kõikjal. Kahjuks on see kirjutamiseks liiga tülikas, raskesti sõelutav ja, olgem ausad, enamikul juhtudel raskesti loetav. Kuid vaadake järgmist fragmenti:
regexp: !ruby/regexp /a-zA-Z/
number: 4.
string: string

See on kindlasti lihtsam ja lihtsam XML, Tõde? Tere tulemast YAML, lemmik (kuid mitte ainus) märgistuskeel Rubiin, mille abil saab mis tahes objekti esitada lihtsal, ülevaatlikul, kuid terviklikul kujul.
Ruby on võimeline töötama XML, aga lihtsus YAML altkäemaksu paljudele arendajatele, kes seda nüüd hoopis kasutavad XML, näiteks konfiguratsioonifailide jaoks (seda me tegime Rööpad). Ülaltoodud fragment saadi järgmise koodifragmendi käivitamisega:
("string" => "string", "number" => 4.7, "regexp" => /a-zA-Z/).to_yaml
meetod to_yaml, määratletud klassi jaoks Objekt, mis on kõigi teiste objektide vanem ja on seetõttu kõigile objektidele juurdepääsetav Rubiin. See võimaldab teil objekte teisendada YAML ja vastupidi, arendajale täiesti läbipaistev. Lahe, eks?

9.Lambda on midagi enamat kui lihtsalt kreeka täht.

Rubiin laenanud maagiat Lisp Ja , alates objektideks ja plokkideks Proc. Proc on "koodiplokk, mis on seotud kohalike muutujate komplektiga. Pärast sidumist saab neid kutsuda erinevates kontekstides ja neile muutujatele ikkagi juurde pääseda. Vaatame järgmist.
def gen_times(faktor)
tagasi Proc.uus (|n| n*tegur )
lõppu

Times3 = gen_times(3)
korda5 = gen_times(5)

Times3.call(12) #=> 36
korda5.kõne(5) #=> 25
korda3.kõne(korda5.kõne(4)) #=> 60

Oleks võinud kasutada märksõna lambda asemel Proc.new, see ei mõjuta tulemust. See võib tunduda tuttav inimestele, kes teavad , alates Ja Python(või Lisp). Seda saab teha isegi peal PHP, kuid seda võimalust ei kasuta paljud inimesed.
Lisaks sisse Rubiin laialdaselt kasutatakse "loomata" tüüpi plokke Proc", näiteks objekti sisu kordamiseks ja mõne koodi (nt meetodi) käivitamiseks iga klassi jaoks saadaval Massiiv:
.each (|c| paneb c*2) #=> tagastab iga elemendi korrutatuna 2-ga
Kui kood ühele reale ei mahu, on soovitatav kasutada konstruktsiooni tee... lõpp, selle asemel, et kasutada sulgusid. Fännid Rubiin ei meeldi sulgud.

10. Võite kasutada rööpaid.

Last but not least... Võite alati kasutada Rööpad veebirakenduste arendamiseks. Areng ei ole nii lihtne kui selle puhul PHP, Aga Rööpad olid sisse kirjutatud Rubiin, kuna sellel on funktsioone, mida teistes keeltes ei leidu.

Järeldus

Aeg on täis. Võib-olla mõtlete juba vaatamise peale Rubiin, võib-olla olete seda juba proovinud või olete seda lihtsalt ignoreerinud. Olenemata sellest, järgmine kord, kui vaatate oma koodi ja see tundub hirmutav ja selle suurus on hirmutav, ärge mind süüdistage.

Kallid lugejad – ärge unustage, et Habrauser tõlkis teksti lihtsalt ära (jah, jah). Tal pole vaja ideoloogilisi väiteid väljendada.

Ruby on esimene programmeerimiskeel, mis jõudis meieni tõusva päikese maalt. Mõnda aega oli see laialt tuntud ainult Jaapanis, kuna kogu selle dokumentatsiooni ei tõlgitud inglise keelde. Kuid niipea, kui seda hakati tõlkima ja avaldama, hakkas Ruby huvi tundma kogu maailmas ja 1998. ruby-talk" alustas oma tööd"

Keele looja Yukihiro Matsumoto (või "Matz") ei olnud rahul tol ajal eksisteerinud skriptikeeltega. Tema sõnul ei olnud Perl 4 piisavalt võimas ja Python polnud piisavalt objektorienteeritud. Ta vajas oma ülesannete jaoks täiuslikku keelt. Seetõttu võttis ta teistest keeltest parima, luues uue, millesse lisas kõik, mida vajalikuks ja õigeks pidas, ning eemaldas ebavajaliku. Oma loomingule nimesid valides soovis Matsumoto, et see sarnaneks mõnevõrra Perliga, millest paljud kandusid üle Rubysse. Tal oli valida Coral ja Ruby vahel ning mõned allikad väidavad, et lõplik nimi valiti horoskoobi tõttu.

Ruby on tegutsenud peaaegu 20 aastat ja areneb aktiivselt programmeerimiskogukonna ja selle fännide ning ka Matzi enda toel.

Rubiini filosoofia

Matsumoto õppis programmeerimist veel üliõpilasena, kuid idee luua oma keel tekkis tal alles mitu aastat hiljem. Ta tahtis luua “päris” OOP-keele, millel oleks lihtne ja arusaadav süntaks, ning võib julgelt öelda, et see tal õnnestus. Erinevalt keeltest, mis keskenduvad sellele, kui kiiresti masin programmi käivitada suudab, kavandas Matz Ruby inimeste töö hõlbustamiseks. Isegi kui see tähendab pisut arvutiressursside ohverdamist.

Ruby kasutab nn vähima üllatuse põhimõtet. See tähendab, et programm käitub vastavalt kodeerija ootustele. Matz kasutas seda kontseptsiooni ainult enda mugavuse huvides, kuid keele populaarsuse kasvades sai ta teada, et teised programmeerijad mõtlesid samamoodi nagu tema. See oli talle kahtlemata meeldiv üllatus.

Ruby järgib Smalltalki keele kontseptsiooni, kus mis tahes andmetüüpe peetakse objektideks, mis tähendab, et nende jaoks saab määrata meetodeid ja objektimuutujaid. See on tema soodne erinevus sellistest keeltest nagu C++.

Märkimist väärib ka keele paindlikkus. Näiteks saate liitmistoimingu ümber defineerida ja kasutada enda jaoks mugavamat tähistust. Näiteks määrake, et numbrite lisamine toimib siis, kui sisestate sümboli (1+2) asemel sõna pluss (1 pluss 2). See tähendab, et te ei kohane keelega, vaid vastupidi, see kohandub teiega. See annab tohutu vabaduse eneseväljenduses, kuna saate alistada operaatorid, meetodid jne. Kuid pidage meeles, et suure vabadusega kaasneb ka suur vastutus (teisisõnu, ärge olge segaduses, mida, kuhu ja kuidas ümber nimetasite).

Kus Rubyt kasutatakse?

Redmine vigade jälgimise süsteem ja Inkscape vektorgraafika redaktor on kirjutatud Ruby keeles. Samuti Metasploiti kolmas versioon (uurimisprojekt infoturve) kirjutati Ruby keeles täielikult ümber. Rubiini kasutatakse paljudes suured organisatsioonid, nagu NASA, Motorola jne.

Ruby saavutas oma suurima populaarsuse tänu 2004. aastal välja antud Ruby on Railsile. Railsi kasutati selliste hiiglaste loomiseks nagu Twitter, GitHub, Kickstarter, Diaspora jne. Sellele on väga meeldiv ja mugav veebisaite kirjutada. Näiteks andmebaaside jaoks saate kasutada Active Record päringu liidest, mis võimaldab teil andmeid hankida ilma kasutades SQL-i päringud (mis paljudele arendajatele väga meeldivad).

Nüüd on Ruby või õigemini Ruby on Ralis saavutanud idufirmade keele maine. Railsi kasutades on üsna lihtne lühikese ajaga ellu viia projekte, mis on originaalsed ja tõhusad ning ulatuvad mallide sihtlehtedest ja veebipoodidest kaugemale. Loomulikult kirjutatakse saidi koormuse suurenedes ja nõuete muutudes mõned projektid ümber teistesse keeltesse, mis võtavad arvesse teatud spetsiifikat ja sobivad teatud juhtudel paremini (näiteks Java või Scala). Ruby ja Rails arenevad aga edasi, nii et peagi ei pruugi lülitit vaja minna.

Ruby õppimise raskus

Rubyt on üsna lihtne õppida, kuid selle kohta on palju rohkem dokumente aadressil inglise keel kui vene keeles, nii et sügavamaks uurimiseks peate lugema tekste originaalis.

Lisaks väärib märkimist, et puhtas Ruby keeles programmeerimiseks on harva vabu kohti. 90 protsenti neist on tõenäoliselt Ruby on Railsile. RoR-i programmeerijad on tänapäeval IT-tööstuses ühed ihaldatumad. Kõrgele palgale tuleks lisada kõrge eliiti kuulumise staatus ja teiste programmeerijate, näiteks 100 rubla eest visiitkaartide veebisaite kirjutavate PHP-spetsialistide kadedus.

Ruby plussid/miinused

Ruby on armastatud:

  • OOP Smalltalki stiilis;
  • kogukonna toetus (programmeerijate kogukond);
  • lihtne ja mugav süntaks;
  • suur palk;
  • toetus uusimatele paljulubavatele programmeerimismeetoditele;
  • suur hulk valmis lahendusi.

Ruby puudused hõlmavad järgmist:

  • halb tugi Windowsile. Kuna Ruby töötati välja peamiselt Linuxi jaoks, ei ole see nii Unixi sarnane süsteem IDE-ga töötamine, täiendavate teekide installimine jne on keerulisem.
  • vabade kohtade puudumine, kui see pole Ruby on Rails;
  • vähe dokumentatsiooni vene keeles;
  • mälu tarbimine.

Seotud tehnoloogiad

Ruby on Rails- raamistik veebis töötamiseks. Selle lõi 2004. aastal programmeerijate meeskond eesotsas David H. Hanssoniga ning hiljem täiustati seda arendajate kogukonna jõupingutustega oluliselt.

RubyGems - paketihaldur Ruby jaoks, muutes paigaldamise lihtsamaks täiendavad raamatukogud(heemid).

MacRuby- keelerakendus, mis on loodud töötama Mac süsteem OS X. See muudab Maci rakenduse kirjutamise lihtsamaks.
mruby on täiustatud teostus, mille kallal Yukihiro Matsumoto ise praegu töötab.

Tänapäeval on palju programmeerimiskeeli, millel on oma omadused ja mustrid. Selles artiklis käsitletakse ühte neist.


Rubiini keele ajalugu

Ruby on programmeerimiskeelena olnud juba mõnda aega. Töö selle praegu tuntud keele väljaande kallal algas esimest korda 1993. aastal. Kõigepealt esimene ametlik versioon avaldati 1995. aastal. Keele looja on Yukihiro Matsumoto. Tema entusiasmi programmeerimise vastu märgati juba üliõpilasena, kuid idee luua oma tööriist tekkis palju hiljem. Niisiis, mis on selles programmeerimiskeeles erilist? Mis tegi teid maailmaareenil nii populaarseks?

Keel Ruby programmeerimine- üsna tõlgendatav. See on keel kõrgel tasemel, millel on dünaamiline trükkimine ja mitme lõime kasutamine sõltumatult täitmiskeskkonnast. Sellel on oma prügivedaja. Süntaksiomaduste poolest on see Perli keeltele kõige lähemal. Ökosüsteemi laialdase arendamise tulemusena võttis see platvorm palju Smalltalki, Pythoni, Lisp ja teiste programmeerimiskeelte käest. Suur tähtsus on asjaolul, et Ruby keel ja selle rakendamine on täiesti tasuta. Sellest järeldub, et kõigil on võimalus pakkuda enda muudatused. Kui kogukond need aktsepteerib, lisatakse need keele järgmisse versiooni.

Rubiini filosoofia

Oma vaimusünnituse loomise käigus sai Matsumotost, kes on objektorienteeritud programmeerimise pühendunud fänn ja entusiast, teatud filosoofia autor programmeerijatele, kes otsustavad tema keelt õppida. Seega on Ruby programmeerimiskeel loodud lihtsate ja selged rakendused. Põhirõhk oli koodi lihtsusel ja loetavusel, mitte aga programmi kiirusel. See on täpselt põhjus, miks see platvorm valitakse sageli programmeerijate koolitamiseks vajalikuks sisendiks. Põhiidee, millel see keel põhineb, on "väikseima üllatuse" põhimõte. Mida see tähendab?

Ja see, et programm peaks käituma nii, nagu programmeerija temalt ootab. Looja juurutatud keeleideoloogia oluline osa on selle suur varieeruvus. Seega on erinevatel viisidel ja funktsioonidel võimalik saavutada sama tulemus. See võimaldab igal programmeerijal probleemi lahendada nii, nagu ta korrektsuse ja mugavuse seisukohalt õigeks peab. See on enamikul juhtudel mõjutanud keele populaarsust infotehnoloogia spetsialistide seas.

Peamised omadused

Mida tähendab Ruby, kui pidada seda programmeerimiskeeleks? Esiteks on see objektorienteeritud keel. See ei sisalda primitiivsed tüübid, kuna kõiki struktuure ja andmeüksusi peetakse objektideks. See eristabki seda samast Java keel, kus on olemas primitiivsed andmestruktuurid. Kõik Ruby funktsioonid on meetodid. Enamiku omadusi ja võimalusi tutvustasid autorid teistest programmeerimiskeeltest. Seega võime julgelt väita, et Ruby sisaldab parimad omadused paljud teised keeled ja tehnoloogiad. Näiteks Ruby ökosüsteemil on oma prügikoguja.

Tema idee võeti üle Smalltalkist ja Javast. See on võimeline töötama kõigi süsteemi objektidega. See mehhanism võimaldab puhastada mälu objektidest, mida enam ei vajata, mis juhtub rakenduse kasutajale ja arendajale märkamatult. Prügikoguja aitab arendajal mitte lasta end rakenduse mälu haldamisest segada. Nii saab ta keskenduda kogu oma tähelepanu funktsionaalsusele ja kasutusmugavusele.

Keele paradigmad

Mõned programmeerijad, kes vastasid küsimusele, mida Ruby esindab mitme paradigma keelena, leidsid end debati kuumuses. See keel võimaldab võrdselt edukalt rakendada mis tahes programmeerimisparadigmat. Nendest tasub esile tõsta järgmist:

Protseduuriline programmeerimisstiil;
objektorienteeritud lähenemine;
funktsionaalne lähenemine.

Arendajal on lubatud valida endale kõige lähedasem paradigma. Tuleb meeles pidada, et see muudab tema tööriistade komplekti piiratumaks või nõrgemaks. Ruby programmeerimiskeel järgib ainult seda valikut.

Kuulsuse põhjused

Enamikul juhtudel antud keel saavutas kuulsuse tänu sellele, et sellele oli lihtne välja töötada erinevaid täiendusi. Seega kasvab raamistike ja teekide arv pidevalt ning nende iseseisvalt lahendatavad ülesanded võimaldavad arendajatel seda teha lühikesed tähtajad viia toode valmisolekusse. Ruby programmeerimine on sageli seotud veebirakenduste loomisega, samuti erinevate saitide ja Interneti-platvormide toimimise toetamisega. Keel suutis selle niši hõivata tänu oma lihtsusele ja arengukiirusele. Tasub teada, et alternatiivsed platvormid (näiteks Java) nõuavad oluliselt suuremat hulka teadmisi ja kogemusi, mis on mõeldud sarnaste probleemide lahendamiseks.

Kuulsad raamistikud

Rääkides täna turul eksisteerivatest tuntud raamistikest, tasub nende hulgast välja tuua Rails. Enamik kasutajaid, kes vastavad küsimusele, mis on Ruby, mõtlevad intuitiivselt RubyOnRailsi. See komplekt tarkvaraelemendid on arendajate seas tööstusharu standard. Seda toetatakse regulaarselt, see on pidevas arengus ja programmeerimiskogukond täiendab seda. Väärib märkimist, et vaatamata sellele jääb see tasuta.

Esitatud raamistik on võimeline kirjeldama veebirakenduse komponente MVC (Model-View-Controller) mustri piirides. Lisaks on see valmis pakkuma valmis integratsiooni rakendusserveriga, samuti liidest, mis võimaldab juurdepääsu andmebaasile. Need kolm komponenti võimaldavad sõna otseses mõttes kirjutada ja käivitada lihtsa ajaveebi või privaatse veebilehe Internetis mõne tunniga. Ruby programmeerimiskeeles on võimalik luua isegi natiivseid mobiilirakendusi. See saavutatakse RubyMotioni teegi abil. Sellega saate käivitada Ruby koodi iOS platvormid, OS X ja Android. See raamatukogu on välja töötatud privaatne grupp tootjad. See tähendab, et peate kasutamise eest maksma, kuid see on veel üks kinnitus keele laiaulatuslikust võimekusest.

Testide kirjutamise tähtsus

Ruby keele ökosüsteemi teine ​​oluline komponent, aga ka selle veebipõhine osa, koosneb testide kirjutamiseks mõeldud raamistikest ja raamatukogudest. RubyOnRails kasutab BDD (behavior-driven development) filosoofiat. See tähendab, et programmeerija töötab esmalt välja testide jada, mis kirjeldavad programmi eeldatavat käitumist. Seejärel loob see nende testide läbimiseks vajaliku koodi. RSpeci peetakse selles valdkonnas väljaütlemata standardiks. See on raamistik, mis võimaldab kirjutada testjuhtumeid keeles, millest ka kogenematud kasutajad aru saavad.

Rubiini kalliskivid

Tänu üksikasjalikule standardile, millele Ruby paketid ja teegid peavad vastama, on lisandmoodulite loomine lihtne. Seega on kalliskivide hulgast võimalik leida mooduleid, mis on loodud peaaegu kõigi probleemide lahendamiseks, alates integreerimisest sotsiaalvõrgustikud ja kolmandate osapoolte ressursse valmisplatvormidele e-kaubandus. Kolmanda osapoole teegi kasutamiseks piisab sõltuvuse kirjeldamisest enda projekt konkreetsest teegist, mis asub kaug- või kohalikus hoidlas. Järgneva kokkupaneku käigus see raamatukogu aastal rakendusse laaditud automaatrežiim. See lahendus lihtsustab oluliselt projekti migreerimist loojate vahel, kuna projekti koostamiseks on vaja jagada sõltuvusi käsitsi puudub.

Seega võime järeldada, et Ruby on võimas ja universaalne keel programmeerimine, mis sobib mitte ainult kogenud arendajatele, vaid ka algajatele.

Sissejuhatus

Tänapäeval on otsingumootor küberruumis üks enim kasutatavaid navigeerimismeetodeid, mis kasvab ja suureneb iga päevaga. On selge, et infootsingu algoritmid peavad pidevalt suurendama oma keerukust ja tõhusust. Käesoleva töö eesmärk ei ole kirjeldada infootsingu algoritme, vaid lihtsalt anda neile sissejuhatav kirjeldus. Samuti on antud töö eesmärgiks kirjutada otsingu veebirakendus Ruby programmeerimiskeeles.

Eelnevat arvesse võttes saab püstitada järgmised eesmärgid:

Sissejuhatus infootsingu algoritmidesse

Otsingu veebirakenduse kirjutamine

Seatud eesmärgid saavutatakse ülesannete abil:

Otsinguteooria uurimine

Ruby programmeerimiskeele õppimine

Sissejuhatus Hamli märgistuskeelde

Sassi metakeele tutvustamine

Kodeerige veebirakendus Ruby, Hamli ja Sassi abil

Siluge saadud rakendus

Teoreetiline osa

Infootsingu teooria

Esiteks peate määratlema otsingumootori.

Otsingumootor – veebiliidesega tarkvara- ja riistvarakompleks, mis annab võimaluse otsida teavet Internetist.

Otsingumootorid liigitatakse nende täidetavate funktsioonide ja lahendatavate ülesannete põhjal järgmisteks osadeks:

abi on kõige levinum funktsioonitüüp infosüsteemid, ja see hõlmab süsteemi abonentidele võimaluse hankimist teatud objektide klasside installiandmete hankimiseks;

Otsingumootorid on kõige levinum infosüsteemide klass. Üldiselt võib seda käsitleda teatud inforuumina, mis on määratletud ainevaldkonna infoloogilise kirjelduse kaudu);

arvutatud Süsteemi ülesanne on töödelda süsteemis asuvat informatsiooni vastavalt teatud arvutusalgoritmidele erinevatel eesmärkidel.

Sätte olemuse järgi loogiline korraldus salvestatud teabest jagunevad otsingusüsteemid faktiliseks, dokumentaalseks ja geoinfoks.

Nii koguvad ja salvestavad faktide otsingumootorid andmeid ühe või mitme tüübi mitme eksemplari kujul. konstruktsioonielemendid. Kõik need struktuurielementide juhtumid või nende kombinatsioon peegeldavad teavet mõne fakti või sündmuse kohta. Iga tüübi struktuur teabeobjekt koosneb lõplikust detailide komplektist, mis kajastab antud ainevaldkonna objektide teabe põhiaspekte ja omadusi.

Dokumendiotsingu süsteemides on üks teabe element dokument, mis ei ole jagatud väiksemateks elementideks ja teave sisestamisel ei ole reeglina struktureeritud või struktureeritud. piiratud vorm. Sisestatud dokumendile saab määrata mõned vormistatud ametikohad - valmistamise kuupäev, kunstnik, teema. Teatud tüüpi dokumentaalsed infosüsteemid tagavad sisestatud dokumentide vahel loogilise seose loomise - semantilise sisu alluvuse.

Geoinfoandmetes on andmed korrastatud eraldi kujul infoobjektid seotud ühise elektroonilise topograafilise alusega. Nendes teabetoeks kasutatakse geograafilisi infosüsteeme ainevaldkonnad, teabeobjektide ja protsesside struktuur, milles on geograafiline komponent.

Samuti on olemas järgmine otsingumootorite klassifikatsioon (joonis 1.)

Joonis 1. Otsingumootorite klassifikatsioon

Otsingumootoritest rääkides tasub mainida otsingupäringute teooriat ja nende klassifikatsiooni. Nii kirjeldas 1949. aastal Harvardi filoloogiaprofessor mõningaid teabeotsingu tunnuseid.

Professor Zipf märkis seda pikad sõnad leidub mis tahes keele tekstides harvem kui lühikestes tekstides. Selle tähelepaneku põhjal tuletas Zipf kaks seadust:

Esimene seadus seob sõna esinemissageduse (esinemissageduse) selle sageduse astmega. Kõige sagedamini esinevatele sõnadele omistatakse auaste ühega. Need sõnad, mis on vähem levinud - auaste võrdub kahega jne. Zipf avastas, et sõna sageduse ja selle järgu korrutis on konstant.

Seda sõltuvust esindab tavaliselt hüperbool. Zipf-konstandi väärtus erinevaid keeli erinev, kuid ühe keelerühma piires jääb see muutumatuks. Vene keele puhul on konstant ligikaudu 0,06-0,07.

Zipf tegi kindlaks, et ka sõnade esinemissagedus ja etteantud sagedusega tekstis sisalduvate sõnade arv on omavahel seotud.

Ühest küljest säilitab saadud kõver oma parameetrid kõigi sama keele tekstide jaoks. Teisest küljest, olenemata sellest, mis keeles tekst on kirjutatud, jääb Zipfi kõvera kuju muutumatuks. Ainult koefitsiendid erinevad.

Zipfi seadused on universaalsed. Need ei kehti ainult tekstide kohta. Näiteks linnade ja neis elavate elanike arvu seos võtab sarnase kuju. Internetiressursside populaarsuse omadused vastavad Zipfi seadustele. Zipfi seadused peegeldavad objektide "inimlikku" päritolu.

Igal juhul kõik otsingupäring saab liigitada kolme tunnuse järgi: päringu pikkus, päringu selgus, otsinguetapp.

Seega on pikkuse järgi kõik taotlused jagatud

Ühesõnaline ("reklaam")

kahesõnaline (" otsingumootori reklaamimine»

Kolmesõnaline ("professionaalne otsingumootori reklaamimine")

Paljusõnaline ("professionaalne otsingumootori reklaamimine odav"

Selguse huvides on kõik taotlused jagatud järgmisteks osadeks:

Selge päring ("ipad 2 hind")

Hägupäring ("Osoon", mis võib olla gaas ja kaupluse nimi ja direktori nimi)

Vastavalt otsinguetapile jagunevad kõik päringud järgmisteks osadeks:

Probleemi teadvustamine ("sait ei tööta")

Lahenduse leidmine (“veebisaidi hostimine”)

Lahenduse valimine ("millist hostimist valida")

Tehingu asukoha leidmine (“masterhosti hostimise tariifid”)

RUBY programmeerimiskeel

Rubiin – dünaamiline, peegeldav, tõlgendatav kõrgetasemeline keel programmeerimine kiireks ja mugavaks objektorienteeritud programmeerimiseks. Keeles on operatsioonisüsteemist sõltumatu multithreading, tugev dünaamiline tippimine, prügikoguja ja palju muid funktsioone. Ruby on süntaksiomaduste poolest lähedane Perli ja Eiffeli keeltele ning oma objektorienteeritud lähenemise poolest Smalltalkile. Ka mõned keele funktsioonid on võetud Pythonist, Lisp'ist, Dylanist ja Clu'st. Tänapäeval on Ruby interpretaator rakendatud peaaegu kõikidele platvormidele (Unix, Win32, OS X). Keele looja on Yukihiro Matsumoto.

Ruby on täielikult objektorienteeritud programmeerimiskeel. Kõik on objektid ja funktsioonid on nende objektide meetodid.

Rubiini peamised omadused:

Tõlgendatud keel:

Süsteemi otsekõnede võimalus.

Võimas tugi stringide ja reeglitega tehtetele (regulaaravaldised).

Arengu käigus toimunud muutuste kohene ilming.

Koostamisetappi pole.

Lihtne ja kiire programmeerimine:

Muutujaid pole vaja deklareerida.

Muutujad trükitakse dünaamiliselt.

Lihtne ja ühtlane süntaks.

Automaatne juhtimine RAM.

Objektorienteeritud programmeerimine:

Kõik on objekt. Isegi klassi nimi on klassi klassi eksemplar.

Klassid, meetodid, pärilikkus, polümorfism, kapseldamine ja nii edasi.

Üksikud meetodid.

Mixins mooduleid kasutades (võimalus klassi laiendada ilma pärimiseta);

Iteraatorid ja sulgemised.

Lai valik võimalusi metaprogrammeerimine.

Teenused:

Täisarvude väärtuste piiramatu vahemik.

Erandjuhtimise mudel.

Kõik operaatorid tagastavad väärtused, isegi juhtstruktuurid.

Erandi püüdmise mehhanism.

Voo tugi; nii native kui UNIX-i perekonna süsteemid.

Puudused:

Mõnede protsesside kontrollimatus (näiteks mälu eraldamine), võimetus määratleda madala taseme andmestruktuure või alamprogramme;

Programmi koostamise ja sellega kaasneva optimeerimise võimatus;

Avatus lähtekoodi isegi sisse valmis programm

Kahe esimese puuduse tagajärg on väga madal kiirus programmide käivitamine ja käivitamine.

Samuti väärib märkimist, et Ruby jaoks on palju mooduleid (lisandmooduleid) peaaegu igat tüüpi ülesannete jaoks (liidese programmeerimine, keeruline matemaatilised arvutused, töötada heli, video, 3D-ga jne). Seetõttu valiti see programmeerimiskeel praktilise osa kirjutamisel peamiseks.

1.3. Lihtsustatud märgistuskeel HAML

Haml on märgistuskeel lihtsustatud XHTML-i genereerimiseks. HAML kompileerib HTML-i. Haml on palju lihtsam kui HTML, kuna võimaldab veebirakenduste kirjutamist lihtsustada ja kiirendada.

Näiteks see koodijupp on Hamlis

%html( html_attrs("ru") )

%title Minu blogi

%meta(http-equiv="Content-Type" content="text/html; charset=utf-8")

Stylesheet_link_tag "peamine"

%h1 Minu blogi

%h2 kirjet

- @entries.each teevad |entry|

%h3.title= entry.title

%p.date= entry.posted.strftime("%A, %B %d, %Y")

%p.body=entry.body

Kõik õigused kaitstud © Ivan

HTML-kood muudetakse

Minu blogi