Peut-être que c'est juste moi, mais en tant qu'étudiant CS actuel, j'ai déjà rencontré de nombreuses questions sur ce site et ailleurs concernant non seulement "Quelle langue dois-je utiliser pour x?" mais aussi "Quelqu'un utilise-t-il encore la langue Y?" Ma première classe CS a été enseignée dans Scheme, qui, si je ne me trompe pas, n'est pas largement utilisé (au moins en comparaison avec des langages comme Java, PHP, Python, etc.). Beaucoup de mes camarades de classe ont rechigné à l'idée d'avoir à apprendre une langue qu'ils n'auraient plus jamais à utiliser, mais je ne comprends pas très bien d'où vient cette peur d'apprendre des langues moins populaires. Non, je ne peux pas utiliser Scheme dans aucun travail que je reçois, mais je ne regrette certainement pas d'avoir appris à l'utiliser (quoique de manière très débutante, pas très approfondie au cours de ce semestre). Je prends un cours sur les moteurs de recherche ce semestre, ce qui se fait en Perl et encore je vois des camarades de classe se plaindre du choix de la langue. Je peux comprendre avoir une langue préférée et ne pas aimer les autres, mais pourquoi certains s'énervent-ils en l'apprenant en premier lieu? Pouvez-vous vraiment apprendre la "mauvaise" langue? Apprendre quelque chose comme Scheme ou Haskell n'est-il pas un bon exercice mental, sinon rien, et utile au moins à une exposition à différentes façons de résoudre les problèmes?
28
Réponses:
Le but d'un diplôme CS n'est pas de vous enseigner le C # et Java, vous pouvez les apprendre par vous-même. Son pour vous enseigner la programmation et le calcul. La langue n'est qu'un détail. Au cours d'une carrière en programmation, vous utiliserez de nombreuses langues. Aujourd'hui, ce peut être Java ou C #, mais dans 10 ou 15 ans, ce pourrait être Erlang ou quelque chose qui n'a même pas encore été inventé. Apprendre différents styles de programmation et différentes façons d'attaquer un problème est beaucoup plus important que d'apprendre n'importe quelle langue.
la source
Parce que votre première langue façonnera votre façon de penser, jusqu'à ce que vous appreniez le contraire.
Si vous êtes analphabète en calcul (premier programmeur) et que la première langue que vous apprenez est trop "basique", vous ne connaissez peut-être pas des concepts d'ordre supérieur comme l'orientation d'objet, la répartition multiple, l'héritage, les fonctions de première classe, la méta-programmation, etc.
La première langue que vous apprenez est généralement liée à votre première incursion dans la pensée informatique. Si quelqu'un vous dit, Jimmy, que le monde devant vous est composé de symboles A, B et C, toute votre réflexion sera en termes de A, B et C.Jusqu'à un jour, un nerd fantaisiste se moquera de vous pour ne pas connaître X , Y et Z concepts. Il n'y a aucun moyen que vous auriez su cela en ne connaissant que ABC.
Les personnes les plus préoccupées par la langue maternelle de quelqu'un sont probablement des programmeurs éclairés qui ont combattu dans l'obscurité. Oh, maintenant je sais ce qu'est une fonction de première classe. Mec, j'aurais aimé connaître l'héritage et l'injection de dépendance il y a deux ans!
Votre première langue n'est pas aussi importante que votre attitude vis-à-vis des langues suivantes. Si vous pouvez voir loin devant vous pour savoir qu'il existe un monde au-delà de BASIC / C / Perl / PHP / etc, alors vous êtes loin devant le jeu. C'est pourquoi de nombreuses personnes sont fanatiques des langages fonctionnels, car de nombreux langages développés activement convergent vers eux.
la source
Quand j'étais au collège, je connaissais beaucoup de gens qui ont décidé de se spécialiser en économie non pas parce que c'était quelque chose qui les intéressait ou les passionnait particulièrement, mais parce qu'ils pensaient que cela leur procurerait un bon emploi.
Je me suis spécialisé en études est-asiatiques parce que les cours que j'ai suivis comme effet secondaire de mon intérêt initial pour la littérature m'ont accroché. Je suis allé en Allemagne parce que je voulais faire un programme d'échange, où j'ai passé la plupart de mon temps dans des programmes de japonologie et de sinologie. J'ai étudié ce qui m'intéressait le plus. J'ai décidé de ne pas utiliser l'université pour étudier des choses liées à l'informatique, car j'avais déjà piraté pas mal de choses pendant mon enfance, mais j'ai passé du temps à programmer et à comprendre Internet, et finalement, peut-être de façon improbable , J'ai obtenu un bon travail qui a réussi à combiner tous ces intérêts.
La différence est entre le Careerist et quelqu'un qui apprend pour le plaisir d'apprendre. La carrière s'inquiète d'avoir étudié la mauvaise chose et de le regretter car ce ne sera pas la bonne chose pour me décrocher un emploi. La personne qui apprend pour le plaisir d'apprendre se rend compte qu'elle a 4 ans pour passer du temps à explorer toutes sortes de domaines avec des pressions relativement gérables; le carriériste pense que le travail de l'école est de leur apprendre quelque chose. L'apprenant comprend les choses lorsqu'il atteint un territoire inconnu et a de meilleures chances de trouver le bon emploi pour lui. Le Careerist finit par devenir un comptable de deuxième rang dans une entreprise de troisième niveau, paie les factures et en veut à son patron.
Oui, ce sont des archétypes, et chacun doit équilibrer le pragmatisme avec ses passions, mais c'est la différence essentielle. Certes, quelqu'un avec l'esthétique du programmeur peut également poser la question, mais plus dans le contexte de "laquelle sera l'utilisation la moins gaspilleuse de mon temps". Mais je suppose que c'est l'impulsion des carriéristes qui pose cette question, car le carriériste a bien plus peur de faire une erreur que l'apprenant, et l'apprenant fait généralement un meilleur programmeur parce que l'apprenant n'a pas peur des erreurs. L'apprenant, comme le programmeur, embrasse l'échec dans la recherche de compétences.
la source
Oui, l'apprentissage de langages fonctionnels comme Scheme et Haskell est une bonne introduction à la programmation fonctionnelle. En ce qui concerne vos camarades de classe se plaignant de Perl, bien que Perl ne soit pas aussi populaire qu'autrefois, c'est certainement encore un langage largement utilisé dans les affaires.
Je peux comprendre vos camarades de classe qui souhaitent apprendre des langages pratiques utilisés dans le monde réel, mais je pense qu'ils ratent le point qu'une fois que vous êtes un programmeur expérimenté et que vous avez été exposé à plusieurs paradigmes de programmation, l'apprentissage de nouvelles langues est principalement une question de choix la nouvelle syntaxe. Ainsi, tant que vous êtes familiarisé avec les concepts, vous pouvez «vous spécialiser» dans la langue que votre employeur éventuel privilégie sans trop de difficulté.
la source
Peut-être parce que les gens ont été influencés par des déclarations telles que la pièce de pêche à la traîne classique d'Edsger Dijkstra, "Il est pratiquement impossible d'enseigner une bonne programmation à des étudiants qui ont déjà été exposés à BASIC: en tant que programmeurs potentiels, ils sont mutilés mentalement au-delà de tout espoir de régénération." ( lien )
Cela fait craindre de subir des lésions cérébrales permanentes si vous apprenez la «mauvaise» langue. Votre exemple Perl n'est pas surprenant, car Perl est l'un de ces langages qui invoque souvent des critiques comme celle-ci de la part de ses détracteurs.
la source
Votre première langue doit se concentrer sur les concepts, pas sur la syntaxe ou les idiomes. En utilisant cela comme ligne directrice:
la source
Demandez à vos camarades de classe comment ils savent qu'une langue est «mauvaise» s'ils ne l'ont pas utilisée. Vous ne pouvez déterminer ce que vous aimez qu'en utilisant une grande variété de langues.
Sans les connaître, je ne peux pas dire avec certitude pourquoi ils se sentiraient ainsi. Ils sont peut-être paresseux. Peut-être qu'ils ont déjà utilisé la langue et ne l'aimaient pas. Peut-être ont-ils peur d'essayer une autre langue. Qui sait. Ce que je sais, c'est qu'en tant qu'étudiant CS, chercheur, et ayant travaillé dans l'industrie, la connaissance d'une variété de langues est un atout énorme et vous ne savez jamais ce que vous allez utiliser ou non. Exemple: lorsque j'ai appris C pour la première fois, mon professeur nous a présenté les scripts de shell et les utilitaires de ligne de commande comme
grep
etawk
. Mes amis n'ont pas pris la peine de les apprendre à un niveau de compétence. Je les utilise maintenant tous les jours au travail.Perl est très puissant et si vous savez l'utiliser, il peut vous faciliter la vie. Il est également similaire à Python et Python est largement utilisé par l'un des meilleurs recruteurs d'étudiants CS: Google. Vos camarades de classe devraient manger ça. FWIW, je connais perl et python à un niveau intermédiaire (pas un débutant mais pas un expert).
Jeune et vain? J'étais comme ça aussi. Mais mon "ennui" était plus dans le domaine des mathématiques. Donc, à partir de cette expérience, je parierais qu'ils en ont assez parce qu'ils n'aiment pas apprendre de nouvelles choses ou que de nouvelles langues sont difficiles à apprendre pour eux. (Mais alors, tout ce qui mérite d'être connu ne tombera pas sur vos genoux, je dis)
À la première phrase: Non, mais vous pouvez certainement apprendre des langues que vous préféreriez ne pas avoir + toux + Lisp + toux + =)
Pour le reste: oui! Vous devez apprendre autant de langues que possible pour découvrir ce que vous aimez et élargir vos horizons. Il n'est pas nécessaire de les maîtriser tous, mais avoir une connaissance pratique est toujours utile. Vous ne savez jamais quand une langue que vous pensiez être une perte de temps à apprendre est utile.
la source
Parce que l'embauche de programmeurs est un processus arbitraire et capricieux, le simple fait est que si vous choisissez la mauvaise technologie, vous pourriez vous retrouver dans la voie du dodo
À la première page, à tout moment, vous verrez une ferveur religieuse proche de croyances telles que:
La seule constante à travers tout cela est que 99% des entreprises veulent que vous ayez X ans d'expérience avec la technologie Y ... Et comme une personne ne dispose que de tant de cycles disponibles, ce qu'elle y consacre est très important.
la source
Je pense que la crainte de choisir la «mauvaise» langue à apprendre est principalement due au manque d'informations et au manque de conseils , tels que:
la source
Nous sommes exposés à plus d'opinions.
Comparé à la façon dont les choses ont pu être faites dans le passé, il y a plus de doutes quant à la façon dont nous passons notre temps parce que nous sommes exposés à plus d'opinions - tout le monde a son avis sur ce que devrait être le premier langage de programmation et puisqu'il est un sujet si capricieux, n'importe qui peut justifier n'importe quoi .
En raison de notre mode de vie rapide, tout le monde a une peur innée de perdre son temps. La crainte accentuée d'apprendre la mauvaise langue est simplement le résultat de personnes facilement exposées à une multitude d'opinions.
la source
C'est l'aversion générale d'apprendre quelque chose qui a une utilité douteuse. Je peux voir que la piqûre ici est encore pire, car c'est la classe que les gens veulent suivre et leur apprentissage de quelque chose qu'ils pensent est inutile. Je sais que si j'allais au collage, je voudrais apprendre quelque chose que je peux utiliser dans le monde réel.
La seule partie où je pourrais être en désaccord avec ces autres personnes, c'est quand une langue est largement utilisée et qu'ils ne veulent tout simplement pas sortir de leur bulle pour l'apprendre. Ce n'est qu'alors que la plainte n'a pas de sens.
la source
Pourquoi est-ce «peur». Je dirais que c'est de l'animosité d'avoir été nourri de force avec quelque chose que vous ne voulez pas ou que vous ne jugez pas important. Aucun langage n'est faux mais nous avons peu de temps pour nous concentrer sur les choses. Je devais faire mes cours CS avec Java et n'en étais pas content. Pas parce que je craignais que Java ne soit pas le mauvais langage, mais ce n'était pas là que ma carrière était orientée.
Maintenant, Java est utile non? LOL Tout le monde apprend Java. C'est ce que vous ne voulez pas concourir. Votre CV sera dans une pile de 1000 avec le titre Diplômé CS récent qui connaît Java. Votre schéma d'apprentissage est probablement mieux adapté à l'employabilité, car c'est le signe secret que vous êtes allé dans une université d'élite et non dans un collège communautaire dinky.
Je dirais également que ce type d'animosité est beaucoup plus large que CS en général, mais indique l'enseignement supérieur en général. Je suis sûr que l'instructeur a choisi Perl parce qu'il connaît Perl et peut le noter facilement et craint d'apprendre de nouvelles langues que les étudiants préféreraient apprendre. Je pense que c'est votre propre éducation et vous devriez être en mesure de définir les technologies que vous jugez nécessaires pour votre propre succès.
(PS MIT a abandonné Schema et est passé à Python)
la source
Le temps est le bien le plus rare de tous, une fois sorti du monde réel - et personne ne veut perdre du temps sur des compétences qui ne lui apporteront aucun avantage réel.
Cela étant dit, je ne pense pas qu'il y ait un `` mauvais '' langage à apprendre - mais j'aurais aimé découvrir Ruby il y a des années au lieu de lutter pour faire des choses avancées en PHP ...
la source