Est-ce une bonne idée pour moi d'apprendre Python avant C ou une autre langue de compilateur? [fermé]

StackOverflow https://stackoverflow.com/questions/2399471

  •  25-09-2019
  •  | 
  •  

Question

En ce moment je vais à travers l'introduction du MIT à l'informatique bien sûr via OpenCourseWare. Dans le cadre de ce cours, je suis l'apprentissage du langage Python.

J'ai lu beaucoup de choses sur les avantages de l'apprentissage C. Avant de creuser plus profondément en Python Je me demande si je serai gêné ou aidé par l'apprentissage de Python premier.

Pensez-vous que je développerai les mauvaises habitudes ou quelque chose comme ça de Python?

EDIT:. Changement de Wiki de la communauté, en raison de la nature subjective de la question

Je vous remercie de toutes les grandes réponses à ma première question SO. Je suis en fait assez époustouflé par la sincérité des réponses / commentaires. Merci, tout le monde a beaucoup!

Était-ce utile?

La solution

En parlant de 37 années de travail en Dieu sait combien de langues, je peux vous dire que le travail en Python permet de vous concentrer presque entièrement sur l'obtention de l'algorithme correct et ne pas se soucier de détails . Je l'ai écrit probablement 300-400,000 lignes de C dans ma vie et la seule façon qu'il était supportable était essentiellement de créer mon propre environnement OO.

C a ses utilisations, mais ces jours-ci, ils ont tendance à être soit à un) vous permettent de se rapprocher d'un morceau de matériel, ou b) gérer une boucle très serré. Si vous trouvez un besoin, regardez un outil comme SWIG ou SIP pour intégrer votre C dans votre Python.

Autres conseils

Pour des raisons historiques, C a été le premier langues de nombreux programmeurs, notamment ceux-ci de la génération précédente, a appris. Pourtant, beaucoup d'entre eux (y compris dans cette ancienne génération), d'abord appris une ou plusieurs autres langues, typiquement ceux avec un (pour ne citer que quelques-uns de base, LISP, Pascal,) le niveau d'abstraction plus élevé avant d'apprendre C.

J'étais de ce dernier genre (c.-à-C n'a pas été ma langue « maternelle », bien que, je maîtrisais assemblage très tôt), et je suis tout à fait convaincu des de nombreux avantages associés à un de sérieux " Tour » dans le langage C , même si, en tant que point de vue pratique, beaucoup d'entre nous ne sera jamais programme beaucoup d'aucune conséquence dans cette langue. Cela dit, Je ne vois aucune raison impérieuse de faire C soit votre premier langue, ou tout idée que la maîtrise en quelque sorte Python (ou Prolog ou ...) compromettrait en quelque sorte ses capacités de programmation pour la prochaine décennie ...

