La Couverture de Java

Avril 2001

Cet essai est né de conversations que j'ai eues avec plusieurs autres programmeurs sur pourquoi Java semblait suspect. Ce n'est pas une critique de Java ! C'est une étude de cas sur le radar des hackers.

Avec le temps, les hackers développent un flair pour les bonnes (et mauvaises) technologies. J'ai pensé qu'il pourrait être intéressant d'essayer d'écrire ce qui rendait Java suspect à mes yeux.

Certaines personnes qui ont lu ceci pensent que c'est une tentative intéressante d'écrire sur quelque chose qui n'a jamais été écrit auparavant. D'autres disent que j'aurai des ennuis pour avoir l'air d'écrire sur des choses que je ne comprends pas. Donc, au cas où cela pourrait aider, permettez-moi de clarifier que je n'écris pas ici sur Java (que je n'ai jamais utilisé) mais sur le radar des hackers (sur lequel j'ai beaucoup réfléchi).


L'aphorisme "on ne peut pas juger un livre par sa couverture" est né à une époque où les livres étaient vendus dans des couvertures en carton brut, à relier par chaque acheteur selon son propre goût. À cette époque, on ne pouvait pas juger un livre par sa couverture. Mais l'édition a progressé depuis : les éditeurs actuels travaillent dur pour faire de la couverture quelque chose par quoi on peut juger un livre.

Je passe beaucoup de temps dans les librairies et j'ai l'impression d'avoir appris à comprendre tout ce que les éditeurs veulent me dire sur un livre, et peut-être un peu plus. Le temps que je n'ai pas passé dans les librairies, je l'ai passé surtout devant des ordinateurs, et j'ai l'impression d'avoir appris, dans une certaine mesure, à juger la technologie par sa couverture aussi. C'est peut-être juste de la chance, mais je me suis épargné quelques technologies qui se sont avérées vraiment mauvaises.

