Question

Ai-je tort si je pense que Python est tout ce que je besoin de maîtriser, afin de résoudre la plupart des tâches de programmation commune?

EDIT Je ne suis pas OK avec l'apprentissage de nouvelles langues de programmation si elles ne me enseignent pas de nouveaux concepts de la programmation et la résolution de problèmes; d'où l'idée derrière la maîtrise d'un ensemble moderne, en évolution rapide, avec une riche bibliothèques de classes, largement utilisé et documenté, et bien sûr a un « amical » l'apprentissage des langues de programmation de la courbe.

Je pense que dans l'industrie de la technologie en évolution rapide, la spécialisation est la clé du succès.

Était-ce utile?

La solution

Vous avez raison et tort.

droite: La connaissance d'un seul outil très bien est très commercialisable et à désirer. Et Python est bon pour OO, pour les scripts, pour la programmation fonctionnelle à la rigueur, et il possède d'excellentes bibliothèques mathématiques et scientifiques.

Mauvais: Python ne vous enseigne pas tout un bon développeur doit savoir. Parfois, vous devez activer pour fournir des fonctionnalités côté client. Parfois, vous avez besoin de comprendre ce qui se passe à un niveau plus fondamental, comme le C sous le Python. Et parfois, vous devez apprendre à penser de différentes façons, comme vous le feriez avec Haskell ou Clojure.

Autres conseils

Oui

Vous auriez tort de penser que toute seule langue peut tout faire sans tenir compte d'autres langues.

Je pense que dans l'industrie de la technologie en évolution rapide, la spécialisation est la clé du succès.

Je ne peux pas penser à une meilleure façon de vous tirer dans le pied. L'apprentissage et la maîtrise d'une langue est grande, mais vous mentionnez que vous n'êtes pas à l'aise avec l'apprentissage de nouvelles langues si elles « ne me enseignent pas de nouveaux concepts de la programmation et la résolution de problèmes. »

Les langues ne vous enseigne pas ces concepts, grimoires poussiéreux épais et de nombreuses années de travail en étroite collaboration avec les gens mieux que vous le fait. Ces modèles de base, les concepts et les principes de langues transcendent de conception et peuvent être utilisés dans de nombreux champs d'application différents.

Vous pouvez être en mesure de résoudre de nombreux problèmes avec elle, mais il ne sera pas toujours le meilleur outil pour le travail.

Je ne sais pas nécessairement qu'il n'y a rien de mal à cela, mais je ne conseillerais pas pour l'amour de votre carrière. Il y a quelques problèmes que je peux penser à:

  1. Python est chaud maintenant, mais ce sera à dire 5-10 ans? Je ne sais pas pour vous, mais je ne veux devenir l'équivalent futur d'un programmeur mainframe COBOL.
  2. Python ne sera pas assez rapide pour toutes les tâches. Vous pouvez faire beaucoup avec elle, mais sont tâches là que Python lui-même n'est pas assez rapide pour. Dans ces cas, vous aurez soit besoin de connaître C (s'il y a une pièce spécifique du code qui va courir lentement) ou une langue JVM (si vous avez besoin tout être rapide ou sont concernés par la sécurité).

Je ne suis pas OK avec l'apprentissage de nouvelles langues de programmation si elles ne me enseignent pas de nouveaux concepts de la programmation et la résolution de problèmes

Personnellement, je ne vois pas beaucoup d'avantages à essayer la nourriture grecque jusqu'à ce que je l'ai fait. Une fois que je l'ai fait essayer, j'étais regrettable que je l'ai mis hors si longtemps. Bien sûr, les aliments ne sont pas langages de programmation, mais l'analogie est en fait pas si loin. Bien souvent, la seule façon de voir les avantages de l'apprentissage d'une nouvelle langue est de l'essayer.

Paul Graham a appelé le "paradoxe Blub" :

Les programmeurs deviennent très attachés à leurs langues préférées, et je ne veux pas les sentiments de mal à personne, afin d'expliquer ce point, je vais utiliser une langue hypothétique appelée Blub. Blub tombe au milieu du continuum abstrait. Il n'est pas la langue la plus puissante, mais il est plus puissant que Cobol ou langage machine.

En fait, notre hypothétique programmeur Blub ne pas utiliser l'un d'eux. Bien sûr, il ne serait pas programmer en langage machine. C'est ce que les compilateurs sont pour. Et comme pour Cobol, il ne sait pas comment on peut arriver à rien avec elle. Il n'a même pas x (fonction Blub de votre choix).

