Pourquoi Java est-elle la lingua franca dans tant d'institutions? [fermé]


22

EDIT: Cette question semble au premier abord dénigrer Java, et je suppose qu'à ce stade, c'est un peu. Cependant, le point le plus important que j'essaie de faire valoir est la raison pour laquelle une seule langue est choisie comme étant l'unique solution à tous les problèmes. Java se trouve être celui qui est utilisé, c'est donc celui que j'ai dû battre ici, mais je ne suis pas intentionnel d'en déchirer un nouveau :)

Je n'aime pas Java dans la plupart des milieux académiques. Je ne dis pas que le langage lui-même est mauvais - il a plusieurs aspects extrêmement souhaitables, surtout la possibilité de fonctionner sans recompilation sur la plupart des plates-formes. Rien de mal à utiliser la langue de votre prochaine application ^ TM. (Pas quelque chose que je ferais personnellement, mais c'est plus parce que j'ai moins d'expérience avec ça, plutôt que sa conception est mauvaise)

Je pense que c'est un gaspillage que des cours de CS de haut niveau soient enseignés en utilisant Java comme langage. Trop de mes camarades de classe ne peuvent pas faire un programme qui en vaut la peine, car ils ne savent pas comment travailler dans un monde sans ramassage des ordures. Ils ne comprennent pas fondamentalement les machines pour lesquelles ils programment. Quand quelqu'un peut travailler en dehors d'un monde de collecte des ordures, il peut travailler à l'intérieur de celui-ci, mais pas l'inverse. GC est un outil, pas une béquille. Mais la façon dont il est utilisé pour enseigner aux étudiants en informatique est une béquille.

L'informatique ne devrait pas enseigner une suite complète de cours adaptés à une seule langue. Les étudiants partent avec l'idée que tout bon design est un design Java idiomatique, et que le design orienté objet est la VRAIE VOIE QUI EST LA SEULE FAÇON QUI PEUT ÊTRE FAITE. D'autres langues, dont au moins une n'étant pas une poubelle, devraient être utilisées dans l'enseignement, afin de permettre au diplômé de mieux comprendre les machines.

Il est gênant qu'une personne titulaire d'un doctorat en sciences sociales d'une institution respectée ne puisse pas programmer sa sortie d'un sac en papier.

Le pire, c'est que lorsque je parle à ces professeurs de CS qui comprennent vraiment comment les choses fonctionnent, ils partagent des sentiments comme celui-ci, que nous rendons un mauvais service à nos étudiants en faisant tout en Java. (Notez que ce qui précède serait le même si je le remplaçais par un autre langage, généralement l'utilisation d'un seul langage est le problème, pas Java lui-même)

Au total, je sens que je ne peux plus respecter aucun type de diplôme du tout - quand je ne vois pas ceux qui m'entourent capables de programmer leur chemin pour sortir des problèmes de fizzbuzz.

Pourquoi / comment en est-il arrivé ainsi?


9
Ne t'inquiète pas. Donnez une demi-chance à Oracle et ils remédieront à la situation :) Leurs poursuites contre Android et Apache ne sont qu'un début pour éloigner les développeurs. J'enseigne dans une institution qui a pris ce qui précède comme un indice pour commencer à enseigner le Python, en prévision du futur marché.
SamGoody

3
De quels milieux universitaires parlez-vous? Je ne sais pas par hasard où les étudiants CSci sont censés apprendre une seule langue. (La dernière fois que j'étais à l'école, vous auriez pu vous débrouiller avec C et Scheme, je pense, si vous aviez choisi soigneusement votre majeure et vos cours, mais vous utiliseriez au moins deux langages différents.)
David Thornley

16
Pouvez-vous expliquer le fonctionnement de votre cache L1? Pouvez-vous concevoir une ALU? Pouvez-vous expliquer les équations de Maxwell? Qu'en est-il des propriétés thermodynamiques de votre carte mère? Pourriez-vous construire une clé USB? Savez-vous vraiment comment fonctionne votre ordinateur? Ou avez-vous choisi un niveau d'abstraction adapté à vos intérêts et êtes-vous allé à partir de là?
MetricSystem

