LA COUVERTURE DE JAVA
OriginalAvril 2001
Cet essai a été développé à partir de conversations que j'ai eues avec plusieurs autres programmeurs sur les raisons pour lesquelles Java semblait suspect. Ce n'est pas une critique de Java ! C'est une étude de cas sur le radar des hackers.
Au fil du temps, les hackers développent un nez pour la bonne (et la mauvaise) technologie. Je pensais qu'il pourrait être intéressant d'essayer d'écrire ce qui a rendu Java suspect à mes yeux.
Certaines personnes qui ont lu cela pensent que c'est une tentative intéressante d'écrire sur quelque chose qui n'a pas été écrit auparavant. D'autres disent que je vais avoir des problèmes pour sembler écrire sur des choses que je ne comprends pas. Donc, juste au cas où cela ferait du bien, laissez-moi 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 à sa couverture" a vu le jour à une époque où les livres étaient vendus sous des couvertures en carton simples, à relier par chaque acheteur selon son propre goût. À cette époque, on ne pouvait pas juger un livre à sa couverture. Mais l'édition a progressé depuis : les éditeurs d'aujourd'hui travaillent dur pour faire de la couverture quelque chose par lequel on peut juger un livre.
Je passe beaucoup de temps dans les librairies et j'ai l'impression d'avoir maintenant 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é principalement devant des ordinateurs, et j'ai l'impression d'avoir appris, dans une certaine mesure, à juger la technologie par sa couverture également. Cela peut être juste de la chance, mais je me suis sauvé de quelques technologies qui se sont révélées être de véritables flops.
Jusqu'à présent, Java me semble être un flop. Je n'ai jamais écrit de programme Java, je n'ai jamais fait plus qu'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 pourrais me tromper ; faire des prédictions sur la technologie est une affaire dangereuse. Mais pour ce que ça vaut, comme une sorte de capsule temporelle, voici pourquoi je n'aime pas l'apparence de Java :
-
Il a été tellement énergétiquement promu. Les véritables standards n'ont pas besoin d'être promus. Personne n'a eu besoin de promouvoir C, ou Unix, ou HTML. Un véritable 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, voire plus grand, juste sur la force de ses propres mérites.
-
Il vise bas. Dans le document de travail 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 tirées de langages plus avancés. Comme les créateurs de sitcoms ou de malbouffe ou de circuits touristiques, les concepteurs de Java ont consciemment conçu un produit pour des personnes pas aussi intelligentes qu'eux. Historiquement, les langages conçus pour être utilisés par d'autres ont été mauvais : Cobol, PL/I, Pascal, Ada, C++. Les bons langages ont été ceux qui ont été conçus pour leurs propres créateurs : C, Perl, Smalltalk, Lisp.
-
Il a des motivations cachées. 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 parler de Java tout le temps 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.
-
Personne ne l'aime. Les programmeurs de C, Perl, Python, Smalltalk et Lisp aiment leurs langages. Je n'ai jamais entendu quelqu'un dire qu'il aimait Java.
-
Les gens sont forcés de l'utiliser. Beaucoup des personnes que je connais utilisant Java le font parce qu'elles estiment qu'elles doivent le faire. Soit c'est quelque chose qu'elles ont ressenti qu'elles devaient faire pour obtenir un financement, soit quelque chose qu'elles 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.
-
Il y a trop de cuisiniers. Les meilleurs langages de programmation ont été développés par de petits groupes. Java semble être géré par un comité. S'il s'avère que c'est un bon langage, ce sera la première fois dans l'histoire qu'un comité a conçu un bon langage.
-
Il est bureaucratique. D'après ce que je sais de Java, il semble y avoir beaucoup de protocoles pour faire les choses. Les langages vraiment bons ne sont pas comme ça. Ils vous laissent faire ce que vous voulez et se mettent de côté.
-
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 est juste contrôlé par une grande entreprise. Donc, le langage est susceptible d'avoir la même lourdeur terne que tout ce qui sort d'une grande entreprise.
-
Il est conçu pour de 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 à l'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 causer trop de dégâts. Les hackers n'aiment pas un langage qui les prend de haut. Les hackers veulent juste du pouvoir. Historiquement, les langages conçus pour de grandes organisations (PL/I, Ada) ont perdu, tandis que les langages de hackers (C, Perl) ont gagné. La raison : le hacker adolescent d'aujourd'hui est le CTO de demain.
-
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 ? Des costards, qui ne savent pas faire la différence entre un langage et un autre, mais savent qu'ils entendent parler de Java dans la presse ; des programmeurs dans de grandes entreprises, qui sont étonnés de découvrir qu'il existe quelque chose d'encore mieux que C++ ; et des étudiants qui se contentent de suivre, prêts à aimer n'importe quoi qui pourrait leur obtenir un emploi (est-ce que cela sera dans le test ?). Les opinions de ces personnes changent avec chaque vent.
-
Son papa est dans une impasse. Le modèle commercial 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 système d'exploitation pour serveurs que Solaris. La publicité de Sun implique que vous avez besoin de serveurs Sun pour des applications de force industrielle. Si c'était vrai, Yahoo serait le premier en ligne pour acheter des Suns ; mais quand j'y travaillais, tous les serveurs étaient des boîtiers Intel fonctionnant sous FreeBSD. Cela présage mal pour l'avenir de Sun. Si Sun rencontre des problèmes, cela pourrait entraîner Java dans sa chute.
-
Le DoD l'aime. Le Département de la Défense encourage les développeurs à utiliser Java. Cela me semble être le signe le plus accablant de tous. Le Département de la Défense fait un excellent travail (bien que coûteux) pour défendre le pays, mais ils aiment les plans, les procédures et les protocoles. Leur culture est l'opposée de la culture hacker ; sur des questions de logiciels, ils auront tendance à parier mal. La dernière fois que le DoD a vraiment aimé un langage de programmation, c'était Ada.
Gardez à l'esprit, ce n'est pas une critique de Java, mais une critique de sa couverture. Je ne connais pas Java assez bien pour l'aimer ou le détester. C'est juste une explication de pourquoi je ne trouve pas que je sois impatient d'apprendre.
Il peut sembler cavalier de rejeter un langage avant même d'avoir essayé d'écrire des programmes avec. Mais c'est quelque chose que tous les programmeurs doivent faire. Il y a trop de technologies là-dehors pour toutes les apprendre. Vous devez apprendre à juger par des signes extérieurs lesquelles vaudront votre temps. J'ai également rejeté de manière cavalier Cobol, Ada, Visual Basic, l'IBM AS400, VRML, ISO 9000, le protocole SET, VMS, Novell Netware et CORBA, entre autres. Elles sentaient 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 saper une autre, conçu par un comité pour un public "grand public", hypé à l'extrême, et adoré par le DoD, soit néanmoins un langage propre, beau et puissant dans lequel j'aimerais programmer. Cela pourrait être le cas, mais cela semble très peu probable.