it-swarm-fr.com

Pourquoi étudions-nous Java à l'université?

Java se trouve souvent dans les universités. Quelle est la raison derrière cela?

25
Goma

A -pe Les universités ont une personne suffisamment bien connue que beaucoup (sinon la plupart) décisions se tournent autour de ceux qui ont des goûts, des dégustes, des opinions, des goûts, etc. à l'exemple, le Texas A & M a Bjarne Stroustrup sur le personnel; Cela vient probablement aussi peu surprenant que quiconque a tendance à mettre l'accent sur C++.

La plupart des universités sont un peu différentes cependant. Premièrement, les décisions sont souvent accomplies beaucoup plus au profit de la faculté que les étudiants. Le plus gros critère unique dans de nombreux cas est "quelle langue nécessite le moindre effort de notre part?" La plupart d'entre eux sont également prudents dans leur paresse - ils veulent non seulement la langue avec les plus petits concepts avancés à apprendre, mais également celui qui est (par exemple) le plus lent à innover, à mettre à jour ou à embrasser quoi que ce soit de nouveau.

Deuxièmement, la plupart des décisions sont prises par le comité. Cela signifie que la décision finale est rarement (si jamais) ce que quelqu'un voulait réellement - c'est ce que le moins de membres du Comité (en particulier ceux avec la plus influence) a été particulièrement répréhensible. C'est comme cueillir une saveur de crème glacée. On aime vraiment la fraise, mais une autre est allergique aux fraises. Un autre aime vraiment le chocolat, mais quelqu'un d'autre ne peut pas le supporter. Encore un autre pense que Rhum Raisin est excellent, mais les deux autres craignent que la mention de "rhum" soit interprétée comme une abus d'alcool, alors ils se retrouvent avec vanille, même si ce n'est pas ce que quelqu'un ne voulait vraiment pas.

Enfin, même si elle généralement fonctionne directement à la majeure partie de ce que les deux critères précédents produiraient de manière isolée, ils ont généralement besoin (ou au moins de vouloir) être considérés comme éventuels aux besoins de l'industrie.

Java est l'intersection de ces trois:

  1. Chaque concept qu'il incarne était bien connu d'en 1980. Il n'y a pas grand chose à savoir au-delà de la notion la plus basique de ce que OOP est.
  2. C'est le choix insipide, inodore, non toxique, biodégradable, de manière politiquement correcte.
  3. Presque la seule autre langue de l'histoire à avoir existé aussi longtemps et (probablement) moins innovait est SQL. Même s'ils ne sont guère ce que vous appelleriez des cibles rapides, Cobol et Fortran ont toujours innové plus que Java.
  4. Il est largement utilisé. Lorsque vous y descendez, des professeurs et des 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 basique de quoi OOP est - seulement C'est tout ce qui est nécessaire pour faire ce qui passe pour un travail acceptable d'enseigner.

73
Jerry Coffin

J'ai étudié l'informatique au cours des dix-neuf années-premières juste avant Java est sorti. L'approche suivie de nos professeurs était la suivante.

Première année: cours d'introduction sur la programmation et les algorithmes à Pascal. Pourquoi Pascal? Parce que c'est une langue propre conçue pour enseigner les concepts de programmation sans installations pour le piratage. Bien sûr, nous savions que la langue la plus populaire à l'époque était C et qu'il y avait une nouvelle langue avec une popularité croissante: C++. Nous avons donc lu et discuté de ces langues tout le temps et de faire de petits projets en les utilisant seuls. L'idée était donc la suivante: en classe, nous faisons la théorie grave (Pascal) à la maison, nous apprenons à pirater (c). :-)

Au cours de la deuxième année, nous avons eu un cours de système d'exploitation dans lequel on nous a demandé de faire les exercices en C et en assemblée. 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 sur la programmation au cours de la première année et (2) qu'il a dit que chaque informatique qui connaît les concepts de programmation devrait Soyez capable de lire un livre et d'apprendre un nouveau langage de programmation. Le parcours s'est bien déroulé et nous avons tous constaté que le C et l'Assemblée étaient des sujets pratiques que vous apprenez par vous-même ou discutez dans le corridor avec d'autres étudiants, mais n'étaient pas utile de faire un cours.