5
Parce que décider que vous devez comprendre la gestion de la mémoire pour «comprendre fondamentalement les machines pour lesquelles ils programment» est un niveau complètement arbitraire. S'il n'est pas nécessaire de comprendre les problèmes qui vous intéressent, il est souvent préférable de passer votre temps à étudier ce qui vous intéresse (car personne n'a assez de temps pour tout apprendre). Et tout argument que vous présentez pour expliquer pourquoi les programmeurs Java doivent apprendre la gestion de la mémoire pourrait être étendu à l'infini jusqu'à ce que tout le monde ait besoin de connaître la physique atomique pour "comprendre" quoi que ce soit.
MetricSystem

7
De plus, si quelqu'un a un argument d'homme de paille ici, c'est vous, étant donné que je n'ai jamais entendu parler d'un seul programme CS qui ne présente que Java comme langage de programmation.
MetricSystem

Réponses:


30

Ce n'est pas un problème Java, c'est un problème d'enseignement. Ne pas savoir programmer n'est pas une faute de langue, c'est la faute des étudiants. Il en va de même pour tous vos problèmes, GC, connaissances de base de la machine, comment les choses fonctionnent "sous le capot" pour ainsi dire.

Votre principal reproche concernant la collecte des ordures me jette légèrement. Sauf si vous effectuez un garbage collection C ou C ++, c'est généralement très bien et ce n'est pas un problème. Préférez-vous qu'ils apprennent tous l'assemblage? Les langues de niveau supérieur strictes sont très utiles pour l'enseignement. Il vous donne la flexibilité des bibliothèques, des packages et d'autres subtilités lorsque vous en avez besoin, sans aucun des confusions de langage "sucre" présentes dans la plupart des autres langages de niveau supérieur (PHP, Ruby, Python, Perl).


5
Je ne dis pas que les langues de niveau supérieur ne devraient pas être enseignées. Mais je dis que quelque chose de niveau inférieur (de l'ordre de C ou de Fortran ou d'un autre langage de programmation de systèmes) devrait également être enseigné. (Aller plus bas que C est moins utile car en dessous de ce niveau, tout ce que vous apprendrez sera spécifique à une architecture de machine unique). Je ne dis pas que tous les diplômés CS devraient être d'excellents programmeurs de bas niveau. Mais je dis que s'ils sont confrontés à un problème de bas niveau, ils ne devraient pas cracher et mourir, comme tous les élèves autour de moi semblent le faire.
Billy ONeal du

3
@Billy: descendre plus bas que votre niveau d'apprentissage initial est difficile. Je me retrouve à regarder du code C ++ / C et à m'amuser un peu autour de moi. Ne vous attendez pas à des miracles, mais ne vous attendez pas non plus à des anges. Les programmeurs doivent avoir le lecteur, faute de quoi ils "cracheront et mourront" assez rapidement quel que soit le niveau du problème.
Josh K

5
@Josh: Assez bien, mais une exposition formelle à mon humble avis à au moins un autre environnement de programmation devrait être une nécessité pour obtenir un diplôme CS. Le diplôme ne dit pas "je comprends Java", il dit "je comprends CS". Les deux ne sont pas identiques et vous ne pouvez pas parvenir à une compréhension complète de CS en utilisant Java (ou d'ailleurs n'importe quel langage) seul. (BTW, +1)
Billy ONeal

2
@JoshK: une incapacité à déboguer à de faibles niveaux et une capacité considérablement réduite à bien raisonner sur les implications du code qu'ils écrivent.
Mason Wheeler

1
Je connais des programmeurs qui n'ont appris que Java et qui ont peur du C ++ ou du C car ils doivent utiliser des pointeurs. Je ne sais pas si quelqu'un qui ne peut pas programmer avec des pointeurs peut être considéré comme un vrai programmeur: après tout, tous les ordinateurs et runtimes modernes sont toujours basés sur une architecture de base impliquant les registres, la mémoire principale, la pile, le tas. Je préfère donc programmer en Java plutôt qu'en C ++ (il est certainement plus facile de faire avancer les choses si vous n'avez pas à vous soucier de la gestion de la mémoire) mais je conviens que l'enseignement ne devrait certainement pas être limité à Java.
Giorgio

12

