J'entends parler de C, C ++, Java tous les jours à chaque fois que des gens commencent à parler d'informatique, mais dans mon premier cours d'informatique, on nous demande d'écrire dans Scheme (DrRacket).
Pourquoi donc?
Quelles différences cela fera-t-il dans ma compréhension future de la programmation?
UPDATE: J'ai terminé mon premier mandat, mais pas complètement terminé avec Scheme. Dans mon deuxième mandat (qui est maintenant), nous sommes entrés dans la programmation en C. Au début, c'était frustrant d'apprendre des indicateurs, mais maintenant je me sens beaucoup mieux.
Il n'y a pas beaucoup plus à dire que cela. J'essaie d'apprendre moi-même Java (ou C ++?) Pour la partie POO qui me manque. Jusqu'à présent, j'aime toujours mieux la programmation fonctionnelle. Lambda est juste fascinant. :)
Réponses:
Cela ressemble à une grande école! Les dialectes Lisp suivent beaucoup plus étroitement le paradigme mathématique des algorithmes. Ils forcent les programmeurs à apprendre la récursion et le style fonctionnel. C'est une excellente expérience. Votre école est dans les rangs avec le MIT, qui utilise toujours Abelson et Sussman pour le CS 6.001 requis.
Vous pourriez trouver cet article encourageant et utile pour comprendre le problème.
la source
Personne ne prévoit que comme un étudiant de première année , vous serez assez compétent dans une langue pour obtenir un vrai travail, alors pourquoi ne pas commencer par celui qui est facile à apprendre? Attendre des novices à apprendre la programmation en utilisant un langage professionnel dans une IDE professionnelle revient à donner un scalpel à un étudiant en première année de médecine et à le faire travailler sur des corps vivants.
Ne t'inquiète pas vous apprendrez éventuellement Java / C / C ++, probablement à partir de la deuxième année. Si vous commencez à apprendre Java 6 maintenant, Java 8 sera déjà disponible. Ou il aura été remplacé par Python. Ou un autre langage qui n'a pas encore été inventé mais qui prend d'assaut l'industrie. Mieux vaut différer l'apprentissage de la matière "populaire" le plus longtemps possible pour qu'elle ne soit pas obsolète lorsque vous vous inscrivez sur le marché du travail.
Scheme / Racket vous aidera à vous concentrer sur les concepts importants: conception d’algorithmes, structures de données et manipulation d’informations. Vous savez, ce qui est commun à toutes les langues.
la source
Félicitations, vous êtes maintenant devenu l'équivalent d'un végétalien dans le monde de l'informatique et, dans deux ans, vous ne pourrez plus vous lancer dans une discussion sans informer les gens du fondement moral plus élevé sur lequel vous vous tenez debout. ;)
Quoi qu'il en soit, vous avez obtenu une très bonne école. Les écoles qui ne sont pas fouettées sont bonnes.
Comme quelqu'un d'autre l'a dit, ils vous enseignent la science dont vous tirez le métier .
Beaucoup de mauvaises fermes de code-singe vous apprennent le métier, et vous pouvez en déduire la science, mais ce n'est pas garanti. (et vous pouvez vous retrouver avec des idées fausses assez étranges à ce sujet)
Quoi qu’il en soit, en tant que membre honoré de la foule fonctionnelle, lorsque vous sortirez de là, vous vous sentirez toujours mal compris et sous-estimé .
Ce qui, admettons-le, n’est pas une nouveauté pour le grand public.
Vous courez maintenant un risque élevé de:
Vous aimerez probablement aussi l’open source, mais vous ne trouverez jamais assez de collaborateurs pour vos projets fonctionnels.
la source
C'est un peu comme si on vous demandait comment la lecture de Shakespeare vous aiderait à rédiger vos travaux. La programmation (dans n'importe quelle langue) n'est qu'un moyen d'exprimer vos idées sous une forme exécutable. L'informatique fournit les blocs de construction conceptuels qui vous donneront quelque chose d'intéressant à dire. La syntaxe des schémas est relativement simple, vous pouvez donc accéder rapidement à des idées intéressantes sans vous heurter à de nombreuses erreurs de compilation, bibliothèques standard, etc.
Portez une attention particulière en classe - vous allez apprendre beaucoup de choses intéressantes ce semestre.
la source
Il semble que vous soyez très novice en programmation sans aucune expérience préalable. Alors voici quelques précisions:
Pourquoi Scheme et pas C / C ++ / Java ...?
Lorsque vous apprenez un langage de programmation (une analogie peut être faite avec l'anglais), vous apprenez la syntaxe à suivre pour que votre code soit correct du point de vue grammatical. Cependant, une langue ne vous apprendra pas la logique qui sous- tend la résolution de problèmes. Afin d'apprendre cette logique, vous apprenez différents paradigmes de programmation .
Chaque langue peut implémenter (plus ou moins précisément) un ou plusieurs paradigmes. Un paradigme est un moyen de structurer votre logique. Le paradigme implémenté par Scheme s'appelle Functional Programming (FP).
La vraie question que vous posez est donc: pourquoi la PF?
Comme vous l'avez mentionné, C, C ++ et Java (qui n'implémentent pas la FP) sont beaucoup plus populaires. En fait, (et pour différentes raisons, tout le monde a son opinion) La PF n’est pas très populaire dans l’industrie.
D'autre part, la PF est très appréciée dans les milieux universitaires. Il est plus proche de l'approche mathématique commune, se concentre davantage sur la prouvabilité et l'optimisation des algorithmes, et la plupart des gens s'accorderont pour dire que cela ferait de vous un meilleur programmeur en général.
C'est semblable aux écoles qui enseignent le latin afin d'étudier la littérature anglaise.
la source
Vous êtes censé apprendre comment la programmation est effectuée et quels sont les concepts de base. Les langages de tous les jours utilisés dans la plupart des entreprises sont peut-être bien adaptés à la production du logiciel nécessaire aujourd'hui, mais ne sont pas nécessairement les mieux adaptés pour vous enseigner les bases de la programmation.
Une fois que vous avez compris les concepts, il est facile de les appliquer à d'autres langues.
la source
Si vous étudiez avec DrRacket, je parie que vous utilisez également le programme Comment concevoir des programmes.
Voici ce que l’un des auteurs (certes biaisés) de HtDP a à dire sur la façon dont l’enseignement a préparé les étudiants de premier cycle de la Northeastern University au programme d’éducation coopérative («coop»): les étudiants alternent des sessions d’études universitaires avec des sessions d’études à temps plein. emploi).
Edit: pour ceux qui sont très intéressés par la raison derrière le curriculum, voici l'explication de l'architecte principal - http://www.youtube.com/watch?v=m3be1PHW5X0
la source
Mon école a également commencé avec Scheme. L'une des raisons évoquées est que cela a permis d'égaliser les chances. La plupart des élèves de 1ère année de Comp Sci pourraient être exposés, ou avoir beaucoup, à des langues plus courantes. Il était moins probable que quiconque ait une connaissance approfondie de Scheme.
la source
En fait, comme Lisp (schéma étant un dialecte) est la Grande Dame des langages fonctionnels (pensez à F #, Groovy, Clojure, Haskell, etc.), cette formation ne vous laissera pas non plus de désavantage commercial, car c’est le plus chaud. sujet sur le bloc de développement en ce moment.
la source
Scheme vous aidera à bien travailler et à penser de la manière appropriée pour utiliser des langages de programmation fonctionnels. Scala, par exemple, est un hybride fonctionnel / OO assez brillant, bien qu'un peu dense. Des langues comme celle-ci marquent l'avenir, espérons-le.
Les langages de type Lisp ont cependant une pureté et une simplicité qui les rendent un peu plus faciles à enseigner. L'avantage intéressant est que vous aurez beaucoup plus de facilité à apprendre quelque chose comme Scala par la suite.
la source
Nous avons terminé le programme au cours de la première et de la première moitié du deuxième semestre. Ce n'est que lorsque nous avons réellement commencé à travailler avec C que j'ai commencé à comprendre le pouvoir de Scheme.
En ce qui concerne votre question, pourquoi Scheme est choisi: la réponse est qu’il s’agit de l’un des langages les plus simples et qu’il vous permet de faire beaucoup (surtout lorsque nous commençons à jouer avec des listes paresseuses plus tard). De plus :
la source