Les compilateurs, les langages et les frameworks plus intelligents font-ils des programmeurs plus bêtes? [fermé]

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

  •  06-07-2019
  •  | 
  •  

Question

Les compilateurs, les langages et les frameworks de plus en plus avancés que nous avons qui automatisent les tâches ou nous cachent certaines subtilités nous rendent-ils finalement plus stupides programmeurs?

Jim C donne l'analogie suivante avec une calculatrice:

  

Quiconque extrait une racine carrée récemment,   en utilisant du papier et un crayon? Nous utilisons un   calculatrice ou simple appel d'une fonction   dans notre langage de programmation préféré.   Combien d’entre nous savent ce que le   calculatrice fait ou même la fonction?

Alors pourquoi ne disons-nous pas simplement à nos enfants d’oublier d’apprendre les mathématiques, c’est pour cela que nous avons des calculatrices? Cela ne rend-il pas nos enfants stupides?

Était-ce utile?

La solution

Ils ne rendent pas les bons programmeurs plus bêtes, ils les rendent plus productifs; mais ils font en sorte que les gens plus bêtes puissent programmer et pensent qu'ils sont de grands programmeurs.

Clarification: je n’ai pas de définition précise de la stupidité. Par bête, je veux dire une chose en général, à savoir des personnes qui ne devraient pas vraiment être des programmeurs ou qui devraient essayer d’apprendre des choses importantes. J'ai vu beaucoup de gens qui ne peuvent pas vraiment coder et simplement copier des choses ici et là. L'évaluation de la qualité du logiciel n'est pas une chose facile. Ils construisent finalement un logiciel de merde qui fonctionne (en raison de la présence de bons outils) pour ne pas perdre leur emploi et ils pensent être de bons programmeurs et ne devraient donc jamais rien apprendre. Croyez-moi, il existe une chose que j'ai constatée chez tous les bons développeurs: "Ils n'arrêtent jamais d'apprendre et ils ne vont pas apprendre uniquement le code dont ils ont besoin pour mener à bien leur tâche." Les personnes dont j'ai parlé n'essayent jamais d'apprendre rien de plus que ce dont elles ont besoin et d'excellents outils réduisent ce "besoin".

Cela ne signifie pas que les IDE sont mauvais. Je les aime et pense qu'ils devraient être développés autant que possible.

Autres conseils

Je pense qu'ils autorisent les programmeurs plus stupides, ils ne font pas de programmeurs plus stupides.

Les agriculteurs sont-ils plus bêtes parce qu'ils utilisent des machines automatisées pour semer, récolter et entretenir les cultures?

Une bonne automatisation des tâches rend simplement les programmeurs plus efficaces et non plus idiots.

  

Alors pourquoi ne disons-nous pas simplement à nos enfants d’oublier d’apprendre les mathématiques, c’est pour cela que nous avons des calculatrices? Cela ne rend-il pas nos enfants stupides?

Une calculatrice est un outil qui vous permet d’effectuer certaines tâches. Bien sûr, vous pouvez faire des mathématiques complexes et une intégration multivariable, mais sans l’apprentissage des mathématiques, comment sauriez-vous que vous DEVEZ effectuer cette tâche à un moment donné?

Même chose avec la programmation et les kits de développement logiciel (SDK), vous pouvez utiliser beaucoup de code prédéfini, mais quand vient le temps d’écrire quelque chose pour résoudre un problème, tous les outils et l’automatisation du monde ont gagné » t ne vous aide pas là-bas (l’IA n’est pas encore aussi avancée;).

En moyenne , oui. :)

Ils ne font pas de nous programmeurs plus bêtes. Ce qu’ils font, c’est laisser davantage de programmeurs stupides (ce qui, je suppose, signifie que, en moyenne, nous sommes idiots). Disposer de meilleurs outils signifie qu’une personne peu expérimentée et ayant une compréhension louche des concepts de la CS peut toujours produire du code qui fonctionne finalement et fait quelque chose d'utile. Ce n'est pas possible lorsque vous écrivez en assembleur, mais c'est le cas lorsque vous écrivez, par exemple, en VB. (Bien sûr, il y a plus de chance que de mauvaises catastrophes ressemblent à celles de WTF quand une personne moins expérimentée écrit de grosses applications qui finissent par s'effondrer sous le poids de leur architecture médiocre.)

Certes, "stupide". est un mot inflammatoire à utiliser ici. Le fait que quelqu'un en sache moins ne les rend pas stupides, cela signifie simplement qu'ils ont moins d'expérience. Mais le point est compris.

