Beschrijving van robijn. Je kunt de omgeving op elke mogelijke manier veranderen. Methoden met uitroeptekens en vraagtekens

Ruby is de eerste programmeertaal die naar ons toe kwam vanuit het Land van de Rijzende Zon. Enige tijd was het alleen in Japan algemeen bekend, omdat alle documentatie ervoor niet in het Engels was vertaald. Maar zodra het begon te worden vertaald en gepubliceerd, raakte Ruby over de hele wereld geïnteresseerd, en in 1998 de robijn- praatforum begon zijn werk. ".

De maker van de taal, Yukihiro Matsumoto (of "Matz"), was ontevreden over het bestaande scripttalen. Volgens hem was "Perl 4 niet krachtig genoeg en Python was niet objectgeoriënteerd genoeg." Hij had de perfecte taal nodig voor zijn taken. Daarom nam hij het beste uit andere talen en creëerde hij een nieuwe, waarin hij alles toevoegde wat hij nodig en correct achtte, en het overtollige verwijderde. Bij het kiezen van de namen voor zijn creatie wilde Matsumoto dat het iets vergelijkbaars zou zijn met Perl, waarvan veel van de ideeën werden overgedragen aan Ruby. Hij had de keuze tussen Coral en Ruby, en sommige bronnen beweren dat de uiteindelijke naam werd gekozen vanwege een horoscoop.

Ruby bestaat al bijna 20 jaar en wordt actief ontwikkeld, met de steun van de programmeergemeenschap en haar fans, evenals Matz zelf.

Ruby-filosofie

Matsumoto studeerde programmeren terwijl hij nog student was, maar het idee om zijn eigen taal te creëren kwam pas een paar jaar later bij hem op. Hij wilde een "echte" OOP-taal maken met een eenvoudige en begrijpelijke syntaxis, en we kunnen gerust zeggen dat hij daarin is geslaagd. In tegenstelling tot talen die zich richten op machinesnelheid, heeft Matz Ruby ontworpen om het de mens gemakkelijker te maken. Laat zelfs een klein offer van computerbronnen.

Ruby maakt gebruik van het zogenaamde “least surprise”-principe. Dit betekent dat het programma zich zal gedragen zoals verwacht door de encoder. Matz gebruikte dit concept alleen voor zijn eigen gemak, maar toen de taal in populariteit groeide, leerde hij dat andere programmeurs er net zo over dachten als hij. Het was zeker een aangename verrassing voor hem.

Ruby houdt zich aan het concept van de Smalltalk-taal, wanneer gegevenstypen als objecten worden beschouwd, wat betekent dat er methoden en objectvariabelen voor kunnen worden ingesteld. Dit is het voordelige verschil met talen zoals bijvoorbeeld C++.

Het is ook vermeldenswaard de flexibiliteit van de taal. U kunt bijvoorbeeld de optelbewerking opnieuw definiëren en de notatie gebruiken die voor u handiger is. Geef bijvoorbeeld op dat het toevoegen van cijfers werkt bij het invoeren van het woord plus (1 plus 2) en niet het teken (1+2). Dat wil zeggen, u past zich niet aan aan de taal, maar integendeel, het past zich aan u aan. Dit geeft veel vrijheid op het gebied van zelfexpressie, aangezien je operators, methoden, etc. kunt herdefiniëren. Onthoud echter dat grote vrijheid gepaard gaat met grote verantwoordelijkheid (met andere woorden, raak niet in de war over wat, waar en hoe je de naam hebt gewijzigd).

Waar Ruby wordt gebruikt

Ruby werd gebruikt voor het Redmine-bugvolgsysteem, een editor voor vector inkscape-afbeeldingen. Ook de derde versie van Metasploit (onderzoeksproject informatiebeveiliging) is volledig herschreven in Ruby. Ruby wordt gebruikt door veel grote organisaties zoals NASA, Motorola, enz.

Ruby kreeg zijn grootste populariteit dankzij Ruby on Rails, uitgebracht in 2004. Rails is gebruikt om reuzen te creëren zoals Twitter, Github, Kickstarter, Diaspora, enz. Het is erg prettig en handig om er sites op te schrijven. Voor databases kunt u bijvoorbeeld de Active Record-query-interface gebruiken, waarmee u gegevens kunt ophalen zonder SQL gebruiken verzoeken (die veel ontwikkelaars erg leuk vinden).