Au cours de la troisième année, nous avons eu un cours sur les langages de programmation, dans lesquels 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ées de grandes langues 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 à propos de tous les concepts généraux que vous avez appris, comment ils sont liées les uns aux autres, ce qu'ils sont bons pour, comment ils sont utilisés dans lesquels des langues. Ensuite, apprendre une langue spécifique est une question de lecture d'un livre, en examinant le code existant, en essayant 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é vise à préparer de bons programmeurs mais plutôt à donner une bonne connaissance qui permet de comprendre les langages de programmation et de programmation. Devenir un bon programmeur viendra comme un effet secondaire de cela. Je envisage maintenant de postuler à un emploi dans lequel ADA est requis et que je ne suis pas effrayé, même si je n'ai jamais fait de programmation sérieuse à ADA auparavant.

Retour à la question de l'enseignement de Java. Je suppose Java est souvent utilisé pour l'enseignement, car il est assez neutre et permet d'expliquer les principes de la programmation à l'aide d'une langue aussi proche du monde de l'industrie.

Personnellement, je voudrais toujours utiliser Pascal ou une langue similaire pour un premier cours, car cela me permettrait de distinguer entre les structures de contrôle et les structures de données, que dans Java/langues orientées objet sont étroitement intégrées. Ainsi, à mon avis, Pascal permettrait une introduction plus graduelle aux concepts de base de la programmation.