Donc, mon conseil: profiter de Python, prenez en
! Lorsque vous obtenez une sensation pour la programmation, faire faire un point d'apprendre C à un moment donné. Il est particulièrement pertinent dans un programme qui comprend l'écriture du compilateur et / ou systèmes d'exploitation, et, comme on dit, pertinent dans bien d'autres façons. Vous verrez que les autres que pour « surface » possible / syntactiques gotchas (ceux-ci se produisent tout le temps, au moins pour moi, lors de l'apprentissage d'une nouvelle langue ou de revenir au une langue ancienne de la mine, après avoir été exposé à quelque chose d'autre pour une tout), vous devriez avoir aucun problème avec C, au moins aucun problème lié à votre apprentissage d'autres langues.

Je ne suis pas un programmeur expert, mais de ma compréhension et l'utilisation est que Python est un langage très simple et puissant qui vous permet de faire tout ce que vous avez besoin.

Avec C vous obtenir plus de contrôle sur ce qui se passe et cela signifie aussi que vous devez écrire tous ces détails vous-même alors que dans quelqu'un Python a fait pour vous et vous avez des options qui travaillent pour presque tous les cas différents.

Parce que C niveau inférieur (plus proche de la façon dont la machine fonctionne réellement), il obtient compilé en code machine de plus près à ce que les processeurs veulent en Python, étant la langue de niveau supérieur, ne sera pas finir par être aussi rapide.

Je pense que les douleurs de transition de Python à C sera plus comme « Pourquoi dois-je faire tout cela? En python je serais fait en une seule ligne! »

Je ne peux offrir que l'apprentissage C vous fera apprécier Python et d'autres langages typés dynamiquement plus. Je dis souvent la même chose à tout le monde qui est compétent avec PHP. La création des deux gratta quelques graves démangeaisons. Et non, son pas comme un « quand j'avais ton âge je marchais 300 miles dans la neige à l'école » genre de chose.

Être en mesure d'attribuer une valeur à une variable et avoir la variable juste « se régler » pour stocker ce que vous nourrir est un incroyable accomplissement à toute personne qui a consacré beaucoup de temps à travailler avec C sur plusieurs architectures.

En outre, l'écriture d'un service multithread d'une sorte de C vous fera vraiment apprécier à quel point Python portable est vraiment.

Il y a d'autres bonnes raisons, le pouvoir, obtenir « plus proche du métal », comprendre la gestion de la mémoire et l'apprentissage des compilateurs et d'optimisation. Cependant, je pense, la première chose qui vous frappera est juste comment les langues de niveau supérieur sont vraiment pépère.

Disclaimer:. J'utilise principalement C

Vous devez commencer quelque part, et Python est un bon choix pour un programmeur de départ: Vous n'avez pas besoin d'utiliser un compilateur (-> facile à utiliser), dispose d'une bibliothèque riche (-> vous pouvez accomplir beaucoup), et est orienté objet (courant principal de ces jours). Ainsi, la frustration évitable est réduite au minimum à cet égard. Mais toujours garder à l'esprit qu'il ya beaucoup d'autres langues là-bas, et que vous devez les apprendre aussi. Si vous voulez devenir programmeur et gagner de l'argent, vous devez (au moins) prendre C ++, Java ou C # après Python.

Bonne question! Rappelez-vous toujours que vos compétences en programmation ne devraient jamais être dépendant de la langue. Bien que, C est un langage idéal pour apprendre en matière de science informatique. Vous avez 4 niveaux en matière de programmation et normalement tous les cours de premier cycle universitaire offrent ces sujets:

  1. Programmation de procédure
  2. Programmation Orientée Objet
  3. Programmation des structures de données
  4. Design Patterns **

Vous devez aller étape par maître step.Do tous ces 4 niveaux. Puis à la fin de la journée, vous devez décider ce que vous voulez vraiment faire et vous aurez assez de connaissances dans quelles fonctionnalités quelle langue vous devez utiliser pour ce problème. C est la langue de nombreux systèmes d'exploitation, y compris Unix, Linux et Windows. puissance des pointeurs de C ne peut pas être compensée par une langue jusqu'à présent. Python est une bonne langue et a ses propres avantages. Un conseil important que je peux donner à ce stade est celui de la « syntaxe ». Au départ, vous devez maîtriser le langage C et d'acquérir un peu de connaissance pratique de Python well.Once vous êtes à l'aise avec C alors il sera très facile pour vous de programmer en C ++, C #, Java et PHP. Mais si vous commencez à partir de Python immédiatement alors vous pourriez ne pas se sentir à l'aise avec languages.Same base c_syntax va pour les débutants qui ont la passion pour la programmation et à partir de Visual Basic. Gardez également un oeil sur les tendances de l'industrie et de l'évolution de la programmation. Mais tenir à ce que les cours de premier cycle enseignez-vous.

Je suis un étudiant de premier cycle de CS ainsi et de travailler en tant que programmeur en même temps donc je sais ce que vous traversez. Espérons que mon conseil vous aidera.

Le principal problème avec l'apprentissage Python premier est que toutes les autres langues que vous essayez d'apprendre après cela souffrira probablement de la comparaison inévitable. Cependant, il y a des moments où vous doit utiliser un autre outil parce que vous avez pas d'autre choix. Des exemples de ces situations pourraient inclure:

  • exécution très rapide (SWIG, Cython, psyco, pypy, Swallow-vide, etc.)
  • les plates-formes sur lesquelles il n'y a pas d'exécution de python (mais ceux-ci sont rares)
  • demande de haute concurrence multi-core (différentes machines virtuelles python peut généralement faire face à cela)

Il est sans doute préférable d'aborder chaque outil d'une position de besoin plutôt que de la prudence; en d'autres termes, apprendre C seulement quand il est nécessaire de le faire en raison des exigences spécifiques de situation.

Python a une immédiateté qui le rend plus facile à apprendre. Python pour la facilité, C (et langues apparentées) pour le pouvoir.

La question est dit: Non, ne pas apprendre le C en premier. En savoir Python.

Finalement, vous devrez apprendre C quand vous avez besoin de pirater les systèmes embarqués, bootsequences, le code du noyau Linux, etc. Vous devrez en apprendre davantage sur les pointeurs et que votre système crasch et brûler si vous ne les avez pas droit le premier temps. Vous devrez retourner la mémoire utilisée par vous-même. Cela est généralement un cauchemar, et ne contribuent pas vraiment à la joie de la programmation que ces choses deviennent juste de la manière et vous permet de passer du temps sans fin dans le débogueur.

Finalement, sur les systèmes embarqués, vous apprendrez un langage d'assemblage, et vous vous rendrez compte que C est juste un wrapper autour de la plupart des possibilités de montage / CPU dans l'architecture de la puce. Pointeurs est un mode d'adressage qui est supporté en profondeur par les transistors.

Toutes les langues modernes vous un meilleur programmeur et plus rapide, et ils ont fait disparaître ces choses. Vous n'apprenez pas vraiment comment utiliser une machine à écrire ces jours-ci, à moins que vous allez à un endroit sans électricité, pensez-vous? C est tout simplement pour des applications très particulières.

Je ne pense pas que vous en quelque sorte devenu fondamentalement viciée par l'apprentissage de Python premier. Il y a beaucoup d'avantages à l'apprentissage des langages de programmation multiples et Python lui-même est un moyen intéressant d'explorer cela. Par exemple, si vous avez des problèmes de performance avec Python, vous pouvez explorer écrire certaines parties de votre code en C (ou pyrex / cython ou Fortran etc ...), puis il l'emballage et le rendant utilisable dans votre code Python.

Personnellement, j'aime écrire beaucoup de code à la main quand j'apprends des choses. Je pense qu'il est une bonne pratique et les algorithmes d'écriture (sur papier) en Python est beaucoup de fois plus commode que de les écrire en C ou C ++ (pas toujours). Ceci est à peu près pour les raisons Peter disait, il y a moins d'efforts dépensés sur les détails et donc vous pouvez alors passer que sur d'autres choses conceptuelles.

Je suis encore très bien un amateur, mais une chose que je viens à bout est qu'un langage de programmation est un outil, mais il est souvent un outil unique. Il y a des compétences de programmation qui sont censées être prises d'une langue à l'autre et ceux-ci sont grands. Mais être capable de « grok » une langue est également très important, dans un sens pratique. Pour cette raison, je pense que quelle que soit la langue que vous décidez d'apprendre d'abord n'a pas d'importance tant parce qu'il est important de développer les compétences de passer et d'apprendre à vous exprimer efficacement dans une autre langue de toute façon.

Dans le monde en ce moment il y a un certain degré de python « fanboysm ». programmeurs de plus en plus (certains d'entre eux très respectable) croient que python est la réponse à tous leurs griefs. Après avoir vu comment « cool » est python, ils commencent à évangéliser la langue, à un degré psychotique, niant la vérité évidente:. Python n'est pas pour tout / tous

Si vous suivez le chemin de python, vous allez probablement développer un réflexe supplémentaire: «regardons dans les bibliothèques pour voir si elle est pas déjà fait », et après un certain temps, le moment venu, et vous devrez apprendre C, vous dites désespérément: « ?! Je ne peux pas croire que je dois écrire mon propre dict en utilisant des pointeurs vides * pour la tenue de mes données Qu'est-ce avec ce langage C de toute façon »

Après avoir été enseigné C / C ++ comme mon premier langage de programmation en 1996 par Borlands TURBOC ++ 1.0 (écran bleu et texte jaune) Je peux sérieusement recommander apprendre quelque chose (dans ce cas, Python) autre que C. Cela dit C / C ++ aidera vous si jamais vous voulez en savoir plus sur l'interaction matérielle (développement intégré, l'écriture du pilote, etc.)

Selon le Hanselminutes le compilateur VB.NET Podcast est écrit en C il a encore son utilisation.

La plupart des concepts de programmation sont indépendants de la langue; vous êtes beaucoup mieux servis en commençant avec une langue facile à apprendre et à appliquer, vous pouvez donc se concentrer sur les fondamentaux. Cette langue ne serait pas C.

C fait un horribles langue d'enseignement; il n'a jamais été destiné à être utilisé en tant que tel. Il a été conçu pour les programmeurs expérimentés qui voulaient plus de flexibilité et de contrôle que d'autres langues de l'époque (début des années 70) fourni. Vous passez plus de temps à apprendre les bizarreries de C que vous faites sur la programmation réelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top