Nu voor Ruby, of liever voor Ruby op Ralis, is de glorie van de taal voor startups hersteld. Op Rails is het vrij eenvoudig om in korte tijd projecten te implementeren die origineel en effectief zijn en verder gaan dan sjabloonbestemmingspagina's en online winkels. Natuurlijk, naarmate de sitebelasting toeneemt en de vereisten veranderen, worden sommige projecten herschreven in andere talen die rekening houden met bepaalde specifieke kenmerken en die geschikter zijn voor sommige gevallen (bijvoorbeeld Java of Scala). Ruby en Rails blijven echter evolueren, dus het kan zijn dat er op korte termijn geen overgang nodig is.

Moeilijkheid om Ruby te leren

Ruby is vrij eenvoudig te leren, maar er is veel meer documentatie over op de Engelse taal dan in het Russisch, dus voor een diepere studie zul je de teksten in het origineel moeten lezen.

Daarnaast is het vermeldenswaard dat er zelden vacatures zijn voor programmeren in pure Ruby. 90 procent daarvan zal hoogstwaarschijnlijk voor Ruby on Rails zijn. RoR-programmeurs zijn tegenwoordig een van de meest gewilde in de IT-industrie. Aan een hoog salaris moet je een hoge status toevoegen van behoren tot de elite en jaloers zijn van andere programmeurs, bijvoorbeeld php-shniks die sites voor visitekaartjes schrijven voor 100 roebel.

Voor- en nadelen van Ruby

Ruby is geliefd om:

  • OOP in de stijl van Smalltalk;
  • gemeenschapsondersteuning (gemeenschappen van programmeurs);
  • eenvoudige en handige syntaxis;
  • groot salaris;
  • ondersteuning van de nieuwste veelbelovende benaderingen op het gebied van programmering;
  • een groot aantal kant-en-klare oplossingen.

De nadelen van Ruby zijn onder meer:

  • slechte ondersteuning voor Windows. Aangezien Ruby voornamelijk voor Linux is ontwikkeld, zal het moeilijker zijn om met de IDE te werken, extra bibliotheken te installeren, enz. op een niet-Unix-achtig systeem.
  • geen vacatures als het niet Ruby on Rails is;
  • weinig documentatie in het Russisch;
  • geheugen verbruik.

Gerelateerde technologieën

Ruby op rails- raamwerk voor het werken op het web. Het werd in 2004 gemaakt door een team van programmeurs onder leiding van David H. Hansson, later werd het aanzienlijk verbeterd door de inspanningen van de ontwikkelingsgemeenschap.

RubyEdelstenen - pakket manager voor Ruby dat de installatie vereenvoudigt extra bibliotheken(heme).

MacRuby- implementatie van de taal, die is ontworpen om mee te werken Mac-systeem OS X. Hierop kunt u gemakkelijker een Mac-toepassing schrijven.
mruby is een verbeterde implementatie waar Yukihiro Matsumoto zelf momenteel aan werkt.

  • Vertaling

ik moet weten robijn relatief recent, dankzij een prachtig kader Ruby op rails. Ik beschouw mezelf niet als een Ruby-expert, maar ik heb PickAxe gelezen, een paar Ruby-hulpprogramma's voor persoonlijk gebruik geschreven en in mijn vrije tijd ook in Rails ontwikkeld.

Ruby is momenteel mijn voertaal. ik begon met TurboPascal op school, studeerde C en C++ aan de universiteit, schreef zijn proefschrift in Java en ik heb ook gestudeerd PHP from scratch omdat ik wilde leren hoe ik snel en gemakkelijk websites kon maken. Ik denk dat het schrijven van code voor mij een vorm van vermaak is, en alleen dan al het andere. In het begin had ik gedachten over welke taal ik moest leren, Python of robijn. Ik koos de tweede omdat ik niet wilde dat slechte inspringing problemen zou veroorzaken in mijn code.

Er zijn een hele reeks introducties, tutorials, artikelen en essays geschreven door goeroes over hoe je het meeste uit Ruby kunt halen. Dit artikel is niet zo.

Het is bescheidener onvolledige lijst redenen die u (mogelijk) motiveren om Ruby te gebruiken, of er op zijn minst mee te spelen. Een waarschuwing: als je een andere programmeertaal gebruikt voor werk of andere doeleinden, klaag me dan niet aan als je die niet meer wilt gebruiken. Dit is precies wat mij is overkomen, maar voor mij is het niet zo belangrijk. Ruby is een prachtige en elegante taal, en zoals zoveel dingen kan het je geest overnemen en je ziel breken.