Tant que notre hypothétique programmeur Blub est à la recherche sur le continuum de pouvoir, il sait qu'il regarde vers le bas. Langues moins puissantes que Blub sont évidemment moins puissants, parce qu'ils manquent une fonction qu'il est utilisé pour. Mais quand nos regards hypothétiques programmeur Blub dans l'autre sens, le continuum de puissance, il ne réalise pas qu'il cherche en place. Ce qu'il voit ne sont que des langues étranges. Il les considère probablement à peu près équivalent au pouvoir de Blub, mais avec tous ces autres trucs poilu jeté aussi bien. Blub est assez bon pour lui, parce qu'il pense à Blub.

Quand on passe au point de vue d'un programmeur utilisant l'une des langues plus le continuum de puissance, cependant, nous constatons qu'il en regarde Baissez sur Blub. Comment pouvez-vous quoi que ce soit fait dans Blub? Il n'a même pas y.

Par induction, les seuls programmeurs sont en mesure de voir toutes les différences de pouvoir entre les différentes langues sont ceux qui comprennent le plus puissant. (Ceci est probablement ce que Eric Raymond voulait dire Lisp vous un meilleur programmeur.) Vous ne pouvez pas faire confiance aux opinions des autres, à cause du paradoxe Blub: ils sont satisfaits de la langue de leur arrive d'utiliser, car elle dicte la leur façon de penser au sujet des programmes.

Si vous avez l'occasion, je vous recommande de lire l'article en entier.

Et enfin, je peux voir votre point en termes de vouloir se spécialiser. Mais je ne pense pas que ce soit ce que vous essayez de faire. Par définition, en faisant « presque toutes les tâches de programmation » n'est pas ce que je considère la spécialisation. On dirait que vous utilisez Python pour généraliser. Si vous cherchez à se spécialiser, je vous conseille d'aller dans un champ spécifique de programmation comme la machine d'apprentissage ou de l'entreposage ou l'intégration des données. Mais un langage de programmation par lui-même est pas beaucoup d'une spécialisation.

Python (malgré mes doutes à ce sujet) tout simplement can't^H^H^H^H^Hshouldn't être utilisés pour tout, de la même manière mes pinces à joint coulissant ne sont pas utilisés comme un tournevis.

SQL? Procédures stockées? Les scripts de démarrage? HTML (déjà mentionné) et XSLT? C wrappers bibliothèque?

Je ne pense pas que Python va être un très bon moyen pour microcontrôleurs embarqués qui pourrait avoir seulement 32 Ko de flash et 4 Ko de RAM, mais qui ont besoin de traiter 25.000 interruptions par seconde.

(ps je n'ai rien contre Python, en fait, je viens d'acheter PyCharm 1.0 de JetBrains. I ne vois vraiment pas comme usage général comme C, par exemple. Pouvez-vous écrire tout Python en lui-même?)