Je pense que les machines plus rapides aggravent les programmeurs. De nos jours, la plupart des programmeurs consacrent très peu de temps à l'écriture d'un code optimal. Les compilateurs ne peuvent pas optimiser un code incorrect en un code correct.

Les machines rapides signifient que les mauvais programmeurs peuvent s’en tirer avec du mauvais code car personne ne le connaît. Auparavant, le code devait être mis au point et perfectionné de manière à fonctionner assez rapidement pour fonctionner de manière acceptable.

Tony

Non,

Les compilateurs intelligents permettent aux programmeurs intelligents de se concentrer sur des tâches vraiment importantes, telles que la conception de logiciels performants.

s/make/allow/

Être un peu moins désinvolte: ce sont des outils. Les outils ne font rien et ne font en sorte que les artisans ne soient ni meilleurs ni pires. Les outils puissants ne le font pas non plus - ils agissent simplement comme un levier, amplifiant la compétence (ou le manque de compétence) d'un artisan particulier.

Certains outils de programmation ont eu pour effet de réduire les obstacles à l’entrée, sinon à la profession du génie logiciel, du moins à la mise en marche d’une application. Réduire le temps de réflexion nécessaire à la création d'une application fonctionnelle (ou "fonctionnelle") permet de réduire les coûts: des experts compétents sont libérés du travail en cours et peuvent faire de grandes choses, mais tâtonner les novices obtiendra parfois un code défectueux dans leur production. n’aurais jamais pu travailler sans le " intelligent " outils. Ce dernier effet a probablement eu un impact plus important que le premier en façonnant les réputations de BASIC, VB, PHP et la vague récente de cadres de développement rapide de MVC pour le Web - et même sur la notion de tels outils en général.

Par plus intelligent , vous voulez dire automatisé . Faire un travail répétitif ne rend personne plus intelligent, donc la réponse est non .

Laissez-moi développer en utilisant l'exemple de la calculatrice. La technique de calcul d'une racine carrée avec un stylo et du papier est simplement un processus qui peut être appris. Cela ne vous rend pas plus intelligent de connaître ce processus, il vous permet simplement de calculer les racines carrées en l’absence de calculatrice.

Maintenant, si vous avez découvert un algorithme permettant de calculer les racines carrées, maintenant, cela vous rend plus intelligent.

Même chose avec nos outils de programmation. Un langage qui gère la mémoire pour vous ne vous rend pas stupide, et le fait de pouvoir la gérer vous-même vous rend plus intelligent.

C’est tout, il est plus facile pour les programmeurs moins expérimentés d’entrer sur le marché. Cela ne rend pas un bon programmeur plus bête. Ils seraient stupides s’ils ignoraient les outils susceptibles d’augmenter leur efficacité.

Les ordinateurs sont des dispositifs de renforcement. Tellement bête devenir bête et intelligent devenir plus intelligent.

Seulement si vous leur permettez.

Si vous avez appris quelque chose de dur et de rusé (comme mon ordinateur portable Tandy 102), vous pensez toujours dans ce mode même avec des outils plus intelligents.

Certes, il est facile de compter sur les outils pour faire votre travail, et je vous en suis très reconnaissant.

Par exemple, vous n'apprenez pas aux gens à travailler le bois avec des scies à table et des perceuses à colonne - vous commencez avec des scies à main et des tarières ou de petites perceuses à main. Ainsi, lorsque vous passez aux outils électriques, vous ne faites pas quelque chose de stupide (tm).

Compter sur l'outil, c'est bien - mais savoir comment le faire sans l'outil est également important.

Non, mais cela crée de meilleurs programmes et codes.

Je dirais que les compétences sont différentes dans les langages de niveau supérieur, vous devez penser aux abstractions beaucoup plus, vous devez vous préoccuper de beaucoup plus d'API et les utilisateurs s'attendent à un niveau de qualité supérieur de leurs logiciels. En raison de ce qui précède, un programmeur est confronté à différents défis, et les outils répondent à ces défis.

Ils ne font pas nécessairement des programmeurs plus bêtes, mais ils peuvent rendre les programmeurs paresseux. Je me suis souvent retrouvé à faire ceci, parfois en fouillant dans du code et en m'appuyant sur le compilateur pour m'aider à trouver toutes mes erreurs au lieu de le faire correctement dès le départ.

Au fait, ce n’est pas la façon recommandée de faire les choses. Cela prend normalement beaucoup plus de temps.

Ok, je me suis construit moi-même les deux premiers ordinateurs. C'était intelligent alors, je ne suis pas sûr que ce serait une bonne utilisation de mon temps maintenant. J'ai programmé un mélange d'assembleur et de BASIC au début des années 80, encore une fois intelligent alors, pas si intelligent maintenant.