Kortom, u bent gewaarschuwd.

Waarom Ruby leren?

1. Je krijgt alle gemakken (genot) zonder trucjes.

robijn al het beste geleend van andere programmeertalen, van koetjes en kalfjes voordat Java, van Perl voordat Python. Hier basismogelijkheden, die je misschien ook in andere talen hebt gezien:
  • Uitzonderingen. Geloof het of niet, uitzonderingen zijn een van de belangrijkste dingen bij het ontwikkelen van software. Programmeurs aan PHP4, weet er niets van en zal je vertellen om gewoon (fouten) naar het scherm af te drukken of hun eigen "super duper" -klasse te gebruiken om fouten op te lossen. Gelukkig voor ons allemaal robijn komt met proberen te vangen(of nog beter beginnen/redden) blokken en een set vooraf gedefinieerde, uitbreidbare uitzonderingen, voor correcte verwerking fouten.
  • Naamruimten: modules robijn maak het gebruik van de naamruimte gemakkelijk, enthousiastelingen zouden er dol op zijn C++ en Java.
  • Ingebouwde reguliere expressies: voor alle kenners Perl, je kunt iets concluderen in // en het wordt een reguliere expressie, klaar voor vergelijking (hiervoor gebruiken we de operator =~ ).
  • Overbelasting van de operator: robijn stelt u in staat om operators te definiëren zoals: +, -, > , enzovoort. voor al je lessen.
  • Pakketten: genaamd " edelstenen”(kiezelstenen), ze doen hun naam echt eer aan, bovendien - ze werken. Pakketten ondersteunen afhankelijkheden en kunnen ook platformonafhankelijk of platformspecifiek zijn.
  • Interactieve console: kan worden gebruikt om code interactief te testen, vergelijkbaar met een console Python

2. Je houdt van de kleine dingen.

robijn bevallig. Waarom? Omdat hij niet probeert de code zo beknopt te maken dat het de leesbaarheid en begrip verstoort. Er zijn enkele tips die u kunnen helpen:
  • U kunt beide operators gebruiken als en tenzij in voorwaardelijke uitdrukkingen. Tot slot kunt u gebruik maken van als met de tegenovergestelde betekenis van de uitdrukking, maar gebruik tenzij resulteert meestal in minder fouten. U kunt beide operators ook als voorwaardelijke modifiers gebruiken door ze achter de uitdrukking te plaatsen in plaats van ervoor: order.new tenzij order.exists
  • U kunt vraagtekens en uitroeptekens gebruiken aan het einde van een methodenaam. Deze overeenkomst niet opgelegd, maar het teken " ? ' wordt gebruikt wanneer de methode terugkeert waar of vals, terwijl het teken " ! ' wordt gebruikt voor methoden die iets onomkeerbaars doen, zoals het verwijderen van een record uit een database, splitsen laatste karakter van een string, enz.
  • U kunt aliassen gebruiken ( alias) voor reeds gemaakte methoden. Op deze manier kun je methoden krijgen bestaan en bestaat, geen overhead en geen herhaling.
  • U kunt richtlijnen gebruiken attr_reader, attr_writer of attr_accessor voor automatisch aanmaken getter/setter voor klasgenoten.
  • En nog wat naamgevingsconventies: constanten, klassen en modules worden geschreven met hoofdletter, methoden en klasseleden moeten beginnen met een kleine letter, globale variabelen krijgen een naam die begint met " $ ”, namen objectvariabelen beginnen met “ @ ", en namen van klassenvariabelen met " @@ ", nou ja, enz.
  • Bij het aanroepen van methoden kunnen haakjes worden weggelaten. Je kunt File.open("/home/h3rald/test.txt") of gewoon File.open "/home/h3rald/test.txt" schrijven, wat vooral handig is met methoden zonder argumenten.

3. U hoeft geen puntkomma's meer te gebruiken.

Wilt u de volgende instructie schrijven? Ga gewoon naar nieuwe lijn. Klik " Binnenkomen en je bent klaar. V robijn Als in Python, een nieuwe regel scheidt de instructies, zodat u niet altijd puntkomma's hoeft te gebruiken. Helaas betekent dit dat net als de fans C++, zullen we niet in staat zijn om een ​​programma in één regel te schrijven. Maar dat is niet zo erg, toch?

