Question En venant de C, comment devrais-je apprendre Python? [fermé]


J'ai une bonne compréhension de C, mon premier langage de programmation. Je connais un nombre raisonnable de trucs et de techniques et j'ai écrit pas mal de programmes, principalement pour des sujets scientifiques. Maintenant, je voudrais développer et comprendre la POO, et Python semble être une bonne direction à suivre.

J'ai vu plusieurs questions sur la façon d'apprendre Python, mais la plupart d'entre eux provenaient de gens qui cherchaient à commencer à programmer pour la première fois. Je n'ai pas besoin d'un tutoriel qui me dira quelle chaîne est, mais je faire besoin d'un qui peut me dire comment faire une chaîne en Python. Une aide sur de bonnes sources à regarder? Points bonus si la source est gratuite :)


15
2017-08-18 20:49


origine


Réponses:


Je connaissais C avant de connaître Python. Aucune infraction n'était prévue, mais je ne pense pas que votre connaissance du C soit un gros problème. À moins que vous ne lisiez très, très lentement, il suffit de commencer à apprendre Python. Il ne faudra pas beaucoup de temps pour parcourir le matériel que vous connaissez, et ce n'est pas comme si un tutoriel Python destiné aux programmeurs C faisait de vous un meilleur programmeur Python - il pourrait vous apprendre des choses dans un ordre différent, tout est , et soulevez des choses spécifiques que vous feriez dans C mais que vous ne devriez pas faire en Python.

Les chaînes en Python sont en réalité quelque peu différentes des chaînes en C, et elles sont utilisées différemment. Je recommande fortement de les apprendre "à partir de rien", plutôt que de les considérer en termes de différences avec les chaînes C. D'une part, dans Python 2, c'est mieux ne pas utiliser la classe "string" de Python pour représenter les chaînes: il y a une classe de chaînes Unicode séparée et pour les applications Python pratiques (pratiquement tout ce qui implique des données utilisateur), vous en avez besoin. (Python 3 corrige cela, rendant le str classe une chaîne Unicode). Vous devez établir une bonne pratique pour les données Unicode / Byte et le décodage / encodage.

Une erreur courante lors de l'apprentissage d'un deuxième langage de programmation est de penser "je sais programmer, il me suffit de traduire ce que je fais en C en Python". Non, vous ne le faites pas. S'il est vrai qu'un algorithme peut être fondamentalement le même dans différentes langues, la manière naturelle de faire une chose particulière peut être complètement différente dans différentes langues. Vous allez écrire un meilleur code Python si vous apprenez à utiliser Python de manière idiomatique, que si vous essayez d'écrire Python comme un programmeur C. Bon nombre des "astuces" que vous connaissez en C seront inutiles ou contre-productives en Python. Inversement, beaucoup de choses que vous devriez faire avec bonheur dans un programme Python typique, comme allouer et libérer beaucoup de mémoire, sont des choses sur lesquelles vous avez probablement appris à réfléchir. En partie parce que le programme C typique a des restrictions différentes du programme Python typique, et en partie parce que vous devez juste écrire plus de code et penser plus dur pour obtenir ce genre de chose en C que vous ne le faites en Python.

Si vous apprenez le langage parce que vous devez de toute urgence programmer un système / une plate-forme qui a Python mais qui n'a pas de C, alors écrire des programmes Python fonctionnant comme des programmes C est une mesure provisoire raisonnable. Mais cela ne s’applique probablement pas à vous, et même si c’est le cas, ce n’est pas le but ultime.

Une chose que vous pourriez être intéressé à regarder à cause de votre expérience C, est l’API Python / C. Python est idéal pour beaucoup de choses, mais il ne se traduit pas par le noyau de calcul le plus rapide possible des applications scientifiques [pas plus que C, probablement, mais ne va pas dans FORTRAN pour le moment ;-)]. Donc, si vous souhaitez poursuivre la programmation scientifique en passant par Python, et que vos programmes sont généralement liés au bus de mémoire et aux processeurs, vous réalisez d’énormes quantités de calculs (des milliards d’opérations). échapper à C si vous en avez besoin. Considérez cela comme un dernier recours, cependant.

Cependant, vous devez comprendre Python raisonnablement bien avant que l’API Python / C ait beaucoup de sens.

Oh oui, et si vous voulez comprendre la POO en général, souvenez-vous plus tard de regarder quelque chose comme Java, Objective-C, C ++ ou D. Python n'est pas seulement un langage OO, c'est un langage OO dynamique. Vous ne le réalisez peut-être pas en comparant seulement C avec Python, mais les types dynamiques et statiques sont un problème totalement indépendant de la méthode OOP-ness de Python. Les objets Python sont comme des hashtables qui vous permettent d'attacher de nouveaux champs bon gré mal gré, mais les objets dans de nombreux autres langages OO stockent des données beaucoup plus comme un C struct.


28
2017-08-18 21:34



J'ai tout appris sur Python à partir de la documentation officielle: http://docs.python.org/

Et c'est gratuit.


15
2017-08-18 20:55



plonger dans le python est un bon endroit pour commencer

lance un interpréteur, IPython est même meilleur que l'interpréteur Python ordinaire

utilisez dir () et help () pour contourner

et n'oubliez pas de lire à travers le documents officiels au moins une fois


9
2017-08-18 20:57



Je recommande le livre Comment penser comme un informaticien en Python. Cela m'a vraiment aidé à démarrer en Python (maintenant mon langage préféré) venant de Java, C et C ++.


4
2017-08-18 20:53



Diveintopython, docs officiel, "Learning python" de Mark Lutz (4ème édition) est l'un des meilleurs livres.


1
2017-08-18 22:40



Si vous avez un arrière-plan de programmation, Python est assez simple à prendre en main. La tâche la plus pénible consiste à apprendre les bibliothèques et les idiomes. La documentation sur python.org est très bonne et gratuite. Si vous faites des calculs, vous voudrez certainement vous familiariser avec le insipide extension.


1
2017-08-19 00:59



En tant que personne ayant travaillé avec Java pendant plus de 12 ans, j'ai constaté que le meilleur moyen d'apprendre était de trouver un problème et de le résoudre dans une nouvelle langue. Je ne crois pas en la lecture - cela gaspille énormément de temps et vous pouvez facilement finir par lire trop longtemps.

Mon conseil est de trouver un problème et de le résoudre avec Python. Vous apprendrez beaucoup dans le processus.

Bonne chance


1
2018-05-27 09:36