Ce que je veux dire ici, c'est que le contexte a changé et qu'en informatique, nous avons dû échanger des connaissances approfondies pour des connaissances plus étendues, avec les «conséquences néfastes» que cela implique. Afin de prendre en charge la complexité et l'ampleur des applications couvertes par «l'informatique d'aujourd'hui», nous sommes également obligés de travailler à des niveaux d'abstraction beaucoup plus élevés. D'un côté, nous voyons des spécialistes des applications de domaine utiliser des outils hautement abstraits pour fournir de très bonnes solutions, et de l'autre, nous voyons des experts en technologie informatique / en programmation produire un code superbe capable de faire progresser le secteur informatique dans son ensemble. Dire que l'un ou l'autre côté soit muet est incendiaire et constitue probablement le seul élément muet du débat.

Dans ce contexte, nous nous efforçons simplement de permettre à un public plus large d’utiliser les outils efficaces que sont les ordinateurs modernes. C’est une bonne chose, et les principaux programmeurs ne doivent pas se sentir menacés, c’est bien leur bébé.

En moyenne, oui, ils rendent les programmeurs plus stupides. Mais c’est uniquement parce qu’ils rendent la programmation plus accessible à des personnes qui ne sont pas aussi intelligentes que nous, ce qui réduit le "malin" moyen.

: -)

Un programmeur intelligent qui décrypte la commodité des environnements de développement modernes n’est probablement pas si intelligent que ça.

Dumber? Pas nécessairement. Comme cela a déjà été dit, l'utilisation d'outils plus intelligents permet au développeur de se concentrer sur des tâches plus importantes, telles que le bon fonctionnement de l'application. Une anecdote pertinente tirée de ma propre carrière:

Je ne suis pas un mathématicien qualifié. Je suis sorti du pré-calcul (d'accord, d'accord, c'est parce que je n'ai jamais fait mes devoirs) et je suis même un peu rouillé sur certaines formules de base de la physique (calcul du frottement, par exemple). C’est parce que je ne pratique plus du tout, c’est simplement parce que je ne l’utilise jamais.

Prenons, par exemple, le dérivé. Si vous me demandiez de trouver le dérivé d'une fonction, j'aurais recours à ma TI-89 car je ne savais pas trop comment le faire. Cependant - et je maintiens que c'est plus important - je sais comment l'utiliser. Je sais où c'est utile, pourquoi il devrait être utilisé, etc. Le produit scalaire est un autre exemple. Je sais comment l'utiliser pour calculer le spéculaire d'une surface dans un espace 3D, mais je ne sais pas le calculer à la main car je n'en ai jamais besoin.

Je ne me dirais pas stupide pour ça. Hors de pratique peut-être, mais tout aussi capable.

Non, c’est quelque chose de similaire aux stéroïdes (et autres drogues améliorant la performance). Ils font un grand athlète encore meilleur, mais ils ne peuvent pas obliger quelqu'un comme moi à courir 100 mètres sous 10, même si j’ai mangé toute une pharmacie. Alors, bon Dieu, le langage ou le framework peuvent faire de vous un meilleur programmeur, mais si vous comptez sur lui uniquement pour faire le travail, vous avez des problèmes.

Je pense que non, mais il y a beaucoup de gens (très sages) qui pensent différemment

Je recommande vraiment cette conférence, c’est un avis très intéressant et un très bon essai

Je ne pense pas. Des outils plus sophistiqués libèrent simplement notre esprit et se concentrent sur des problèmes plus intéressants.

Pour ceux d'entre nous qui ont appris à faire ces tâches ou à en comprendre les subtilités dans le passé, je pense que cela nous rend simplement plus efficaces. Nous sommes plus libres de nous préoccuper d'autres choses / plus importantes. Nous pouvons avoir tendance à oublier "à quel point c'était difficile à l'époque" ou se plaindre de la chance que les nouveaux programmeurs ont aujourd'hui.

Pour ceux d'entre nous qui débutons et qui n'ont pas appris de tels détails, je pense que cela fait simplement de nous une race différente. Pas bête, juste que nous examinons différents problèmes sous un angle différent.

Cela abaisse toutefois le seuil d’entrée et rend ainsi la programmation plus accessible aux masses. Que ce soit une bonne ou une mauvaise chose est discutable.

Oui, mais ce n'est pas grave. Quelqu'un a-t-il récemment extrait une racine carrée en utilisant du papier et un crayon? Nous utilisons une calculatrice ou appelons simplement une fonction dans notre langage de programmation préféré. Combien d'entre nous savent ce que fait la calculatrice ou même la fonction?

Vous devriez savoir comment les choses fonctionnent. Le meilleur programmeur, ou toute autre chose que vous voulez être, plus vous devriez en savoir. Mais il n’ya que beaucoup d’heures dans la journée.