Jusqu'à présent, Java me semble être une mauvaise technologie. Je n'ai jamais écrit un programme en Java, jamais plus que jeté un coup d'œil sur des livres de référence à son sujet, mais j'ai l'intuition que ce ne sera pas un langage très réussi. Je peux me tromper ; faire des prédictions sur la technologie est une entreprise dangereuse. Mais pour ce que ça vaut, comme une sorte de capsule temporelle, voici pourquoi je n'aime pas l'apparence de Java :

  1. Il a été si énergiquement promu. Les vrais standards n'ont pas besoin d'être promus. Personne n'a eu à promouvoir C, ou Unix, ou HTML. Un vrai standard a tendance à être déjà établi au moment où la plupart des gens en entendent parler. Sur l'écran radar des hackers, Perl est aussi grand que Java, ou plus, juste sur la base de ses propres mérites.

  2. Il vise bas. Dans le livre blanc original de Java, Gosling dit explicitement que Java a été conçu pour ne pas être trop difficile pour les programmeurs habitués à C. Il a été conçu pour être un autre C++ : C plus quelques idées prises dans des langages plus avancés. Comme les créateurs de sitcoms ou de malbouffe ou de voyages organisés, les concepteurs de Java concevaient consciemment un produit pour des gens moins intelligents qu'eux. Historiquement, les langages conçus pour que d'autres les utilisent ont été mauvais : Cobol, PL/I, Pascal, Ada, C++. Les bons langages ont été ceux conçus pour leurs propres créateurs : C, Perl, Smalltalk, Lisp.

  3. Il a des motifs cachés. Quelqu'un a dit un jour que le monde serait un meilleur endroit si les gens n'écrivaient des livres que parce qu'ils avaient quelque chose à dire, plutôt que parce qu'ils voulaient écrire un livre. De même, la raison pour laquelle nous entendons tout le temps parler de Java n'est pas parce qu'il a quelque chose à dire sur les langages de programmation. Nous entendons parler de Java dans le cadre d'un plan de Sun pour saper Microsoft.

  4. Personne ne l'aime. Les programmeurs C, Perl, Python, Smalltalk et Lisp aiment leurs langages. Je n'ai jamais entendu personne dire qu'il aimait Java.

  5. Les gens sont forcés de l'utiliser. Beaucoup des gens que je connais qui utilisent Java l'utilisent parce qu'ils pensent qu'ils doivent le faire. Soit c'est quelque chose qu'ils pensaient devoir faire pour obtenir des fonds, soit quelque chose qu'ils pensaient que les clients voudraient, soit quelque chose qu'on leur a dit de faire par la direction. Ce sont des gens intelligents ; si la technologie était bonne, ils l'auraient utilisée volontairement.

  6. Il a trop de cuisiniers. Les meilleurs langages de programmation ont été développés par de petits groupes. Java semble être dirigé par un comité. S'il s'avère être un bon langage, ce sera la première fois dans l'histoire qu'un comité a conçu un bon langage.

  7. Il est bureaucratique. D'après le peu que je sais sur Java, il semble y avoir beaucoup de protocoles pour faire les choses. Les vraiment bons langages ne sont pas comme ça. Ils vous laissent faire ce que vous voulez et s'effacent.

  8. Il est pseudo-branché. Sun prétend maintenant que Java est un effort de langage open-source de base comme Perl ou Python. Celui-ci se trouve juste être contrôlé par une entreprise géante. Donc le langage est susceptible d'avoir la même lourdeur terne que tout ce qui sort d'une grande entreprise.

  9. Il est conçu pour les grandes organisations. Les grandes organisations ont des objectifs différents de ceux des hackers. Elles veulent des langages qui sont (censés être) adaptés à une utilisation par de grandes équipes de programmeurs médiocres - des langages avec des fonctionnalités qui, comme les limiteurs de vitesse dans les camions U-Haul, empêchent les imbéciles de faire trop de dégâts. Les hackers n'aiment pas un langage qui leur parle de haut. Les hackers veulent juste de la puissance. Historiquement, les langages conçus pour les grandes organisations (PL/I, Ada) ont perdu, tandis que les langages des hackers (C, Perl) ont gagné. La raison : le hacker adolescent d'aujourd'hui est le directeur technique de demain.

  10. Les mauvaises personnes l'aiment. Les programmeurs que j'admire le plus ne sont pas, dans l'ensemble, captivés par Java. Qui aime Java ? Les costumes, qui ne connaissent pas un langage d'un autre, mais savent qu'ils entendent tout le temps parler de Java dans la presse ; les programmeurs des grandes entreprises, qui sont étonnés de découvrir qu'il y a quelque chose de mieux que C++ ; et les étudiants prêts à tout, qui sont prêts à aimer tout ce qui pourrait leur obtenir un emploi (est-ce que ce sera dans le test ?). Les opinions de ces gens changent avec chaque vent.

  11. Son papa est dans le pétrin. Le modèle économique de Sun est sapé sur deux fronts. Les processeurs Intel bon marché, du même type que ceux utilisés dans les machines de bureau, sont maintenant plus que suffisamment rapides pour les serveurs. Et FreeBSD semble être au moins aussi bon qu'un OS pour serveurs que Solaris. La publicité de Sun implique que vous avez besoin de serveurs Sun pour des applications industrielles solides. Si c'était vrai, Yahoo serait le premier à acheter des Suns ; mais quand j'y travaillais, les serveurs étaient tous des boîtes Intel fonctionnant sous FreeBSD. Cela ne présage rien de bon pour l'avenir de Sun. Si Sun rencontre des problèmes, il pourrait entraîner Java dans sa chute.

  12. Le DoD l'aime. Le département de la Défense encourage les développeurs à utiliser Java. Cela me semble le signe le plus accablant de tous. Le département de la Défense fait un excellent (bien que coûteux) travail de défense du pays, mais il aime les plans et les procédures et les protocoles. Leur culture est l'opposé de la culture des hackers ; sur les questions de logiciel, ils ont tendance à parier faux. La dernière fois que le DoD a vraiment aimé un langage de programmation, c'était Ada.

Gardez à l'esprit que ce n'est pas une critique de Java, mais une critique de sa couverture. Je ne connais pas assez Java pour l'aimer ou ne pas l'aimer. C'est juste une explication de pourquoi je ne me sens pas pressé de l'apprendre.

Il peut sembler cavalier de rejeter un langage avant même d'avoir essayé d'écrire des programmes dedans. Mais c'est quelque chose que tous les programmeurs doivent faire. Il y a trop de technologies à apprendre toutes. Vous devez apprendre à juger par des signes extérieurs lesquelles valent votre temps. J'ai également rejeté cavalièrement Cobol, Ada, Visual Basic, l'IBM AS400, VRML, ISO 9000, le protocole SET, VMS, Novell Netware et CORBA, entre autres. Ils semblaient juste mauvais.

Il se pourrait que dans le cas de Java, je me trompe. Il se pourrait qu'un langage promu par une grande entreprise pour en saper une autre, conçu par un comité pour un public "grand public", promu à outrance, et aimé du DoD, se trouve néanmoins être un langage propre, beau, puissant dans lequel j'adorerais programmer. C'est possible, mais cela semble très improbable.