34 votes

Programmation en Python vs. programmation en Java

J'ai écrit en Java ces dernières années, et maintenant j'ai commencé à écrire en python (en plus).

Le problème est que lorsque je regarde mon code Python, on dirait que quelqu'un a essayé de transformer du code Java en un format Python, et ça sort mal parce que - eh bien, python n'est pas Java.

Des conseils pour sortir de ce schéma de "Écrire du Java en Python"?

Merci!

4 votes

Je dirais que vous devez vous donner du temps. Ça ne se produira pas du jour au lendemain ou en suivant simplement les étapes à la lettre. Au fur et à mesure que vous programmez différents aspects, cherchez des alternatives et vous y arriverez.

3 votes

+1 seul pour l'effort de faire cela. J'ai connu un collègue qui a programmé en Smalltalk toute sa vie. Il a fait quelques choses vraiment horribles avec la réflexion en Java que j'aimerais oublier que j'ai jamais vues...

5 votes

Alors que vous êtes encore frais, je vous suggère d'essayer Ruby. Je l'ai trouvé comme un énorme souffle d'air frais après avoir été dans une pièce remplie de fumée (représentée par Java). Sérieusement cependant, je crois que chaque bon développeur devrait connaître au moins un langage "statique" et un langage "dynamique". Cela donne une bien meilleure perspective sur tout ce que vous faites.

24voto

Ryan Emerle Points 8073

Vous pourriez envisager de vous immerger dans les paradigmes Python. Le meilleur moyen est de d'abord savoir ce qu'ils sont, puis d'explorer les meilleures pratiques en lisant de la littérature et en examinant des exemples de code. Je recommande Learning Python de Mark Lutz; idéal pour les débutants et les utilisateurs avancés.

Vous vous ferez une grande injustice si vous programmez avec Python et ne tirez pas parti de toute la syntaxe intégrée conviviale pour les développeurs.

Comme le disait ma professeur de français, "Le français n'est pas simplement de l'anglais avec des mots différents."

10 votes

Soit dit en passant, j'ai eu un C en français.. :)

2 votes

+1: Lorsque j'ai appris Python pour la première fois, j'utilisais des points-virgules pour le rendre plus similaire à Java et plus familier. Il m'a fallu un certain temps pour laisser tomber certaines des particularités de Java. J'aime toujours cependant les superclasses abstraites même si elles sont presque inutiles en Python.

11 votes

Mieux que d'avoir un C++ en Français

7voto

Corey Goldberg Points 15625

Si vous êtes nouveau dans Python et que vous venez de Java (ou de C#, ou d'un autre langage OO similaire à typage statique), ces articles classiques de PJ Eby et Ryan Tomayko sont une lecture indispensable :

6voto

Michael Kristofik Points 16035

Vous pourriez commencer par lire Le Zen de Python. Cela vous donnera un aperçu de la façon dont le code Python est censé être écrit, à condition de comprendre suffisamment la langue pour comprendre de quoi il parle. :-)

5voto

MAK Points 12571

Quelques-unes des principales différences entre Python et les langages C/Java sont :

  1. Compréhensions de listes.

  2. Support pour la programmation fonctionnelle.

  3. L'utilisation de certains concepts Pythonic au lieu de concepts similaires à ceux de C, bien que les deux semblent fonctionner (les compréhensions de listes peuvent être considérées comme faisant partie de cela, mais il y en a d'autres).

Il y en a d'autres, mais ce sont les principales qui m'ont dérangé lorsque j'ai commencé Python (et je venais de Java comme vous).

Avant d'utiliser l'un de ces concepts, il est utile de comprendre pourquoi vous devriez privilégier un code pythonic plutôt que la manière habituelle en C/Java en Python, même si les deux vous donnent le même résultat.

Pour commencer, Python offre des fonctionnalités puissantes non disponibles en C/Java qui rendent votre code beaucoup plus clair et plus simple (bien que cela soit subjectif et peut ne pas sembler meilleur à première vue pour quelqu'un venant de Java). Les deux premiers points entrent dans cette catégorie. Par exemple, le support des fonctions en tant que premières classes d'objets et des fermetures facilitent la réalisation de tâches qui nécessiteraient toutes sortes d'acrobaties avec les classes internes en Java.

Mais une raison majeure est que Python est un langage interprété, et certains concepts sont beaucoup plus rapides que le code équivalent en C/Java. Par exemple, les compréhensions de listes sont généralement beaucoup plus rapides qu'une boucle for équivalente qui itère sur les indices d'une liste et accède à chaque élément par index. Il s'agit d'un avantage très objectif, et à mon avis, beaucoup de la pensée "Python est beaucoup trop lent" vient de l'utilisation de code de style Java adapté à Python.

Une des meilleures façons d'apprendre le code pythonic est de lire le code d'autres personnes. J'ai en fait beaucoup appris en regardant du code Python posté en réponse à des questions sur SO. Ces exemples sont souvent accompagnés d'explications et il est généralement évident pourquoi il est meilleur que du code non-pythonic (rapidité, clarté, etc.).

Éditer :

Évidemment, il existe d'autres moyens d'obtenir du code d'autres personnes. Vous pouvez également télécharger et examiner le code de tout bon projet Python open source. Les livres sont aussi une bonne ressource, je recommanderais le O'Reilly Python Cookbook. Il contient de nombreux exemples de code utiles et des explications très détaillées.

4 votes

Duck Typing devrait figurer dans le top 3 des différences, sinon en première position

1 votes

@Graphics Noob : Le duck typing devrait être dans les 3 premiers, mais ce n'était pas une liste des 3 premiers. J'en ai juste mentionné quelques-uns parmi les 5 premiers :). Mon point est que ce sont des concepts que les gens ne comprennent pas au départ, et donc évitent et finissent par écrire du Java en Python. Le duck typing, bien que constituant une différence profonde, est quelque chose qui est, à mon avis, plus facile à apprécier par rapport à des concepts comme les fermetures et les compréhensions de listes.

4voto

Hank Gay Points 36173

Si vous souhaitez voir un code Python assez idiomatique qui fait des choses non triviales, il y a Dive Into Python, bien que Dive Into Python 3 soit plus récent et pourrait être une meilleure source de conseils de style. Si vous cherchez plutôt quelques points à revoir, il y a Code Like a Pythonista.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X