In diesem Artikel werden wir über den
Kurs "Web Programming Languages" sprechen, der an der Abteilung für "Computersysteme und Netzwerke" (IU-6) MSTU unterrichtet wird. N.E. Bauman. Beispiele werden auf Ruby gegeben, und der Kurs selbst umfasst 16 Videovorträge, die kostenlos auf dem
Technostream- Kanal verfügbar sind. In Baumanka wird der Kurs für Schüler im zweiten Jahr unterrichtet, die bereits mit hohen Programmiersprachen wie Pascal, C ++ oder Java vertraut sind. Das Hauptaugenmerk liegt auf einem systematischen Verständnis der in der Webprogrammierung verwendeten Technologien und nicht auf der Tiefe der Entwicklung von Ruby-Technologien. Daher ist der Kurs auch für Studenten nützlich, die über skizzenhafte Kenntnisse der Webtechnologien in einer beliebigen Sprache verfügen.
Inhalt
- Über den Kurs "Web-Programmiersprachen"
- Vorlesungsinhalt
- So erstellen Sie einen Kurs für eine Universität
- Warum Ruby?
- Warum ist Ruby nicht beliebt?
- Zusammenfassung
Web-Programmiersprachen
Warum heißt der Kurs Webprogrammiersprachen? Die Antwort ist sehr einfach. Wie vor 30 Jahren, als das Internet noch im Entstehen begriffen war, gibt es jetzt keine Möglichkeit, eine Programmiersprache zu verwenden.
- Auszeichnungssprachen sind HTML und CSS.
- Konfigurations- und Datenaustauschsprachen - JSON, XML, YAML.
- Browser-Programmierung - Javascript (Typoskript, Coffeescript ...).
- Serverprogrammierung - Ruby, PHP, Perl, Java, Javascript ...
Um die Webprogrammierung auch nur in minimalem Umfang zu verstehen, müssen Sie 4-5 Markup- und Programmiersprachen kennen (obwohl die Grenzen zwischen ihnen jetzt verschwommen sind).
Kurszweck
Das Hauptziel des Kurses ist es, ein Verständnis für die für die Webentwicklung erforderlichen Technologien zu vermitteln, da die meisten modernen Projekte in irgendeiner Weise mit der Webentwicklung zusammenhängen. Der Kurs ist so angelegt, dass die Studierenden in prägnanter Form die Grundlagen erhalten, die als Rahmen für ein eingehendes Studium dienen können.
Die Schüler erarbeiten während des Trainings unabhängig voneinander bestimmte Fähigkeiten. Der Entwicklungsgrad hängt davon ab, ob Sie in Zukunft in die Webentwicklung eintauchen möchten.
Kursautor
Der Hauptentwickler des Kurses ist ein Kandidat der technischen Wissenschaften, außerordentlicher Professor des nach ihm benannten Lehrstuhls "Computersysteme und Netzwerke" der MSTU Bauman Samarev Roman Stanislavovich. Ein Programmierer mit mehr als 20 Jahren Erfahrung (C ++, C, Java, Perl, PHP, Ruby und andere für Windows, Linux, Embedded Linux, MacOS), Leiter der Softwareentwicklung, Forscher im Bereich DBMS, Datenverarbeitung und Big Data, arbeitete in Russland, in Deutschland und in den USA.
Dauer und Format
Der gesamte Kurs umfasst 192 akademische Stunden: 16 Vorlesungen für 2 Stunden, 8 Seminare für 2 Stunden, 48 Stunden für 12 Laborarbeiten. Der Rest der Zeit wird für das Selbststudium aufgewendet. Videomaterial enthält nur den Vortragsteil. Wer tiefer in das Thema des Kurses eintauchen möchte, muss die Materialien der Laborarbeit und der Seminare selbstständig lernen. Alle Fragen können an den Lehrer gestellt werden:
samarev@acm.org .
Ergebnisse
Im Rahmen des Schulungskurses vermitteln wir den Schülern nicht nur ein Verständnis für bestimmte Webtechnologien, die in der Programmiersprache Ruby implementiert sind, sondern auch eine ganzheitliche Wahrnehmung der Probleme, die beim Erstellen von Webanwendungen auftreten, und alles, was damit einhergeht. Dabei verwenden wir Ruby als sehr gutes Beispiel. Die Ruby-Sprache selbst ist eine nützliche Ergänzung für Studenten, die außerhalb des Kurses weit verbreitet sein kann.
Kursinhalt
Vorlesungen 1-2. Einführung- Eine Einführung in die Webprogrammierung in Bezug auf die grundlegende Architektur.
- Minimale Informationen zu Auszeichnungssprachen und Stylesheets.
- Minimale Einführung in Javascript.
Vielleicht hätte Javascript viel mehr Zeit einplanen sollen, aber da die browserbasierte Webprogrammierung nicht das Hauptziel des Kurses ist und serverseitige Programmiertechnologien in Javascript noch nicht etabliert wurden, reicht das verfügbare Material für ein erstes Verständnis aus.
Vorlesungen 3-5. RubyDie nächsten drei Vorlesungen sind Ruby gewidmet, da dem Kurs die Technologien in dieser Ruby-Sprache zugrunde liegen. Zu den Vorträgen gehören:
- Die Grundlagen der Ruby-Sprache.
- Erforderliche Informationen zur Typstruktur und zum Objektmodell.
- Funktionsstil.
Vorlesung 6. Prinzipien zum Erstellen von Webanwendungen- Gemeinsame Gateway-Schnittstelle.
Jemand wird sagen, dass dieser Standard nicht relevant ist, aber jeder modernen Webprogrammierung zugrunde liegt. Daher muss jeder Webprogrammierer einfach wissen, was es ist, und muss verstehen, dass die einfachste Webanwendung nur "Hallo Welt" lautet.
Vorlesung 7. Rack- Rack ist eine Zwischenschicht für die meisten Ruby-Webframeworks.
- Sinatra ist ein gängiges Framework zum Erstellen einfacher Anwendungen.
- Ein Beispiel zum Erstellen einer Anwendung.
Vorlesung 8. Einführung in Rails- Schlüsselaspekte einer Rails-Anwendung.
Ruby on Rails ist genau das Framework, das Ruby berühmt gemacht hat und fast zu seinem Synonym wurde. Dies ist ein Beispiel für ein tief entwickeltes Model-View-Controller-Framework, das als Prototyp für viele andere Web-Frameworks diente, darunter Grails und Django. Beachten Sie, dass das Rails-Konzept darin besteht, mit automatischen Generatoren so viel Code wie möglich zu generieren und weniger von Hand zu schreiben.
Vorlesung 9. Asynchrone InteraktionDie meisten modernen Webanwendungen verwenden die asynchrone Methode, dh Serveranforderungen werden für den Benutzer im Hintergrund ausgeblendet. Die Antworten werden irgendwo tief im Browser ausgearbeitet. Was müssen Sie hier wissen?
- Austauschformate - XML und JSON.
- Ausführen einer asynchronen Anforderung aus Javascript.
- Das Konzept des unauffälligen Javascript für Rails.
Vorlesung 10. TestenAlle modernen Programme sollten durch automatische Tests abgedeckt werden. Ruby beinhaltet die Verwendung von Unit-Tests. Und natürlich schlägt Rails vor, dass jede Aktion in Tests behandelt werden sollte. Die Vorlesung umfasst folgende Themen:
- Testen verschiedener Aspekte von Webanwendungen.
- Einführung in Domänensprachen (da RSpec und Cucumber Beispiele für „Menschlichkeit“ in Tests sind: Ein Testprogramm sollte nicht nur für einen Programmierer verständlich sein, der auf die verwendete Sprache „zugeschnitten“ ist, sondern auch für eine normale Person). Beachten Sie, dass der in RSpec und Cucumber verwendete Ansatz jetzt in Testwerkzeugen für viele andere Programmiersprachen weitgehend repliziert wird.
- Tools wie SikuliX und Selenium, mit denen Programme mit einer grafischen Oberfläche bzw. Browsern getestet werden können.
Vorlesung 11. XML-Technologien- Fragen Sie Sprachen wie Xpath, Xquery ab.
- XSL und XSLT.
Es scheint, was hat das alles mit Webprogrammierung zu tun? XML ist jedoch das Kernstück der Web-Technologie. Die Tatsache, dass wir XML jetzt nicht als Austauschformat verwenden, garantiert nicht, dass wir nach 5 Jahren nicht mehr damit beginnen werden. Es gibt noch keinen einheitlichen Ansatz zur Überprüfung von Daten im JSON-Format. Und im Fall von XML wird das Markup-Schema von der Sprache selbst festgelegt.
Die Xpath-Abfragesprache ist in der Tat eine universelle Wegpunkt-Abfragesprache, mit der nach Elementen baumartiger Datenstrukturen gesucht werden kann, einschließlich JSON.
XSLT-Transformationen sind auch eine andere Möglichkeit, XML-Dokumente zu transformieren, deren Wissen es den Schülern ermöglicht, das Rad in Zukunft nicht neu zu erfinden, wenn sie auf ETL stoßen.
Vorlesung 12. ORM (Object-Relational Mapping)Nahezu jedes moderne Webprogrammierungsframework bietet alle Mittel zur objektrelationalen Transformation. Die Schüler müssen verstehen:
- warum ein solcher Mechanismus benötigt wird;
- Was sind seine Grenzen?
- wie man es in der Praxis benutzt.
In diesem Fall wird alles im Kontext von Ruby on Rails betrachtet.
Vorlesung 13. Sitzungen, Sicherheit und alles, was damit zusammenhängt.- Eine Cookie-basierte Statusspeichermethode.
- Typische Authentifizierungsmethoden.
- Ein Beispiel für das Hinzufügen von Berechtigungen in Rails.
- Sicherheitsüberlegungen für Webanwendungen an sich.
Vorlesung 14. Dienstleistungen- Historische Aspekte.
- Spezifische Empfehlungen zur Entwicklung und Bereitstellung eigener Dienste für das Web.
Vorlesung 15. CMS (Content Management Systems)Bei der Webprogrammierung ist es wichtig, nicht nur eine Anwendung schreiben zu können, sondern auch zu verstehen, ob Sie sie schreiben müssen. Diese Vorlesung ist eine Demonstration der Haupttypen bereits erstellter Webanwendungen, die an die Anforderungen eines bestimmten Kunden angepasst und bei Bedarf finalisiert werden können.
- Schwerpunkt auf Ruby-Tools.
- Das am häufigsten in PHP geschriebene CMS.
Vorlesung 16. Hosten von Ruby-Webanwendungen im InternetDie allgemeine Ideologie der Webdienste wird berücksichtigt. Die Ursprünge dieser Architektur mit dem Exchange-XML-Format und ihre weitere Änderung in der Web-API mit JSON und REST oder GraphQL werden erläutert.
- Webserver
- Virtualisierungsmethoden.
- Möglichkeiten zum Hosten der Anwendung im Internet.
So erstellen Sie einen Kurs für eine Universität
Es ist schwierig, Schulungen zu Programmierthemen zu erstellen, bei denen sich die Technologie alle 5-10 Jahre ändert. Bei der Erstellung eines Kurses für eine Universität muss ein Gleichgewicht zwischen der Ausbildung praktischer Fähigkeiten in bestimmten Programmiersprachen und der Darstellung der theoretischen Grundlagen hergestellt werden, die für das Verständnis der Technologien als solche erforderlich sind. Außerdem liegt der Unterschied zwischen universitären Aus- und Weiterbildungskursen in der systematischen Präsentation von Material, das auch Beschränkungen auferlegt, wann und in welchem Umfang bestimmte Materialien eingereicht werden können.
In den letzten Jahren gab es eine Tendenz, Universitätsvorlesungen auf Video aufzuzeichnen und Videokurse zu erstellen.
Der Kurs "Web Programming Languages" ist der erste derartige formelle Versuch unserer Universität. Und basierend auf dem Feedback werden wir entscheiden, wie und in welchem Format neue Einträge vorgenommen werden sollen.
Vor 10 Jahren war es notwendig, den Lehrplan radikal zu aktualisieren und unter anderem die Webprogrammierung einzuführen. In der Abteilung für Computersysteme und Netzwerke werden für Kurse in Bezug auf Elektronik und Computerdesign traditionell ungefähr die gleichen Schulungsstunden vergeben wie für die Programmierung. Darüber hinaus umfassen Programmierkurse algorithmisches Training in Hochsprachen Pascal, C, C ++ / Qt, Training in verschiedenen Assemblern sowie die Theorie der Programmiersprachen und Compiler. Und sogar Programmiersprachen für FPGAs und spezielle Hardware. Das heißt, die Abteilung bereitet universelle Spezialisten vor, die in Zukunft ihre eigene Spezialisierung wählen.
Wir mussten vielversprechende Webtechnologien identifizieren, die in einem Semester beherrscht werden können, und es ist wünschenswert, dass diese Technologien in andere Programmiersprachen projiziert werden können.
Warum Ruby?
Warum wird Ruby ausgewählt? Die Auswahl an Sprachen für die Webprogrammierung ist sehr umfangreich. Neben Ruby sind dies PHP, Perl, Javascript, Java, Go und andere. Wenn wir uns aus der Perspektive hoch geladener Webanwendungen nähern und dann
Benchmarks senden, die an dem
Web Framework zweifeln, sehen wir C ++, Java, Rust, Ur, Go usw. im Vordergrund. Ruby ist weder für die Webentwicklung am beliebtesten noch für am schnellsten hoch belastete Lösungen. Ruby hat jedoch eine Reihe anderer Vorteile, die es zu einer Programmiersprache machen, die jeder ausgebildete Programmierer kennen sollte.
Ruby feierte kürzlich sein 25-jähriges Bestehen, was bedeutet, dass es eine ziemlich ausgereifte Sprache ist. Trotz der Tatsache, dass die meisten der genannten Sprachen ebenfalls über dieses Alter hinausgegangen sind oder diesem Alter nahe kommen (Rust, Dart, Go sind im Vergleich dazu immer noch „grün“), ist Ruby eine der wenigen Sprachen, die über die Jahre hinweg die Abwärtskompatibilität bewahrt haben.
In der Welt von Ruby können wir sagen, dass es keine Revolutionen und radikale Veränderungen gab. Es bezieht sich auf zunächst gut gestaltete Sprachen, deren Grundkonzepte bis heute unverändert geblieben sind. Leistungsansprüche bezogen sich auf ältere Versionen vor 1.8.7, die vor 10 Jahren eingestellt wurden. Moderne Versionen zeigen jedes Jahr eine mehrfache Steigerung der Produktivität. Behauptungen, dass diese Sprache nicht sehr beliebt ist, gelten nur für unser Land. Leider umgehen große Unternehmen in unserem Land ihn wirklich unverdient.
Warum ist Ruby gut für die Universitätsausbildung? Dies ist eine reine Objektsprache. Und da es dynamisch ist, kann fast alles neu definiert werden. Es gibt keine einfachen Typen in seinem Modell (wir werden hier nicht über eine Systemimplementierung nachdenken, wir sprechen nur über ein Modell). Alle Daten sind ein Objekt. Code ist ein Objekt. Das heißt, Ruby macht es einfach, die Prinzipien der objektorientierten Programmierung zu erlernen. Darüber hinaus ist die Syntax der Sprache recht einfach und hat fast keine Ausnahmen. Jeder im Programm geschriebene Code muss einmal ausgeführt werden, und es spielt keine Rolle, wo dieser Code geschrieben wird - innerhalb oder außerhalb der Klassendeklaration. Was auch immer geschrieben steht, es wird erfüllt. Die Ruby-Syntax ist sehr flexibel, was das Schreiben domänenspezifischer Sprachen (DSL / DSEL) sehr bequem macht. Darüber hinaus ist das grundlegende Ruby-Konzept - der Block - eine anonyme Funktion. Durch die Beherrschung dieser Prinzipien können die Schüler die funktionale Programmierung in reinen funktionalen Programmiersprachen problemlos beherrschen.
Und vielmehr das dekorative Verdienst von Ruby - Sie müssen keine Zeit damit verschwenden, die obligatorische Formatierung von Code mit Einrückungen zu erklären. Das Programm ist ohnehin deutlich gekennzeichnet. Durch die Formatierung wird automatisch Rubocop bereitgestellt, und die Schüler lernen im Laufe der Zeit, richtig zu schreiben.
Warum ist Ruby nicht beliebt?
Warum ist Ruby mit solchen Vorteilen immer noch nicht beliebt und bezieht sich auf Sprachen mit einer hohen Eintrittsschwelle?
Das Erste, was Sie verstehen sollten: Ruby ist nicht nur eine weitere wichtige Programmiersprache, mit der Sie abends programmieren können, sondern die Sie in einer Woche vollständig verstehen können. Dies ist eine andere Sprache mit einer anderen Philosophie.
Das erste Prinzip von Ruby: Der Text des Programms sollte als Text in natürlicher Sprache wahrgenommen werden. Das heißt, Ruby ist eine Sprache für einen Programmierer, der eine Person ist, und keine Sprache, für die Sie den richtigen Programmierer finden müssen. Leider folgen die meisten modernen Programmiersprachen dem Prinzip "Der Programmierer wird es aushalten", und der Rückzug wird bereits mit Schwierigkeiten wahrgenommen.
Ruby wird oft dafür kritisiert, dass er auf dutzende Arten dasselbe getan hat. Aber in der natürlichen Sprache haben wir eine große Anzahl von Synonymen, und es ist die Wahl des richtigen Synonym, die unsere Sprache reich macht. So ist es in Ruby. Neben der Tatsache, dass dieselben Aktionen auf unterschiedliche Weise ausgeführt werden können, gibt es viele Synonyme, die denselben Methoden zugeordnet sind, die den speziellen Methoden
alias
und
alias_method
.
Ein einfaches Beispiel für die Einschränkungen der meisten anderen Programmiersprachen. Angenommen, es gibt eine Reihe von Produkten, und Sie möchten feststellen, dass diese nicht leer sind. In den meisten Sprachen schreiben wir so etwas wie
if (products.size() > 0
) .... Aber nachdem wir in den Laden gekommen sind, fragen wir den Verkäufer nicht: "Wenn Sie mehr als null von so und so einem Produkt haben?" Wir stellen eine einfache Frage: "Haben Sie so und so ein Produkt?". Ruby muss Methoden verwenden, die die Bedeutung der Aktion ausdrücken. Ja, wir können den Check "größer als Null" verwenden, aber der natürliche Weg ist zu fragen,
if products.any
. Das heißt wörtlich: Gibt es Produkte? Beachten Sie, dass Ruby gut mit Unicode funktioniert. Wenn nötig, können Sie basierend auf dieser Sprache spezielle Sprachen mit regionaler Anpassung erstellen. Wenn Sie beispielsweise alle Namen von Klassen und Methoden auf Russisch neu definieren möchten.
Ein interessantes, wenn auch nicht ganz direktes Beispiel:
Bato: Ein Ruby-Port für Filipinos .
Zum Thema Sprachobjektivität: Ruby unterscheidet klar zwischen Variablen / Konstanten und Objekten. Aufgrund der Dynamik der Sprache „leben“ Daten ihr Leben als Objekte. Jeder Bezeichner ist eine Konstante oder Variable, die sich nur auf ein Objekt bezieht. Das Missverständnis dieses Prinzips führt zu Überraschungen:
str1 = "Test" str2 = str1 str1.sub! "Te", "La" puts str2
Hier haben wir nur die Änderungsmethode des Objekts verwendet, deren Verweise von zwei Variablen gespeichert wurden. Ich stelle fest, dass dies für Ruby keine traditionelle Art ist, sich zu ändern. In der Regel bleiben Objekte unverändert, und Änderungen führen zu neuen Objekten. Auch die hier verwendete
sub!
-Methode hat ein Suffix - ein Ausrufezeichen - das das von Ruby akzeptierte Namensschema für Methoden ist, die das Objekt selbst ändern. Ohne dieses Symbol erzeugt die Methode einfach ein neues Objekt.
Ein weiteres Feature von Ruby, das Entwickler, die aus anderen Programmiersprachen stammen, sehr oft verblüfft: das Konzept des "Blockierens". Syntaktisch sieht der Block genauso aus wie in anderen Programmiersprachen und in zwei Versionen gleichzeitig:
{…}
und
do..end
(vergessen Sie nicht, dass Ruby für Menschen erstellt wurde, daher wählen wir Klammern für eine bessere Lesbarkeit, wenn der Ausdruck einzeilig und ist wenn es viele Zeilen gibt). Die Essenz eines Blocks in Ruby ist Code, der als Objekt gespeichert wird und durch Aufrufen von
yield
aktiviert werden kann. Das direkte Gegenstück in C und C ++ sind Rückruffunktionen. In Javascript eine anonyme Funktion wie
some_func('on_element_click', function(event) {…}
).
Dank dieses Konzepts ist Ruby eine der prägnantesten und ausdrucksstärksten Programmiersprachen. Das Konvertieren der Elemente eines Arrays gemäß der Quadrierungsfunktion sieht beispielsweise folgendermaßen aus:
(1..5).map { |x| x * x }
wo
{ |x| x * x }
{ |x| x * x }
- ein Block mit einer deklarierten lokalen Variablen
x
, dh eine Funktion zum Konvertieren von Array-Elementen. Und die Methode, an die es übertragen wird, wird einfach Karte genannt (dh "Karte"). Und Sie müssen das Wort
return
nicht schreiben, obwohl dies möglich ist, da bereits alles klar ist (in Ruby ist das Ergebnis der letzten Operation immer der Rückgabewert). Darüber hinaus ist der Blockcode ein Code, der für jedes Element des Arrays autonom aufgerufen wird. Aus diesem Grund ist es nicht sinnvoll, die Variablen innerhalb des Blocks zu starten und zu hoffen, dass ihr Wert bei der Verarbeitung des nächsten Elements erhalten bleibt. Ein Block ist eine gespeicherte Verarbeitungsfunktion und nicht mehr.
Wenn wir eine Zeichenfolge mit über die Tastatur eingegebenen Zahlen analysieren möchten, schreiben Sie einfach:
gets.chomp.split.map(&:to_i)
Das heißt, lesen Sie die Zeile (
chomp
), verwerfen Sie alle
chomp
(
chomp
), teilen Sie sie in Wörter auf (
split
), rufen Sie die Konvertierung mit der Funktion
to_i
(genau genommen die Methode von Objekten vom Typ "string"). Und nichts mehr. Split weiß, dass in einer normalen menschlichen Sprache „eine Linie brechen“ bedeutet, sie durch Wörter zu trennen, wobei die Trennzeichen Leerzeichen und Satzzeichen sind. Map kann in einer so kurzen Form mit dem Namen der Methode verwendet werden, die dem Objekt entnommen werden soll. Obwohl es möglich wäre, die vollständige Formularzuordnung
map { |x| x.to_i }
zu schreiben
map { |x| x.to_i }
oder sogar
{ |x| return x.to_i }
{ |x| return x.to_i }
. Dies verbessert jedoch nicht die Lesbarkeit, sodass Sie nur die
map(&:to_i)
.
Ich stelle fest, dass das Konzept des Blocks Ruby offen durchdringt. Sogar der Ansichtscode
class HelloWorld (1..3).each { puts 'Hi from class declaration!' } def hi puts 'Hello World!' end end HelloWorld.new.hi
wird auf dem Bildschirm angezeigt:
Hi from class declaration!
Hi from class declaration!
Hi from class declaration!
Hello World!
Was könnte hier unerwartet erscheinen? Die Schleife in der Klassendeklaration druckte Nachrichten. Dann haben wir eine Nachricht von einer Instanzmethode dieser Klasse erhalten. Und das Geheimnis ist sehr einfach. Ruby ist eine Sprache mit einem regulären Programmiermodell. Ein typischer Weg, um eine Methode mit einem Block aufzurufen:
method_with_block(args) do ... end
Die Wörter
class
und
def
im Beispiel sind im Wesentlichen die Namen der Methoden, an die die Argumente
HelloWorld
,
hi
werden. Das
HelloWorld
Argument wird für uns zum konstanten Namen der Klasse, und
hi
wird zum Namen der Methode. Der Rest des Wortendes ist ein Block. Und der Blockcode wird durch Aufrufen von Yield aktiviert, wonach alles nacheinander ausgeführt wird. Das heißt, auch hier gibt es praktisch keinen Unterschied zwischen dem Aufrufen einer regulären Methode und dem Deklarieren von Methoden, Klassen und Modulen.
HelloWorld.new.hi
das Aktivierungskonstrukt
HelloWorld.new.hi
.
HelloWorld
- Konstante - zeigt auf ein Objekt vom Typ
Class
. Dieses Objekt hat eine
new
Methode. Das Ergebnis des Aufrufs von
new
ist ein erstelltes Objekt vom Typ
HelloWorld
, von dem aus wir die
hi
Methode aufrufen. Und auch hier manifestiert sich Rubys Regelmäßigkeit. Wir schreiben nicht
something = new HelloWorld
, sondern rufen einfach die Methode eines bestimmten Objekts (die von
HelloWorld
referenzierte
Class
) auf, die ein Objekt vom Typ
HelloWorld
generiert.
Das mangelnde Verständnis der Sprache wird auch durch lange Anrufketten erleichtert:

