Il n'y a pas de frais de licence pour un IDE Java comme pour l'écosystème Microsoft. Plus de vos énormes frais de scolarité à l'université.
mjhilton
16
Quelle? vous pouvez obtenir gratuitement Microsoft Visual Studio Express.
quant_dev
12
En fait, la plupart du temps, vous pouvez obtenir Visual Studio gratuitement si vous êtes un étudiant et toutes les autres applications Microsoft.
Erin
5
parce que vous voulez gagner de l'argent quand vous êtes diplômé, non? Passer 4 ans à étudier des choses que personne n'utilise dans le realmonde n'est pas un avantage pour les étudiants ou les entreprises qui souhaitent embaucher des étudiants.
5
@JarrodRoberson, seules certaines entreprises utilisent Java, les universités devraient vraiment vous éduquer sur une plus grande variété de langues afin que vous soyez mieux préparé pour le monde réel. Vous ne voulez pas être bloqué en étant juste un programmeur Java alors qu'il y a tant d'autres façons de penser et de développer.
CaffGeek
Réponses:
73
A quelques universités ont quelqu'un qui est assez bien connu que beaucoup (sinon la plupart) tournent autour des décisions que la personne aime, aversions, les opinions, le goût, etc. Juste par exemple, Texas A & M a Bjarne Stroustrup sur le personnel; il n'est probablement surprenant de personne que son programme d'études ait tendance à mettre l'accent sur le C ++.
La plupart des universités sont cependant un peu différentes. Premièrement, les décisions sont souvent prises beaucoup plus au profit de la faculté que des étudiants. Dans de nombreux cas, le critère le plus important est "quelle langue requiert le moins d'effort de notre part?" La plupart d'entre eux sont également prudents dans leur paresse - ils veulent non seulement la langue avec le moins de concepts avancés à apprendre, mais aussi celle qui est (par exemple) la plus lente à innover, à mettre à jour ou à adopter quelque chose de nouveau.
Deuxièmement, la plupart des décisions sont prises par le comité. Cela signifie que la décision finale est rarement (voire jamais) ce que quiconque voulait réellement - c'est juste ce que le moins de membres du comité (en particulier ceux qui ont le plus d'influence) ont trouvé particulièrement répréhensible. C'est comme choisir une saveur de crème glacée. L'un aime vraiment la fraise, mais un autre est allergique aux fraises. Un autre aime vraiment le chocolat, mais quelqu'un d'autre ne peut pas le supporter. Un autre pense que le raisin au rhum est excellent, mais les deux autres craignent que la mention du "rhum" soit interprétée comme encourageant l'abus d'alcool - ils se retrouvent donc avec de la vanille, même si ce n'est vraiment ce que personne voulait.
Enfin, même si cela va généralement directement à l'encontre de la plupart de ce que les deux critères précédents produiraient isolément, ils doivent généralement (ou du moins veulent) être perçus comme répondant aux besoins de l'industrie.
Java est l'intersection de ces trois:
Chaque concept qu'il incarne était bien connu en 1980. Il n'y a pas grand-chose à savoir au-delà de la notion la plus fondamentale de ce qu'est la POO.
C'est le choix insipide, inodore, non toxique, biodégradable et politiquement correct.
Presque le seul autre langage de l'histoire à avoir existé aussi longtemps et (probablement) moins innové est SQL. Même s'ils ne sont pas ce que vous appelleriez des cibles en mouvement rapide, COBOL et Fortran ont toujours tous deux innové plus que Java.
Il est largement utilisé. Quand vous y arrivez, les profs et les PHB ont des critères similaires.
Notez que je ne dis pas vraiment (par exemple) qu'il n'y a rien de plus à savoir sur Java que la notion la plus élémentaire de ce qu'est la POO - seulement que c'est tout ce qu'il faut pour faire ce qui passe pour un travail acceptable d'enseignement.
de nombreux commentaires ont été retirés d'ici, car les opinions sur cette réponse sont partagées.
Afficher le nom
1
FWIW, je préfère la vanille.
Courses de légèreté avec Monica
Je me suis inscrit pour voter pour votre réponse
user2445942
22
J'ai étudié l'informatique au début des années 90 juste avant la sortie de Java. L'approche suivie par nos professeurs était la suivante.
Première année: cours d'introduction à la programmation et aux algorithmes en Pascal. Pourquoi Pascal? Parce que c'est un langage propre conçu pour enseigner les concepts de programmation sans possibilité de piratage. Bien sûr, nous les étudiants savions que le langage le plus populaire à l'époque était le C et qu'il y avait un nouveau langage avec une popularité croissante: le C ++. Nous lisions et discutions donc constamment de ces langues et nous faisions de petits projets en les utilisant nous-mêmes. L'idée était donc: en classe, nous faisons la théorie sérieuse (Pascal) tandis qu'à la maison, nous apprenons à pirater (C). :-)
Au cours de la deuxième année, nous avons suivi un cours sur le système d'exploitation au cours duquel on nous a demandé de faire les exercices de C et d'assemblage. Le professeur ne nous a pas donné un cours complet sur C (juste quelques leçons) parce que (1) nous avions déjà eu un cours de programmation pendant la première année et (2) il a dit que tout informaticien qui connaît les concepts de la programmation devrait être capable de lire un livre et d'apprendre un nouveau langage de programmation. Le cours s'est bien déroulé et nous avons tous trouvé normal que le C et l'assemblage soient des sujets pratiques que vous apprenez par vous-même ou discutez dans le couloir avec d'autres étudiants, mais que cela ne valait pas la peine de suivre un cours.
Au cours de la troisième année, nous avons suivi un cours sur les langages de programmation, dans lequel nous avons étudié les différents paradigmes des langages de programmation (impératif, fonctionnel, logique, orienté objet), nous avons appris les concepts généraux et les techniques de mise en œuvre, et révisé les principaux langages de programmation (Pascal, C, Modula2, Simula, Lisp, C ++, Prolog). Ce que notre professeur nous a dit au début du cours était: vous ne devriez pas évaluer ce cours en pensant au nombre de langages de programmation que vous connaissez à la fin du cours, mais plutôt à tous les concepts généraux que vous avez appris, comment ils sont liés les uns aux autres, à quoi ils servent, comment ils sont utilisés dans quelles langues. Ensuite, apprendre une langue spécifique consiste simplement à lire un livre, à regarder le code existant, à essayer de l'utiliser sur un projet spécifique, etc.
J'ai trouvé cette approche très appropriée et efficace. Je ne pense pas que l'université devrait viser à préparer de bons programmeurs mais plutôt à donner une bonne connaissance qui permette de comprendre la programmation et les langages de programmation. Devenir un bon programmeur ne sera qu'un effet secondaire de cela. J'envisage maintenant de postuler pour un emploi où Ada est requis et je n'ai pas peur de cela, même si je n'ai jamais fait de programmation sérieuse dans Ada auparavant.
Revenons à la question de l'enseignement de Java. Je suppose que Java est souvent utilisé pour l'enseignement car il est suffisamment neutre et permet d'expliquer les principes de programmation en utilisant un langage également proche du monde de l'industrie.
Personnellement, j'utiliserais toujours Pascal ou un langage similaire pour un premier cours, car cela me permettrait de faire la distinction entre les structures de contrôle et les structures de données, qui dans les langages Java / orientés objet sont étroitement intégrées. Donc, à mon avis, Pascal permettrait une introduction plus progressive aux concepts de base de la programmation.
En outre, un informaticien (et un bon programmeur) devrait connaître les mécanismes de base / structures d'exécution comme la pile, le tas, le passage de paramètres, l'allocation de mémoire, les pointeurs ou comment implémenter des types de données abstraits sans utiliser les fonctionnalités intégrées de la langue (listes, ensembles, etc.). Java enlève une grande partie de cela aux programmeurs (c'est bien, bien sûr), mais un débutant devrait en apprendre davantage sur ces choses. Peut-être qu'après un premier cours de programmation en Java, on devrait également suivre un cours plus général sur les concepts des langages de programmation.
Quand j'étais à l'université en 1ère année, nous avons fait Ada pour les cours de programmation (un peu d'assemblage dans le cours de systèmes informatiques). La deuxième année était un style de langue assez similaire. En 3e année, on nous a dit exactement ceci, "tout informaticien connaissant les concepts de la programmation devrait être capable de lire un livre et d'apprendre un nouveau langage de programmation". À la fin de l'année, nous étions autodidactes C, C ++, Java et quel que soit le langage dans lequel vous avez fait votre projet (le mien était Python). C'était la meilleure préparation que j'ai jamais eue pour le monde réel, comment apprendre rapidement et à la volée
Amy
(+1) Les langages de programmation liés à Pascal, sont mieux à utiliser pour l'enseignement de la programmation, car son père "Niklaus Wirth" les conçoit soigneusement, pour l'enseignement. ;-)
umlcat
@umlcat: Merci. Oui, je pense qu'il est bon d'avoir C ou C ++ où vous pouvez enfreindre les règles et pirater. Mais avant d'enfreindre les règles, vous devez savoir quelles règles vous enfreignez. Pour cela, il est très utile d'avoir un langage de programmation propre comme Pascal pour savoir comment programmer dans un "monde idéal". Ensuite, au moins, vous savez ce que vous faites lorsque vous piratez. :-)
Giorgio
@Giorgio: Je pense que les étudiants devraient d'abord apprendre Pascal, puis C / C ++ et plus tard Java. Je ne veux pas dire seulement l'un ou l'autre, mais, tous dans un ordre particulier. Certaines écoles abandonnent l'enseignement l'une au profit de l'autre.PD Je travaille également en C et en Java. J'espère que ça aide ;-)
umlcat
@umlcat: Je suis totalement d'accord. J'ajouterais également un peu de Lisp, Haskell, Prolog: plus on connaît de paradigmes de programmation, mieux c'est.
Giorgio
10
J'étais à l'école lorsque Java est sorti. Et mon université a presque changé du jour au lendemain. Les gens étaient étourdis à Java dans le milieu universitaire. J'étais un Jr quand il est sorti, et au moment où ma dernière année, presque tous les universitaires se déplaçaient rapidement pour changer leur programme d'études. Pas seulement à mon université mais partout. C'était vraiment aussi rapide. Notre deuxième cours d'introduction était Pascal, qui s'est rapidement converti à Java en moins d'un an. Pourquoi ont-ils converti si vite? Deux grandes raisons.
Un universitaire veut enseigner la théorie et les algorithmes. Les langages qui vous facilitent l'apprentissage des algorithmes qui ne nécessitent pas beaucoup d'expérience pour fonctionner sont les meilleurs: Scheme, Python, Java, Smalltalk, etc. Plus le langage vous gêne, plus vous êtes distrait de l'apprentissage des vrais algorithmes. À l'époque, les langages de script étaient des citoyens de seconde classe désapprouvés par les employeurs comme bon marché ou rapides et sales. Les universitaires les considéraient comme davantage des copies, mais ce que veulent les employeurs l'emporte également sur les universitaires.
Cela nous amène à la raison suivante. Les employeurs veulent une certaine expérience linguistique, et à l'époque c'était le C / C ++. Mais, C / C ++ prend beaucoup d'expérience pour apprendre, et a beaucoup de cas de coin et si ets ou mais qui sont distrayants. Nous avons appris des cours en C / C ++ mais pas aux niveaux inférieurs. À l'époque, les employeurs étaient fous des programmes CS parce que les étudiants n'étaient pas des gourous du C / C ++.
Java parcourait l'industrie presque aussi vite que le monde universitaire. Alors, finalement, le milieu universitaire obtenait ce qu'il voulait. Langue de haut niveau plus facile à apprendre et langue souhaitée par les employeurs. C'était trop parfait. J'ai eu un ami de retour dans le monde universitaire peut-être 3 ans après mon départ, et il a dit que vous pouviez trouver un livre Java dans chaque sujet CS. C'est à cette vitesse que Java a pris le contrôle du monde universitaire.
Personnellement, je pense que Java n'a pas réduit la CS. Je pense que cela a été une bonne chose car les étudiants peuvent étudier la CS, participer à l'Open Source et trouver du travail même lorsqu'ils sont à l'école. Je crois toujours que vous devriez étudier beaucoup de langues en tant qu'étudiant CS, et cela ne devrait pas être uniquement Java. Mais, s'ils utilisaient tous du python, Joel détesterait aussi le python.
Si votre école utilisait encore Pascal au milieu des années 90, ils étaient de toute façon en retard pour une refonte. Mes premiers cours de CS étaient à Pascal, mais c'était en 1980! Fait intéressant, cependant, ce n'étaient que les cours d'introduction - les classes de niveau supérieur utilisaient C (pour les internes OS), Modula (pour la conception du compilateur), Prolog et certains cours de troisième cycle utilisaient même Ada. Je ne comprends pas pourquoi les écoles ne font toujours pas cela.
TMN
1
la plupart ou tous utilisaient encore Pascal jusqu'en 1995, quelques-uns étant passés à Modula. Le mien a commencé à introduire le C ++ en 1995 pour les seniors, gardant Pascal pour les juniors. Je pense qu'ils ont maintenant remplacé Pascal par Java (ils ont besoin d'un langage de bas niveau car une grande partie du travail implique une interaction avec le matériel, donc C ++ est probablement toujours là).
jwenting
Nous avons beaucoup utilisé le C / C ++ après le cours d'introduction de Pascal. Prolog, LISP, Scheme, Smalltalk, Assembly étaient tous utilisés dans les classes de niveau intermédiaire. À mesure que l'importance de la consommation de technologies par le gouvernement diminuait dans les années 1990, Ada a été progressivement supprimée et simplement mentionnée à la fin des années 1990. Je pense que les dangers de Java n'ont rien à voir avec Java, mais avec la monoculture et l'apprentissage. Je suis développeur Flex maintenant et Adobe a mis fin à ma capacité de gagner sa vie la semaine dernière. Je ne suis pas inquiet car j'ai une longue histoire de ne pas utiliser une seule langue. J'ai Java, Ruby, Php, Python pour me replier.
chubbsondubs
8
Il y a plusieurs raisons à cela, notamment:
Ubiquité sur le marché du travail - si les universités veulent que leurs étudiants soient embauchés (et recommandent plus d'étudiants à l'université), ils doivent enseigner les langues pertinentes.
Simplifie le curriculum
Plus facile à noter et plus facile à mettre en œuvre vos devoirs.
Déchets récupérés donc pas besoin d'enseigner les pointeurs et la gestion manuelle de la mémoire
Notez qu'il existe un certain nombre d'écoles qui enseignent le C # pour plusieurs des mêmes raisons. Il existe de nombreuses autres raisons, dont certaines plus spécifiques à chaque école. Essentiellement, Java est devenu le "BASIC" orienté objet d'antan.
Il existe de très bons livres Java ainsi que les exemples de POO tels que le premier objet Java utilisant BlueJ. Cependant, en C #, je n'ai pas vu de tels livres d'apprentissage qui vous prennent à zéro et vous apprennent de la bonne manière. Es-tu d'accord avec moi?
Goma
Je vais. L'enseignement est une tâche très difficile, et les enseignants apprennent toujours la meilleure façon d'enseigner. Vous trouverez un certain nombre d'écoles en ligne comme Strayer, gardez en C # et les écoles de brique et de mortier tendent vers Java. Probablement parce que les écoles en ligne s'adressent aux étudiants qui travaillent déjà. Les livres de programmation de base peuvent s'appliquer à n'importe quelle langue, donc il y a du matériel disponible.
Berin Loritsch
"Déchets récupérés donc pas besoin d'enseigner les pointeurs et la gestion manuelle de la mémoire." si vous, en tant qu'ingénieur logiciel, ne connaissez pas les pointeurs et la gestion de la mémoire, ou ne savez pas comment ils fonctionnent, vous manquez des connaissances très importantes.
droite le
Java peut ne pas avoir la *syntaxe, mais il serait très difficile à utiliser sans une compréhension de base des pointeurs.
dan04
@WTP et c'est pourquoi Java est souvent utilisé pour les cours d'introduction (où auparavant Pascal ou Modula étaient utilisés), et plus tard C (++) est introduit.
jwenting
6
J'aime le post de Joel Spolsky intitulé Les périls des écoles Java . Je pense que Berin Loristch a raison de simplifier le cirriculum et de l'appliquer également au monde réel.
J'ai entendu plusieurs fois ce qui suit: "un diplôme en informatique n'est pas un diplôme pour apprendre la programmation, c'est pour apprendre la théorie". Le langage n'a pas nécessairement besoin d'avoir de l'importance (même s'il ne doit pas gêner) tant que la théorie est apprise. Java est un langage relativement facile à maîtriser et qui permet de passer plus de temps à apprendre la théorie derrière tout. C'est l'une des raisons pour lesquelles le MIT utilise Scheme (j'ai donc entendu parler).
@nate c - ya, je n'étais pas sûr. Pourtant, Python est assez facile à apprendre également. Merci pour le lien!
Jetti
Je baiserais complètement avec mes élèves si j'enseignais une classe. J'encourage à écrire votre propre langage de programmation et vous ne pouvez utiliser ce langage de programmation que pendant le cours.
berlinbrown2
1
@Berlin - Je suppose que c'est pourquoi tu
n'es
3
Bon nombre des réponses données ci-dessus sont bonnes, mais elles laissent de côté quelque chose.
Java est un langage multiplateforme. Un étudiant peut utiliser son Mac, un autre son PC et un autre son étudiant Unix. Le même code fera la même chose. Pensez à la facilité avec laquelle l'enseignant et le service informatique de l'école peuvent le prendre en charge.
C'était la vraie importance de Java quand il est sorti. La blague était "Code une fois, déboguer partout", mais cela élimine vraiment le matériel et les systèmes d'exploitation de l'équation.
Cela explique peut-être pourquoi Java est choisi plutôt que C, C ++ ou C #, mais Ruby et Python (entre autres) fonctionnent très bien sur plusieurs plates-formes.
Eric Wilson
Bon point. Je pense que les départements CS privilégient également les langues fortement typées, pour plusieurs raisons. De plus, Java avait une longueur d'avance aux États-Unis. Ruby n'est vraiment arrivé ici qu'en 1999 ou plus tard, et Python était assez limité jusqu'à la sortie de 2.0.
Matthew Flynn
1
J'ai entendu des professeurs dire qu'ils utilisent Java pour enseigner parce que:
utilise le (s) nouveau (s) paradigme (s) (POO, certains génériques)
syntaxiquement très simple, bien que très verbeux
pas de concepts avancés tels que les fonctions d'ordre supérieur, les fermetures, le curry ou les continuations qui peuvent dérouter les gens qui apprennent encore les concepts de base
beaucoup de bibliothèques écrites pour ça
les étudiants ne s'enlisent pas autant dans le débogage des fuites de mémoire car il y a un gc
Personnellement, je suis content d'avoir pris CS à Berkeley quand ils ont utilisé Scheme pour enseigner. Même si je n'ai réalisé à quel point une langue était élégante que quelques années plus tard.
J'ai suivi le seul cours Java offert dans notre école. C'était de la fin des années 90 au début de l'an 2000. Java était en pleine croissance mais n'avait presque pas décollé. Venant de beaucoup de développement en C, j'étais un peu frustré par tout le code passe-partout nécessaire pour que Java soit opérationnel. Je ne pouvais pas me concentrer sur ma tâche. Je ne pouvais pas simplement ouvrir un fichier avec "open". J'ai dû définir la classe puis les importations, etc., etc.
J'étais ingénieur en informatique, j'ai donc d'abord pris la programmation d'assemblage, puis C puis C ++, Scheme et ce cours Java. C'était surtout un programme scolaire orienté C. La classe d'algorithmes a été enseignée en utilisant C.
Quand je suis entré dans l'industrie, Java était clairement le joueur dominant. C'était peut-être le seul acteur lors de la conversion des systèmes COBOL principaux vers les applications commerciales Web Java. Java a fait d'énormes progrès dans le monde des affaires au début des 2000 jours.
En même temps, je ne connaissais pas tous les frameworks Java mais je savais coder et m'adapter à l'environnement Java. Si j'avais suivi des cours de formation sur les bonnes normes de codage Java, j'aurais probablement pu commencer avec un meilleur style Java ou une meilleure connaissance de l'écosystème Java.
Rétrospectivement, je ne pense pas que ce soit important.
Pour répondre à votre question: Pourquoi étudions-nous Java à l'université?
Java doit être enseigné mais pas utilisé dans tous les cours:
Vous devriez apprendre Java à un moment donné au collège si vous apprenez l'informatique. Il est populaire dans le monde des affaires. Vous devriez apprendre Java et peut-être C #. Je ne voudrais pas ABSOLUMENT ne pas enseigner Java comme cours de programmation d'introduction. Et Java ne devrait certainement pas être la langue principale utilisée dans tous les cours.
Sur la critique Java:
Java reçoit beaucoup de critiques et il l'a toujours fait. J'ai lu des magazines Java qui mentionnent Java avec un point d'interrogation "Java est-il prêt pour l'entreprise?". La plate-forme Java est toujours une plate-forme largement utilisée. Mais, pour la plupart des tâches de programmation générales, Java fonctionne bien. Et il n'y a pas de problème majeur avec Java. Cela ne nuira pas à vos compétences. Cela pourrait se produire si vous vous contentez des bibliothèques Java sans savoir ce qui se passe en dessous. Mais Java ne cause aucun type de lésions cérébrales (certains développeurs pensent que cela est vrai).
De plus, pourquoi les développeurs n'attaquent-ils pas C ou C ++? Ou au moins C ++. Les paradigmes de programmation impératifs sont très similaires. Et je n'envisagerais jamais d'écrire une webapp en C ++ mais je pourrais le faire avec Java.
Voici comment je mettrais en place un curriculum:
Cours d'introduction: Scheme, Python, Assembly Language, C (tous les trois)
Cours d'algorithmes: C, Haskell, Python (tous les trois)
Cours sur le système d'exploitation / cours de réseautage: C / C ++
Développement GUI: Java Swing, C ++ sur Win32
Programmation orientée objet: (c'est délicat, je n'aurais pas de cours de POO). C ++, Java, C #
Entreprise? Développement: Java, C #, Python
Conception du langage, compilateurs: Haskell, Scala, C, Assembly, Scheme, Common Lisp, Prolog.
Les langues que j'ai énumérées dans mon programme sont assez courantes. De nombreuses écoles enseignent plusieurs langues sans problème. Dans l'industrie, vous utiliserez de nombreux langages de programmation différents. Vous utiliserez des langues dont vous n'avez même pas entendu parler.
Le sujet de Java dans les écoles n'est pas un problème, sauf s'ils veulent complètement vous protéger de Java ou s'ils veulent enseigner UNIQUEMENT Java. Dans les deux cas, les écoles sont injustifiées.
(-1) "Langage d'assemblage" trop complexe pour "Cours d'introduction". Je ne veux pas dire "ne l'enseigne pas", je veux dire "nous l'enseignerons plus tard"
umlcat
1
Désolé, longue réponse ennuyeuse uniquement:
(1) Vouliez-vous dire:
"Pourquoi étudions-nous Java à l'université, comme premier langage de programmation?"
(2) Ou voulez-vous dire:
"Pourquoi étudions-nous Java à l'université de toute façon, même si nous apprenons d'autres langages de programmation, avant Java?"
On dirait que vous pensez vraiment aux deux questions.
En cas de (1):
Je ne pense pas que Java (ou .NET C # et Visual Basic) devrait être enseigné comme premiers langages de programmation. Pascal structuré et modulaire devrait être le premier, même s'il semble ancien et obsolète.
Beaucoup de gens pensent que nous devrions enseigner aux gens la programmation orientée objet ou la programmation fonctionnelle immédiatement, simplement à cause de son «battage médiatique» ou de sa «tendance».
J'apprends Pascal structuré comme une petite version de la "programmation orientée objet", pas comme quelque chose de similaire. Je vois un programme structuré comme un seul petit objet.
Après cela, je suggère de continuer les langages fonctionnels et Object Pascal.
Et plus tard, C, C ++, C #, VB.Net, Java.
Les principales raisons pour lesquelles je n'aime pas Java ou C #, en tant que premier langage de programmation, c'est qu'ils ont des concepts de "pointeurs", "pointeurs vers des objets" et "objets" eux-mêmes ("références").
Je crois que les étudiants devraient avoir à l'esprit les différences et les similitudes entre ces concepts. La comparaison des objets Strings en Java est un bon exemple de cette odditie:
String A ="Mars";String A ="Venus";// pointer comparison or object comparison ???if(A == B){DoSomething();}
En cas de (2):
Je pense que Java ou C # devraient être enseignés à l'école, car ils ont plusieurs bonnes fonctionnalités mises à jour et en même temps, ils ont une utilisation réelle.
Vous devriez apprendre Java à un moment donné au collège si vous apprenez l'informatique. Il est populaire dans le monde des affaires. Vous devriez apprendre Java et peut-être C #. Je ne voudrais pas ABSOLUMENT ne pas enseigner Java comme cours de programmation d'introduction. Et Java ne devrait certainement pas être la langue principale utilisée dans tous les cours.
Je ne peux pas être plus en désaccord. Java était le langage de mon collège que vous deviez suivre pour entrer dans le programme CS&E de mon école. Java est extrêmement facile à enseigner. Parce que vous pouvez vous limiter à certains concepts que les "non-programmeurs" peuvent apprendre.
Je ne peux pas non plus dire si vous enseigneriez ou non ABSOLUMENT Java à un cours de programmation d'introduction. Vous avez essentiellement dit que vous ne l'enseigneriez PAS ABSOLUMENT ?
La raison simple a déjà été expliquée. Java n'a aucun frais de licence. Vous pouvez l'enseigner à l'aide d'un éditeur de test de base. Son utilisé pour les mauvaises raisons certainement.
Je ne suis pas d'accord avec une réponse précédente, selon laquelle Java n'a pas rendu les élèves plus «stupides», cela montre vraiment quand ils ont des problèmes avec des concepts vraiment simples comme les tableaux et les listes en C ++.
Je voudrais souligner que l'ignorance n'est pas la même chose qu'être «stupide». Les gens qui «passent» Java ne connaissent peut-être pas ces «concepts simples» parce qu'ils n'ont pas été enseignés. Cela ne signifie pas que s'ils prenaient le temps de le comprendre, ils ne l'obtiendraient pas.
Jetti
0
Le passage de C à Java s'est produit au mauvais moment .
Quelque part vers l'an 2000. J'étais dans la dernière classe C de mon université.
C ++ avait trop de fonctionnalités pour ne pas confondre un novice. (Et c'est toujours le cas. Et prévoit d'en ajouter.)
.NET n'était pas assez mature et était encore plus cher qu'aujourd'hui.
L'objectif C était ancien et son utilisation par Apple volait sous le radar (il n'y avait pas d'iPhone autour)
D'autres problèmes .NET à l'époque? Pas d'exécution portable - il n'y avait pas de mono disponible.
ZJR
Pas de neutralité de l' éditeur de texte . (les guerres des éditeurs de texte sont moches, mais réelles) Et un IDE par défaut qui incite les étudiants à faire du passe- partout .
ZJR
BTW, j'aurais préféré que le monde prenne le chemin de l' Objectif C , Apple ne serait pas le seul enfant dans ce stade et même son modèle commercial serait un peu moins fou.
ZJR
0
Je me sens obligé d'ajouter aux réponses ici car je ne vois vraiment aucune de ces réponses couvrant réellement mon point de vue.
Je suis un programmeur amateur. J'étais bien en avance sur la courbe en ce qui concerne les «ordinateurs» et la «programmation». J'ai terminé mes études de premier cycle - Licences - en 2007 et Masters environ deux ans plus tard - 2009. J'ai travaillé avec une pléthore de langages, notamment Assembly, QuickBASIC, C, C ++, Java, PHP, Perl, Python, BASH Scripts, Javascript, COBOL, etc. .
À mon humble avis, le langage utilisé pour enseigner la programmation aux étudiants est un indicateur de l'époque dans laquelle nous vivons actuellement. Par exemple, dans les années 1980, l'assemblage était le langage de bas niveau tandis que le C était considéré comme un langage de haut niveau.
Au cours des années 1990, C ++, Java, Perl et de tels langages ont gagné en importance principalement parce que le niveau était beaucoup plus élevé que C et incorporaient des principes de développement rapide. Ils ont donc cessé d'enseigner l'assemblage aux étudiants CS et ont enseigné le C comme moyen d'exprimer des algorithmes. Lentement, cela a changé au cours de la dernière décennie, où C est considéré comme un langage de bas niveau pour capturer l'essence des algorithmes de manière efficace et sans trop de savoir-faire des «systèmes». Ceci est en fait extrêmement important car l'objectif d'un programme CS devrait être plus «théorique» que pratique et chaque fois que quelqu'un veut écrire un algorithme, s'il / elle s'embourbe avec les allocations de mémoire et l'arithmétique des pointeurs, alors vous n'obtiendrez pas nulle part.
Même aujourd'hui, si vous êtes dans un programme de Master CS, vous devrez remplir certaines exigences `` Systèmes '' (au moins aux États-Unis et cela ne devrait pas être très différent pour les universités américaines), ce qui nécessite que les étudiants soient en mesure de programmer des applications de niveau système et dans certains cas, aussi profond que le piratage au niveau du noyau pour réellement répondre aux exigences. Ainsi, bien que le C ne soit pas la langue de facto enseignée dans les écoles, il est pertinent si vous souhaitez vous spécialiser dans les systèmes ou le calcul haute performance ou de telles niches.
Je voudrais également mentionner un autre point: le C nécessite beaucoup de discipline pour bien faire les choses tandis que les langages tels que Java sont un peu détendus face à de telles contraintes. Cela facilite la conduite des cours sans que les RA / TA ne lancent GDB pour déboguer le programme d'un étudiant :)
Je pense que c'est en grande partie ce qui est utilisé dans l'industrie.
Mon programme CS avait un conseil consultatif industriel, composé de cadres supérieurs d'entreprises locales de technologie et d'aérospatiale, et ils avaient beaucoup à dire sur le programme. Les classes d'introduction CS ont abandonné Pascal en faveur de C l'année où j'ai commencé (1986), en grande partie à la demande de l'IAB. De même, il y a eu un effort pour enseigner l'Ada dans certains des cours de niveau supérieur, car les entreprises aérospatiales locales devaient l'utiliser pour le travail du DoD.
Java est désormais omniprésent, surtout maintenant que les appareils Android décollent. Ça craint d'un point de vue didactique, mais ensuite, C.
Parce qu'ils espèrent que moins d'étudiants échoueront au cours, ce qui est un échec en soi, à mon humble avis. Peut-être l'une des raisons pour lesquelles presque plus personne ne prend les diplômes universitaires au sérieux, du moins ici.
Java est un langage trop simple et n'enseigne pas que le PC a un paradigme de ressources limitées. Alors qu'en même temps, il y a «rien qui ne peut être résolu avec une autre couche d'abstraction».
Oui, c'est bon pour les concepts de POO et les problèmes de jouets, mais cela apprend à aborder les problèmes sous le mauvais angle. Utilisez une construction soignée ici, vissez le reste.
Mais le monde universitaire est connu pour rêver d'IA, de OWL et d'autres technologies de jouets. Alors qu'ils continuent à rechercher de telles choses, parfois, quelqu'un invente quelque chose d'incroyable là aussi, mais si vous voulez être un bon développeur, vous devez l'apprendre de manière indépendante.
real
monde n'est pas un avantage pour les étudiants ou les entreprises qui souhaitent embaucher des étudiants.Réponses:
A quelques universités ont quelqu'un qui est assez bien connu que beaucoup (sinon la plupart) tournent autour des décisions que la personne aime, aversions, les opinions, le goût, etc. Juste par exemple, Texas A & M a Bjarne Stroustrup sur le personnel; il n'est probablement surprenant de personne que son programme d'études ait tendance à mettre l'accent sur le C ++.
La plupart des universités sont cependant un peu différentes. Premièrement, les décisions sont souvent prises beaucoup plus au profit de la faculté que des étudiants. Dans de nombreux cas, le critère le plus important est "quelle langue requiert le moins d'effort de notre part?" La plupart d'entre eux sont également prudents dans leur paresse - ils veulent non seulement la langue avec le moins de concepts avancés à apprendre, mais aussi celle qui est (par exemple) la plus lente à innover, à mettre à jour ou à adopter quelque chose de nouveau.
Deuxièmement, la plupart des décisions sont prises par le comité. Cela signifie que la décision finale est rarement (voire jamais) ce que quiconque voulait réellement - c'est juste ce que le moins de membres du comité (en particulier ceux qui ont le plus d'influence) ont trouvé particulièrement répréhensible. C'est comme choisir une saveur de crème glacée. L'un aime vraiment la fraise, mais un autre est allergique aux fraises. Un autre aime vraiment le chocolat, mais quelqu'un d'autre ne peut pas le supporter. Un autre pense que le raisin au rhum est excellent, mais les deux autres craignent que la mention du "rhum" soit interprétée comme encourageant l'abus d'alcool - ils se retrouvent donc avec de la vanille, même si ce n'est vraiment ce que personne voulait.
Enfin, même si cela va généralement directement à l'encontre de la plupart de ce que les deux critères précédents produiraient isolément, ils doivent généralement (ou du moins veulent) être perçus comme répondant aux besoins de l'industrie.
Java est l'intersection de ces trois:
Notez que je ne dis pas vraiment (par exemple) qu'il n'y a rien de plus à savoir sur Java que la notion la plus élémentaire de ce qu'est la POO - seulement que c'est tout ce qu'il faut pour faire ce qui passe pour un travail acceptable d'enseignement.
la source
J'ai étudié l'informatique au début des années 90 juste avant la sortie de Java. L'approche suivie par nos professeurs était la suivante.
Première année: cours d'introduction à la programmation et aux algorithmes en Pascal. Pourquoi Pascal? Parce que c'est un langage propre conçu pour enseigner les concepts de programmation sans possibilité de piratage. Bien sûr, nous les étudiants savions que le langage le plus populaire à l'époque était le C et qu'il y avait un nouveau langage avec une popularité croissante: le C ++. Nous lisions et discutions donc constamment de ces langues et nous faisions de petits projets en les utilisant nous-mêmes. L'idée était donc: en classe, nous faisons la théorie sérieuse (Pascal) tandis qu'à la maison, nous apprenons à pirater (C). :-)
Au cours de la deuxième année, nous avons suivi un cours sur le système d'exploitation au cours duquel on nous a demandé de faire les exercices de C et d'assemblage. Le professeur ne nous a pas donné un cours complet sur C (juste quelques leçons) parce que (1) nous avions déjà eu un cours de programmation pendant la première année et (2) il a dit que tout informaticien qui connaît les concepts de la programmation devrait être capable de lire un livre et d'apprendre un nouveau langage de programmation. Le cours s'est bien déroulé et nous avons tous trouvé normal que le C et l'assemblage soient des sujets pratiques que vous apprenez par vous-même ou discutez dans le couloir avec d'autres étudiants, mais que cela ne valait pas la peine de suivre un cours.
Au cours de la troisième année, nous avons suivi un cours sur les langages de programmation, dans lequel nous avons étudié les différents paradigmes des langages de programmation (impératif, fonctionnel, logique, orienté objet), nous avons appris les concepts généraux et les techniques de mise en œuvre, et révisé les principaux langages de programmation (Pascal, C, Modula2, Simula, Lisp, C ++, Prolog). Ce que notre professeur nous a dit au début du cours était: vous ne devriez pas évaluer ce cours en pensant au nombre de langages de programmation que vous connaissez à la fin du cours, mais plutôt à tous les concepts généraux que vous avez appris, comment ils sont liés les uns aux autres, à quoi ils servent, comment ils sont utilisés dans quelles langues. Ensuite, apprendre une langue spécifique consiste simplement à lire un livre, à regarder le code existant, à essayer de l'utiliser sur un projet spécifique, etc.
J'ai trouvé cette approche très appropriée et efficace. Je ne pense pas que l'université devrait viser à préparer de bons programmeurs mais plutôt à donner une bonne connaissance qui permette de comprendre la programmation et les langages de programmation. Devenir un bon programmeur ne sera qu'un effet secondaire de cela. J'envisage maintenant de postuler pour un emploi où Ada est requis et je n'ai pas peur de cela, même si je n'ai jamais fait de programmation sérieuse dans Ada auparavant.
Revenons à la question de l'enseignement de Java. Je suppose que Java est souvent utilisé pour l'enseignement car il est suffisamment neutre et permet d'expliquer les principes de programmation en utilisant un langage également proche du monde de l'industrie.
Personnellement, j'utiliserais toujours Pascal ou un langage similaire pour un premier cours, car cela me permettrait de faire la distinction entre les structures de contrôle et les structures de données, qui dans les langages Java / orientés objet sont étroitement intégrées. Donc, à mon avis, Pascal permettrait une introduction plus progressive aux concepts de base de la programmation.
En outre, un informaticien (et un bon programmeur) devrait connaître les mécanismes de base / structures d'exécution comme la pile, le tas, le passage de paramètres, l'allocation de mémoire, les pointeurs ou comment implémenter des types de données abstraits sans utiliser les fonctionnalités intégrées de la langue (listes, ensembles, etc.). Java enlève une grande partie de cela aux programmeurs (c'est bien, bien sûr), mais un débutant devrait en apprendre davantage sur ces choses. Peut-être qu'après un premier cours de programmation en Java, on devrait également suivre un cours plus général sur les concepts des langages de programmation.
Ce ne sont que mon expérience et mes opinions.
la source
J'étais à l'école lorsque Java est sorti. Et mon université a presque changé du jour au lendemain. Les gens étaient étourdis à Java dans le milieu universitaire. J'étais un Jr quand il est sorti, et au moment où ma dernière année, presque tous les universitaires se déplaçaient rapidement pour changer leur programme d'études. Pas seulement à mon université mais partout. C'était vraiment aussi rapide. Notre deuxième cours d'introduction était Pascal, qui s'est rapidement converti à Java en moins d'un an. Pourquoi ont-ils converti si vite? Deux grandes raisons.
Un universitaire veut enseigner la théorie et les algorithmes. Les langages qui vous facilitent l'apprentissage des algorithmes qui ne nécessitent pas beaucoup d'expérience pour fonctionner sont les meilleurs: Scheme, Python, Java, Smalltalk, etc. Plus le langage vous gêne, plus vous êtes distrait de l'apprentissage des vrais algorithmes. À l'époque, les langages de script étaient des citoyens de seconde classe désapprouvés par les employeurs comme bon marché ou rapides et sales. Les universitaires les considéraient comme davantage des copies, mais ce que veulent les employeurs l'emporte également sur les universitaires.
Cela nous amène à la raison suivante. Les employeurs veulent une certaine expérience linguistique, et à l'époque c'était le C / C ++. Mais, C / C ++ prend beaucoup d'expérience pour apprendre, et a beaucoup de cas de coin et si ets ou mais qui sont distrayants. Nous avons appris des cours en C / C ++ mais pas aux niveaux inférieurs. À l'époque, les employeurs étaient fous des programmes CS parce que les étudiants n'étaient pas des gourous du C / C ++.
Java parcourait l'industrie presque aussi vite que le monde universitaire. Alors, finalement, le milieu universitaire obtenait ce qu'il voulait. Langue de haut niveau plus facile à apprendre et langue souhaitée par les employeurs. C'était trop parfait. J'ai eu un ami de retour dans le monde universitaire peut-être 3 ans après mon départ, et il a dit que vous pouviez trouver un livre Java dans chaque sujet CS. C'est à cette vitesse que Java a pris le contrôle du monde universitaire.
Personnellement, je pense que Java n'a pas réduit la CS. Je pense que cela a été une bonne chose car les étudiants peuvent étudier la CS, participer à l'Open Source et trouver du travail même lorsqu'ils sont à l'école. Je crois toujours que vous devriez étudier beaucoup de langues en tant qu'étudiant CS, et cela ne devrait pas être uniquement Java. Mais, s'ils utilisaient tous du python, Joel détesterait aussi le python.
la source
Il y a plusieurs raisons à cela, notamment:
Notez qu'il existe un certain nombre d'écoles qui enseignent le C # pour plusieurs des mêmes raisons. Il existe de nombreuses autres raisons, dont certaines plus spécifiques à chaque école. Essentiellement, Java est devenu le "BASIC" orienté objet d'antan.
la source
*
syntaxe, mais il serait très difficile à utiliser sans une compréhension de base des pointeurs.J'aime le post de Joel Spolsky intitulé Les périls des écoles Java . Je pense que Berin Loristch a raison de simplifier le cirriculum et de l'appliquer également au monde réel.
J'ai entendu plusieurs fois ce qui suit: "un diplôme en informatique n'est pas un diplôme pour apprendre la programmation, c'est pour apprendre la théorie". Le langage n'a pas nécessairement besoin d'avoir de l'importance (même s'il ne doit pas gêner) tant que la théorie est apprise. Java est un langage relativement facile à maîtriser et qui permet de passer plus de temps à apprendre la théorie derrière tout. C'est l'une des raisons pour lesquelles le MIT utilise Scheme (j'ai donc entendu parler).
la source
Bon nombre des réponses données ci-dessus sont bonnes, mais elles laissent de côté quelque chose.
Java est un langage multiplateforme. Un étudiant peut utiliser son Mac, un autre son PC et un autre son étudiant Unix. Le même code fera la même chose. Pensez à la facilité avec laquelle l'enseignant et le service informatique de l'école peuvent le prendre en charge.
C'était la vraie importance de Java quand il est sorti. La blague était "Code une fois, déboguer partout", mais cela élimine vraiment le matériel et les systèmes d'exploitation de l'équation.
la source
J'ai entendu des professeurs dire qu'ils utilisent Java pour enseigner parce que:
Personnellement, je suis content d'avoir pris CS à Berkeley quand ils ont utilisé Scheme pour enseigner. Même si je n'ai réalisé à quel point une langue était élégante que quelques années plus tard.
la source
Un peu d'histoire
J'ai suivi le seul cours Java offert dans notre école. C'était de la fin des années 90 au début de l'an 2000. Java était en pleine croissance mais n'avait presque pas décollé. Venant de beaucoup de développement en C, j'étais un peu frustré par tout le code passe-partout nécessaire pour que Java soit opérationnel. Je ne pouvais pas me concentrer sur ma tâche. Je ne pouvais pas simplement ouvrir un fichier avec "open". J'ai dû définir la classe puis les importations, etc., etc.
J'étais ingénieur en informatique, j'ai donc d'abord pris la programmation d'assemblage, puis C puis C ++, Scheme et ce cours Java. C'était surtout un programme scolaire orienté C. La classe d'algorithmes a été enseignée en utilisant C.
Quand je suis entré dans l'industrie, Java était clairement le joueur dominant. C'était peut-être le seul acteur lors de la conversion des systèmes COBOL principaux vers les applications commerciales Web Java. Java a fait d'énormes progrès dans le monde des affaires au début des 2000 jours.
En même temps, je ne connaissais pas tous les frameworks Java mais je savais coder et m'adapter à l'environnement Java. Si j'avais suivi des cours de formation sur les bonnes normes de codage Java, j'aurais probablement pu commencer avec un meilleur style Java ou une meilleure connaissance de l'écosystème Java.
Rétrospectivement, je ne pense pas que ce soit important.
Pour répondre à votre question: Pourquoi étudions-nous Java à l'université?
Java doit être enseigné mais pas utilisé dans tous les cours:
Vous devriez apprendre Java à un moment donné au collège si vous apprenez l'informatique. Il est populaire dans le monde des affaires. Vous devriez apprendre Java et peut-être C #. Je ne voudrais pas ABSOLUMENT ne pas enseigner Java comme cours de programmation d'introduction. Et Java ne devrait certainement pas être la langue principale utilisée dans tous les cours.
Sur la critique Java:
Java reçoit beaucoup de critiques et il l'a toujours fait. J'ai lu des magazines Java qui mentionnent Java avec un point d'interrogation "Java est-il prêt pour l'entreprise?". La plate-forme Java est toujours une plate-forme largement utilisée. Mais, pour la plupart des tâches de programmation générales, Java fonctionne bien. Et il n'y a pas de problème majeur avec Java. Cela ne nuira pas à vos compétences. Cela pourrait se produire si vous vous contentez des bibliothèques Java sans savoir ce qui se passe en dessous. Mais Java ne cause aucun type de lésions cérébrales (certains développeurs pensent que cela est vrai).
De plus, pourquoi les développeurs n'attaquent-ils pas C ou C ++? Ou au moins C ++. Les paradigmes de programmation impératifs sont très similaires. Et je n'envisagerais jamais d'écrire une webapp en C ++ mais je pourrais le faire avec Java.
Voici comment je mettrais en place un curriculum:
Les langues que j'ai énumérées dans mon programme sont assez courantes. De nombreuses écoles enseignent plusieurs langues sans problème. Dans l'industrie, vous utiliserez de nombreux langages de programmation différents. Vous utiliserez des langues dont vous n'avez même pas entendu parler.
Le sujet de Java dans les écoles n'est pas un problème, sauf s'ils veulent complètement vous protéger de Java ou s'ils veulent enseigner UNIQUEMENT Java. Dans les deux cas, les écoles sont injustifiées.
(Désolé Ruby lang)
la source
Désolé, longue réponse ennuyeuse uniquement:
(1) Vouliez-vous dire:
"Pourquoi étudions-nous Java à l'université, comme premier langage de programmation?"
(2) Ou voulez-vous dire:
"Pourquoi étudions-nous Java à l'université de toute façon, même si nous apprenons d'autres langages de programmation, avant Java?"
On dirait que vous pensez vraiment aux deux questions.
En cas de (1):
Je ne pense pas que Java (ou .NET C # et Visual Basic) devrait être enseigné comme premiers langages de programmation. Pascal structuré et modulaire devrait être le premier, même s'il semble ancien et obsolète.
Beaucoup de gens pensent que nous devrions enseigner aux gens la programmation orientée objet ou la programmation fonctionnelle immédiatement, simplement à cause de son «battage médiatique» ou de sa «tendance».
J'apprends Pascal structuré comme une petite version de la "programmation orientée objet", pas comme quelque chose de similaire. Je vois un programme structuré comme un seul petit objet.
Après cela, je suggère de continuer les langages fonctionnels et Object Pascal.
Et plus tard, C, C ++, C #, VB.Net, Java.
Les principales raisons pour lesquelles je n'aime pas Java ou C #, en tant que premier langage de programmation, c'est qu'ils ont des concepts de "pointeurs", "pointeurs vers des objets" et "objets" eux-mêmes ("références").
Je crois que les étudiants devraient avoir à l'esprit les différences et les similitudes entre ces concepts. La comparaison des objets Strings en Java est un bon exemple de cette odditie:
En cas de (2):
Je pense que Java ou C # devraient être enseignés à l'école, car ils ont plusieurs bonnes fonctionnalités mises à jour et en même temps, ils ont une utilisation réelle.
la source
Je ne peux pas être plus en désaccord. Java était le langage de mon collège que vous deviez suivre pour entrer dans le programme CS&E de mon école. Java est extrêmement facile à enseigner. Parce que vous pouvez vous limiter à certains concepts que les "non-programmeurs" peuvent apprendre.
Je ne peux pas non plus dire si vous enseigneriez ou non ABSOLUMENT Java à un cours de programmation d'introduction. Vous avez essentiellement dit que vous ne l'enseigneriez PAS ABSOLUMENT ?
La raison simple a déjà été expliquée. Java n'a aucun frais de licence. Vous pouvez l'enseigner à l'aide d'un éditeur de test de base. Son utilisé pour les mauvaises raisons certainement.
Je ne suis pas d'accord avec une réponse précédente, selon laquelle Java n'a pas rendu les élèves plus «stupides», cela montre vraiment quand ils ont des problèmes avec des concepts vraiment simples comme les tableaux et les listes en C ++.
la source
Le passage de C à Java s'est produit au mauvais moment .
Quelque part vers l'an 2000. J'étais dans la dernière classe C de mon université.
C ++ avait trop de fonctionnalités pour ne pas confondre un novice. (Et c'est toujours le cas. Et prévoit d'en ajouter.)
.NET n'était pas assez mature et était encore plus cher qu'aujourd'hui.
L'objectif C était ancien et son utilisation par Apple volait sous le radar (il n'y avait pas d'iPhone autour)
la source
Je me sens obligé d'ajouter aux réponses ici car je ne vois vraiment aucune de ces réponses couvrant réellement mon point de vue.
Je suis un programmeur amateur. J'étais bien en avance sur la courbe en ce qui concerne les «ordinateurs» et la «programmation». J'ai terminé mes études de premier cycle - Licences - en 2007 et Masters environ deux ans plus tard - 2009. J'ai travaillé avec une pléthore de langages, notamment Assembly, QuickBASIC, C, C ++, Java, PHP, Perl, Python, BASH Scripts, Javascript, COBOL, etc. .
À mon humble avis, le langage utilisé pour enseigner la programmation aux étudiants est un indicateur de l'époque dans laquelle nous vivons actuellement. Par exemple, dans les années 1980, l'assemblage était le langage de bas niveau tandis que le C était considéré comme un langage de haut niveau.
Au cours des années 1990, C ++, Java, Perl et de tels langages ont gagné en importance principalement parce que le niveau était beaucoup plus élevé que C et incorporaient des principes de développement rapide. Ils ont donc cessé d'enseigner l'assemblage aux étudiants CS et ont enseigné le C comme moyen d'exprimer des algorithmes. Lentement, cela a changé au cours de la dernière décennie, où C est considéré comme un langage de bas niveau pour capturer l'essence des algorithmes de manière efficace et sans trop de savoir-faire des «systèmes». Ceci est en fait extrêmement important car l'objectif d'un programme CS devrait être plus «théorique» que pratique et chaque fois que quelqu'un veut écrire un algorithme, s'il / elle s'embourbe avec les allocations de mémoire et l'arithmétique des pointeurs, alors vous n'obtiendrez pas nulle part.
Même aujourd'hui, si vous êtes dans un programme de Master CS, vous devrez remplir certaines exigences `` Systèmes '' (au moins aux États-Unis et cela ne devrait pas être très différent pour les universités américaines), ce qui nécessite que les étudiants soient en mesure de programmer des applications de niveau système et dans certains cas, aussi profond que le piratage au niveau du noyau pour réellement répondre aux exigences. Ainsi, bien que le C ne soit pas la langue de facto enseignée dans les écoles, il est pertinent si vous souhaitez vous spécialiser dans les systèmes ou le calcul haute performance ou de telles niches.
Je voudrais également mentionner un autre point: le C nécessite beaucoup de discipline pour bien faire les choses tandis que les langages tels que Java sont un peu détendus face à de telles contraintes. Cela facilite la conduite des cours sans que les RA / TA ne lancent GDB pour déboguer le programme d'un étudiant :)
la source
Je pense que c'est en grande partie ce qui est utilisé dans l'industrie.
Mon programme CS avait un conseil consultatif industriel, composé de cadres supérieurs d'entreprises locales de technologie et d'aérospatiale, et ils avaient beaucoup à dire sur le programme. Les classes d'introduction CS ont abandonné Pascal en faveur de C l'année où j'ai commencé (1986), en grande partie à la demande de l'IAB. De même, il y a eu un effort pour enseigner l'Ada dans certains des cours de niveau supérieur, car les entreprises aérospatiales locales devaient l'utiliser pour le travail du DoD.
Java est désormais omniprésent, surtout maintenant que les appareils Android décollent. Ça craint d'un point de vue didactique, mais ensuite, C.
la source
Parce qu'ils espèrent que moins d'étudiants échoueront au cours, ce qui est un échec en soi, à mon humble avis. Peut-être l'une des raisons pour lesquelles presque plus personne ne prend les diplômes universitaires au sérieux, du moins ici.
Java est un langage trop simple et n'enseigne pas que le PC a un paradigme de ressources limitées. Alors qu'en même temps, il y a «rien qui ne peut être résolu avec une autre couche d'abstraction».
Oui, c'est bon pour les concepts de POO et les problèmes de jouets, mais cela apprend à aborder les problèmes sous le mauvais angle. Utilisez une construction soignée ici, vissez le reste.
Mais le monde universitaire est connu pour rêver d'IA, de OWL et d'autres technologies de jouets. Alors qu'ils continuent à rechercher de telles choses, parfois, quelqu'un invente quelque chose d'incroyable là aussi, mais si vous voulez être un bon développeur, vous devez l'apprendre de manière indépendante.
la source