4. Alles is een object, zoals het hoort.

Toen ik studeerde Java,,Ik kreeg te horen dat alles een object is.
- "Che, 14 en 374346.678 - objecten?"
- "Nee, gek, dit zijn cijfers!"

V robijn getallen, symbolen, booleans en al het andere is een object. Ernstig. Dit betekent dat je dingen als volgt kunt schrijven:
"JE MOET NIET ALTIJD HOOFDLETTERS GEBRUIKEN".lowcase # geeft als resultaat "je moet niet altijd hoofdletters gebruiken" in plaats van zoiets als dit:
#PHP-code
strtolower("JE MAG NIET ALTIJD HOOFDLETTERS GEBRUIKEN")
Dit bespaart tijd, bespaart haakjes en is logischer.

5. Alles is belangrijk.

Of "hoeft niet meer te gebruiken" opbrengst om waarden terug te geven". Om snel te zijn, retourneren alle Ruby-instructies een waarde, zelfs variabele toewijzingen, zodat u deze niet echt hoeft te gebruiken trefwoord « opbrengst» aan het einde van de methoden. De waarde van de laatste opdracht wordt altijd geretourneerd.

6. Je kunt de omgeving op elke mogelijke manier veranderen.

Toen ik het voor het eerst zag, was ik onder de indruk. Stel je voor typische situatie: je begon een systeemklasse te gebruiken of een klasse die door iemand anders is geschreven en realiseerde je dat je wat nodig hebt aanvullende methode: in hem. Er zijn verschillende manieren om dit probleem in typische programmeertalen op te lossen:
  • Je wijzigt de broncode van de klas als je er toegang toe hebt. Maar meestal is dit een slecht idee, niet doen.
  • Je erft je klas daarvan en voegt er iets aan toe nieuwe methode. Meestal is dit - goed idee. Maar door één methode kan dit enigszins mon-achtig zijn. Bovendien moet u uw andere code dienovereenkomstig enigszins aanpassen.
  • Je kunt gewoon een methode buiten de klas maken. Dit zal werken, maar het zal niet erg elegant zijn en het gaat ook tegen de stroom in. OOP.
V robijn je kunt een methode aan de originele klasse toevoegen zonder de broncodes te bewerken. Dit kan zelfs voor een systeemklasse.
We willen een methode toevoegen om waarden om te rekenen van meter naar voet? Laten we de les gewoon uitbreiden Numeriek, zoals getoond:
klasse Numeriek
zeker voeten
zelf*3.2808399
einde
einde

Vanaf nu hebben al onze nummers een nieuwe methode die als elke andere kan worden gebruikt:
5.feet # retourneert 16.4041995
Lessen in robijn zijn nooit gesloten en kunnen altijd en overal worden uitgebreid. Uiteraard moet deze mogelijkheid met de nodige voorzichtigheid worden benut!

7. Je kunt geen eenhoorns krijgen van vogels en dat is het, maar je kunt ezels krijgen als je dat wilt.

Ik herinner me duidelijk hoe mijn leraar C++, gebruikte dieren om de basisconcepten van objectgeoriënteerd programmeren te illustreren - klassen en overerving. Er was iets mysterieus toen ze ons meervoudige overerving uitlegde, een "pegasus" vormend van "vogels" en "paarden". zotte dingen robijn staat geen meervoudige overerving toe. Het lijkt een trend en uiteindelijk is het een kwestie van smaak. Ik ben niet dol op meervoudige overerving omdat dit tot onvoorspelbare dingen kan leiden. Desondanks is het mogelijk om iets soortgelijks te maken met behulp van modules robijn, dus de variabelen en methoden van een module worden toegevoegd aan een specifieke klasse als de module erin is opgenomen.

8. XML is echt niet nodig.

XML- een mooie, veelvoorkomende, opmaaktaal die door alle programmeertalen kan worden verwerkt en overal wordt gebruikt. Helaas is het te omslachtig om te schrijven, moeilijk te ontleden en, laten we eerlijk zijn, in de meeste gevallen moeilijk te lezen. Kijk eens naar het volgende fragment:
regexp: !ruby/regexp /a-zA-Z/
nummer 4.
string: een string

