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"
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"
Réponses:
Vous ne saurez pas vraiment l'algorithme bien jusqu'à ce que vous coder.
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.
L'informatique ne concerne pas plus les ordinateurs que l'astronomie ne concerne les télescopes
- Edsger Dijkstra
J'ai tendance à être d'accord.
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.
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.
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.
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.
Je dois dire "la logique est importante"
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.
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.
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.
À 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.
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.
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.