Contre l'Orienté-Objet!

Veuillez lire cet avertissement.

Faré -- François-René Rideau -- Ðặng-Vũ Bân
.....

Contre l'Orienté-Objet!

La démocratisation de l'informatique a ouvert la voie au meilleur comme au pire. De nouveaux talents ont pu s'exprimer, et le progrès a pu être partagé par tous; mais la médiocrité et l'escroquerie intellectuelles se sont emparé de la scène informatique, d'où l'émergence de vastes fumisteries reconnaissables à ce qu'au lieu de véhiculer des idées, et de proposer des structures de pensées permettant de comprendre les problèmes, elles propagent des slogans, et présentent des "méthodes" fondées sur des constructions arbitraires, où des intuitions approximatives à la validité toute relative sont présentées comme des vérités scientifiques absolues, solutions uniformes à tous les problèmes. Tout un jargon naît et fleurit alors autour de ces méthodes, avec lequel des joueurs de pipeau écrivent de longues phrases qui veulent dire tout et rien; des armées d'experts s'échinent à donner chacun leur définition différente des mots employés dans le vocabulaire ésotérique employé, à inventer les problèmes dont les systèmes proposés sont les solutions, à donner de nouveaux noms à ceci et à cela, à tout obscurcir par des discours prétentieux.

L'Intelligence Artificielle, en son temps, quoique née des nobles aspirations des premiers pionniers, fut la première à se transformer peu à peu en méthode douteuse; mais la grande qualité des fondateurs de la discipline, issus de l'élite que constituait encore la caste des informaticiens, ainsi que le coût élevé à l'époque des machines appropriées pour utiliser ces techniques, empêcha la transformation de se faire complètement, en limitant le taux de sombres crétins dans l'audience de l'IA, par l'exclusion des plus démunis intellectuellement et économiquement.

La vaste entreprise de crétinisation à grande échelle commença réellement avec l'avènement de langages comme le COBOL ou le BASIC, prétendant rendre accessible à tous l'informatique. En réalité, derrière leur syntaxe facile d'accès, ces langages présentaient une absence totale de structure permettant aux utilisateurs de transcrire les programmes selon une compréhension structurée des problèmes à résoudre, pour la simple et bonne raison que les auteurs de ces langages ne comprenaient eux-mêmes pas grand-chose à ces problèmes. Le cahier des charges de ces langages était d'avoir une syntaxe pseudo-anglaise, et d'être assez outrageusement simplistes pour que même leurs sombres idiots d'inventeurs puissent en réaliser un interpréteur. Ainsi commença-t-on à former à grande échelle des informaticiens qui ne comprenaient rien à l'informatique, et apprenaient à écrire des programmes dans des langages inadaptés, à faire les uns comme les autres, sans rien comprendre.

Puis vint l'Orienté-Objet ..... Montée en Puissance ..... Multimédia ..... à la Pointe du progrès ..... Incontournable ..... Client-serveur ..... Design Patterns ..... Méthode ..... Orienté <machin> ..... (job) security through obscurity ..... original intuitions: good stuff (meta-level uniformity matters; modularity matters; identity matters; structure matters; ) vs initial cruft (idiosyncrasies of the initial expression). accumulated confusions: between intension and extension, between identity and structure, between metastructure and structure, between modularity and encapsulation, etc. more idiosyncrasies: message-passing vs function calling; classes vs clones; sequential vs parallel evaluation; etc. really stupid beliefs: that an order (program infrastructure) is necessarily reducible to an order (class hierarchy). ..... starts from nice (at the time) intuitions: "everything is ``an object''"; expressed at first in very idiosyncratic ways; then a tradition happens, and lots of cruft is added, as the result of the usual try-and-select historical process. then sanctify all the confused assertions into a religion, despite the internal contradictions in traditional lore, despite the growing contradictions between some of the cruft and the good parts of original intuition, despite the social context being different enough that many parts of the original intuition are not adapted, despite scientifical understanding having progressed since the original intuition to the point that most of it can be successfully analyzed with simple scientific techniques, with the good stuff being separated from the bad stuff The OO behavior is typically that of a major religion, with its factions and sects, its main orthodoxies, etc. The problem with it is refuse of questioning dogmas and tradition, refuse to use rational thinking to analyze refuse to take the advances of the original intuition as relative to their time, and move beyond them, refuse that science be able to explain it all, both the technical contents and the historical events. ..... Having seen (in scientific articles as well as at international symposiums) how world-class computer scientists were subject to religious behavior in their own field of knowledge (following the "OO" church), I have no more illusion about the capacity of people to enslave their mind in religions. ..... Certainly, some people of talent have managed to achieve great things while staying within the orthodoxy of the church; however they did not do it thanks to the orthodoxy, but despite it!

OO is the paragon of ignorance-reuse. Anything that one confusedly feels but doesn't bother to try to correctly understand, one calls "an object" or an attribute thereof. That's OO. Then one grows a mess of a semantically crappy system around stupid assumptions that one never dares question. That's OO. Anything that roughly looks like a general law, one just gives it a name, and one ends up with lots of gross approximations to actual laws, that bring confusion instead of understanding. That's OO. OO is the reign of the ignorant over the brainwashed. Even those who aren't completely ignorant or brainwashed have to abide by the buzzwords, or be doomed and excluded from the industry. That's OO.

  • OOP bad

    refer to the OO FAQ

    confusion what's OO? "everything is an object" what's "everything"? is the name of the object an object? is the size of the universe an object? is each transistor on each chip of the computer an object? is the user an object? Well, if "everything" already stands for "everything that's an object", then that's a pretty useless statement. And as far as describing an "OO" system goes, that's the most that can be done. You'll always find something that was not an object: the comment, the class, the interpreter, the language, the CPU, or whatelse. If the slogan no more describes any given system, but instead a process for building new systems, then no existing "OO" system can claim to be "OO". And then it sounds more like a call-for-reification! Hence, the only systems that can honestly claim they abide by that slogan are reflective systems!

    remains only encapsulation. but encapsulation of what? data? structures exist even in macro-assemblers like C! code? in any self-respecting high-level languages, there are first-class higher-order functions, so code is a particular case of data, and once you can encapsulate data, so can you do with code. (now, few "OO" languages are either high-level or self-respecting). semantic dispatch? now, there we are. only, it's getting things all wrong: it's a confusion of metalevel! which might be ok in trivially typed dynamic languages (CLOS, Smalltalk) but not in any other language.

    All in all, OO is but hype. Now, there might be some good languages that are "OO". but they won't be good because of the "OO", but despite it: "OO" won't be their primary feature, just a buzzword-compliant extension to a solid base, or just a cheat to bring the buzzword into an otherwise good design. Languages whose central feature is "OO" are forcibly as bad as "OO" itself: they are empty languages with no design.


    Retour: