Ruby und Python sind zwei großartige Programmiersprachen in Bezug auf Interpretation und dynamische Typisierung. Sie können über ihre Anwendungen, ihre Beliebtheit und ihre Gemeinschaft in einem der Einträge in diesem Blog lesen. Diese Sprachen haben viele Gemeinsamkeiten, aber auch viele Unterschiede. In diesem Artikel werde ich einige von ihnen vorstellen.
Ähnlichkeiten
Da diese Sprachen in dieselbe Kategorie der dynamisch typisierten interpretierten Sprachen eingeordnet werden können, besteht kein Zweifel an ihrer Ähnlichkeit.
Dynamisches Tippen
Beide Python und Ruby sind dynamisch typisierte Sprachen. Daher muss der Programmierer den Typ der Variablen nicht angeben, wenn er die Code. Ihr Typ wird während der Ausführung des Programms bestimmt und kann sich ändern. Der Typ einer Variablen ergibt sich aus dem Wert, der in ihr gespeichert ist. Der folgende Code wird in diesen Sprachen korrekt ausgeführt:
Variable = 1
variabel += 2,5
variabel = 'Beispielstring'
variabel = [2, 3.5, 'Beispielstring']
Reine Syntax
Dies hängt u. a. mit dem oben genannten Punkt zusammen. Da es nicht notwendig ist, Typen zu deklarieren und Anweisungen mit einem Semikolon zu beenden, und da es sich um Skriptsprachen handelt, ist sowohl das Schreiben als auch das Lesen von Code einfach. Gut geschriebener Code ist auch für Personen lesbar, die noch keine Erfahrung mit diesen Sprachen haben.
Sie haben interaktive Konsoleninterpreter
Wenn Sie eine einfache Operation durchführen oder ein Stück Code testen wollen, müssen Sie keine Datei erstellen und den Code mit einem speziellen Befehl ausführen. Sowohl Ruby als auch Python verfügen über interaktive Konsoleninterpreter (REPL). Für Python können wir einen solchen Interpreter mit dem Befehl python
(oderpython3
), während es bei Ruby zum Beispiel so aussehen könnte, irb:
$ irb
2.5.8 :001 > Ergebnis = 2 + 1
=> 3
2.5.8 :002 > ergebnis += 3.5
=> 6.5
Unterschiede
Da diese unterschiedlich sind ProgrammiersprachenNatürlich müssen sie Unterschiede aufweisen (ich weiß, was für eine entlarvende Aussage). Im Fall von Python und Ruby sind diese Unterschiede zahlreich. Ich werde einige der meiner Meinung nach wichtigsten beschreiben.
Einzüge
Die Einrückung ist in Python sehr wichtig. Alle Codeblöcke werden durch Einrückung definiert. Es ist wichtig, dass jede Zeile in einem bestimmten Block die gleiche Einrückung hat. Andernfalls erhalten wir beim Versuch, den Code auszuführen, einen Einrückungsfehler (IndentationError). Ruby verfolgt einen anderen Ansatz. Hier wird der Codeblock durch Schlüsselwörter begrenzt. Wir unterscheiden das Anfangswort (z. B.begin, if, class, def
) und das Endungswort Ende.
Es spielt keine Rolle, wie der Code innerhalb des Codeblocks eingerückt ist.
Vererbung
Eine der grundlegenden Eigenschaften der objektorientierten Programmierung. In den richtigen Händen kann sie wahre Wunder bewirken. Python unterstützt die Vererbung mehrerer Basen:
Beispiel.py
class ClassA:
def callA(self):
print('callA')
class ClassB:
def callB(self):
print('callB')
class ClassAB(ClassA, ClassB):
pass
class_inst = ClassAB()
class_inst.callA()
class_inst.callB()
Als Ergebnis erhalten wir:
$ python3 beispiel.py
AufrufA
callB
Ruby unterstützt standardmäßig nur die Vererbung auf eine Basis mit dem Operator <. Es ist jedoch möglich, die Vererbung auf mehrere Basen mithilfe von Modulen zu simulieren:
beispiel.rb
Klasse ClassA
def calla
setzt 'calla'
end
end
Modul ModulB
def callb
puts 'callb'
end
end
Klasse KlasseAB < KlasseA
include ModulB
end
classinst = ClassAB.new
classinst.calla
classinst.call_b
Was uns gibt:
$ ruby example.rb
aufruf_a
aufrufen_b
einschließen.
ist nur eines der in Ruby verfügbaren Mixins. Mixins sind eine Möglichkeit, Klassen zusätzliche Funktionen hinzuzufügen. Es gibt drei Mixins in Ruby.
einbeziehen.
Wenn wir anrufen einschließen.
in der Klassendefinition, wird das enthaltene Modul zum direkten Vorfahren dieser Klasse. Das bedeutet, dass jede Methode des Moduls zur Instanzmethode dieser Klasse wird. Wir können sie in der Klasse überschreiben und auch die ursprüngliche Methode (die im Modul definiert ist) aufrufen, indem wir super
Stichwort.
beispiel.rb
Modul ModulA
def print_something
puts 'Nachricht vom Modul'
end
end
class KlasseB
include ModulA
def print_something
puts 'Nachricht von Klasse'
super
end
end
KlasseB.new.print_something
Ergebnis:
$ ruby example.rb
Nachricht von Klasse
Nachricht von Modul
vorangestellt.
Es funktioniert fast wie einschließen.
aber das vorangestellte Modul wird ein direkter Nachfahre der Klasse. Das bedeutet, dass wir die Methode des Moduls in der Klasse nicht überschreiben können, aber die Methode des Moduls kann die Methode der Klasse mitsuper
Stichwort.
beispiel.rb
Modul ModulA
def print_something
puts 'Nachricht vom Modul'
super
end
end
Klasse KlasseB
vorangestellt ModulA
def print_something
puts 'Nachricht von Klasse'
end
end
KlasseB.new.print_something
Ergebnis:
$ ruby example.rb
Nachricht von Modul
Nachricht von der Klasse
Erweitern Sie
Es funktioniert ähnlich wie include, mit dem Unterschied, dass die im Modul definierten Methoden zu Klassenmethoden der Klasse werden.
Ergebnis:
$ ruby beispiel.rb Nachricht vom Modul
Funktionen und Blöcke
Python hat Funktionen. Ruby unterstützt nur Methoden. Was bringt das mit sich? Unter anderem kann Python eine Funktion in einer Variablen halten und sie als Argument an eine andere Funktion weitergeben. In Ruby können wir das nicht so einfach tun. Das hängt auch mit den Klammern zusammen. Wenn man in Python eine Funktion ohne Argumente oder mit Standardargumenten angibt, wird die Funktion zurückgegeben, wenn man ihren Namen ohne Klammern verwendet. Erst das Hinzufügen der Klammern führt zur Ausführung der Funktion. In Ruby können wir Funktionen ohne Klammern aufrufen:
beispiel.py
def inner_function():
print('Innere Funktion')
def wrapper_function(function):
print('Wrapper-Funktion')
# function ist eine Variable, die ein Funktionsobjekt enthält
function() # innere Funktion wird hier aufgerufen
wrapperfunction(innerfunction)
Ergebnis:
$ python3 beispiel.py
Umhüllungsfunktion
Innere Funktion
In Ruby:
beispiel.rb
def innere_funktion
puts 'Innere Funktion'
end
def wrapper_function(Funktion)
puts 'Umhüllungsfunktion'
Funktion
end
wrapperfunction(innerfunction) # inner_function wird hier aufgerufen
Ergebnis:
$ ruby beispiel.rb
Innere Funktion
Umhüllungsfunktion
Natürlich kann man in diesem Fall in Ruby einige Tricks anwenden, um den gewünschten Effekt zu erzielen. Zunächst können wir das Proc-Objekt verwenden:
beispiel.rb
def innere_funktion
puts 'Innere Funktion'
end
def wrapper_function(Funktion)
puts 'Umhüllungsfunktion'
function.call
end
func = Proc.new { innerfunction }
wrapperfunction(func)
Ergebnis:
$ ruby example.rb
Wrapper-Funktion
Innere Funktion
Der zweite Ansatz ist die Verwendung von Blöcken:
Beispiel.rb
def innere_funktion
puts 'Innere Funktion'
end
def wrapper_function
puts 'Umhüllungsfunktion'
ergibt
end
wrapperfunction do
innerfunction
end
Ergebnis:
$ ruby example.rb
Wrapper-Funktion
Innere Funktion
Verständnis der Liste
Dies ist eine sehr nützliche Funktion des Python. Sie besteht darin, eine Liste auf der Grundlage einer anderen Liste zu erstellen. Nehmen wir an, wir haben eine solche Aufgabe: Erstellen Sie aus einer Liste von Zahlen eine Liste von Quadraten mit ungeraden Zahlen. In Python verwenden wir das Listenverständnis:
Zahlen = [1, 3, 4, 7, 8, 12, 15]
result = [num*num for num in numbers if num % 2]
Der Vorteil ist, dass wir nur zwei Listen im Speicher haben.
In Ruby liegen die Dinge ein wenig anders. Es gibt mehrere Möglichkeiten, diese Aufgabe zu lösen. Ich werde die am besten lesbare davon vorstellen:
Zahlen = [1, 3, 4, 7, 8, 12, 15]
result = []
numbers.each { |num| result << num * num if num.odd? }
Wie wir sehen können, ist es möglich, aber nicht ganz so elegant wie in Python.
Alle Klassen sind veränderbar
In Ruby sind alle Klassen veränderbar. Was bedeutet das? Wir können Methoden aller Klassen hinzufügen oder überschreiben, sogar die eingebauten. Angenommen, wir wollen eine Methode, die jeden Buchstaben an in b in der Zeichenkette ändert. Wir können das auf einfache Weise tun:
beispiel.rb
Klasse String
def atob!
self.gsub!(/a/, 'b')
end
end
string = 'Beispielstring mit vielen a-Buchstaben'
puts string
string.atob!
puts string
Ergebnis:
$ ruby beispiel.rb
Beispielstring mit vielen a-Buchstaben
Beispielstring mit vielen b-Buchstaben
Zusammenfassung
Web-Entwicklung ist ein dynamischer Bereich, der ständig verschiedene Formen annimmt und gestaltet Programmiersprachen um seinen Bedürfnissen gerecht zu werden. Zwei beliebte Optionen in diesem Bereich sind die Python Programmiersprache und Ruby. Beide haben sich bewährt in Erstellung von Webanwendungen und andere Formen von Software, die jeweils ihre eigenen Vor- und Nachteile haben.
Python ist eine Programmierhochsprache verehrt für seine Einfachheit und Code-Lesbarkeit, eine Funktion, die häufig von Programmieranfängern genutzt wird. Die Python Programmiersprache ist vielseitig und kann für eine Vielzahl von Aufgaben verwendet werden. Diese Allzweck-Programmiersprache wird häufig in Bereichen wie maschinelles Lernen, Big Data und vor allem in der Forschung eingesetzt, Web-Entwicklung. Eine breite Gemeinschaft der Python-Entwickler trägt zu seinem reichhaltigen Ökosystem von Bibliotheken und Frameworks bei und verbessert seine Eignung für Erstellung von Webanwendungen. Django, Flask und Pyramid gehören zu den verschiedenen Python Web-Frameworks genutzt von Webentwickler rund um den Globus.
Auf der anderen Seite ist Ruby, ein weiteres Hochsprachige, universelle Programmierspracheglänzt durch seine Flexibilität und Ausdruckskraft. Diese objektorientierte Programmiersprache ist das Rückgrat von vielen Webanwendungen. Der Charme von Ruby liegt in seiner Fähigkeit, die Web-Entwicklung durch die Rails-Frameworkein leistungsfähiges Werkzeug für Erstellung von Webanwendungen schnell.
Ruby, obwohl weniger populär als Pythonverfügt über ein aktives und engagiertes Ruby-Gemeinschaft das kontinuierlich eine Reihe von Bibliotheken und Werkzeugen entwickelt und pflegt und damit die Erfahrung der Nutzer bereichert Webentwickler diese Sprache zu verwenden. Als objektorientierte SpracheRuby wird für seine Eleganz und den sauberen, lesbaren Code, den es produziert, geschätzt, was es zu einer guten Wahl für kleine und große Projekte macht. Webanwendungen.
Python und Ruby, als objektorientierte Programmiersprachenhaben viele Gemeinsamkeiten. Sie unterstützen auch funktionale Programmierungund bietet Programmierern verschiedene Stile für die Programmierung. Python-Codewird vor allem wegen seiner einfachen Syntax geschätzt, die den Schwerpunkt der Sprache auf Einfachheit und Flexibilität unterstreicht. Lesbarkeit.
Jede Sprache hat ihre Stärken; Python's Vielseitigkeit und Breite Gemeinschaft Unterstützung machen es zu einem hervorragenden Werkzeug für verschiedene Aufgaben, während Rubys Ausdruckskraft und die Rails-Framework macht es zu einem starken Anwärter für Web-Applikation Entwicklung. Es sind die einzigartigen Bedürfnisse und Vorlieben der Webentwickler die bestimmen, welche Sprache dient am besten ihren Projekt.
Im Bereich der BetriebssystemeBeide Sprachen zeichnen sich durch ein beeindruckendes Maß an Übertragbarkeit aus, was ihre Eignung für eine Vielzahl von Aufgaben unter anderem in folgenden Bereichen noch verstärkt Web-Entwicklung. Daher ist es schwierig, in diesem Duell einen endgültigen "Sieger" zu ermitteln.
Während die Python Programmiersprache hat eine größere Reichweite und einen größeren Gemeinschaftsollten die Fähigkeiten von Ruby nicht unterschätzt werden. Um diese Sprachen voll zu schätzen, muss man sich in sie vertiefen, ihre Feinheiten verstehen und sie dort einsetzen, wo sie am besten zur Geltung kommen. Ob Sie Erstellung von Webanwendungen mit Python oder Ruby, jeweils Sprache bietet eine robuste Plattform zur Bereitstellung hochwertiger Webanwendungen. Ruby ist zwar weniger bekannt, verdient aber sicherlich die ihm gebührende Wertschätzung in der Welt der Programmiersprachen.