Wenn Sie JavaScript oder jQuery kennen, sehen Sie hier nichts Schreckliches. Diejenigen, die aus C und C ++ kamen, können über die Anzahl der Punkte verwirrt sein. Ruby verwendet die funktionale Objekttransformation. Das heißt, diese ganze Kette ist der Prozess des Konvertierens einer Zeichenfolge, der darin besteht, Wörter auszuwählen, sie in Zahlen umzuwandeln, nur gerade auszuwählen, das Ergebnis zu quadrieren und hinzuzufügen.
Jede Methode in Ruby generiert ein Wertobjekt. Es gibt keine Ausnahmen. Auch Null ist ein Objekt. Da Ruby eine dynamische Sprache mit einem automatischen Garbage Collector ist, müssen keine neuen Variablen erstellt werden. Zwischenobjekte werden gelöscht. Das heißt, ein langer Ausdruck kann leicht in eine Folge von Werten für lokale Variablen analysiert werden, die nacheinander die entsprechenden Methoden aufrufen. Aber warum, wenn schon alles klar ist?
In Ruby-Programmen sind Schleifen wie
for
,
while
loop
äußerst selten. Sie werden in der Syntax bereitgestellt, aber fast nie verwendet. Warum? Ja, weil sie keine semantische Last tragen.
Beispiel: In einer Reihe von Waren müssen Sie ein „Brötchen mit Mohn“ finden. Für traditionelle Programmiersprachen können wir ungefähr den folgenden Ruby-Code verwenden:
products…
In diesem Fall sieht der normale Ruby-Code folgendermaßen aus:
products…
Das heißt, wir schreiben buchstäblich in einer Zeile: Finden Sie das Produkt mit Namen. Und alle. Denn in Wirklichkeit interessieren wir uns nur für die Auswahl der Waren und überhaupt nicht für Warenindizes und nicht für deren Menge.
Lebensbeispiel: Sie sind in den Laden gekommen und haben den unglücklichen Verkäufer auf zwei Arten gefragt: erstens: „
Wenn der Produktname für alle Waren von null bis 15143 einem Brötchen mit Mohn entspricht, geben Sie ihn mir “; der zweite - "
Gib mir ein Brötchen mit Mohn ." Beide Optionen scheinen syntaktisch korrekt zu sein, aber die zweite ist natürlich. Aus irgendeinem Grund betrachten die meisten Programmierer die erste Option als normal. Und Ruby-Programmierer sind die zweiten. Und die
find
hier ist nur eine der Schleifenersetzungen. Ich mache darauf aufmerksam und erwarte Kommentare, dass andere Sprachen auch eine Array-Suche mit einer Auswahlfunktion haben.
Obwohl Ruby über Syntaxkonstrukte
for
while
und
loop
, verwendet sie fast niemand, da es bestimmte Methoden gibt:
each
,
each_index
,
each_with_index
,
select
,
map
,
each_with_index
,
find
,
detect
und viele andere, die eine bestimmte Bedeutung ausdrücken -
array.each_index
für jeden Index, für jedes Element und seinen Index aus, transformieren,
array.each_index
, suchen usw. Und wenn wir Indizes benötigen, verwenden wir
array.each_index
. Wenn Sie Elemente auswählen müssen, verwenden Sie
select
. Betonung auf Natürlichkeit. Wir fragen nur, was wirklich zu tun ist. Kein Index erforderlich - keine Notwendigkeit, danach zu fragen. Weitere Informationen finden Sie in der
Dokumentation zum Modul Enumerable .
Zusammenfassung
Ruby ist eine syntaktisch einfache, aber flexible Sprache mit einem entwickelten Objektmodell, dessen Hauptaugenmerk auf einem präzisen, aber gut wahrgenommenen Code liegt, der sich auf eine lebende Person konzentriert. Ruby ist standardmäßig im Bundle eines modernen Betriebssystems enthalten (oder kann unter Windows installiert werden). Eine große Anzahl von Programmen wurde in dieser Sprache geschrieben. Es gibt stabile Gemeinschaften, die bereit sind, mit Ratschlägen oder Maßnahmen zu helfen. Ruby-Programme sind grundlegende Verwaltungsskripte für Linux und MacOS (OpenSuSE / SuSE bzw. Brew.io). Dies sind
Mathematik und maschinelles Lernen . Dies sind Tests (Rspec, Cucumber, Capybara ...). Dies ist die Anwendungsbereitstellung (Puppet, Chef). und vieles mehr.
Wenn die Schüler Ruby kennen, wird dies ihren Horizont erheblich erweitern und es ihnen ermöglichen, vertraute Dinge ganz anders zu betrachten. Darüber hinaus ist es sehr einfach, andere Skriptprogrammiersprachen nach Ruby zu lernen, aber die Frage ist, ob Sie sie verwenden möchten.