En outre, un scientifique informatique (et un bon programmeur) devrait connaître des mécanismes de base/des structures d'exécution comme la pile, le tas, le passage du paramètre, l'allocation de mémoire, les pointeurs ou la manière de mettre en place des types de données abstraits sans utiliser les installations intégrées du langue (listes, ensembles, etc.). Java prend une grande partie de cela des programmeurs (c'est bon, bien sûr), mais un débutant devrait en apprendre de ces choses. Peut-être après un premier cours de programmation dans Java = On devrait également prendre un cours plus général sur les concepts de langages de programmation.

Ce ne sont que mon expérience et mon opinion.

22
Giorgio

J'étais à l'école quand Java est sorti. Et mon université a presque changé la nuit. Les gens étaient sortis du giddy à l'adresse Java dans le monde universitaire. J'étais un Jr quand il est sorti et, à l'époque, ma dernière année, presque tous les universités avaient rapidement évolué pour changer de curriculum. Pas seulement chez mon université mais partout. C'était vraiment si vite. Notre deuxième parcours d'introduction était Pascal, et qui s'est rapidement converti en Java en moins d'un an. Pourquoi sont-ils convertis si vite? Deux grandes raisons.

Un universitaire veut enseigner la théorie et les algorithmes. Les langues qui vous facilitent l'apprentissage de ces algorithmes qui n'ont pas besoin de nombreuses expériences pour opérer sont les meilleures: schéma, python, java, smalltalk, etc. Plus la langue gagne de la manière dont vous êtes distraire d'apprendre les vrais algorithmes. À l'époque, les langues de script étaient des citoyens de deuxième classe fronça les yeux sur les employeurs aussi bon marché ou rapides et sales. Les universitaires les ont vu comme plus de copie chat, mais quels employeurs veulent également se balancer avec des universitaires.

Cela nous amène à la prochaine raison. Les employeurs veulent une certaine expérience de langue et à l'époque c'était C/C++. Mais, C/C++ prend beaucoup d'expérience pour apprendre et possède beaucoup de cas d'angle et de bidonôlements de coin et de choses qui se distraient. Nous avons appris des cours en C/C++ mais pas aux niveaux inférieurs. À l'époque, les employeurs étaient en colère contre les programmes CS parce que les étudiants n'étaient pas sortis d'allant des gourous C/C++.

Java balayait l'industrie trop presque aussi vite que le monde universitaire. Alors enfin universitaire obtenait ce qu'ils voulaient. Langage de haut niveau plus facile à apprendre et d'employeurs de langue souhaité. C'était trop parfait. J'avais un ami revenir à un académie peut-être 3 ans après mon départ et il a dit que vous pouviez trouver un livre Java livre dans chaque sujet CS. Voilà à quel point Java a repris le monde universitaire.

Personnellement, je pense que Java _ n'a pas abouti au CS, je pense que c'est une bonne chose parce que les élèves peuvent étudier CS, participer à une source ouverte et trouver du travail même pendant leur école. Je crois toujours que vous devriez étudier beaucoup de langues en tant qu'étudiant CS, ce qui ne devrait pas être juste Java. Mais, s'ils utilisaient tous python Joel haïr sur python aussi.

10
chubbsondubs

Il y a quelques raisons pour cela, y compris:

  • Ubiquité sur le marché du travail - Si les universités souhaitent que leurs élèves devaient être employés (et recommandent davantage d'étudiants à l'université) ils ont besoin d'enseigner les langues pertinentes.
  • Simplifie le curriculum
  • Plus facile à noter et plus facile à mettre en œuvre vos devoirs.
  • Les ordures recueillies n'ont donc pas besoin d'enseigner les pointeurs et la gestion de la mémoire manuelle

Notez qu'il existe un certain nombre d'écoles qui enseignent C # pour de nombreuses mêmes raisons. Il y a beaucoup plus de raisons, certaines d'entre elles plus particulières à l'école individuelle. En substance, Java est devenu l'objet orienté "basique" d'antan.

8
Berin Loritsch

J'aime la post de Joel Spolsky intitulé les périls de Java écoles . Je pense Berin Loristch est correct à ce sujet simplificant le cirriculum et applicable au monde réel.

J'ai entendu dire ce qui suit a déclaré à plusieurs reprises: "Un diplôme en informatique n'est pas un degré d'apprentissage de la programmation, c'est apprendre la théorie". La langue n'a pas nécessairement besoin d'une matière (même si elle devrait ne pas avoir de la voie) tant que la théorie est apprise. Java= est une langue relativement facile à ramasser et permettant de passer plus de temps à passer à l'apprentissage de la théorie derrière tout. C'est l'une des raisons pour lesquelles MIT= utilise le schéma (donc j'ai entendu).

6
Jetti

Beaucoup de réponses données ci-dessus sont de bonnes, mais elles laissent autre chose.

Java est une langue multiplateforme. Un étudiant peut utiliser son Mac, un autre ordinateur et un autre compte unix étudiant. Le même code fera la même chose. Pensez à quel point cela est plus facile pour l'enseignant et le service informatique de l'École de soutenir.

C'était l'importance réelle de Java quand il est sorti. La blague était "Code une fois, déboguer partout", mais cela prend vraiment du matériel et des systèmes d'exploitation hors de l'équation.

3
Matthew Flynn

J'ai entendu des professeurs disent qu'ils utilisent Java pour enseigner parce que:

  • utilise le plus récent paradigme (S) (OOP, des génériques)
  • syntaxiquement très simple, bien que assez verbeux
  • aucun concept avancé, tel que des fonctions d'ordre supérieur, des fermetures, du currying ou de la continuité qui peuvent confondre des concepts de base
  • beaucoup de bibliothèques écrites pour cela
  • les étudiants ne sont pas aussi bouclés dans le débogage des fuites de mémoire car il y a un gc

Personnellement, je suis content d'avoir pris du CS à Berkeley quand ils ont utilisé le projet d'enseigner. Bien que je ne réalisais pas à quel point il était élégant d'une langue que ce soit jusqu'à quelques années plus tard.

1
dietbuddha

Désolé, longue réponse ennuyeuse seulement :

(1) Voulez-vous dire:

"Pourquoi étudions-nous Java à l'université, en tant que première langue 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?"

sonne comme si vous voulez vraiment dire les deux questions.

dans le cas de (1) :

Je ne pense pas Java (ou .net C # et Visual Basic) devrait être enseigner en tant que premières langues de programmation. Pascal structuré et modulaire doit être d'abord, même si cela semble vieux et obsolète.

Beaucoup de gens pensent que nous devrions enseigner aux gens la programmation orientée des objets ou la programmation fonctionnelle à mesurer, juste parce que son "battage médiatique" ou "tendance".

J'apprends pas structuré Pascal comme une petite version de "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 langues fonctionnelles et de l'objet 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 "pointeurs", "pointeurs vers des objets" et "objets" eux-mêmes ("références" ("références" ) concepts.

Je crois que les étudiants devraient avoir à l'esprit, les différences et les similitudes entre ces concepts. La comparaison des objets de chaînes dans Java est un bon exemple de cette bizarrerie:

String A = "Mars";
String A = "Venus";

// pointer comparison or object comparison ???
if (A == B)
{
  DoSomething();
}

Dans le cas de (2) :

Je pense Java ou C # devrait être enseigner à l'école, car ils ont plusieurs bonnes fonctionnalités actualisées et, en même temps, ils ont une utilisation réelle mondiale.

1
umlcat

n petit fond

J'ai pris le seul Java Classe offerte dans notre école. C'était la fin des années 90 au début de 2000. Java C'était en croissance mais n'était pas presque enlevée. En venant de beaucoup de développement en C, j'étais un peu frustré par tout le code de la chaudière nécessaire pour obtenir Java up and up. Je ne pouvais pas me concentrer sur ma tâche. Je ne pouvais pas simplement ouvrir un fichier avec "ouvert". Je devais définir la classe, puis les importations, etc., etc.

J'étais ingénierie informatique, j'ai donc pris la programmation d'assemblage d'abord, puis c ++, schéma, et celui-ci Java Cours. C'était surtout un programme scolaire orienté C. La classe d'algorithmes a été enseignée en utilisant C.

Lorsque je suis allé dans l'industrie, Java était clairement le joueur dominant. Peut-être que c'était le seul joueur lors de la conversion des systèmes de cobol backend à Java applications Web Business. Java fait d'énormes progrès dans le monde des affaires au début de 2000 jours.

Dans le même temps, je ne connaissais pas tous les Java Cadres, mais je savais comment coder et s'adapter au Java Environnement. Si j'ai pris une formation Cours sur Good Java Normes de codage, j'aurais probablement pu commencer avec meilleur Java style ou connaissance du Java Ecosystème .

En rétrospectivement, je ne pense pas que cela compte.

Pour répondre à votre question: pourquoi étudions-nous Java à l'université?

Java devrait être enseigné mais non 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 que c #. Je ne voudrais absolument pas enseigner Java en tant que cours de programmation introductif. Et Java doit certainement ne pas être la langue principale utilisée dans tous les cours.

ON Java critique :

Java reçoit beaucoup de critiques et il a toujours. J'ai lu Java magazines qui mentionnent Java avec une marque d'interrogation "is Java prêt pour l'entreprise?" . Le Java Plate-forme 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èmes majeurs avec en utilisant Java. Cela ne fera pas de mal à votre compétence. Cela pourrait si vous comptez sur le Java bibliothèques sans apprendre ce qui se passe sous. Mais Java Ta cause de tout type de dommages cérébraux (certains développeurs croient réellement cela à vrai).

De plus, pourquoi les développeurs n'attaquent pas C ou C++? Ou au moins c ++. Les paradigmes de programmation impérative sont très similaires. Et je n'envisagerais jamais d'écrire une webapp en C++ mais je pourrais avec Java.

Voici comment je voudrais configurer un curriculum:

  1. Cours d'introduction: Schéma, Python, Langue de montage, C (tous les trois)
  2. Cours d'algorithmes: C, Haskell, Python (tous les trois)
  3. Cours du système d'exploitation/cours de réseautage: C/C++
  4. Développement de l'interface graphique: Java Swing, C++ sur Win32
  5. Programmation orientée objet: (c'est difficile, je n'aurais pas de OOP Course). C++, Java, C #
  6. Entreprise? Développement: Java, C #, Python
  7. Conception de la langue, compilateurs: Haskell, Scala, C, Assemblée, Schéma, Common Lisp, Prolog.

Les langues que j'ai énumérées dans mon curriculum sont assez courantes. Beaucoup d'écoles enseignent plusieurs langues sans problème. Dans l'industrie, vous utiliserez de nombreuses langues de programmation différentes. Vous utiliserez des langues que vous n'avez même pas entendues.

Le sujet de Java dans les écoles n'est pas un problème, à moins qu'ils ne veulent complètement vous protéger de Java ou ils veulent enseigner uniquement Java. Dans les deux cas, Les écoles sont injustifiées.

(Désolé Ruby Lang)

1
berlinbrown2

Je pense qu'une grande partie est que c'est ce qui est utilisé dans l'industrie.

Mon programme CS avait un conseil consultatif industriel, composé de cadres supérieurs de sociétés de technologie et d'aérospatiale locales, et ils avaient beaucoup d'informations sur le programme. Les classes Intro CS ont chuté 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 avait une poussée pour enseigner à l'ADA dans certains des cours de niveau supérieur car les entreprises aérospatiales locales devaient l'utiliser pour le travail de DOD.

Java's jolie omnipiiquante maintenant, surtout maintenant que Android Les périphériques décollent. Il est nul du point de vue didactique, mais donc le C.

0
John Bode

Parce qu'ils espèrent que moins d'étudiants échoueront le cours, qui est un échec en soi, IMHO. Peut-être que l'une des raisons pour lesquelles presque personne ne prend degré de diplôme universitaire sérieusement, au moins ici.

Java est trop simple d'une langue et n'enseigne pas que le PC a un paradigme de ressources limitée. Alors que lors de la même période, il n'y a rien qui ne peut être résolu avec une autre couche d'abstraction "ligne de pensée.

Oui, c'est bon pour OOP concepts et problèmes de jouets, mais il enseigne d'aborder les problèmes du mauvais angle. Utilisez une construction soignée ici, vissez le reste.

Mais le monde universitaire est connu pour être rêvé d'AI, de hibou et d'autres technologies de jouets. Bien qu'ils continuent de rechercher de telles choses, parfois, quelqu'un invente également quelque chose d'étonnant également, mais si vous voulez être un bon développeur, vous devez apprendre cela indépendamment.

0
Coder

Le commutateur de [~ # ~ # ~] c [~ # ~] à Java est arrivé à la mauvais moment.

Quelque part environ 2000. J'étais dans le dernière classe C à mon université.

  • C++ avait trop de fonctionnalités ne pas confondre un novice. (Et ça fait encore. Et envisage d'ajouter quelques.)

  • .Net n'était pas assez mature et était même plus cher que d'aujourd'hui.

  • Objectif c était vieux et l'utilisation d'Apple de celui-ci volait sous le radar (il y avait sans iPhone autour)

0
ZJR

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 que c #. Je ne voudrais absolument pas enseigner Java en tant que cours de programmation introductif. Et Java doit certainement ne pas être la langue principale utilisée dans tous les cours.

Je ne peux pas être en désaccord plus. Java= Language à mon collège que vous deviez prendre pour entrer dans le programme CS & E de mon école. Java est extrêmement facile à enseigner. Parce que vous pouvez limiter vous-même à certains concepts que les "non-programmeurs" peuvent apprendre.

Je ne peux pas non plus dire si vous le feriez ou n'enseignez pas absolument Java en tant que cours de programmation introductif. Vous avez essentiellement dit que vous ne serait pas absolument ne l'enseignerait pas?

La simple raison a déjà été expliquée. Java n'a pas de frais de licence. Vous pouvez l'apprendre à l'aide d'un éditeur de test de base. Son utilisé pour les mauvaises raisons.

Je ne suis pas d'accord avec une réponse précédente, que Java n'a pas fait que les élèves le passent "dumber", cela montre vraiment quand ils ont des problèmes de concepts réellement simples tels que des tableaux et des listes de liste et des listes en C++.

0
Ramhound

Je me sens obligé d'ajouter aux réponses ici car je ne vois pas vraiment aucune de ces réponses couvrant réellement mon point de vue.

Je suis un programmeur hobbyton. J'étais bien en avance sur la courbe lorsqu'il s'agissait de "ordinateurs" et de "programmation". J'ai terminé mes baccalauréats - en 2007 et mes maîtres environ deux ans plus tard - 2009. J'ai travaillé avec une pléthore de langues, y compris Assemblée, Quickbasic, C, C++, Java, PHP, Perl, Python, Bash Scripts, JavaScript, Cobol, etc. .

IMHO, la langue utilisée pour enseigner la programmation aux étudiants est un indicateur de l'époque que nous vivons actuellement. Par exemple, dans les années 1980, l'assemblage était la langue de bas niveau tandis que C était considéré comme une langue de haut niveau.

En 1990, C++, Java, Perl et telles langues ont pris de l'importance principalement parce que des principes de développement rapides de C et incarnés. Ils ont donc cessé d'enseigner l'assemblée aux étudiants du CS et enseignaient 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 une langue trop basse pour capturer efficacement l'essence des algorithmes et sans trop de savoir-faire des systèmes. Ceci est en fait extrêmement important car le programme d'études CS devrait être davantage "théorique" que pratique et chaque fois que quelqu'un veut écrire un algorithme, s'il/elle se bougeait avec des allocations de mémoire et un pointeur arithmétique, alors vous n'obtiendrez pas partout.

Même aujourd'hui, si vous êtes dans un programme de maîtrise CS, vous devrez remplir certains "systèmes de systèmes" (au moins aux États-Unis et cela ne devrait pas être très différent pour les universités américaines) qui nécessitent des étudiants de pouvoir programmer des applications de niveau des systèmes et dans certains cas aussi profond que le niveau de noyau piratage pour réussir les exigences. Donc, bien que c est non La langue defacto enseigné dans les écoles, elle est pertinente si vous souhaitez spécialiser dans Say Systems ou informatique haute performance ou de telles niches.

Je voudrais également mentionner un autre point est que le C nécessite beaucoup de discipline pour que les choses puissent bien les choses pendant que des langues telles que Java sont un peu détendues à propos de telles contraintes. Cela facilite la tâche de suivre des cours sans nécessitant le RA/TAS de lancer GDB pour déboguer le programme d'un élève :)

0
void_ptr