Les universités font-elles vraiment cela? Ou est-ce juste une perception que les gens ont lorsqu'ils obtiennent un mauvais candidat à un entretien d'embauche?

J'ai obtenu mon diplôme CS il y a 4 ans et bien que Java ait été utilisé dans les cours d'introduction, il n'a pas été particulièrement souligné par la suite. Du haut de ma tête, les cours obligatoires de base exigeaient que vous appreniez Java, C, C ++, SML (langage de programmation fonctionnel), assembleur, matlab et CAST (langage de description de circuit). Cela ne prend pas en compte tous les cours CS mathématiques et théoriques et bien sûr, la demi-douzaine de cours CS électifs qui vous auraient exposé à beaucoup plus. De parler avec des amis dans un certain nombre d'universités différentes, il ne semblait pas que ce qu'ils faisaient était très différent.

S'il y a des universités qui n'enseignent que Java, alors c'est bien une tragédie. Non pas parce que Java est mauvais, mais parce que ce n'est qu'un outil parmi tant d'autres qui devrait être disponible pour un programmeur. Un développeur qui ne connaît que Java équivaut à un charpentier qui ne sait utiliser qu'un marteau. Cependant, j'ai du mal à croire que c'est vraiment le cas, du moins pour les universités respectées. Je soupçonne que c'est juste la perception de voir de mauvais candidats et de blâmer l'école pour l'incompétence des candidats plutôt que le manque de motivation / motivation / curiosité / professionnalisme / etc. du candidat.


2
D'accord. Je viens d'obtenir mon diplôme il y a quelques années, et bien que la plupart de mes cours aient été enseignés en utilisant Java, il était difficile d'obtenir mon diplôme sans suivre un cours enseigné en C ou C ++, et nous avions également un cours de langage de programmation qui mettait l'accent sur l'utilisation de Haskell. .
mipadi

Dans mon diplôme, nous avons d'abord fait Pascal, puis Java comme langage OO. Cependant, au cours de la deuxième année, 90% des profs ne se souciaient pas de la langue que vous utilisiez. Certains d'entre nous ont utilisé c / c ++ / ruby ​​/ C # / python / même haskell, mais la plupart des gens ont conservé ce qu'ils savaient, java. Seule une poignée de cours requis en utilisant assembly / c / c ++, à savoir des choses comme notre cours de graphisme 3D (facultatif), très bien appliqué en c / c ++ pour opengl. Et évidemment, le cours de base sur les systèmes a imposé l'assemblage SPARC (parce que nous travaillions intentionnellement et à un bas niveau). J'ai entendu dire qu'ils sont passés à python / c ++ en 1ère année maintenant cependant ...
Aren

11

