le codage est-il important? [fermé]

9

Le codage est-il important pour être bon en informatique? Faut-il implémenter l'algorithme pour bien le connaître?

Je me souviens de l'idiome d'un professeur cs que " je ne code jamais"

hilal
la source
32
Vous demandez à un groupe de programmeurs si le codage est important ... vous pourriez ne pas obtenir exactement une réponse impartiale.
Rachel
25
Avec tout le respect que je dois à l'idiome de votre professeur, s'il n'écrit pas de code, il n'est pas qualifié pour enseigner aux autres comment écrire du code. Si son enseignement est purement théorique, il aurait tout de même intérêt à avoir des compétences en codage.
Robert Harvey
19
Prendriez-vous des cours de natation de quelqu'un qui ne sait pas nager?
Steven A. Lowe du
5
@Steven A. Lowe: je pense que le professeur non-nageur enseigne la physiologie aquatique, pas la natation. Pourtant, s'il ne nage pas, je doute qu'il sache ce que ressent la narcose à l'azote.
Javier
4
@Javier: il est plus probable qu'il enseigne les démolitions sous-marines, mais n'est même pas certifié SCUBA. Le terme technique pour des gens comme ça (autre que "professeur") est "poseur" ;-)
Steven A. Lowe

Réponses:

27

Vous ne saurez pas vraiment l'algorithme bien jusqu'à ce que vous coder.

Steven A. Lowe
la source
3
ce n'est pas nécessairement vrai, on peut comprendre un algorithme et l'appliquer à une situation ou à un problème sans vraiment le coder.
aggietech
10
@aggietech: Je pense que le mot clé ici est "bien".
Robert Harvey
2
@aggietech, Robert a raison. Je peux perroqueter des algorithmes, mais quand j'essaie vraiment de les faire fonctionner, je découvre à quel point je dois en apprendre davantage.
3
si vous parlez de boucles for et de types de bulles, ce n'est pas grave, mais il y a une énorme différence entre lire un livre sur l'algorithme génétique et résoudre réellement les problèmes du monde réel avec lui
Steven A. Lowe
2
@Steven, oui, la complexité y est pour beaucoup.
19

Le codage n'est pas important pour votre professeur, mais vous devez garder à l'esprit qu'il n'est pas payé pour FAIRE des choses. Il est payé pour DIRE des choses (et ÉCRIRE des choses.)

Je suis un ancien professeur de mathématiques, donc je comprends bien cette dynamique.

Si vous voulez suivre son chemin et être un informaticien théorique, alors oui, le codage est de moindre importance. Mais si vous le faites, n'oubliez pas de rester humble, sachant que votre salaire est payé par les ressources gagnées par ceux qui ont choisi de FAIRE des choses.

Eric Wilson
la source
3
La voix de l'expérience. Il s'agit du meilleur résumé de chaire que je pense avoir vu.
TehShrike
1
Oui, et j'ajouterais que vous devez pratiquer le "faire" si vous allez enseigner aux autres à "bien" faire.
Beth Whitezel
@BitOff: Je suis d'accord, mais le "si" est aussi un "seulement si". Un professeur qui ne code jamais n'a pas de développement de logiciels d'enseignement professionnel, mais il peut être parfaitement adapté à l'enseignement, par exemple, de la théorie de la complexité. Dans ce cas, ce qu'il enseigne aux étudiants, c'est comment prouver des théorèmes, donc la seule exigence est qu'il doit avoir la pratique de prouver des théorèmes (pas de codage).
ShreevatsaR
@ShreevatsaR Oui, je suis d'accord. Et je ne suis en fait pas si strict sur le fait qu'ils codent beaucoup dans la pratique. Les bons codeurs font rarement de bons enseignants. Si l'enseignant connaît ses points de semaine, il peut compenser. Nous avons un programme local qui fait venir des gens de l'industrie dans la salle de classe. L'enseignant est un expert de l'enseignement, sait coder et sait tirer les informations de la personne de l'industrie au profit des étudiants.
Beth Whitezel
16

L'informatique ne concerne pas plus les ordinateurs que l'astronomie ne concerne les télescopes

- Edsger Dijkstra

J'ai tendance à être d'accord.