Je pense que vous avez raison formellement, comme Python, étant un langage de programmation complet-Turing, devrait vous permettre de résoudre presque tous les ordinateurs de travail peuvent résoudre (en particulier avec l'aide de certaines bibliothèques). Et vous pourriez probablement confortablement gagner leur vie en restant entièrement à l'intérieur sphère Python.

Cependant, je pense que vous avez tort sur plusieurs niveaux:

  1. Vous se joint à un outil. Il est comme un mécanicien dire type particulier de la clé est tout ce dont il a besoin. Les langues sont des outils. Un bon programmeur doit utiliser le meilleur outil pour la tâche (dans les limites de son environnement, bien sûr), quel qu'il soit, et reconnaître qu'il n'y a pas l'outil qui peut être le mieux pour toutes les tâches.
  2. Vous limiterez artificiellement vos horizons. Les langues sont des outils, mais ils sont des outils avec des personnages et des idées derrière eux. Si vous utilisez uniquement l'un d'eux pour tout, vous vous niez la possibilité d'un nouveau regard sur les choses, une nouvelle approche pour résoudre les problèmes, de nouvelles façons de penser.
  3. Vous semblez confondre obtenir un bon dans votre profession à obtenir un bon à utiliser un outil spécifique. Bon programmeur peut utiliser tout outil, parce qu'il comprend les principes sous-jacents que la création et l'utilisation de guidage de ces outils et peut déterminer comment et pourquoi déployer chacun d'entre eux. Je pense que ce serait une erreur de se concentrer sur devenir un bon Python programmeur au lieu d'obtenir un bon programmeur (ce qui peut arriver à des programmes d'écriture en Python lorsqu'une occasion se présente lui-même). Ne vous méprenez pas - le premier est OK, mais devrait être ce dernier le but ultime. Et celle-ci est incompatible avec « Python est tout ce que je besoin ».
  4. investissement émotionnel dans l'outil peut conduire à fanboyism et fanboyism conduira à ignorer des solutions plus efficaces et gaspiller vos efforts sur la place Python faire faire des choses, il ne vise pas à faire. Ne vous méprenez pas - il est amusant de pirater les choses à leur faire faire ce qu'ils ne sont pas destinés à (comme la construction d'une voiture d'une vieille baignoire et souffleuse à feuilles ou à écrire un noyau de système d'exploitation en Python), mais si et quand vous devenir une personne de prendre des décisions sur les projets qui nécessitent l'efficacité dans le monde réel, vous devez connaître à la fois la force et les faiblesses de vos outils. Et l'investissement émotionnel vous fait exagérez forces et faiblesses ignores.

Je ne dirais pas que vous avez tort du tout. Python est un multi-domaines, langage informatique de programmation.

Cela dépend vraiment de l'industrie que vous envisagez d'entrer. Je dirais que beaucoup plus d'emplois sont disponibles en Java ou .Net que Python (pas qu'il n'y a rien de mal avec Python). Plus de personnes qui utilisent ces deux langues applications moyens dont ils disposent, de jolies mains beaucoup vers le bas (au risque de froisser personne), la plus large base de connaissances et la plupart des cadres vastes disponibles. Dans le monde app d'affaires, le soutien-cadre est une grande partie de rester compétitif.

Python est un langage de programmation à usage général extrêmement flexible, il a été utilisé pour écrire quoi que ce soit presque imaginable, sauf OS noyau (RAPIDE MISE À JOUR: en fait, il a: http://mail.python.org/pipermail/python-announce-list/2004-July/003220.html ).

Cependant, il est toujours bon d'apprendre de nouvelles langues, en particulier celle qui est très différent des langues que vous connaissez déjà.

Alors que vous avez raison que vous devez maîtriser au moins une langue, apprendre une autre langue est rarement, voire jamais une perte de temps. Même le langage de programmation les plus horribles (je ne vais pas dire le nom parce que cela pourrait se retrouver dans une guerre religieuse sanglante :-)) a des caractéristiques qui me fait penser: "Hé, pourquoi pas Java / C / faire? ».

Par ailleurs, il n'y a pas la langue parfaite à partir d'aujourd'hui. Bien que Python est assez proche de ce ^^.

Au moment où vous avez maîtrisé Python, vous saurez si vous pouvez tout faire en elle.

La réponse viendra à vous naturellement.

Ce serait comme un golfeur en disant qu'il ne jouer avec un fer 5. Vous pouvez le faire (ou si on me dit), mais ce ne est pas toujours le meilleur choix. Il y a beaucoup de choses que Python fait bien, mais parfois il n'est pas le meilleur outil pour le travail!

OMI, oui, vous avez tort de penser que vous avez seulement besoin Python, mais il est en effet une langue merveilleuse:

1) C-C ++ sont les fondements de tout dans le monde du PC. OMI si vous ne connaissez pas C-C ++, vous ne savez pas vraiment comment programmer pour un PC. Considérons C-C ++ comme le calcul et les statistiques à l'université -. Un rite de passage

2) Soyez GENERALIST - obtenir votre doigt en autant de tartes que vous le pouvez, et toujours regarder ce qui est nouveau, sans se faire prendre dans une mode particulière ou idealogy.

Si vous projetez de faire une vie en tant que programmeur, vous devez comprendre que vous allez probablement vivre la vie « sur le bord » la plupart du temps - vous ne savez pas ce qui va détruire votre emploi actuel et vous ne sais pas où votre prochain viendra de ....

HTH

Je veux te voir écrit dans le plus pur Python:

  1. contrôle au sol usine, la sécurité en temps réel, le temps de réaction de 300 ms garanties
  2. alarme à distance firmware, doit tenir dans votre paume.
  3. moteur de base de données destiné à> 1000hits / s
  4. un système d'exploitation, toute plate-forme matérielle réelle (physique). Peut être très simple.
  5. un BIOS pour un PC,
  6. un Kiné (= rapide) Python compilateur / interpréteur
  7. reconnaissance d'objets de flux vidéo en direct pour 25 images par seconde flux vidéo.
  8. Un moteur de jeu moderne, pour Kiné jeux FPS dynamique
  9. un jeu webapp d'arcade dynamique fun
  10. un antivirus.

Terminer la moitié de ces tâches en Python et je l'avoue Python est le roi.

Licencié sous: CC-BY-SA avec attribution
scroll top