Je suis vraiment surpris que ce soit la situation de nombreuses écoles. Quand j'ai obtenu mon diplôme CS, j'ai eu une série de cours de langues qui comprenaient toutes les langues populaires de la journée (c'était il y a près de 40 ans): assembleur (Univac 1108 et MIX), FORTRAN IV, SNOBOL4, COBOL, Lisp et Algol 68. Je ne peux pas imaginer avoir une seule langue enseignée. Ou comment j'ai pu apprécier ce que les compilateurs devaient faire sans avoir écrit certains programmes d'assembleur.

Nous avons utilisé Algol et FORTRAN pour la plupart des cours sur les données et les algorithmes. J'aurais aimé passer plus de temps avec Lisp - à la place, nous avions juste une introduction et maintenant j'essaye de réapprendre certains des concepts. Nous avons utilisé SNOBOL4 pour écrire des analyseurs syntaxiques - et sa correspondance de motifs avec le retour arrière a construit une bonne base pour le travail ultérieur des bibliothèques regex incluses dans de nombreux langages modernes.

Cette introduction à une demi-douzaine de langues a suscité un intérêt pour moi qui n'a pas cessé depuis.


8

Pour avoir la vraie raison, vous devriez demander aux personnes qui dirigent ces institutions (et même alors, elles pourraient ne pas vous le dire).

Plusieurs raisons possibles (et je ne défends ni n'accuse personne ici, je suppose):

Vous pouvez faire avancer les choses en Java

Java est un langage à usage général et en tant que tel peut être utilisé pour résoudre de nombreux problèmes.

Beaucoup d'enseignants comprennent Java

Il est difficile d'enseigner une langue que vous ne comprenez pas

Java est populaire

Ce qui signifie qu'il existe de nombreuses ressources Java - livres, communauté active, bibliothèques de codes, etc.

Java est facile

Vous n'avez pas besoin de comprendre beaucoup de choses ou de théorie de bas niveau pour faire Java. Vous ne le faites peut-être pas bien , mais au moins vous pouvez faire avancer les choses.

Java est omniprésent

Vous pouvez l'exécuter sur plus ou moins n'importe quoi.

Il y a des emplois pour les programmeurs Java

De nombreux emplois nécessitent Java - les enseignants sont censés préparer les étudiants au monde réel.

Le temps est limité

Sur de nombreux cours, il n'y a pas de temps pour enseigner plusieurs langues, théories, concepts de bas niveau, etc.

C'est ce que veulent les étudiants

De nombreux étudiants ont déjà entendu parler de Java (et l'ont même utilisé). Ils aiment parce que c'est familier.


6

C'est ce que l'industrie a demandé. Il y avait une pénurie de développeurs Java, les écoles ont donc commencé à les créer. Les entreprises ont des développeurs qui peuvent commencer à travailler dès qu'ils franchissent la porte.

Quoi qu'il en soit, la langue n'a pas d'importance. Ils pouvaient enseigner un langage non GC et produire de mauvais programmeurs. L'utilisation des écoles de langues est un détail d'implémentation. Les écoles devraient enseigner les concepts. Si ce n'est pas le cas, c'est l'école qui est le problème, pas la langue avec laquelle ils enseignent. Ce n'est pas parce que quelqu'un ne sait pas ce qu'est un pointeur qu'il ne peut pas être un programmeur efficace.

GC est de toute façon la voie de l'avenir.


4
Vous n'avez pas besoin de savoir ce qu'est un pointeur. Mais vous devez pouvoir reprendre le concept assez rapidement. Ne pas comprendre les pointeurs, ou des concepts similaires aux pointeurs, indique un manque de compréhension de l'informatique dans son ensemble. Je ne dis pas que tous les diplômés CS doivent être d'excellents programmeurs de bas niveau, mais je dis qu'ils devraient au moins avoir une compréhension conceptuelle de ce qui se passe lorsqu'ils reçoivent un diplôme universitaire de 4 ans.
Billy ONeal

1
CS n'est pas une question de programmation.
Javier

1
@Javier: Comment CS ne parle-t-il pas de programmation? Bien sûr , il y a cette branche de CS, « Theoretical Computer Science », ce qui est de la programmation, mais pour la plupart , il est sur la programmation.
Billy ONeal

1
@Billy ONeal: la définition de wikipedia est un peu longue, mais la partie qui se rapproche le plus de la programmation est "l'étude des techniques pratiques pour leur mise en œuvre". c'est-à-dire qu'il ne s'agit pas de l'implémentation (programmation) mais de l'étude des techniques d'implémentation (algorithmes, structures, langages, etc.)
Javier

1
@Javier: Je pense que "l'étude de la programmation" et "l'action de la programmation" ne font qu'un. Après tout, le code est lu beaucoup plus souvent qu'il n'est écrit. Mais ce n'est pas la question - lorsque vous recevez un diplôme CS, la chose que vous allez finir par faire est de programmer.
Billy ONeal

4

Paresse et motif de profit. Java obtient la plupart des gens 80% du chemin, avec 20% de l'effort. Cependant, cela produit souvent des codeurs vaudous "singe voir singe faire" qui n'ont pas une compréhension approfondie de ce qui se passe et sont incapables de creuser plus profondément que des outils de haut niveau.

Enseigner correctement le C / C ++ est difficile. Même quand c'est bien fait, beaucoup ne comprendront pas complètement les concepts de bas niveau comme les pointeurs (il y a des études à ce sujet). De plus, il ne semble pas immédiatement pertinent sur le marché du travail.


2
Mais si vous comprenez les pointeurs, vous pouvez comprendre les références beaucoup plus facilement.
Michael K

3

Je suis plutôt d'accord mais dans une certaine mesure.

Si vous devez enseigner CS cource axé sur les structures de données ou les algorithmes. Éliminer la plupart des choses inutiles est une bonne chose. Vous ne voulez pas que les élèves gèrent des trucs de bas niveau lorsqu'ils apprennent des concepts de haut niveau.

D'un autre côté, des trucs de bas niveau devraient également être enseignés. Juste pour avoir plus de programmeurs polyvalents.


Je ne parle pas d'un seul cours. Pour un seul cours, ça va. Pour un programme entier, ce n'est pas le cas.
Billy ONeal

3

Comme toujours, il s'agit de savoir ce que vous voulez enseigner et combien de temps vous avez pour le faire.

Faire des choses en Java signifie que vous n'avez pas à gérer les pointeurs errants et free / malloc. Cela signifie beaucoup moins de bogues difficiles à trouver.

Cela ne signifie pas que vous ne devriez pas en apprendre davantage sur la machine sous-jacente - que vous devez être bon dans le métier - mais que vous devriez peut-être choisir le bon outil pour le travail. Les algorithmes de haut niveau ne sont peut-être pas le meilleur sujet pour le cours d'assembleur.


Pour un cours d'introduction à la programmation ou un cours sur les structures de données, Java est très bien. Pas pour un programme complet de 4 ans cependant.
Billy ONeal

@Gamelle. D'accord. Je mentionne simplement que l'utilisation de Java vous achète des choses dont vous n'avez pas à vous soucier. Vous devriez apprendre les bases dans d'autres cours sans Java.

2

Est-ce trop demander de leur apprendre quelque chose sur le fonctionnement réel des ordinateurs ? Cela n'a aucun sens pour moi que tout plan de cours CS n'inclue pas quelque chose de systèmes d'exploitation et d'architecture informatique. Je ne dis pas que vous devriez être en mesure de concevoir un ordinateur au dos d'une enveloppe, mais un aperçu général met toutes les langues en perspective. Je veux dire, Java s'exécute dans une machine virtuelle!


1
Existe- t - il de bons programmes informatiques qui n'incluent pas de cours sur le système d'exploitation et un cours d'organisation informatique?
mipadi

J'espère bien que non!
Michael K

0

En toute honnêteté, je ne pense pas que vous devriez perdre le respect de tous les diplômes et surtout pas du CS car la seule langue enseignée est Java.

Toute composition décente. sci student comprend que son diplôme CS n'est rien de plus qu'un morceau de papier et que la vraie connaissance proviendra de projets personnels et d'études personnelles. J'aimerais penser que les bons étudiants savent qu'ils ont besoin de connaître le C et d'apprendre à faire avancer les choses sous Linux / Unix et à savoir comment NE PAS tenir la main dans les langages modernes.


-1

Je ne vois aucun problème avec l'utilisation de Java. Le plus gros problème (comme vous l'avez mentionné) est lorsque les universités enseignent la programmation impérative comme le meilleur et le seul moyen de résoudre tous vos problèmes. C'est très loin de la vérité. Par exemple, au lieu d'utiliser trois langages impératifs (ou pire encore le même langage) pour trois cours différents, ils devraient utiliser trois paradigmes de programmation différents. Un exemple est Java (impératif), Prolog (déclaratif) et Haskell (fonctionnel).

Quant à savoir pourquoi cela se produit, je pense que c'est une combinaison de (1) politique - les présidents ne sont pas ouverts d'esprit ou n'ont pas d'avantages personnels / sponsors, et (2) la paresse - les professeurs étaient autrefois étudiants et ils enseignent tout ce qu'ils savent ou aiment.


-1

Collège Calvin à Grand Rapids Mi. Une fois qu'ils sont passés de Java à Python pour des cours de programmation d'introduction, le professeur incrédule a mentionné à un groupe d'entre nous vers la fin de son semestre, "Beaucoup d'entre eux peuvent réellement programmer, c'est incroyable". Sa stupéfaction contraste avec les expériences précédentes avec Java. Cela ne fait pas de Java un mauvais langage, juste difficile à reprendre à zéro. Je dirais la même chose à propos de C, ou C ++ ou de tout langage qui nécessite une connaissance intime des schémas ou types d'allocation de mémoire.


1
Euh, Python nécessite une connaissance intime des types, tout comme les autres langues que vous avez mentionnées.
Billy ONeal

Je m'attends à ce que les langues avec interprètes soient beaucoup plus faciles à apprendre, car les étudiants peuvent obtenir des commentaires déclaration par déclaration plutôt que compilation par compilation.
kevin cline

@BillyONeal Vous m'avez mal lu, le contexte était l'allocation de mémoire dans ma dernière phrase. Je n'ai pas encore été préoccupé par la taille ou le nombre d'éléments d'un str () ou d'un dict () ou d'un tuple () ou d'une liste () ou d'un set () ... Je les «utilise» simplement.
Ben DeMott

@kevincline Merci Kevin - c'est ce que j'essayais de faire passer. À en juger par les votes négatifs, je dois travailler mes compétences en communication;)
Ben DeMott

-2

J'ai obtenu un diplôme en ingénierie des systèmes informatiques, j'ai donc étudié l'assemblage, les microprocesseurs, le VHDL, ce que sont les portes logiques et comment en créer une bascule, j'ai étudié les circuits électriques, les amplificateurs opérationnels, les filtres passe-bas, l'amplitude modulation, construit un circuit dans un laboratoire qui ressemblerait à un clavier de téléphone, sali avec un analyseur logique, a pris des cours de physique. Du côté de Linux - j'ai recompilé un noyau avant, j'ai écrit un petit pilote de périphérique et un système de fichiers de devoirs.

Mais j'ai réalisé que j'aime beaucoup plus les trucs de haut niveau. Je préfère Python à C. J'aime C # et j'adore le garbage collector. J'aime les mathématiques et les algorithmes et les structures de données, mais je ne suis pas un fan particulier des pointeurs - je peux jouer avec eux; Je ne veux tout simplement pas.

Donc, vous pensez que l'université devrait enseigner plus de C, moins de Java. Quelqu'un d'autre pense qu'ils devraient tout enseigner dans Scheme. Spolsky prendra les deux.

Oui, il est vrai qu'un diplôme universitaire n'est qu'une feuille de papier, mais "ne laissez pas la scolarité entraver vos études". Il y a toujours Wikipédia, Stack Overflow, Coursera.org, etc. On dirait que les universités traditionnelles perdront de leur importance.

Si je pouvais faire des études de premier cycle partout, alors je serais allé dans une autre école, je n'aurais pas étudié le génie électrique, mais plutôt les mathématiques, CS + mineure en physique et en français. Scratch French; J'aurais dû étudier à l'étranger en Suisse et y apprendre 5 langues naturelles. Je retournerais aussi et trouverais une personne qui m'a convaincu que je devais absolument prendre une introduction aux cours d'économie au collège afin de survivre dans le monde réel et lui donner une tape sur la tête avec ma collection de livres de Milton Friedman (les rares livres sur le sujet de l'économie que j'ai lus qui ne craignent pas). Je ne paierais pas non plus d'argent pour le livre Freakonomics 1 ou un livre sur la langue Perl.

Avec le recul, j'aurais fait beaucoup de choses différemment. Tout ce que je peux faire maintenant, et je vous le recommande, c'est de choisir votre propre aventure: http://www.codinghorror.com/blog/2008/03/choosing-your-own-adventure.html

Avec le recul, j'aurais gagné 100 milliards de dollars en bourse maintenant, et je l'aurais investi dans la recherche sur le cancer, j'aurais engagé des scientifiques pour débarrasser le monde des déchets plastiques; J'aurais donné assez d'argent à la campagne de Ron Paul pour que la guerre au Moyen-Orient se termine il y a plus de 3 ans.

Reconnaissez maintenant que vous ne récupérerez jamais votre temps, alors essayez de le dépenser judicieusement.


Downvoters, veuillez élaborer.
Job

-2

Il y a quelques années, j'ai lu quelque part qu'au Royaume-Uni, la décision Java a été prise pour inciter davantage d'étudiants à la programmation. Apparemment, c'était plus facile pour le cerveau à cause du manque de pointeurs désagréables et de gestion de la mémoire, etc. Je suppose que c'est la raison pour laquelle Python est rapidement adopté comme le nouvel «outil d'apprentissage». Je serais d'avis que votre cours uni typique ne fera pas de vous un programmeur. Tout ce qu'il est censé faire, c'est vous armer d'une certaine quantité de connaissances et vous préparer à la programmation. Le jour où l'on peut s'appeler programmeur vient généralement pas mal de temps après uni et quand ce moment arrive, les pointeurs, la récupération de place et les paradigmes de programmation autres que la POO ne devraient pas être un problème.


-2

Pourquoi Java est-il utilisé?

Trois raisons:

  1. Java utilise la syntaxe de style C. De nombreux programmeurs le connaissent, ce qui réduit la courbe d'apprentissage.

  2. L'argent a été dépensé pour commercialiser Java comme cool et moderne. Mais par rapport au lisp, java vit à l'âge de pierre.

  3. La JVM. JVM est la seule chose cool à propos de Java qui est légitime, pas seulement du battage publicitaire. Bien que la JVM doive être saluée comme une plate-forme pour l'exécution de programmes, elle ne mérite pas en soi l'existence du langage Java. Vous pouvez théoriquement et pratiquement compiler de nombreux langages différents pour la JVM.


1
Bienvenue. Cela semble être votre premier message sur Stack Exchange Programmers. Veuillez consulter la page faq programmers.stackexchange.com/faq pour obtenir des conseils sur la réputation, poser et répondre à des questions. Un point clé est que les réponses doivent être informatives et non provocantes. Si vous faites une affirmation comme Java est l'âge de pierre et Lisp est moderne, expliquez pourquoi. Beaucoup de lecteurs savent que Lisp a été spécifié en 1958 et est juste un peu plus jeune que FORTRAN. Si vous voulez dire que quelque chose sur Java qui est partagé avec FORTRAN ou Algol guide sa conception et la limite, décrivez-le.
DeveloperDon

-3

Votre question soutient les conclusions d'une autre personne qui a écrit un article disant que Java est tellement cool mais pas assez lourd pour le calcul scientifique. Je pense qu'il devrait simplement utiliser Big Decimal avec toutes ses précisions fines, NAN, etc. et continuer.

Je veux vivre uniquement dans un monde de collecte automatique des ordures. Son plus sain, plus propre, plus soigné, esthétique, évite le gaspillage d'argent sur les dépenses de santé, est plus souhaitable - ne pas avoir à marquer quelque chose comme indésirable - simplement en le déréférençant ou en le définissant sur null ou lorsque je quitte le champ d'application, l'article est automatiquement étiqueté pour la collecte des ordures ..

Ok, maintenant je ne parle que de Java, mais ce serait très utile si cela fonctionne aussi dans le vrai scénario d'ordures. Java est écrit une fois exécuté n'importe où, ce qui est assez bon pour moi pour qu'il soit utilisé comme langage dans les écoles. Aucune fuite de mémoire et être apprécié par les programmeurs heureux qui ne veulent pas passer du temps à baliser chaque objet qu'ils utilisent et cesser de s'utiliser est une bonne logique de la part de Java.

Java a des pointeurs - enfin nous les appelons des références. String s1 = "Hello"; String s2 = "Hello"; String s3 = new String ("Bonjour");

s1 et s2 pointeront vers le même objet String - qui est par référence s1 == s2, s1.equals (s3) mais s1 == s3 est faux parce que s3 est un nouvel objet de référence - c'est l'arithmétique java des références et I comprendre tout cela désolé, je ne souhaite pas être étiqueté comme quelqu'un qui ne comprend pas les complexités sous-jacentes de l'arithmétique des pointeurs en C ou C ++.


2
Les références ne sont pas des pointeurs. Vous ne pouvez pas les utiliser de manière arithmétique et vous ne pouvez pas les utiliser pour réinterpréter un morceau de mémoire vers lequel ils pointent. Et bien sûr, peu importe combien vous voulez vivre dans un monde de collecte des ordures, le fait est que le monde n'est pas un monde de collecte des ordures. Je ne dis pas que Java est un mauvais langage, ou que les gens ne devraient pas utiliser Java. Si vous l'aimez, utilisez-le, il y a des choses qui sont géniales. Je pense simplement que c'est inapproprié en tant que langage pour débutants car il cache des choses essentielles à la compréhension des nouveaux programmeurs.
Billy ONeal
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.