Je me suis familiarisé avec LISP à des fins d'auto-amélioration. L'une des choses que j'ai remarquées est que LISP est beaucoup plus dans le paradigme des mathématiques que disons C. La syntaxe et la structure de conception semblent faire écho directement au modèle mathématique réel d'un algorithme. Cela n'a aucun sens pour moi pourquoi même de bons programmes CS basés sur les mathématiques étudient le C au lieu du LISP. Je pense que LISP emploie plus directement des concepts mathématiques supérieurs à C. Je ne dis pas que vous ne pouvez pas modéliser des structures mathématiques en C. Je remarque simplement que LISP semble être câblé pour les mathématiciens.
J'ai lu beaucoup de discours de Joel Spolsky sur les écoles JAVA et ce qui ne l'est pas - et je suis d'accord avec son évaluation -, mais mon école n'a pas enseigné JAVA pour cette raison. Ils étaient rigoureux dans l'enseignement des concepts fondamentaux comme les pointeurs, la conception d'algorithmes, la récursivité et même les instructions d'assemblage. Cependant, ils ont tout fait en C et c ++. Est-ce que quelqu'un connaît les raisons de cela et / ou son histoire?
la source
Réponses:
D'ACCORD. Donc, la réponse ennuyeuse est qu'en fin de compte, la plupart des écoles enseignent avec quoi les professeurs sont à l'aise, et la plupart des professeurs n'ont pas grandi en piratant Lisp; ils ont passé leurs premières années sur le terrain avec des langues basées sur l'algol. Pour cette raison, des années plus tard, quand ils élaborent un programme, vous vous retrouvez avec des écoles qui enseignent le CS avec une fondation en Pascal, puis C, puis C ++, puis Java.
Ensuite, vous avez des écoles de niveau inférieur et quelques années plus jeunes. Et ils regardent la barre qui a été établie par les écoles ouvrant la voie, et ils voient que les élèves quittent ces écoles en connaissant C, et ils voient que leurs propres élèves attendent la même chose - alors ils commencent à enseigner le C, puis le C ++, puis Java.
Enfin, vous avez certaines des institutions techniques ou `` bas de gamme '' qui enseignent simplement quel ensemble de technologies correspondra aux mots clés que les étudiants veulent dans leur curriculum vitae - vous obtenez donc à peu près simplement Java.
Cela étant dit, certaines écoles ne enseignent Lisp, bien qu'il puisse être plus d'un élective plutôt qu'une langue fondamentale. Et même les écoles qui n'enseignent pas le lisp en tant que langue autonome, l'utilisent largement dans les cours d'IA, de sorte que les cours d'IA pour débutants se concentrent sur le début de la programmation Lisp.
la source
Cela dépend vraiment de l'université. Scheme (un dialecte de lisp) a été la langue du cours d'introduction à l'informatique au MIT pendant des siècles, bien qu'il ait été remplacé récemment par python. J'ai obtenu mon BS en CS dans une école d'ingénieur, où j'ai été exposé au C, Scheme, Prolog et C ++ pendant ma première année. Je pense que c'était un bon mélange.
Je crois fermement que la langue avec laquelle vous commencez est beaucoup moins importante que d'être exposée à plusieurs paradigmes dès le début, avant que votre cerveau ne se fige dans une façon de regarder le monde.
la source
Fondamentalement, la théorie informatique est mathématique. Le génie logiciel, cependant, ne l'est pas. La modélisation directe de concepts mathématiques n'est pas un avantage inhérent - je dirais que cela peut souvent être un inconvénient.
Les bonnes théories et les bons programmes ne sont pas nécessairement liés.
la source