De meilleurs outils nous rendent meilleurs. Le compromis est que nous perdons peu de contrôle sur le processus.

D'une certaine manière

Par exemple, je ne sais pas comment écrire les surcharges d’opérateurs car je dispose d’outils qui me permettent de les écrire. Je n'ai même pas à me souvenir du fonctionnement de P / invoke, car un de mes outils créerait automatiquement un projet dll C ++ et un [DllImport] dans mon projet C #. Je n'ai pas à écrire un programme de mise à jour automatique pour mon projet, car ClickOnce est à peu près tout. (Et je ne sais pas comment ça marche "sous le capot".)

Alors oui, je suis moins intelligent parce que je n'ai aucune idée de beaucoup de choses de bas niveau que les programmeurs C ++ connaissent. Mais je pense toujours que je suis du côté des vainqueurs, car je peux en faire plus. Je peux consacrer plus de temps à la présentation, au contrôle de la qualité et aux fonctionnalités que les clients souhaitent réellement. En outre, approfondir le framework .NET requiert un certain apprentissage, il est donc un peu arbitraire.

Je ne dirais pas qu'ils font forcément les programmeurs bête, mais je dirais ceci. De nos jours, les personnes débutant dans le domaine du développement ne comprennent pas tout ce qui se passe en coulisse pour nous. Il y a tellement de bibliothèques intégrées dans les plates-formes de nos jours que les débutants d'aujourd'hui n'ont aucune idée de la façon dont cela a dû être fait manuellement à un moment ou à un autre.

Je dirai cependant que je ne pourrai jamais revenir à l'écriture d'une seule ligne de code sans Intellisense:)

Je pense qu’il est nécessaire d’avoir des outils plus intelligents pour que nous puissions avoir des couches d’abstraction de la complexité. Mais je pense que nous devons pouvoir changer d’accès à ces couches d’abstractions. Je pense que les programmeurs seront plus productifs mais perdront facilement la notion de nombreux concepts de base. C'est un compromis ... Les bons programmeurs seront ceux qui continueront à comprendre les bases de la programmation. Les autres seront des lecteurs "copier-coller" et "Lego".

Au contraire, avec des compilateurs plus intelligents, vous vous disputez moins avec l'ordinateur et vous réfléchissez davantage à la façon dont vous essayez de faire quelque chose.

Si vous rencontrez des difficultés avec l'assembleur, vous ne vous soucierez presque jamais des méthodes anonymes.

Je dirais non.

Systèmes de programmation plus intelligents (je pense à des niveaux d'abstraction plus élevés et non à des outils comme des outils qui corrigeraient automatiquement votre code) IMNSHO est en réalité plus difficile à utiliser. L'analogie que j'ai trouvée est qu'ils agissent comme un long levier; vous poussez vraiment sur le côté court, le déplacez un tout petit peu et d’énormes changements se produisent.

Il est plus difficile de déterminer ce qui doit être fait, mais il est également beaucoup plus difficile de tout gâcher quand vous le faites enfin.

Les langages, compilateurs et frameworks plus intelligents rendent la programmation possible. Je veux dire, pourriez-vous imaginer l'état de la programmation si nous étions encore limités à utiliser le langage d'assemblage? Zut, grattez ça. Pouvez-vous imaginer l'état de la programmation si nous étions limités à C ou C ++?

Les améliorations apportées aux compilateurs, aux langages et aux frameworks renforcent l'efficacité des programmeurs, en supposant qu'ils possèdent de solides connaissances académiques ou une bonne compréhension sémantique.

Je sais que c'est un vieux fil, mais j'aimerais quand même jeter mon opinion ici ...

Ils nous rendent plus bêtes, la plupart d’entre vous qui réagissez savent déjà comment programmer de manière décente. Et pourquoi? Parce que tu viens d'une époque où les frameworks étaient à peine utilisés.

Dans le système éducatif, de plus en plus de cadres sont utilisés dans les classes, ... et dans les classes où aucun cadre n’est utilisé, ce n’est pas encourageant de commencer à programmer. Apprenez TOUT ce code, alors que vous savez qu’il existe un outil qui fait tout pour vous. Vous savez que sur le terrain, vous devez utiliser des frameworks pour aller vite. Alors, pourquoi passer tout ce temps à apprendre le code?

SO: À court terme, pour tous ceux qui connaissent déjà les langues, non ... cela ne vous rend pas plus bête

Sur le long terme .... vous verrez les programmeurs de bas niveau devenir meilleurs et les bons programmeurs se dégrader dans lvl.

Marquez mes mots!

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