Ruby et Python sont deux excellents langages de programmation en termes d'interprétation et de typage dynamique. Vous pouvez en savoir plus sur leurs applications, leur popularité et leur communauté dans l'une des entrées de ce blog. Ces langages ont de nombreux points communs, mais aussi de nombreuses différences. Dans cet article, je vais en présenter quelques-unes.
Similitudes
Comme ces langages peuvent être inclus dans la même catégorie de langages interprétés à typage dynamique, il ne fait aucun doute qu'ils sont similaires.
Dactylographie dynamique
Les deux Python et Ruby sont des langages à typage dynamique. Par conséquent, le programmeur n'a pas besoin de spécifier le type des variables lors de l'écriture du fichier code. Leur type est déterminé pendant l'exécution du programme et peut changer. Le type d'une variable est dérivé de la valeur qui y est stockée. Le code suivant s'exécutera correctement dans ces langages :
variable = 1
variable += 2.5
variable = 'chaîne de caractères'
variable = [2, 3.5, 'chaîne de caractères']
Syntaxe pure
Ceci est lié au point précédent, entre autres. Étant donné qu'il n'est pas nécessaire de déclarer des types, de terminer les déclarations par un point-virgule et qu'il s'agit de langages de script, l'écriture et la lecture sont faciles. Un code bien écrit sera lisible même par des personnes qui n'ont pas eu de contact préalable avec ces langages.
Ils disposent d'interprètes de console interactifs
Lorsque vous souhaitez effectuer une opération simple ou tester un morceau de code, vous n'avez pas besoin de créer un fichier et d'exécuter le code à l'aide d'une commande spéciale. Ruby et Python disposent tous deux d'interprètes de console interactifs (REPL). Pour Python, nous pouvons lancer un tel interpréteur avec la commande python
(oupython3
), alors que pour Ruby, ce pourrait être, par exemple, irb :
$ irb
2.5.8 :001 > résultat = 2 + 1
=> 3
2.5.8 :002 > résultat += 3.5
=> 6.5
Différences
Comme il s'agit de différents les langages de programmationBien entendu, ils doivent présenter des différences (je sais, c'est une déclaration révélatrice). Dans le cas de Python et Ruby, ces différences sont nombreuses. Je vais décrire quelques-unes des plus significatives à mon avis.
Indices
L'indentation est très importante en Python. Tous les blocs de code sont définis par l'indentation. Il est important que chaque ligne d'un bloc donné ait la même indentation. Sinon, lorsque nous essaierons d'exécuter le code, nous obtiendrons une erreur d'indentation (IndentationError). Ruby adopte une approche différente. Ici, le bloc de code est limité par des mots-clés. Nous distinguons le mot de début (par ex.commencer, si, classe, déf
) et le mot de fin fin.
La façon dont le code est indenté à l'intérieur du bloc de code n'a pas d'importance.
Héritage
L'une des caractéristiques de base de la programmation orientée objet. Entre de bonnes mains, elle peut faire des merveilles. Python prend en charge l'héritage multi-bases :
example.py
classe ClassA :
def callA(self) :
print('callA')
classe ClasseB :
def callB(self) :
print('callB')
classe ClassAB(ClassA, ClassB) :
pass
class_inst = ClassAB()
class_inst.callA()
class_inst.callB()
En conséquence, nous obtenons :
$ python3 example.py
appelA
appelB
Ruby ne prend en charge par défaut que l'héritage à base unique en utilisant l'opérateur <. Cependant, il est possible de simuler l'héritage multi-bases en utilisant des modules :
exemple.rb
classe ClassA
def calla
met 'calla'
end
fin
module ModuleB
def callb
met 'callb'
end
fin
classe ClassAB < ClassA
include ModuleB
fin
classinst = ClassAB.new
classinst.calla
classinst.call_b
Ce qui nous donne :
$ ruby example.rb
call_a
call_b
inclure
n'est qu'un des mixins disponibles en Ruby. Les mixins permettent d'ajouter des fonctionnalités supplémentaires aux classes. Il existe trois mixins en Ruby.
Inclure
Lorsque nous appelons inclure
dans la définition de la classe, le module inclus devient l'ancêtre direct de cette classe. Cela signifie que chaque méthode du module devient une méthode d'instance de cette classe. Nous pouvons les surcharger dans la classe et également appeler la méthode originale (définie dans le module) en utilisant la fonction super
mot-clé.
exemple.rb
module ModuleA
def print_something
puts 'Message du module'
end
fin
classe ClassB
include ModuleA
def print_something
met 'Message de la classe'
super
end
fin
ClassB.new.print_something
Résultat :
$ ruby example.rb
Message de la classe
Message du module
Préalable
Il fonctionne presque comme inclure
mais le module ajouté au préalable devient un descendant direct de la classe. Cela signifie que nous ne pouvons pas surcharger les méthodes des modules dans la classe, mais que les méthodes du module peuvent appeler les méthodes de la classe à l'aide de la fonctionsuper
mot-clé.
exemple.rb
module ModuleA
def print_something
met 'Message du module'
super
end
fin
classe ClassB
Préfixe ModuleA
def print_something
puts 'Message de la classe'
end
fin
ClassB.new.print_something
Résultat :
$ ruby example.rb
Message du module
Message de la classe
Prolonger
Le fonctionnement est similaire à celui de l'inclusion, à ceci près que les méthodes définies dans le module deviennent des méthodes de la classe.
Résultat :
$ ruby example.rb Message du module
Fonctions et blocs
Python possède des fonctions. Ruby ne prend en charge que les méthodes. Qu'est-ce que cela implique ? Entre autres choses, Python peut contenir une fonction dans une variable et la passer comme argument à une autre fonction. En Ruby, nous ne pouvons pas le faire aussi facilement. Ceci est également lié aux parenthèses. Étant donné une fonction sans arguments en Python, ou avec des arguments par défaut, si vous utilisez son nom sans parenthèses, la fonction sera retournée. Seul l'ajout des parenthèses entraîne son exécution. En Ruby, on peut appeler des fonctions sans parenthèses :
exemple.py
def inner_function() :
print('Fonction interne')
def wrapper_function(function) :
print('Fonction enveloppante')
# function est une variable qui contient l'objet fonction
function() # la fonction interne est appelée ici
wrapperfunction(innerfunction)
Résultat :
$ python3 example.py
Fonction enveloppante
Fonction interne
Dans Ruby :
exemple.rb
def inner_function
met 'Fonction interne'
fin
def wrapper_function(fonction)
met "Fonction enveloppante
fonction
end
wrapperfunction(innerfunction) # inner_function est appelée ici
Résultat :
$ ruby example.rb
Fonction interne
Fonction enveloppante
Bien sûr, dans ce cas, vous pouvez faire quelques astuces en Ruby pour obtenir l'effet désiré. Tout d'abord, nous pouvons utiliser l'objet Proc :
exemple.rb
def inner_function
met 'Fonction interne'
fin
def wrapper_function(fonction)
met "Fonction enveloppante
function.call
end
func = Proc.new { innerfunction }
wrapperfunction(func)
Résultat :
$ ruby example.rb
Fonction enveloppante
Fonction interne
La deuxième approche consiste à utiliser des blocs :
exemple.rb
def inner_function
met 'Fonction interne'
fin
def fonction_enveloppe
met 'Fonction enveloppante'
yield
end
wrapperfunction do
fonction interne
end
Résultat :
$ ruby example.rb
Fonction enveloppante
Fonction interne
Compréhension de la liste
Il s'agit d'une fonction très utile du Python. Elle consiste à créer une liste à partir d'une autre liste. Supposons que nous ayons une tâche de ce type : étant donné une liste de nombres, faire une liste de carrés de nombres impairs. Dans Python, nous utilisons la compréhension de liste :
nombres = [1, 3, 4, 7, 8, 12, 15]
résultat = [num*num pour num dans nombres si num % 2]
L'avantage est que nous n'avons que deux listes en mémoire.
En Ruby, les choses sont un peu différentes. Il y a plusieurs façons de résoudre cette tâche. Je vais présenter la plus lisible d'entre elles :
nombres = [1, 3, 4, 7, 8, 12, 15]
result = []
numbers.each { |num| result << num * num if num.odd ? }
Comme on peut le voir, c'est possible, mais pas aussi élégant que dans Python.
Toutes les classes sont mutables
En Ruby, toutes les classes sont mutables. Qu'est-ce que cela signifie ? Nous pouvons ajouter ou remplacer des méthodes de toutes les classes, même celles qui sont intégrées. Supposons que nous voulions une méthode qui change chaque lettre an en b dans la chaîne de caractères. Nous pouvons le faire de manière simple :
exemple.rb
classe String
def atob !
self.gsub !(/a/, 'b')
end
end
string = 'Exemple de chaîne avec de nombreuses lettres a'
puts string
string.atob !
met la chaîne
Résultat :
$ ruby example.rb
Exemple de chaîne de caractères avec beaucoup de lettres a
Exemple de chaîne de caractères avec beaucoup de lettres b
Résumé
Développement web est un domaine dynamique qui adopte et façonne continuellement diverses formes d'éducation et de formation. les langages de programmation pour répondre à ses besoins. Les deux choix les plus populaires dans ce domaine sont les suivants Python langage de programmation et Ruby. Tous deux ont fait leurs preuves dans la création d'applications web et d'autres formes de logiciels, chacun ayant ses avantages et ses inconvénients.
Python est un langage de programmation de haut niveau vénéré pour sa simplicité et son lisibilité du codeune fonction qui intéresse souvent les programmeurs débutants. Les Python langage de programmation est polyvalent et peut être utilisé pour une variété de tâches. Il est polyvalent et peut être utilisé pour diverses tâches. langage de programmation à usage général est souvent utilisé dans des domaines tels que l'apprentissage automatique, les données massives (big data), et notamment, développement web. Un large communauté de développeurs Python contribue à son riche écosystème de bibliothèques et de cadres, ce qui le rend plus apte à répondre aux besoins des utilisateurs. la création d'applications web. Django, Flask, et Pyramid sont parmi les différents Python cadres web avec l'effet de levier de développeurs web dans le monde entier.
D'autre part, Ruby, un autre langage de programmation général de haut niveauIl brille par sa flexibilité et son expressivité. Cette langage de programmation orienté objet est l'épine dorsale de nombreux applications web. Le charme de Ruby réside dans sa capacité à faciliter l'accès à l'information. développement web par le biais de la Cadre RailsLe système de gestion de l'information est un outil puissant pour la gestion de l'information. la création d'applications web rapidement.
Ruby, bien que moins populaire que PythonLa Commission européenne s'enorgueillit d'une équipe active et dévouée. Communauté Rubis qui développe et entretient en permanence un assortiment de bibliothèques et d'outils, enrichissant ainsi l'expérience des utilisateurs. développeurs web en utilisant cette langue. En tant que langage orienté objetRuby est apprécié pour son élégance et le code propre et lisible qu'il produit, ce qui en fait un choix approprié pour les petites et les grandes entreprises. applications web.
Python et Ruby, comme les langages de programmation orientés objetpartagent de nombreuses similitudes. Ils soutiennent également la programmation fonctionnelleoffrant aux programmeurs différents styles de codage. Code PythonEn particulier, il est apprécié pour sa syntaxe simple, qui souligne l'importance accordée par le langage à la simplicité et à l'efficacité. lisibilité.
Chaque langue a ses points forts ; Python's la polyvalence et l'étendue communauté en font un excellent outil pour diverses tâches, tandis que l'expressivité de Ruby et le support de Cadre Rails Le projet est donc un candidat sérieux pour l'obtention du titre de champion du monde. application web développement. Ce sont les besoins et les préférences uniques des développeurs web qui déterminera quel langue sert au mieux leurs intérêts. projet.
Dans le domaine de la systèmes d'exploitationLes deux langues présentent un niveau de portabilité impressionnant, ce qui les rend encore plus adaptées à une multitude de tâches, notamment les suivantes développement web. Il est donc difficile de déclarer un "vainqueur" définitif dans ce duel.
Alors que la Python langage de programmation a une plus grande portée et un plus grand nombre de communautéLes capacités de Ruby ne doivent pas être sous-estimées. Pour apprécier pleinement ces langages, il faut s'y plonger, en comprendre les subtilités et les appliquer là où ils brillent le plus. Que vous soyez la création d'applications web avec Python ou Rubis, chacun langue offre une plateforme robuste pour fournir des services de applications web. Ruby, bien que moins connu, mérite certainement d'être apprécié à sa juste valeur dans le monde de l'informatique. les langages de programmation.