Maison >développement back-end >tutoriel php >Comparaison des similitudes et des différences entre Python et Ruby
Python est un langage de programmation informatique littéral et orienté objet. La syntaxe Python est simple et claire, et il possède une bibliothèque de classes riche et puissante. Ruby, un langage de script orienté objet (programmation orientée objet) simple et rapide. Dans cet article, nous partagerons avec vous les similitudes et les différences entre Python et Ruby.
1. Sélection comparative des similitudes et des différences
1. Les similitudes entre python et ruby :
* Les deux mettent l'accent sur une syntaxe simple et ont des expressions plus générales. Python est une indentation, Ruby est une expression de base. Tous les symboles ont été considérablement réduits.
* sont tous des types de données dynamiques. Tous ont des structures de données riches.
* Les deux ont des capacités d'extension en langage C et sont portables, ce qui est meilleur que la portabilité de Perl. Ils peuvent également être utilisés comme langages intégrés.
* sont tous des langages orientés objet et peuvent être utilisés comme outils de développement pour de grands projets.
* tous disposent d'un riche support de bibliothèque.
* Possède également la licence de droit d'auteur la plus permissive, sauf que certains outils appartiennent au monde GNU.
* ont tous des fonctions d'évaluation spécifiques à Lisp et peuvent également prendre des fonctions comme paramètres.
* Il existe également un éditeur spécifique à Ruby avec une interface graphique.
* sont pris en charge par un large éventail de bibliothèques C. Tels que qt, gtk, tk, SDL, FOX, etc. Ruby prévoit d'implémenter l'interface SWIG.
* tous ont une documentation complète.
2. Avantages de Ruby par rapport à Python :
* Il a la fonction d'expressions régulières et d'intégration de HTML. Python a également des expressions régulières, mais elles ne sont pas aussi pratiques et largement utilisées que Ruby. Le projet HTML intégré de Python vient de démarrer. Ruby possède également le module mod Apache. Ruby lui-même implémente également de nombreux outils Unix, tels que rac et doctools. Plus proche de Linux que de Python.
* Syntaxe orientée objet plus complète que python.
*La bibliothèque entière de Ruby est une structure avec héritage de classe.
* Ses types de données et opérateurs de base peuvent être surchargés.
*Les principales fonctions de Ruby sont implémentées via des appels de méthodes objets, et non par des fonctions. Python se développe également dans ce domaine, mais il n'est pas aussi approfondi que Ruby.
*Les classes Ruby sont un héritage unique plus standardisé et implémentent également des concepts tels que les interfaces.
* Python peut implémenter des instructions conditionnelles et des instructions de boucle dans des listes, tandis que Ruby utilise des "blocs" pour implémenter cette fonction, qui est plus flexible et polyvalente que Python.
*Ruby a des instructions conditionnelles fonctionnelles complètes, des instructions de boucle, etc. similaires à Lisp. Les phrases sont plus expressives.
* Livré avec certains outils Unix, tels que rac, etc.
3. Les défauts du rubis par rapport au python :
* Le plus gros défaut est causé par le pouvoir du rubis. Il n'a pas la simplicité de Python. La syntaxe orientée objet plus complexe, l'introduction de la syntaxe « bloc », l'introduction d'expressions régulières et certaines balises d'abréviation augmentent la complexité du langage.
* L'expression d'indentation de Python est plus agréable à l'œil que l'expression de base de Ruby. Les yeux pleins d'extrémités dans les programmes Ruby sont inconfortables. Bien entendu, Ruby considère la méthode end comme plus avancée que Python.
*Ruby n'a pas encore la capacité "d'introspection" de Python et la capacité de générer de la documentation à partir de fichiers de programme.
*Ruby ne prend pas en charge l'internationalisation. La prise en charge de l'internationalisation est dans les plans de Ruby. En effet, Ruby a une histoire plus courte que Python.
*Ruby n'a rien de comparable à Jython.
4. Choix des langages python et ruby :
Du point de vue que simple est bien, choisir python est juste. Python convient aux personnes recherchant un langage simple, ce qui rendra probablement Python plus populaire et donc plus pris en charge. Mais si vous souhaitez utiliser des fonctions syntaxiques plus puissantes, Ruby est un bon choix. Parce que les philosophies de Ruby et Python ont de nombreuses similitudes, commencez par Python et essayez d'utiliser Python. Si Python n'est pas assez fort, vous pouvez rechercher Ruby.
La comparaison entre Ruby et Python est comme la comparaison entre les méthodes de saisie Wubi et Pinyin. Le pinyin ne pose aucun problème en tant que méthode de saisie d'entrée de gamme ou en tant que méthode de saisie à long terme. Wubi convient aux situations plus exigeantes. Si vous recherchez la performance, autant apprendre le rubis. Ceux qui s'intéressent aux langages de programmation et souhaitent comprendre divers concepts de programmation seront également ravis d'apprendre Ruby.
2. Les deux ont leurs propres caractéristiques :
1. Python a une syntaxe plus simple, tandis que Ruby est plus sexy
La syntaxe de Python est inférieure à celle des autres langages de script. On dit que il n'y a pas beaucoup d'endroits sophistiqués et cela semble un peu rigide. En fait, l'orientation du langage de conception de Guido peut également être vue à partir de l'indentation forcée du code de Python. La syntaxe rigide est qu'il n'est pas facile de créer des choses sexy, comme des frameworks comme Rails. De plus, Python ne peut pas faire des choses comme DSL. Cependant, l'autre côté de la syntaxe rigide est qu'elle est plus standardisée et relativement plus adaptée. pour le développement de logiciels. Les exigences techniques facilitent l’organisation d’équipes de développement à grande échelle.
La syntaxe de Ruby est très flexible. Le point de départ de Matz pour concevoir Ruby est le codage pour le plaisir. Par conséquent, vous pouvez utiliser Ruby pour jouer de nombreux tours. Avec suffisamment de compétences, vous pouvez utiliser Ruby pour écrire un DSL. cela se rapproche du langage naturel. Pour les programmeurs, jouer à Ruby est en effet très amusant. La naissance de Rails dans la communauté Ruby, plutôt que la naissance de la communauté Python, est définitivement directement liée au langage de programmation. Cependant, l'autre aspect de la syntaxe flexible de Ruby est la diversité des styles d'implémentation de programmation, qui constitue un défi pour la collaboration et la gestion d'équipes à grande échelle.
2. L'implémentation de l'analyseur Python est plus mature et la bibliothèque tierce est de haute qualité
Bien que l'analyseur Ruby 1.9 ait obtenu de grandes améliorations de performances et de nombreuses nouvelles fonctionnalités, du point de vue de l'implémentation du code source, il s'agit essentiellement de patcher le code source Ruby 1.8 pour augmenter les fonctionnalités. En termes de structure du code source, l'implémentation de Ruby est trop ancienne. Il est difficile d'étendre Ruby et nous ne pouvons que continuer à le patcher. C'est pourquoi de nombreuses nouvelles implémentations d'analyseurs Ruby émergent dans la communauté Ruby. Dans une large mesure, cela a limité la vitesse de développement de Ruby. Relativement parlant, l'analyseur Python est plus mature et stable.
En termes de nombre de bibliothèques tierces, Ruby n'est pas inférieur à Python, mais Python possède beaucoup plus de bibliothèques tierces performantes, de haute qualité et éprouvées que Ruby. de nombreuses classes tierces de Ruby. Les bibliothèques ne sont pas très matures, ce qui a considérablement limité le développement de Ruby.
3. Python a un large éventail de domaines d'application, tandis que Ruby se limite actuellement principalement au domaine Web.
Python a un très large éventail de domaines d'application. il est également largement utilisé dans les back-ends de serveurs Implémentation de serveurs hautes performances, diverses opérations intensives sur le backend du serveur, récupération de texte intégral, divers traitements de texte, gestion du système, etc. De plus, wxPython est également un cross-end très mature. cadre GUI de plate-forme dans le domaine des applications de bureau. Pour certaines applications spéciales, telles que l'appel de l'API du noyau du système d'exploitation, Python peut également très bien le compléter. Par exemple, la solution de synchronisation en temps réel pour un grand nombre de petits fichiers est obtenue en utilisant Python pour appeler directement la fonctionnalité inotify de. le noyau Linux. On peut donc dire que Python est le couteau suisse du développement logiciel, il peut tout faire.
Précisément en raison des contraintes de l'analyseur Ruby et de la bibliothèque de classes Ruby, l'application de Ruby est principalement limitée au domaine du développement Web. À l'heure actuelle, l'application de Ruby ne peut pas être étendue à de nombreux endroits en dehors du domaine. du développement web. On dit que Douban a envisagé Ruby on Rails au début, mais comme Ruby ne pouvait pas faire autre chose et que Python pouvait tout faire, il a finalement abandonné Ruby et a choisi Python.
4. Ruby est le roi dans le domaine du Web
À mesure que les applications Internet pénètrent davantage dans divers domaines du développement de logiciels, en fait, le développement Web représente une proportion croissante du développement de l'ensemble industrie du logiciel. Bien que Ruby soit très limité dans d’autres domaines, il est le roi absolu dans le domaine du développement web. Le framework Rails est bien en avance sur tous les concurrents potentiels. Ainsi, même si Ruby peut rencontrer des problèmes d'une sorte ou d'une autre, lorsqu'il s'agit de développement Web, Rails est presque incontesté le seul choix.
Bien que Python soit très complet, il n'est pas exceptionnel dans le domaine du développement web. Bien qu'il existe de nombreux frameworks web, aucun d'entre eux ne peut vraiment prendre les devants. Bien que Django soit relativement populaire dans la communauté Python, il le fait. présente des défauts à bien des égards. Les applications Internet d'aujourd'hui sont souvent une programmation mixte dans plusieurs langages. Les lacunes de Ruby en dehors du Web peuvent également être compensées par d'autres langages.
5. La gestion des packages de Python n'est pas aussi bonne que celle de Ruby
Bien que les bibliothèques tierces de Python soient de meilleure qualité et plus matures, la communauté Python ne dispose pas d'un bon logiciel de gestion de packages et d'un bon site Web de publication de packages. comme RubyGem. Par conséquent, la construction d’applications n’est pas aussi pratique et conviviale que Ruby. Surtout lors de la mise à niveau de la version de la bibliothèque de classes, vous rencontrerez de nombreux problèmes, ce qui n'est pas aussi simple que RubyGem.
Mais en général, Python et Ruby sont deux langages de programmation très similaires. Même si vous apprenez les deux langages de programmation, cela ne vous fera pas perdre trop de temps. Si je le choisis personnellement, j'utiliserais d'abord Rails pour créer des applications Web, puis je choisirais Python ou Java pour gérer certaines opérations back-end du serveur en fonction de la situation. Bref, l'avenir est encore une ère de programmation hybride. Nous devons en savoir plus sur certains outils de programmation, puis manger selon nos besoins.
3. Corrections de "Comparaison entre Ruby et Python"
1. La documentation, les projets open source et la prise en charge des bibliothèques ne doivent pas être comparés à Python pour ces choses. ce n'est pas une question d'ordres de grandeur. Pourquoi devraient-ils se ressembler ?
2. Python n'a pas de module d'expression régulière intégré au noyau, mais il prend en charge la bibliothèque standard re. Le but à l'époque était de rendre le noyau aussi petit que possible. Je ne comprends pas très bien, quelle est la différence entre utiliser la bibliothèque standard et les bibliothèques intégrées, ou même comme avantage ? Et utiliser des expressions régulières en Python n'est rien de plus qu'une importation multiple et quelques lettres lors de l'appel. Les innombrables fins enregistrées suffisent à compenser ce problème.
3. Quant à la fonction HTML embarquée, il existe un modèle Cheetah avec une double implémentation C/Python disponible en Python. On dit que grâce à Zope, l'US Navy et le gouvernement français l'utilisent. je me demande à quel point cette fonction est mature dans Ruby ?
4. Le module mod_ruby n'est apparu que depuis peu de temps. Si l'auteur n'a pas entendu parler de mod_python, il est vraiment ignorant. Lorsque j'ai traduit la documentation mod_python3.2.8 il y a un an, mod_python était déjà si mature que presque tous les frameworks Python
WEB prenaient en charge la construction sur cette base pour améliorer l'efficacité. Cependant, il semble que mod_ruby ne soit mis à jour que quelques fois par an. mod_python a également des applications lourdes comme gnu.org. Je me demande si mod_ruby en a une ?
5. De plus, les outils Unix sont mentionnés. Red Hat
Le programme d'installation de Linux a toujours été écrit en Python. Si vous utilisez Ubuntu, le programme qui vous invite à mettre à jour le système est également écrit en Python.
6. rac et doctools, veuillez pardonner mon ignorance. J'ai cherché sur Google et trouvé peu de contenu chinois sur rac à l'exception de votre article. Après avoir cherché, j'ai découvert qu'il s'agissait d'un outil similaire à yacc. Du point de vue de Google, je ne dirai pas grand-chose sur la convivialité de rac. Je ne comprends pas très bien à quel point un outil yacc est utile dans la programmation quotidienne, mais depuis que l'auteur l'a mentionné, j'ai cherché spark, dont je n'avais entendu que le nom et que je n'avais jamais utilisé. Le résultat de Google est "racc
ruby":"python
spark"=159,000:659,000. Quant aux doctools, je n'ai rien à dire. Il n'y a que 15 800 enregistrements sur Google, je n'arrive toujours pas à comprendre à quoi sert ce truc. J'ai donc trouvé quelque chose qui était probablement similaire et je l'ai comparé aux enregistrements Docutils et Google : 25 400.
7. "Syntaxe orientée objet plus complète que la bibliothèque Python". A quoi sert l’orientation objet ? De plus, Ruby peut-il être comme Python ? Pour la plupart des bibliothèques standard, vous n'avez pas du tout besoin de consulter la documentation. Il vous suffit de deviner le nom général, puis de le dir(), puis de help(), et vous pouvez le faire. commencez directement jusqu'à la deuxième fois. Quand, parce qu'il y a trop peu de choses dans le module et qu'il est trop pratique de s'en souvenir, peut-il être écrit directement ? De plus, l’orientation objet n’est ni une solution miracle ni l’idée de génie logiciel la plus avancée.
8. "L'ensemble de la bibliothèque Ruby est basée sur la structure d'héritage de classes". Personnellement, je pense que c'est la lie de Java, mais je l'ai appris comme un trésor. C'est peut-être aussi un avantage de Ruby pour sauver les programmeurs Java.
9. "Les types de données et les opérateurs de base peuvent être surchargés." Ce n'est pas très clair. Je me demande si la surcharge de __add__ en Python compte.
10. "Les principales fonctions de Ruby sont réalisées via des appels de méthodes objet, pas des fonctions." Tout en Python est un objet, mais pas toutes les classes. Je me demande si cette phrase est toujours là. Quelle est la signification. . De plus, je vous recommande de ne pas trop rechercher la minutie, et le mot pratique est plus attractif.
11. Python ne nécessite pas strictement un héritage unique pour donner de la flexibilité aux programmeurs. De plus, concernant les interfaces, tant qu'une fonction du même nom est définie en Python, elle est considérée comme ayant la même interface. La métaphysique est montée à ce niveau, et je suis un peu confus. En ce qui concerne l'interface, ne soyez pas si confiant. La soi-disant interface de Ruby n'est qu'un mix-in. Cette chose a été implémentée dans plusieurs grands projets en Python, mais comme elle n'a évidemment pas de sens pour Python, elle n'est pas davantage utilisée.
12. Concernant la programmation fonctionnelle Lisp, Python dispose de nombreux supports intégrés, tels que map, zip, filter, etc., et bien sûr lambda. Ne parlons pas de support, parlons de praticité. Certains Pythoners pensent encore que la programmation fonctionnelle affecte la lisibilité du code et tentent de l'éviter. Par conséquent, avant de penser à soutenir quelque chose, demandez-vous d’abord si c’est une bonne chose.
13. "Le plus gros défaut est précisément causé par le pouvoir du rubis." C'est tellement dégoûtant, pas de commentaire.
14. Haha, Ruby n'a pas de soutien international. C'est une blague, je me demande ce que pensait ce petit Japonais à l'époque. A-t-il réussi le CET-4 en anglais ?
15. Quant à jython, il y a aussi jruby maintenant, peut-être parce que le texte original de l'auteur est relativement ancien. Python a également de nombreuses implémentations, telles que jython,
ironpython, pypy,
pyrex, etc. L’excellence de Python n’a pas nécessairement besoin d’être implémentée dans d’autres langages pour se refléter. Bien sûr, et encore moins espérer que Java sauvera Ruby d’une situation désespérée.
De plus, n'évitez pas certains défauts de Ruby :
16. Ruby n'a pas de threads localisés, mais utilise des pseudo-threads, qui ne peuvent pas tirer parti des processeurs multicœurs. CPython utilise des threads localisés, mais comme il utilise GIL, il ne peut pas tirer parti des processeurs multicœurs. Cependant, l'émergence de Stackless peut complètement résoudre ce problème, et le stackless a élevé Python au sommet du calcul parallèle. Le concurrent à ce niveau peut être Erlang, et Ruby n'a naturellement pas besoin de forcer. La technologie de thread ultra-légère peut garantir qu’il est facile d’exécuter des centaines de milliers de threads sur une machine médiocre. La programmation asynchrone basée sur Twisted offre également une option.
17. Quand j'ai commencé à apprendre Python, j'ai entendu le dicton "Python est le plus lent parmi les langages dynamiques traditionnels". J'ai appris plus tard que la personne qui disait cela ne prenait pas du tout Ruby au sérieux. Si Ruby est inclus dans les langages dynamiques traditionnels, il y aura alors un langage plusieurs ordres de grandeur plus lent que Python.
18. Le rubis est-il populaire ? Allez-vous en PHP ? PHP est une bonne chose, mais le problème est qu'il ne peut être utilisé que pour la programmation WEB, ce qui limite le champ d'application de PHP. Les choses qui nécessitent un peu plus de système doivent utiliser du C. Et maintenant, Ruby semble suivre cette voie. Jusqu'au jour où quelqu'un a annoncé que "Ruby pouvait être utilisé pour la programmation client", ce qui a éveillé la curiosité de tous. De plus, on ne sait toujours pas si le ROR actuel peut remplacer quoi que ce soit. Toutes les personnes sauvées du développement Java
WEB ne sont pas allées vers Ruby.
4. Commentez "Ruby ou Python ?" 》
Les philosophies de conception de Python et Ruby sont en effet très différentes sur cette question, je ne commenterai pas laquelle est la meilleure. Chacun a ses propres préférences. Quant à l'efficacité, Ruby ne doit jamais être comparé à Python. Ruby est un pseudo-thread, et il n'y a aucune possibilité de tirer parti des processeurs multicœurs, alors transmettez-le simplement. Et Python utilise natif
thread, simplement parce que certains modules ne sont pas threadsafe, GIL est ajouté pour limiter l'application des processeurs multicœurs. Dans mon récent test, après avoir utilisé les threads asynchrones de Twisted, la puissance de calcul des processeurs multicœurs peut être bien utilisée. . L'efficacité d'exécution n'est pas du même ordre de grandeur, vous le saurez si vous l'essayez vous-même.
La comparaison de Java avec Python montre la créativité de l'auteur, haha. Les projets open source correspondent tout à fait à la sélection naturelle de Darwin. Se pourrait-il que l'absence de projets open source de Ruby soit un avantage ? De plus, je n'ai vu aucun projet en Python qui ait trop de duplication sauf le framework WEB
. Par exemple, pypcap a pratiquement éliminé pcapy.
En ce qui concerne les ressources, Ruby a encore un long chemin à parcourir, alors s'il vous plaît, ne soyez pas trop juxtaposé lorsqu'il s'agit de la force des deux côtés. Quant aux membres de la communauté Java qui ont tendance à apprendre Ruby, je pense personnellement que c'est simplement que les développeurs habitués à Java sont trop étroits d'esprit. Le langage est un outil, et l'orientation objet est aussi un outil. L'orientation objet pure n'est pas nécessairement intelligente. Python a également un support de programmation fonctionnel. Pourquoi l'auteur ne l'a-t-il pas mentionné ? De plus, de nombreuses pratiques de Python sont basées sur l'efficacité du développement comme premier objectif et ne se limitent pas à diverses formes. Même l'héritage multiple en C++, qui est largement critiqué par de nombreuses personnes ayant une intelligence limitée, peut également être pris en charge. Le problème n'est pas de prendre en charge quelque chose que vous n'aimez pas, mais d'amener le plus grand nombre de personnes possible à utiliser quelque chose qu'ils aiment. De plus, un exemple de Python qui a toujours été considéré par les développeurs Ruby comme n'étant pas assez OO est de prendre la longueur d'une séquence. Python utilise la méthode len(x). Pour cette question, si les développeurs Ruby pensent que x.length peut être considéré comme OO, alors Python peut également utiliser directement x.__len__() pour obtenir la longueur. Du point de vue de Java, qui utilise des méthodes pour encapsuler les propriétés, qui est plus OO, haha.
Ruby est l'œuvre d'un Japonais Haha, je n'entrerai pas dans les détails à ce sujet. Il y a beaucoup de Chinois qui n'aiment pas le Japon. Ici, je ne peux dénigrer Ruby que sur le plan technique. pas besoin d'utiliser des termes non techniques.
A propos de Rubyon
rails, la communauté Ruby a en effet concentré la quasi-totalité de son énergie là-dessus. Mais cela ne peut que montrer la naïveté de Ruby. Les faits ont prouvé que de nombreux imitateurs de ROR ont lancé d'innombrables fonctionnalités avancées qui dépassent de loin ROR. L'échec du remplacement de ROR est simplement dû à des idées préconçues. Que se passerait-il si Ruby perdait soudainement ROR maintenant ? Quant au zend mentionné par l'auteur, comparé à ROR, c'est comme frapper une pierre avec un œuf. J'ai appris deux frameworks WEB de Python, et je fais généralement plus attention à diverses choses en Python et Ruby, mais je ne l'ai jamais fait. entendu parler de zend. Je l'ai réussi, je ne sais pas si c'est le travail de l'auteur, haha. Si vous devez organiser un concours sur les frameworks WEB, vous pouvez utiliser Django, Quichotte, mod_python et autres pour comparer. Django, une imitation typique de ROR, continue de croître, mais il possède déjà de nombreuses fonctions meilleures que ROR, et il va sans dire que les performances sont bien meilleures que ROR. douban.com, qui utilise Quichotte, a le trafic le plus important parmi tous les sites Web utilisant Python et Ruby, et est plus de deux fois plus rapide que ROR avec la même configuration matérielle. Vous devez savoir qu'après avoir supprimé diverses pertes égales telles que les serveurs WEB, etc. . , ce qui est un ordre de grandeur plus rapide. Quant à mod_python, on dit que celui-ci est utilisé. Si Ruby veut toujours être open source, alors il vivra toujours dans l'ombre de Python.
Quant à la rapidité de mise en route, chacun a des situations différentes, donc je ne ferai pas de commentaire. Quant à ce qu'apporte la flexibilité, c'est une question d'opinion, je ne ferai donc pas de commentaire. L'auteur parle de la difficulté de démarrer avec Python, mais je ne sais vraiment pas à quel point c'est facile avec Ruby. Lorsque j'ai appris Python pour la première fois, j'ai écrit un analyseur lexical en Python le 11ème jour, qui est toujours disponible sur mon blog. Par conséquent, lorsqu’il s’agit de difficulté d’entrée de gamme, il est préférable que chacun l’essaye par lui-même sans avoir à écouter ce que disent les autres.
A mentionné qu'il y a beaucoup de choses dans le répertoire généré par ROR, et qu'il faut beaucoup de temps pour toutes les comprendre. Il s'agit en effet d'un syndrome IDE. En Python, un exemple typique est TurboGears. Si vous souhaitez comprendre comment fonctionne l'ensemble de l'application, vous pouvez commencer à apprendre à partir du noyau Cherrypy, et vous n'aurez alors rien à savoir lorsque vous commencerez à utiliser TurboGears. De ce point de vue, ROR n’a pas le choix. De plus, scgi, un moyen de se connecter aux serveurs WEB désormais disponible dans ROR, était également une œuvre de Python à l'époque, et c'était une autre petite chose vivant dans l'ombre de Python.
Quel est le développement futur de Ruby ? Il est difficile de dire si Ruby fait tapis, mais comme il est all-in, le risque est encore assez élevé. Quant à Python, je pensais qu'il se développerait vraiment régulièrement, mais ensuite l'ajout de Micro$oft nous a rendu difficile de prédire l'ampleur de l'avenir de Python. Revenons en arrière et parlons de la diversité de Python que l'auteur a toujours détesté. À mon avis, il n'y a qu'une poignée de choses que Ruby peut surpasser Python, et les choses que Python surpasse Ruby sont naturellement un écart insurmontable pour Ruby. Par conséquent, compte tenu de la diversité des langages de programmation, il n’est pas recommandé à tout le monde d’apprendre Ruby. Il y a un choix de moins et il est toujours bon de gagner en popularité.
5. python ou ruby, qui dois-je choisir ?
En fait, python et ruby sont très proches, beaucoup plus proches que la plupart des autres langages, vous pouvez donc utiliser ce que vous voulez (pour être honnête, même si cela n'a pas de sens également). Bien qu'il existe quelques différences de syntaxe, dont la plupart sont du sucre syntaxique, je me risquerai à en énumérer quelques-unes (j'ai presque oublié Python, alors n'hésitez pas à me critiquer si vous vous trompez), mais la principale différence réside toujours dans le. concept de conception : flexibilité vs explicite. Je ne pense pas qu'il y ait de différence de productivité entre les deux, si vous le connaissez. *Remarque : la comparaison est limitée à la langue elle-même.
1. Le cas de Ruby peut correspondre à beaucoup de choses : plage/tableau, objet, expression régulière. Python n'a pas de cas/switch et l'utilisation de if/else est plus rigide. C'est joli, même si cela peut parfois causer quelques ennuis. La fin de Ruby est assez moche, donc tout le monde est obligé d'être sur une seule ligne (blague)
3. Ruby se sent plus OO que Python Bien sûr, cela peut aussi être dû au fait que Python ne préconise pas l'utilisation de choses qui changent. la structure interne des objets. L'illusion provoquée par les « astuces »
4. python a une compréhension de liste, mais pas Ruby :(
5. Python a un véritable argument de mot-clé, tandis que Ruby utilise du hachage pour le simuler. Bien sûr, il n'y a aucune différence dans l'utilisation réelle
6. Le moi de Python est ennuyeux, Ruby n'a pas ce genre de trucs encombrants
7. . En réflexion, Ruby a de nombreuses méthodes intégrées, telles que object.methods, et Python stocke ces informations dans un dictionnaire spécial. Presque là
8 La fonction de bloc de Ruby est très puissante et le lambda de Python ne peut que le faire. renvoie une seule valeur
9. La classe ouverte de Ruby a été déclarée de grande envergure et peut être jouée pendant 2. jours Il semble que Python ne puisse pas modifier directement les classes intégrées et s'y oppose. Python doit utiliser @classmethod pour modifier la méthode de classe déclarée. Ruby a un
intégré. Ruby a une méthode monade, qui est correcte. Les objets sont personnalisés individuellement. concept similaire
12. Ruby a un mécanisme method_missing. Python peut utiliser __getattr__ pour intercepter des méthodes non définies (de qiezi)
13. Ruby utilise l'héritage unique + mixin, python utilise l'héritage multiple, mais python. a également mixin
14. ruby a attr_* une série d'assistants de syntaxe, ce qui vous évite d'avoir à écrire vous-même un tas de setters/getters. Pour les méthodes de propriété de python, vous devez toujours écrire vos propres setters/. getters
15.Ruby et Python utilisent tous deux le typage duck, mais Python a également un mécanisme d'interface explicite (a-t-il été incorporé dans le noyau à partir de zope3 ?)
16.Les parenthèses d'appel de fonction de Ruby peuvent être omis Oui, appuyez simplement un peu moins sur le clavier. Si Python n'a pas de parenthèses ou de paramètres par défaut, il renvoie une référence à la fonction elle-même
17. peut y aller, donc je dois attendre les experts. Parlons-en. Je ne pense tout simplement pas qu'il soit couramment utilisé par les pythonistes, et cela peut rendre la logique du programme obscure
18. des choses laides de Perl, comme de nombreuses constantes $x prédéfinies
19.Ruby a des expressions régulières intégrées, ce qui est plus pratique
20.Le rendement de Ruby est utilisé pour appeler des blocs. Le rendement de Python est utilisé pour entrer et sortir des valeurs vers le générateur.
21. Je pense que la convention de dénomination des bibliothèques Python est un peu incohérente. Certaines méthodes utilisent Snake_case et d'autres utilisent CamelCase. C'est peut-être un problème historique laissé par trop de bibliothèques
22. python Trois citations sont très belles, <<-XX…XX de Ruby est trop moche, vous pouvez également utiliser %q{…} pour envelopper du texte multiligne (de qiezi)
23. conception de bibliothèque de classes Ajoutez des alias aux méthodes pour les rendre plus faciles à mémoriser.
Autre : le site officiel de Ruby propose également quelques comparaisons de base.
6. Comparaison des ressources et des courbes d'apprentissage des deux langages :
L'impression générale, en utilisant une métaphore inappropriée : Si Python est Java, alors Ruby est .net. Nous savons que le monde Java est très complexe et diversifié. Pour toute exigence, il existe de nombreux projets open source qui utilisent des idées différentes pour les mettre en œuvre et ont des caractéristiques de performances très différentes. Il est toujours difficile de choisir lequel. La même chose est vraie maintenant pour Python, et comme Python est beaucoup moins difficile à développer que Java, il existe beaucoup plus de projets liés à Python que Java.
En termes de ressources, les deux communautés sont très fortes. Fait intéressant, la communauté Java risque désormais d'être assimilée par Ruby, du moins les nombreuses agrégations de blogs Java auxquelles je m'abonne pour parler de Ruby plus que de Java. La communauté de Ruby est plus concentrée, tandis que celle de Python est plus dispersée. Je soupçonne toujours que Ruby compte plus d'utilisateurs japonais, mais comme je ne comprends pas le japonais, il est difficile de confirmer cette idée. Pour un fondateur dont la langue maternelle n'est pas l'anglais, j'ai toujours un peu peur, peur qu'il soit difficile de le comprendre, peur qu'il soit difficile d'avoir les dernières nouvelles, etc. Même si cette inquiétude semble inutile pour le moment, mais qui sait ce qui va se passer !
La raison pour laquelle Ruby est soudainement devenu populaire est indissociable de l'architecture des rails. Lorsque vous envisagez Ruby, pensez à Ruby on rails. Rails fournit un très bon cadre de développement Web avec une très grande efficacité de développement. Bien que Python ait de nombreuses implémentations d’architecture similaires, aucune architecture ne peut unifier le monde. Bien que le zend de Python soit complet, il est davantage orienté vers les serveurs Web et ne peut être comparé aux rails.
Ruby est plus facile à utiliser que Python. Du point de vue des fonctionnalités du langage, Ruby propose de nombreuses créations intéressantes, telles que des blocs, mais l'application à grande échelle de ces éléments intéressants rend le programme déroutant. La syntaxe Python met l'accent sur la simplicité, mais comme elle est trop flexible et trop simple, les programmeurs traditionnels voient souvent des expressions surprenantes. Je ne sais pas si cela doit être considéré comme un avantage ou un inconvénient. Au moins, je pense que la syntaxe est trop flexible, ce qui peut facilement conduire à des différences excessives dans les styles de codage des différents programmeurs, augmentant ainsi le coût d'apprentissage.
Au début, Ruby est plus facile à apprendre, mais une fois qu'il atteint un certain niveau de complexité, Ruby devient soudainement plus difficile. Ce n’est pas facile de démarrer avec Python, et ce n’est pas trop pénible quand ça devient compliqué. Rails a le problème d’être facile à démarrer mais difficile à démarrer. A quoi sert le répertoire généré par rails ? Comment la cartographie o/r est-elle mise en œuvre ? Comment transférer des données du Web vers la base de données. Ce sont tous des problèmes auxquels les programmeurs Ruby seront confrontés tôt ou tard. Ce n'est pas le cas avec Python Si vous ne comprenez pas cela, vous ne pourrez probablement pas commencer. Les outils de développement rapide trop intégrés ont cette caractéristique, qu'il s'agisse de VB, Delphi ou .net, combien de développeurs qui l'utilisent depuis moins de six mois peuvent expliquer clairement le but de tous les fichiers du répertoire du projet et. la syntaxe de chaque fichier ? Je pense que de nombreux utilisateurs expérimentés ne seront peut-être pas en mesure de l'expliquer clairement.
D'un point de vue structurel, bien que les deux soient en réalité très différents, les résultats finaux sont très similaires. Ruby est un pur langage OO, tandis que Python est un mélange de fonctions et d'OO. Bien que Ruby puisse également utiliser un codage de style fonctionnel, il est en réalité simulé. Cet écart entre eux n’a pas un grand impact sur les programmeurs ordinaires, après tout, ils se ressemblent.
D'une manière générale, s'il s'agit d'un premier avant-goût du développement d'un non-professionnel, Ruby convient. Pour les programmeurs professionnels, je recommande toujours de choisir Python.
Quant au développement futur, je pense que le développement de Python est prévisible et sera relativement stable. Python appartient déjà à une communauté plutôt qu'à une personne, mais Ruby, pour diverses raisons, la volonté de l'auteur du labyrinthe de Ruby aura encore un impact plus important sur le développement de Ruby. Sun contrôle Java, mais grâce aux ressources puissantes de Sun et à l'organisation de jcp pour la coordination, Java s'est très bien développé, mais il faudra du temps pour prouver si Ruby peut y parvenir.
7. De Python à Ruby
Python est un très excellent langage lors de la migration de Python vers Ruby, vous trouverez quelques différences grammaticales.
Similarités
Comme Python, dans Ruby,…
Il y a une invite interactive (appelée irb).
Vous pouvez lire le document (via le ri au lieu de pydoc).
Il n'y a pas de symbole spécial pour terminer une ligne (sauf une nouvelle ligne
Le texte peut être utilisé sur plusieurs lignes, tout comme trois dans les guillemets Python).
La liste utilise [], Dict utilise {} (les dicts sont appelés "hachages" en Ruby).
Les tableaux fonctionnent de la même manière (2 tableaux s'additionnent pour devenir un tableau plus long, mais si vous souhaitez combiner a3 = [ a1, a2 ], cela produira un tableau contenant des tableaux).
Les objets ont des types fixes et une conversion dynamique.
Tout est objet, un nom de variable est juste un pointeur vers un objet.
Bien que les mots-clés soient différents, les exceptions fonctionnent de la même manière.
Vous disposez d'un outil pour intégrer de la documentation (appelé rdoc en Ruby).
Différences
Différent de Python, en Ruby,…
Les chaînes peuvent être modifiées.
Vous pouvez utiliser des constantes (les valeurs des constantes changent différemment).
Il y a quelques exigences d'écriture obligatoires ici (par exemple : les noms de classes commencent par des lettres majuscules, les noms de variables commencent par des lettres minuscules).
Il n'y a qu'un seul conteneur (Array), et il peut être modifié.
Les restrictions de chaînes entre guillemets sont différentes.
Il n'y a pas de nouveau style de classe ici, la classe n'a qu'un seul style.
Vous ne pouvez pas accéder directement aux propriétés. Dans Ruby, cela se fait via des appels de méthode.
L'utilisation de () dans les appels de méthode est une stratégie facultative.
Ici, des mots-clés privés et d'autres mots-clés à accès restreint sont utilisés pour remplacer le masquage de nom en Python.
Les « mixin » sont utilisés à la place de l’héritage multiple.
Vous pouvez modifier la Classe existante à tout moment et ajouter de nouvelles méthodes.
Remplacez True et False par true et false (remplacez None par nil).
Lors du jugement de la valeur de vérité, seuls faux et nul seront considérés comme faux. Tout le reste est considéré comme vrai (y compris 0, 0,0, "", et []).
Remplacez elif par elsif.
Remplacez import par require Mais l'utilisation est la même.
Utilise le style habituel pour annoter les documents (en remplaçant les docstrings) et pour générer de la documentation.
8. Comparez Python et Ruby sous trois aspects :
1. À quelles applications conviennent-ils
2. 3. Comment est la portabilité, car il est prévu à terme que le projet soit porté sur des plateformes mobiles, telles que Windows CE Symbina
[1. Applications auxquelles chacune est applicable]
Les résultats de la critique semble être Les deux langues ont de bonnes critiques et fonctionnent très bien dans le développement Web. Ils sont très adaptés au développement rapide d’applications et l’efficacité du développement est très élevée.
Python :
Extrait de quelques descriptions d'applications liées au projet
Développement multiplateforme :
Python prend en charge une gamme de plates-formes différentes de manière neutre. Si le système utilisé par l'utilisateur contient différentes plates-formes, il est préférable d'utiliser Python pour développer des applications ; son adaptabilité peut également réserver la possibilité d'utiliser d'autres outils pour le système ; . Pour les utilisateurs qui changent fréquemment de plateforme, Python est un choix idéal.
Lors de la fourniture de services logiciels aux utilisateurs finaux, Python est également une alternative pour éviter le temps et les dépenses liés à la programmation avec différents logiciels d'application en même temps.
Programmation Internet :
Python est livré avec des modules standard pour la communication de base et au niveau du protocole avec les emplacements réseau. Par exemple, si vous souhaitez lire des e-mails à partir d'un serveur POP, Python est livré avec le module bibliothèque. peut faire ça. De plus, Python prend également en charge les fichiers de bibliothèque XML, HTML et CGI, vous pouvez donc l'utiliser pour analyser les exigences de saisie de l'utilisateur et produire des résultats de la meilleure qualité via le serveur Web.
Les programmeurs peuvent également compiler des modules pour les serveurs Web Apache, Unix et Windows dotés de l'interpréteur intégré de Python. Grâce à la puissance des programmes CGI, les instructions Python peuvent être facilement exécutées sans les charger séparément.
Pour la programmation réseau Python, il existe un bon livre : "Python Network Programming Basics"
Ce livre présente de manière exhaustive les connaissances de base de la programmation réseau en utilisant le langage Python, le contenu principal comprenant les bases du réseau, opérations réseau avancées, services Web, analyse HTML et XHTML, XML, services de messagerie, FTP, utilisation de Python pour faire fonctionner les bases de données, SSL, plusieurs frameworks côté serveur (y compris le serveur Socket, SimpleXMLRPCServer, CGI et mod_python), ainsi que plusieurs -tâches (y compris Forking, threads et communication asynchrone), etc. Ce livre est très pratique, fournissant un total d'environ 175 exemples et plus de 6 600 lignes de code. C'est la meilleure pratique pour aider les lecteurs à apprendre le langage Python de manière complète et rapide et à écrire des programmes réseau.
Ruby :
Un langage de script puissant et orienté objet qui vous permet de faire de la programmation orientée objet rapidement et facilement, parfois développé à l'aide de langages formels orientés objet comme Smalltalk, Eiffel, ou C++ Certains petits projets semblent un peu "exagérés", et Ruby peut simplement répondre à ces besoins de programmation orientée objet. Bien sûr, vous pouvez également utiliser Ruby pour une programmation orientée processus ordinaire.
Ruby prend en charge de nombreux protocoles réseau, de haut niveau et de bas niveau. Ruby fournit des classes de base qui vous permettent d'interagir en utilisant TCP, UDP, SOCKS et de nombreux autres protocoles sans avoir à vous en tenir à la couche réseau. Ces classes fournissent également des classes d'assistance qui vous permettent de lire et d'écrire facilement sur le serveur. La programmation réseau est également excellente.
[2. Environnement de développement, environnement d'exploitation]
Python :
En revanche, il n'existe pas d'environnement de développement intégré solide. Certaines personnes disent que les logiciels open source sont plus faciles à utiliser que les logiciels payants.
Quelques-uns qui sont couramment utilisés :
Le propre ralenti de Python :
n'est pas le meilleur parmi les IDE python...
PythonWin :
Il est très simple à utiliser (aussi confortable que l'utilisation de Windows). Il dispose d'un éditeur utile qui inclut des fonctionnalités de fusion de code, de mise en évidence des balises de syntaxe et de saisie semi-automatique du code. PythonWin, comme certains IDE, n'inclut aucun concepteur de formulaire ; mais il fournit un excellent débogueur avec surveillance, inspection du code, fenêtres de débogage interactives, points d'arrêt et autres fonctionnalités qu'un débogueur devrait avoir. Plus important encore, PythonWin est stable, même s'il "cesse parfois de répondre" étrangement lorsqu'il est utilisé sur des systèmes Win95r2. En termes d'interface, PythonWin est relativement simple, mais très attrayant, et fait bon usage des éléments intégrables et ancrables (je préfère en quelque sorte le style Idle "beaucoup de fenêtres partout", qui est également utilisé par de nombreux autres IDE). PythonWin intègre également la version HtmlHelp d'ActiveState de la documentation Python et PythonCOM.
Plug-in pydev d'Eclipse, Eclipse+pydev
Pydev est basé sur Eclipse, un excellent environnement Python, et la vitesse d'amélioration est très rapide. Quelques fonctions fournies
UliPad :
Un éditeur que vous pouvez utiliser pour la rédaction de vos documents et le développement de votre programmation. Il est développé en utilisant le langage de programmation Python et l'interface utilisateur est basée sur wxPython. En plus de compléter les fonctions communes des éditeurs généraux, il souhaite principalement mettre en œuvre un cadre pratique et flexible afin que les développeurs puissent facilement développer de nouvelles fonctions. De plus, les utilisateurs ayant une expérience en programmation peuvent également compiler des plug-ins pour résoudre des problèmes particuliers du travail quotidien, afin qu'ils puissent être étroitement intégrés à leur travail quotidien. Parce qu'il utilise Python, un langage de programmation puissant, vous pouvez facilement modifier le logiciel pour répondre à vos besoins.
UliPad prend en charge la coloration du code, la complétion intelligente, le débogage de code, la navigation dans les classes Python, les extraits de code, la fonction Ftp, la navigation dans les répertoires et d'autres fonctions puissantes. La documentation de son répertoire Doc est très riche, vous permettant d'écrire du Python A. super aide !
Exigences du système :
python 2.4+
wxPython 2.6+
Notre choix final était UliPad, ce qui est plutôt bon.
Ruby :
Ruby possède un excellent débogueur de haut niveau.
Vous pouvez utiliser le plug-in ruby de netbeans ou le plug-in ruby d'eclipse
Le processus général d'installation de l'environnement de développement sous Eclipse :
1. Installez le programme d'installation en un clic de Ruby 1.8.6.
2. Extrayez le package compressé Eclipse Platform Runtime Binary dans un certain répertoire.
3. Décompressez le contenu du package compressé RubyDevelopment Tools dans le répertoire correspondant d'Eclipse.
Pour l'environnement d'exploitation, il suffit de télécharger la version correspondante depuis son site officiel puis de l'installer. L'installation sous Windows est relativement simple, il suffit de double-cliquer pour l'exécuter pour l'installer.
【3. Portabilité】
Python :
En raison de sa nature open source, Python a été porté sur de nombreuses plateformes (avec des modifications pour lui permettre de fonctionner sur différentes plateformes). la plateforme). Si vous veillez à éviter d'utiliser des fonctionnalités dépendantes du système, tous vos programmes Python s'exécuteront sans modification sur aucune des plates-formes répertoriées ci-dessous. Ces plates-formes incluent Linux, Windows, FreeBSD, Macintosh, Solaris, OS/2, Amiga, AROS, AS/400, BeOS, OS/390, z/OS, Palm OS, QNX, VMS, Psion, Acom RISC OS, VxWorks, PlayStation, Sharp Zaurus, Windows CE et même PocketPC !
Lorsque Python est exécuté, il compilera d'abord le code source du fichier .py en code d'octet Python (code d'octet), puis la machine virtuelle Python exécutera ces codes d'octet compilés. L'idée de base de ce mécanisme est cohérente avec Java et .NET. Cependant, la différence entre la machine virtuelle Python et la machine virtuelle Java ou .NET est que la machine virtuelle Python est une machine virtuelle plus avancée. Ici, Advanced n'est pas avancé au sens habituel du terme. Cela ne signifie pas que la machine virtuelle de Python est plus puissante que Java ou .NET. Cela signifie que par rapport à Java ou .NET, la machine virtuelle de Python est plus éloignée de la machine réelle. Ou on peut dire que la machine virtuelle de Python est une machine virtuelle avec un niveau d'abstraction plus élevé.
Vous pouvez installer un langage de programmation informatique interprétatif orienté objet. C'est également un langage généraliste puissant et complet. Il a un historique de développement de plus de dix ans, est mature et stable. Python possède la bibliothèque de classes la plus riche et la plus puissante parmi les langages de script, ce qui est suffisant pour prendre en charge la plupart des applications quotidiennes. Les smartphones Symbina prennent en charge deux types de programmes développés en C++ et JAVA. Une fois Python installé, il peut également prendre en charge de nombreux programmes développés en Python. Divers programmes. Pour les utilisateurs ordinaires de téléphones mobiles, nous n'avons pas besoin d'en savoir trop. Il nous suffit d'installer la plateforme Python, qui permet à nos téléphones mobiles de prendre en charge davantage de programmes développés en Python. Actuellement, il existe pas mal de programmes développés en Python sur les téléphones mobiles Symbian, et ils sont tous relativement pratiques.
Ruby :
Il est principalement développé sous Linux, mais peut être utilisé sur de nombreux types d'Unix, Dos, Windows95/98/Me/NT/2000/XP, MacOS, BeOS, Run sur OS/2 et autres systèmes.
Il existe très peu d'informations sur Ruby et le développement mobile. Il existe une version fonctionnant sous Windows CE, mais il semble qu'il y ait encore très peu d'informations pertinentes, et il existe de nombreux exemples d'échecs d'installation et de compilation. échecs. Il y a une petite introduction en japonais sur la page japonaise. [Résumé]
Ensuite, sous la suggestion d'un ami, j'ai également donné les avis de référence suivants sur Python et Ruby que je tiens à remercier :
1 Python est aussi appelé un. Un langage clair. Parce que lorsque son auteur l’a conçu, l’idée directrice générale était que pour un problème spécifique, il n’existe qu’une seule meilleure façon de le résoudre. Une autre signification du langage Python est que son auteur a intentionnellement conçu une syntaxe très restrictive afin que les mauvaises habitudes de programmation (telles que ne pas indenter la ligne suivante à droite dans une instruction if) ne puissent pas être compilées. Cela oblige intentionnellement les programmeurs à développer de bonnes habitudes de programmation. Python adhère également à un style clair et cohérent dans la conception des autres parties, ce qui fait de Python un langage facile à lire et à maintenir, populaire auprès d'un grand nombre d'utilisateurs et offrant un large éventail d'utilisations.
Les codes écrits par plusieurs personnes utilisant Python pour le même problème seront très similaires. Mais Ruby a des idées de conception différentes. Les programmes écrits avec lui sont trop flexibles et les programmes écrits par différentes personnes peuvent varier considérablement.
Le contenu ci-dessus est une comparaison des similitudes et des différences entre Python et Ruby. J'espère qu'après avoir lu cet article, vous aurez une compréhension plus approfondie des similitudes et des différences entre Python et Ruby.
Recommandations associées :
Le problème de chaque variable de référence circulaire en Python et Ruby (un BUG caché ?)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!