Zeker makkelijker en makkelijker. XML, waarheid? Welkom bij YAML, de favoriete (maar niet de enige) opmaaktaal robijn, met behulp waarvan elk object kan worden weergegeven in een eenvoudige, beknopte, maar volledige vorm.
Ruby kan werken met XML maar eenvoud YAML veel ontwikkelaars omgekocht die het nu gebruiken XML, bijvoorbeeld voor configuratiebestanden (dit is gedaan in Rails). Het hierboven gepresenteerde fragment is verkregen door het volgende codefragment uit te voeren:
("string" => "een string", "nummer" => 4.7, "regexp" => /a-zA-Z/).to_yaml
Methode to_yaml, gedefinieerd voor de klasse Object, dat het bovenliggende element is van alle andere objecten en daarom beschikbaar is voor alle objecten robijn. Hierdoor kunnen objecten worden geconverteerd naar: YAML en vice versa, absoluut transparant voor de ontwikkelaar. Cool, ja?

9. Lambda is meer dan alleen een Griekse letter.

robijn wat magie geleend van Lisp en Perl in objecten en blokken Proc. Proc is "een codeblok dat is gekoppeld aan een reeks lokale variabelen. Eenmaal gebonden, kunnen ze in verschillende contexten worden aangeroepen en nog steeds naar die variabelen verwijzen." Laten we naar het volgende kijken:
def gen_times(factor)
retour Proc.nieuw (|n| n*factor )
einde

Times3 = gen_times(3)
times5 = gen_times(5)

Times3.call (12) #=> 36
times5.call(5) #=> 25
times3.call(times5.call(4)) #=> 60

Je zou het trefwoord kunnen gebruiken lambda in plaats van Proc.nieuw, het heeft geen invloed op het resultaat. Het komt misschien bekend voor bij mensen die het weten Perl en Python(of Lisp). Dit kan zelfs voor PHP maar niet veel mensen maken gebruik van deze mogelijkheid.
Trouwens, in robijn veelgebruikte blokken van het type "ongecreëerd" Proc”, bijvoorbeeld om de inhoud van een object te herhalen en wat code uit te voeren, zoals de methode elk, beschikbaar voor de klas reeks:
.each (|c| zet c*2) #=> retourneert elk element vermenigvuldigd met 2
Als de code niet op één regel past, is het aan te raden om de constructie te gebruiken doe... einde, in plaats van haakjes te gebruiken. Fans robijn hou niet van haakjes.

10. U kunt rails gebruiken.

Last but not least... Je kunt altijd Rails voor het ontwikkelen van webapplicaties. Ontwikkeling zal niet zo eenvoudig zijn als met PHP, maar Rails waren geschreven in robijn, omdat het functies heeft die niet in andere talen worden gevonden.

Gevolgtrekking

De tijd is op. Misschien denk je er al over om te kijken naar robijn, misschien heb je het al geprobeerd, of misschien heb je het gewoon genegeerd. Hoe het ook zij, de volgende keer dat je naar je code kijkt, ziet het er eng uit en de omvang ervan intimiderend - neem me niet kwalijk.

Beste lezers, vergeet niet dat de habrauser de tekst eenvoudig vertaalde (slecht, ja). Hij hoeft geen ideologische claims te uiten.

Invoering

Tegenwoordig is de zoekmachine een van de meest gebruikte methoden om te navigeren in cyberspace, dat elke dag groeit en zich uitbreidt. Het is duidelijk dat algoritmen voor het zoeken naar informatie hun complexiteit en efficiëntie voortdurend moeten vergroten. Het doel van dit werk is niet om de algoritmen voor het ophalen van informatie te beschrijven, maar om er een inleidende beschrijving van te geven. Het doel van dit werk is ook om een ​​zoekwebtoepassing te schrijven in de taal Ruby-programmering.

Op basis van het bovenstaande kunnen de volgende doelen worden gevormd:

Inleiding tot algoritmen voor het ophalen van informatie

Een zoekwebtoepassing schrijven

De gestelde doelen worden uitgevoerd met behulp van taken:

Zoektheorie verkennen

De programmeertaal Ruby leren

Inleiding tot de Haml-opmaaktaal

Inleiding tot de Sass-metataal

Codeer een webapplicatie met Ruby, Haml en Sass

Debug de resulterende applicatie

Theoretisch gedeelte

Theorie voor het ophalen van informatie

Eerst moet u een zoekmachine definiëren.

Zoeksysteem - software- en hardwarecomplex met een webinterface die de mogelijkheid biedt om informatie op internet te zoeken.

Op basis van de uitgevoerde functies en de op te lossen taken, worden zoekmachines ingedeeld in:

