Maison > Article > développement back-end > Comparez Python et Ruby
Cet article compare les similitudes et les différences entre python et Ruby, ainsi que leurs avantages et inconvénients respectifs, etc., et vous montre les ressources et les courbes d'apprentissage de python et Ruby. Il convient très bien aux amis qui hésitent entre. ces deux langages. J'espère que vous aimerez peut-être
J'ai récemment envisagé d'apprendre un langage back-end, mais j'ai hésité entre Ruby et Python, puis j'ai moi-même fait quelques comparaisons. J'espère que cela pourra vous aider. j'ai le même problème.
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.
•Tous sont 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.
•Les deux sont 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.
•Les deux ont des fonctions d'évaluation spécifiques à Lisp, et ils peuvent également prendre des fonctions comme paramètres.
• Il existe également un éditeur spécifique à Ruby avec une interface graphique.
•Les deux disposent d'un support étendu de la bibliothèque 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 :
•A la fonction d'expressions régulières et de HTML intégré. 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 a également un 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.
•L'intégralité de la bibliothèque de Ruby est structurée avec l'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 une méthode "block" pour implémenter cette fonction, qui est plus flexible et polyvalente que Python.
•Ruby a des instructions conditionnelles, des instructions de boucle, etc. d'une manière fonctionnelle approfondie similaire à 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. Une 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 indentée de Python est plus agréable à l'œil que l'expression de base de Ruby. Les extrémités complètes des 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 ni la capacité de générer de la documentation à partir de fichiers de programme.
•Ruby n'a pas de support d'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 tel que 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 présentent 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 jouer avec des choses plus 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é au développement de logiciels. Les exigences d’ingénierie 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. LinuxKernel. On peut donc dire que Python est le couteau suisse du développement logiciel, il peut tout faire.
C'est précisément en raison des contraintes de l'analyseur Ruby et de la bibliothèque de classes Ruby que 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. le 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, ils ont finalement abandonné Ruby et ont 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 plus populaire dans la communauté Python, il l'est. présente également 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 paquets 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 manque d'un bon logiciel de gestion de paquets et d'une bonne version de paquets comme celle-ci. comme le site Web Ruby Gem. 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 Ruby Gem.
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 RACC. 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 ? La plupart des bibliothèques standard n'ont pas du tout besoin de consulter la documentation. Il vous suffit de deviner le nom général, puis dir() et help() pour commencer directement. jusqu'à la deuxième fois. Quand, parce qu'il y a trop peu de choses dans le module et que c'est trop pratique à retenir, 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 d'être forcé. 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 gens de la communauté Java qui ont tendance à apprendre Ruby, je pense personnellement que c’est simplement parce que les développeurs habitués à Java ont une vision trop étroite. 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 suffisamment OO est d'obtenir 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 ne dirai pas grand-chose à 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. besoin d'utiliser des termes non techniques.
Concernant Ruby on
rails, la communauté Ruby concentre vraiment presque toute 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 www.gnu.org l'utilise. 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. Sous 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.
Quant au développement futur de Ruby, il est difficile de dire si c'est tout ou rien, mais comme c'est tout ou rien, le risque reste 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 rubis, 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
2. 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, ruby ne l'a pas :(
5. python a un véritable argument de mot-clé, 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. 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 en renvoyer qu'un seul. valeur
9. La classe ouverte de Ruby a été déclarée éloignée et peut être jouée pendant 2 jours. Pour une astuce comme celle d'avant, python semble incapable de modifier directement les classes intégrées et s'y oppose.
10. Python doit utiliser @classmethod pour modifier la méthode de classe déclarée, tandis que Ruby a une méthode intégrée
Ruby l'a. individuellement. Je ne sais pas si Python a un 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 un single. héritage + mixin, et Python utilise l'héritage multiple, mais Python a également mixin
14. Ruby a une série attr_* d'assistants de syntaxe, ce qui vous évite d'avoir à écrire vous-même un tas de setters/getters. faire ses propres méthodes de propriété. Write setter/getter
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. ruby Les parenthèses dans les appels de fonction peuvent être omises, et cela nécessite moins de saisie au clavier. Par défaut, python n'a pas de parenthèses ni de paramètres et renvoie une référence à la fonction elle-même. 17. Je ne sais pas jusqu'où la méta-programmation de Python peut aller, je dois attendre que les experts en parlent. J'ai juste l'impression que les pythoneurs ne l'utilisent pas souvent, et cela peut rendre la logique du programme obscure. 🎜>
18. Ruby hérite de certaines choses laides de Perl, comme de nombreuses choses prédéfinies19. Ruby a des expressions régulières intégrées, ce qui est plus pratique20. Le rendement de Ruby est utilisé pour appeler le bloc. 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 guillemets sont très beaux, <<-XX...XX de Ruby est trop moche, vous pouvez également utiliser %q{...} pour envelopper du texte multiligne (depuis qiezi)
23 . Comme dans la conception de la bibliothèque de classes Ruby. 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 pour Python maintenant, 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. J'ai toujours un peu peur d'un fondateur dont la langue maternelle n'est pas l'anglais, peur qu'il soit difficile de le comprendre, peur qu'il soit difficile d'avoir les dernières nouvelles, etc. Bien que 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, vous devez considérer 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é, pas à 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 la documentation depuis la ligne de commande (via la commande 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 utiliser plusieurs lignes, tout comme trois guillemets en Python, List utilise [], Dict utilise {} (Dict est appelé "hachages" dans Ruby Works). de la même manière (2 tableaux additionnés deviennent un tableau plus long, mais s'ils sont combinés comme a3 = [ a1, a2 ], cela produira un tableau contenant des tableaux. Les objets ont des types fixes et des conversions dynamiques. Tout est objet, le nom de la variable est). juste un pointeur vers Object. Bien que les mots-clés soient différents, les exceptions fonctionnent de la même manière. Vous disposez de l'outil pour intégrer la documentation (appelé rdoc en Ruby).
Différences
Contrairement à Python, en Ruby. ,...Les chaînes peuvent être modifiées. Vous pouvez utiliser des constantes (la valeur d'une constante change différemment). Il existe certaines exigences d'écriture obligatoires (par exemple : les noms de classes commencent par une lettre majuscule, les noms de variables commencent par une lettre minuscule). 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 tels que accès privé et autre accès restreint sont utilisés pour remplacer le nom caché en Python. Les "mixin" sont utilisés comme alternatives à l'héritage multiple. Vous pouvez modifier une classe existante à tout moment et ajouter de nouvelles méthodes. Utilisez true et false au lieu de True et False (utilisez nil au lieu de None). 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 []). Utilisez elsif au lieu de elif. Utilisez require au lieu de import Mais l'utilisation est la même. Utilisez le style habituel pour annoter la documentation (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 :
Extraits de quelques descriptions d'applications liées au projet
Développement multiplateforme :
Python prend en charge différentes plateformes de manière neutre Pour une série de plateformes, si le système utilisé par l'utilisateur comprend différentes plateformes, 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 : pas le meilleur parmi les IDE python...
PythonWin : très simple à utiliser (tout aussi confortable que d'utiliser 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. Extrayez le contenu du package compressé Ruby Development 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). 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été orienté objet. C'est également un langage polyvalent 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é]
Puis, 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 aussi C'est ce qu'on appelle 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, maintenable et populaire auprès d'un grand nombre d'utilisateurs.
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 différer considérablement.
2. La documentation anglaise de Ruby est extrêmement insuffisante, sans parler de la documentation chinoise. La communauté Python est relativement mature et dispose de beaucoup d’informations.
Enfin, plusieurs sites Web Python sont donnés
•http://www.python.org/– Site officiel de Python
•http://python.cn/– Communauté chinoise Python
•http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPythonPython Pour le site Web de Dot Net
Plusieurs sites Web Ruby
•www.ruby-lang.org/ zh_CNRuby Site officiel chinois
•http://www.rubystudy.com/bbs/tag.php?name=RubyRuby Communauté d'échange d'apprentissage chinois
•http://ruby-lang.guo.cc/Ruby Manuel de référence en ligne
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!