ElGringoGrande
la source
2
D'accord, mais comment cela se rapporte-t-il à la question?
Robert Harvey
2
"Le codage est-il important pour être bon en informatique?" Si un ordinateur n'est pas lié, en quoi le codage physique de l'ordinateur pourrait-il être important?
ElGringoGrande
1
@Robert Harvey: L'informatique ne concerne pas explicitement les ordinateurs, et beaucoup d'astronomes passent peu de temps à regarder à travers une lentille en verre. Certains analysent simplement les résultats. La moitié des découvertes importantes en programmation informatique étaient connues avant même que l'ordinateur ne soit né.
Orbling
2
@Robert Harvey: L'informatique n'est tout simplement pas une question de programmation, c'est la science du calcul. En dehors du codage binaire pur, vous utilisez un langage, qui est une abstraction, pour mettre en œuvre les théories et les découvertes de l'informatique. Il existe de nombreuses idées en informatique (par exemple l'informatique quantique) que la programmation ne peut pas pleinement réaliser. Tout ce que je dis, c'est que toutes les idées de l'informatique peuvent être exprimées de manière complète et élégante sans utiliser de langage de programmation. Nommez celui qui ne peut pas.
ElGringoGrande
3
@Orbling: très vrai. Par exemple, rappelons que Turing a inventé la notion de machine universelle de Turing avant même la création du premier ordinateur électronique. Le fait qu'il n'ait pas écrit des tonnes de code fait-il de lui un informaticien incompétent?
mipadi
11

Si vous parlez d'être un pur universitaire en informatique spécialisé dans les concepts informatiques fondamentaux et abstraits, alors pas nécessairement.

Pour plier une analogie: cela revient un peu à demander si tous les spécialistes des fusées de la NASA devraient voler dans l'espace pour être un "bon scientifique des fusées". Bien sûr que non. Être astronaute fait partie de l'industrie des vols spatiaux, et une partie très pratique, mais cela ne signifie pas que les scientifiques au sol ne sont pas tout aussi importants à leur manière.

Cela dit, c'est probablement une bonne idée D'APPLIQUER l'algorithme qu'il a créé, sinon de l'écrire dans un vrai langage de programmation. En ce sens, vous pouvez considérer la conception d'algorithmes comme une branche des mathématiques.

Tables Bobby
la source
1
Je pense qu'il est juste de dire que tous les spécialistes des fusées de la NASA ont une connaissance approfondie de la science des fusées et une expérience pratique approfondie du génie mécanique et électrique. Oh, et ils savent aussi généralement écrire du code.
Robert Harvey
3
Je pense qu'ils ont calculé des trajectoires plusieurs fois, pas seulement théorisé sur la façon dont.
3
+1, j'ajouterais un autre exemple - vous n'avez pas besoin d'avoir une expérience en vinification pour être un grand somellier (ou peu importe le nom des dégustateurs).
Jas
2
@Jas: Terrible analogie. Les informaticiens ne sont pas les destinataires du produit final. Ce sont les vignerons.
doppelgreener
1
@Axidos Non, non, ce sont les vignerons .
Mark C
9

Le codage n'est pas super important pour être un vrai informaticien. Et la réflexion dans le code peut contraindre la réflexion alors qu'ils cherchent à développer des concepts abstraits utiles. La plupart des excellents codeurs n'ont pas les connaissances intellectuelles pour analyser des algorithmes complexes ou développer des concepts tels que les langages de programmation, les algorithmes avancés de recherche et de tri, la théorie des automates finis, la théorie de l'informatique distribuée, les R-Trees, les protocoles de tolérance aux pannes, les protocoles de communication fiables, le numérique algorithmes de traitement du signal, théorie cryptographique, analyse et optimisation des performances, mise en cache efficace, réduction de la carte, protocoles de sécurité fiables, etc. D'excellents codeurs et ingénieurs informatiques peuvent généralement utiliser ces théories dans les systèmes qu'ils essaient de construire et le font assez efficacement, mais c'est vraiment le domaine de l'ingénieur des systèmes informatiques ou du programmeur informatique.

Le codage est extrêmement important pour être un programmeur informatique. Comprendre comment encoder les concepts abstraits utiles produits par les informaticiens en code de travail est également utile.

Un gros problème en informatique est qu'ils doivent souvent trouver des solutions aux problèmes mathématiques qui n'ont que peu d'utilité pour résoudre les problèmes de programmation d'aujourd'hui. Même s'ils codaient une solution, personne ne pourrait vraiment l'utiliser. Pensez à la théorie du traitement du signal numérique. Il a été inventé par des gens comme Fourier, Hilbert et Shannon, mais l'application aux problèmes de DSP informatisé n'était pas largement possible il y a environ 20 ans.

Le gros problème de l'enseignement de l'informatique est que la plupart des gens formés par des informaticiens ne deviendront pas des informaticiens. Mais trop d'informaticiens ne comprennent pas cela. Le codage n'est peut-être pas important pour eux, mais si vous êtes dans leur classe, cela va certainement être important pour vous.

Un autre gros problème de l'enseignement de l'informatique est que de nombreux vrais informaticiens n'ont pas l'expérience industrielle nécessaire pour enseigner le développement de logiciels. Ils essaient essentiellement d'enseigner quelque chose qu'ils ne savent vraiment pas. Cela leur fait perdre leur crédibilité. Les choses importantes dans un environnement industriel ne sont tout simplement pas souvent enregistrées auprès de certains de ces informaticiens.

Le codage long et court est important pour la plupart des gens qui deviennent des "informaticiens" parce que la plupart de ces personnes deviendront des programmeurs informatiques et des ingénieurs de systèmes informatiques.

Jay Godse
la source
Excellente réponse, directement au cœur du problème. Le problème est que vous devez apprendre les deux: la science informatique et l'ingénierie logicielle pertinentes pour l'industrie. La plupart des universités enseignent mieux les unes que les autres, généralement les premières - il n'est pas trop facile d'y parvenir car une université est intrinsèquement un institut de recherche, qui promeut les premières et n'a pas grand-chose à voir avec les secondes. C'est un problème dans la plupart des domaines pratiques.
Orbling
3

Dépend du sous-champ dans lequel se trouve le professeur.

Toute personne compétente en analyse numérique est probablement un génie de Fortran. Tout professeur d'IA codera en Lisp ou Prolog ou quelque chose comme ça.

Dans certains des domaines les plus mathématiques, il n'y a vraiment pas besoin de coder. Je serais toujours un peu méfiant, moi-même.

David Thornley
la source
2

Cela ressemble plus à un type de maths discret ... juste dans les mathématiques et la théorie derrière l'informatique. Prenez ce que ces types de professeurs ont à dire avec un grain de sel.

Steven Striga
la source
5
Je suis un passionné de mathématiques et un passionné d'algorithmes. J'aime toujours coder. Cependant, les algorithmes sont derrière le codage. 1 stylo et 1 papier suffisent pour les algorithmes et aussi la théorie du calcul je pense. De nos jours, je ne fais que penser et écrire des algorithmes mais pas de codage
hilal
5
Prenez ce que n'importe quel professeur dit avec un grain de sel. S'il est un maths discret, prenez-le au sérieux quand il parle de mathématiques discrètes, pas quand il parle de programmation ou de génie logiciel.
David Thornley
1
Les maths discrets sont parmi les plus importants dans le domaine, la théorie est implémentée par des codeurs, elle n'a pas besoin d'être implémentée pour être prouvée. Une pincée de sel en effet.
Orbling
@Orbling Et prenez ce que disent ceux qui programment (un large groupe) avec une dose similaire de jugement suspendu et de bon sens.
Mark C
@ Mark C: Eh bien oui, j'exhorte tout le monde à prendre tout ce qui est dit par quiconque avec ces doses.
Orbling
2

Je dois dire "la logique est importante"

John Hartsock
la source
2
D'accord, mais comment cela se rapporte-t-il à la question?
Robert Harvey
2

Vous ne pouvez comprendre que la théorie, mais j'ai toujours trouvé que je comprenais mieux les algorithmes et 1000 fois après les avoir codés (tri par bulle vs Quicksort par exemple, il est bon de connaître le Big-O mais de le voir en pratique avec de grandes données -sets vous donne une certaine appréciation du monde réel pour mesurer la complexité de calcul).

Une chose intéressante que j'ai trouvée est que plus vous étudiez les aspects théoriques de l'informatique, plus le codage devient facile. À un moment donné, vous cessez de penser aux choses dans une langue particulière, mais les voyez plutôt comme les concepts plus larges de la science informatique.

Kurtis
la source
2

C'est comme demander si tous les professeurs d'anglais devraient être capables d'écrire des films, des séries télévisées, des romans, des pièces de théâtre et des poèmes dans mon esprit. De même, imaginez un professeur de mathématiques qui n'utilise jamais de chiffres pour une idée tout aussi bizarre. C'est-à-dire qu'il y a des éléments de base qui donnent au codage une certaine importance pour pouvoir enseigner l'informatique de base. Ainsi, le professeur doit connaître la syntaxe de base du langage et savoir comment écrire des programmes aussi sophistiqués que les cours qu'il enseigne. Si le professeur enseigne la conception de compilateurs et n'a jamais écrit de compilateur auparavant, ce serait un problème majeur. Imaginez un chef cuisiner un gâteau qui n'a jamais cuisiné ou mangé un gâteau auparavant. Aye carumba.

Bien que je puisse voir certains avantages à implémenter un algorithme pour le connaître, je doute que ce soit une exigence. Après tout, on peut se demander jusqu'où peut-on aller dans le lapin de l'implémentation pour comprendre comment un algorithme est implémenté? Par exemple, quelqu'un doit-il prendre un algorithme et l'implémenter sous divers paradigmes comme la programmation procédurale, orientée objet et fonctionnelle pour vraiment le connaître? Doivent-ils savoir comment les compilateurs traduisent tout le code et déplacent les bits au niveau électron par électron pour être plutôt pédant à ce sujet.


"Je ne code jamais", a une implication de contenir le passé aussi bien que le présent d'une certaine manière. Il peut également y avoir une hypothèse implicite de "codage" comme une chose humble qui est en dessous du professeur pour une autre façon de voir la déclaration qui peut porter un ton plutôt négatif qui peut ne pas bien passer dans certains cercles.

JB King
la source
3
Les professeurs d'anglais devraient savoir comment écrire des scripts de film s'ils enseignent aux autres comment écrire des scripts de film. Mais tous les professeurs d'anglais devraient certainement être capables de rédiger une très bonne thèse, sinon un livre réel.
Robert Harvey
2
@Robert Harvey: Le professeur du PO n'a pas dit qu'il ne pouvait pas coder, mais juste qu'il ne le faisait pas. Il pourrait être un informaticien théorique qui passe la plupart de son temps à faire des recherches. Comme l'a souligné JB King, tant qu'il n'enseigne pas, par exemple, la conception de compilateurs ou l'ingénierie logicielle, il pourrait très bien être expérimenté et compétent dans son domaine.
mipadi
@Robert Harvey: Je pense que @mipadi a raison, le professeur vient de dire "je ne code jamais" , pas qu'il soit incapable.
Orbling
@JB King, @Orbling: je parierais que la citation est une traduction, alors ne la sur-analysez pas littéralement.
Javier
@Javier: Peut-être bien, auquel cas ce serait encore moins clair.
Orbling
2

Votre professeur a peut-être raison un peu, car pour être professeur, vous n'avez pas besoin de coder, mais vous en savez beaucoup sur la théorie. Mais cela ne fonctionnera pas en dehors des périmètres universitaires.

Manoj R
la source
1

En dépit d'être un développeur de logiciels professionnel, j'ai obtenu un diplôme en génie mécanique.

Vous pouvez être un bon concepteur mécanique avec très peu d'expérience dans la construction et l'usinage de pièces, laissant ce travail aux machinistes. Mais savoir comment construire et usiner des pièces fera de vous un ingénieur bien meilleur, car vous pouvez prédire les difficultés liées à la fabrication et à l'assemblage de tout ce que vous concevez.

Il en va de même pour les logiciels. Un "codeur" est un machiniste ou un technicien, tandis qu'un ingénieur logiciel est, bien, l'ingénieur. Pour de nombreux endroits, une personne fait les deux emplois. Ce n'est pas impossible, et pour certaines questions très abstraites, un poste "d'ingénierie uniquement" pourrait fonctionner.

Mais pour la grande majorité, il n'y a absolument aucun avantage à refuser de coder.

comment s'appelle-t-il
la source
2
Mais, comme vous l'avez dit, vous êtes ingénieur en mécanique et vous parlez de génie logiciel . Les ingénieurs construisent des trucs. Mais le professeur en question enseigne informatique scientifique .
mipadi
1

À moins que vous ne réfléchissiez et que vous ne mettiez un terme au problème de l'arrêt, le codage est toujours utile dans tous les aspects de l'informatique.

La seule classe CS que j'ai suivie sans aucune programmation était la théorie. J'imagine qu'il y a beaucoup de physiciens là-bas qui disent: "Je n'expérimente jamais" mais ce sont probablement aussi ceux qui disent: "Je ne découvre jamais rien". Et je serais surpris s'ils s'en soucient.

Peter Turner
la source
1
Dans mon diplôme d'informatique (avec une université dans le top 10 international, donc pas quelque chose de boiteux), je dirais qu'au moins un tiers de mes cours ne comportaient aucune programmation. L'informatique est bien plus que du code.
Orbling
Ok, eh bien, apparemment, je suis allé dans une des dix meilleures universités, nous avons peut-être même fréquenté la même université et pris des cours différents en fonction de nos propres goûts ou dégoûts ou obtenu des professeurs d'un acabit ou d'un autre au hasard.
Peter Turner
0

En tant qu'étudiant en informatique, je pense qu'au début, il vaut mieux comprendre les concepts qui impliquent le développement de logiciels. Une fois que vous avez appris l'idée derrière le logiciel et comment il interagit avec un ordinateur, il est temps de commencer à coder et à traiter des problèmes d'implémentation spécifiques.

C'est exactement comme les «exceptions logicielles», au début, vous ne les traitez que parce que vous avez fait quelque chose qui n'était pas autorisé à faire. Ensuite, lorsque vous les apprenez, commencez à faire de même avec votre code afin de le rendre plus détaillé.

Eh bien, je pense que les gens qui ne se soucient pas de concepts tels que les programmeurs qui utilisent les exceptions comme flux de travail normal dans leurs applications. Ils savent COMMENT mais ne comprennent pas vraiment POURQUOI.

guiman
la source
-6

J'ai un autre idiome pour votre professeur:

Ceux qui peuvent, font, ceux qui ne peuvent pas, enseignent.

imo, parler n'est pas cher. N'importe qui peut sans cesse bavarder sur la «théorie» et l'appeler «informatique». Mais jusqu'à sa mise en pratique, la théorie n'est pas très utile car il n'y a aucun moyen de la valider. Je prendrais l'opinion d'un prof sur quelque chose de beaucoup plus au sérieux si je savais qu'il avait en fait résolu un problème particulier dans le code que s'il régurgitait simplement une `` théorie '' qui peut ou non avoir des preuves à l'appui pour étayer son point de vue.

GrandmasterB
la source
6
Einstein, Aristote, Webster, Ayn Rand, Thoreau, Confucius et Booker T. Washington étaient enseignants. Quelle déclaration sans instruction.
JeffO
4
-1 Pour un commentaire extrêmement insultant aux enseignants. Souvent cité, je sais, mais toujours ridicule. La remarque originale de George Bernard Shaw était "Celui qui peut, fait. Celui qui ne peut pas, enseigne." de Man and Superman, 1903 - il a également dit: "Pour moi, le seul espoir du salut humain réside dans l'enseignement." et a été co-fondateur de la London School of Economics (LSE), alors vous jugez son point de vue.
Orbling
2
Einstein n'a jamais mené une expérience physique de sa vie - il a décrit quelques expériences de pensée, qui ont été menées par d'autres et (à une exception près) se sont déroulées exactement comme il l'avait prédit. Diriez-vous qu'Einstein n'a eu "aucun accomplissement substantiel en dehors de la salle de classe"? Pourquoi vous assumez que juste parce que le professeur n'a rien mis en œuvre directement utilisable par les utilisateurs finaux, il n'a pas, par exemple, des recherches sur un nouvel algorithme qui est utilisé par les programmeurs dans le domaine? En fait, vous semblez même supposer que le travail du professeur est d'enseigner aux étudiants comment coder !
ShreevatsaR
3
Mec, beaucoup de mes professeurs d'informatique (au MIT) étaient géniaux et ont énormément contribué à la société, et ils font "des choses dans leur domaine" - beaucoup! Mais leur domaine a très peu à voir avec le codage, et ils codent tout au plus très rarement, voire pas du tout. (Sérieusement, vous attendez-vous à ce que quelqu'un travaillant sur le calcul quantique écrive du code pour des ordinateurs quantiques qui n'existent même pas?) Vous semblez avoir une vision très étroite de l'informatique. (Rappelez - vous ce son ordinateur la science , pas d' ingénierie .)
ShreevatsaR
2
@GrandmasterB: Si un professeur de science-fiction se concentre sur la théorie du calcul, il est fort probable qu'il ait rarement à écrire du code. Cela ne signifie pas qu'il ne fait rien dans son domaine - il publie probablement des articles sur la théorie informatique! Vous confondez la programmation avec l' informatique .
mipadi