referenties zijn het meest voorkomende type functies informatie Systemen, en bestaat erin systeemabonnees de mogelijkheid te bieden om installatiegegevens voor bepaalde klassen van objecten te ontvangen;

zoekmachines zijn de meest voorkomende klasse van informatiesystemen. Over het algemeen kan het formulier als een soort worden beschouwd informatieve ruimte, gespecificeerd in termen van de informatie-logische beschrijving van het vakgebied);

regeling. De functie van het systeem is om de informatie in het systeem volgens bepaalde rekenalgoritmen voor verschillende doeleinden te verwerken.

Naar de aard van het verstrekken van een logische organisatie van opgeslagen informatie, worden zoekmachines onderverdeeld in factografische, documentaire en geo-informatie.

Factografische zoekmachines verzamelen en bewaren dus gegevens in de vorm van vele instanties van een of meer typen structurele elementen. Elk van deze voorbeelden van structurele elementen of een deel van hun combinatie weerspiegelt informatie, over een feit, gebeurtenis. De structuur van elk type informatieobject bestaat uit een eindige reeks details die de belangrijkste aspecten en kenmerken van informatie voor objecten van dit onderwerpgebied weerspiegelen.

In systemen voor het zoeken naar documenten is een enkel informatie-element een document dat niet is opgedeeld in kleinere elementen, en informatie is gewoonlijk niet gestructureerd wanneer deze wordt ingevoerd, of is gestructureerd in beperkte vorm. Voor het invoerdocument kunnen enkele geformaliseerde posities worden ingesteld - fabricagedatum, uitvoerder, onderwerp. Sommige soorten documentaire informatiesystemen zorgen voor een logische relatie tussen de ingevoerde documenten - ondergeschiktheid in termen van semantische inhoud.

Geospatiale gegevens worden apart georganiseerd informatie objecten gebonden aan een gemeenschappelijke elektronische topografische basis. Geo-informatiesystemen gebruikt voor informatieondersteuning in die vakgebieden, de structuur van informatie-objecten en processen waarin sprake is van een geografische component.

Er is ook de volgende classificatie van zoekmachines (Fig. 1.)

Figuur 1. Classificatie van zoekmachines

Over zoekmachines gesproken, het is de moeite waard om de theorie van zoekopdrachten en hun classificatie te noemen. Dus in 1949 beschreef een professor in de filologie van Harvard enkele van de kenmerken van het ophalen van informatie.

Professor Zipf merkte op dat lange woorden minder vaak voorkomen in teksten van welke taal dan ook dan korte. Op basis van deze observatie leidde Zipf twee wetten af:

De eerste wet relateert de frequentie van voorkomen (voorkomen) van een bepaald woord met de rangorde van deze frequentie. De meest voorkomende woorden krijgen een rang, gelijk aan één. Die woorden die minder vaak voorkomen - een rang gelijk aan twee, enz. Zipf ontdekte dat het product van de frequentie van voorkomen van een woord en zijn rang een constante waarde is.

Een dergelijke afhankelijkheid wordt meestal weergegeven als een hyperbool. De waarde van de Zipf-constante is verschillend voor verschillende talen, maar blijft binnen dezelfde taalgroep hetzelfde. Voor de Russische taal is de constante ongeveer 0,06-0,07.

Zipf stelde vast dat de frequentie van voorkomen van woorden en het aantal woorden in de tekst met een bepaalde frequentie ook met elkaar samenhangen.

Enerzijds behoudt de resulterende curve zijn parameters voor alle teksten in dezelfde taal. Aan de andere kant, ongeacht in welke taal de tekst is geschreven, de vorm van de Zipf-curve blijft ongewijzigd. Alleen de coëfficiënten zullen verschillen.

De wetten van Zipf zijn universeel. Ze zijn niet alleen van toepassing op teksten. In een vergelijkbare vorm wordt bijvoorbeeld de relatie tussen het aantal steden en het aantal inwoners dat erin leeft, uitgestort. De kenmerken van de populariteit van internetbronnen komen overeen met de wetten van Zipf. De wetten van Zipf weerspiegelen de "menselijke" oorsprong van objecten.

In ieder geval, elke zoekopdracht kan worden ingedeeld op basis van drie kenmerken: lengte van de zoekopdracht, duidelijkheid van de zoekopdracht, zoekstadium.

Dus, volgens de lengte, zijn alle verzoeken onderverdeeld in:

Eén woord ("promotie")

Twee-woord(" zoek promotie»

Drie-woord ("professionele zoekpromotie")

Uitgebreid ("professionele zoekpromotie goedkoop")

Voor alle duidelijkheid zijn alle verzoeken onderverdeeld in:

Expliciete aanvraag ("prijs voor iPad 2")

Fuzzy-verzoek ("Ozon", wat zowel gas als de naam van de winkel en de naam van de directeur kan zijn)

Volgens de zoekfase zijn alle verzoeken onderverdeeld in:

Bewustwording van het probleem ("de site werkt niet")

Zoek naar een oplossing ("website hosting")

Keuze van de beslissing ("welke hosting te kiezen")

Zoek naar de plaats van de transactie ("masterhost hostingtarieven")

RUBY programmeertaal

Ruby - dynamisch, reflecterend, geïnterpreteerd taal op hoog niveau programmeren voor snel en gemakkelijk objectgeoriënteerd programmeren. De taal is onafhankelijk van besturingssysteem implementatie van multithreading, sterk dynamisch typen, garbage collector en vele andere functies. Ruby ligt qua syntaxis dicht bij Perl en Eiffel, in objectgeoriënteerde benadering - bij Smalltalk. Ook zijn enkele kenmerken van de taal overgenomen uit Python, Lisp, Dylan en Clu. Tot op heden is de Ruby-interpreter geïmplementeerd voor bijna alle platforms (Unix, Win32, OS X). De maker van de taal is Yukihiro Matsumoto.

Ruby is een volledig objectgeoriënteerde programmeertaal. Alles is een object en functies zijn methoden van die objecten.

Belangrijkste eigenschappen van Ruby:

Geïnterpreteerde taal:

Mogelijkheid tot directe systeemoproepen.

Krachtige ondersteuning voor bewerkingen met strings en regels (reguliere expressies).

Onmiddellijke manifestatie van veranderingen tijdens de ontwikkeling.

Geen compilatiefase.

Eenvoudig en snel programmeren:

Het is niet nodig om variabelen te declareren.

Variabelen worden dynamisch getypt.

Eenvoudige en consistente syntaxis.

Automatische controle werkgeheugen.

Object georiënteerd programmeren:

Alles is een voorwerp. Zelfs de klassenaam is een instantie van de klasse Class.

Klassen, methoden, overerving, polymorfisme, inkapseling enzovoort.

Enkele methoden.

Mixins die modules gebruiken (de mogelijkheid om een ​​klasse uit te breiden zonder overerving);

Iterators en sluitingen.

Uitgebreide metaprogrammeringsmogelijkheden.

Faciliteiten:

Onbeperkt bereik van gehele waarden.

Uitzonderingsbehandelingsmodel.

Alle operators retourneren waarden, zelfs besturingsstructuren.

Uitzondering vangmechanisme.

Draad ondersteuning; zowel native als systemen van de UNIX-familie.

Gebreken:

De onbeheersbaarheid van sommige processen (zoals geheugentoewijzing), het onvermogen om low-level datastructuren of subroutines in te stellen;

De onmogelijkheid van compilatie en de bijbehorende optimalisatie van het programma;

Open source code, zelfs in voltooid programma

Het gevolg van de eerste twee tekortkomingen is zeer lage snelheid programma's starten en uitvoeren.

Het is ook vermeldenswaard dat er veel modules (add-ons) voor Ruby zijn voor bijna elk soort taak (interfaceprogrammering, complexe wiskundige berekeningen, werken met audio, video, 3D, enz.). Daarom is deze programmeertaal gekozen als de belangrijkste voor het schrijven van het praktische gedeelte.

1.3. Vereenvoudigde opmaaktaal HAML

Haml is een opmaaktaal voor vereenvoudigde XHTML-generatie. HAML compileert naar HTML. Haml is veel eenvoudiger dan Html" omdat het je in staat stelt om het schrijven van webapplicaties te vereenvoudigen en te versnellen.

Bijvoorbeeld dit stuk Haml-code

%html( html_attrs("en") )

%titel Mijn blog

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

stylesheet_link_tag "hoofd"

%h1 Mijn blog

%h2-records

- @entries.elk doe |entry|

%h3.title= ingang.titel

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

%p.body= entry.body

Alle rechten voorbehouden © Ivan

Html-code is getransformeerd

Mijn blog