Boîtes à outils pour l'esprit





Lorsque l'informaticien japonais Yukihiro Matsumoto a décidé de créer Ruby, un langage de programmation qui a aidé à construire Twitter, Hulu et une grande partie du Web moderne, il recherchait une idée tirée d'un roman de science-fiction de 1966 intitulé Babel-17 par Samuel R. Delany. Au cœur du livre se trouve une langue inventée du même nom qui améliore l'esprit de tous ceux qui la parlent. Babel-17 est un langage analytique si exact qu'il vous assure presque la maîtrise technique de toute situation que vous regardez, dit le protagoniste à un moment donné. Avec Ruby, Matsumoto voulait la même chose : reprogrammer et améliorer la façon de penser des programmeurs.

Cela semble grandiose, mais Matsumoto n'est pas une vue marginale. Les développeurs de logiciels en tant qu'espèce ont tendance à être convaincus que les langages de programmation ont une emprise sur l'esprit suffisamment forte pour changer la façon dont vous abordez les problèmes, même pour changer les problèmes que vous pensez résoudre. C'est ainsi qu'ils évaluent les entreprises, les produits, leurs pairs : quelle langue utilisez-vous ?

Concevoir le bébé parfait

Cette histoire faisait partie de notre numéro de mai 2015



  • Voir la suite du problème
  • S'abonner

Cela peut aider les étrangers à comprendre les éditeurs de logiciels qui sont devenus si puissants et précieux, ainsi que les produits et services qui imprègnent nos vies. Une décision qui semble être le type de baseball le plus intérieur - que quelqu'un construise une nouvelle chose en utilisant, disons, Ruby ou PHP ou C - peut soudainement nous affecter tous. Si vous voulez savoir pourquoi Facebook ressemble et fonctionne comme il le fait et quel genre de choses il peut faire pour nous ensuite, vous devez savoir quelque chose sur PHP, le langage de programmation avec lequel Mark Zuckerberg l'a construit.

Parmi les programmeurs, PHP est peut-être le moins respecté de tous les langages de programmation. Un article de blog désormais canonique sur ses défauts l'a décrit comme une fractale de mauvaise conception , et ceux qui l'utilisent volontiers sont considérés comme des amateurs. Il y a ce mythe de l'ingénierie brillante qui est entrée dans Facebook, dit Jeff Atwood , co-créateur du populaire site de questions-réponses sur la programmation Débordement de pile . Mais ils construisaient du code PHP dans Windows XP. C'étaient des hackers au sens presque péjoratif du terme. En l'espace de 10 minutes, Atwood a qualifié PHP de monstre errant, de pandémie et de maison hantée dont les habitants en sont venus à aimer les fantômes.

Choses examinées

  • Babel-17

    Par Samuel R. Delany
    1966



  • OCaml du monde réel Par Yaron Minsky et al.

    O'Reilly, 2013PHPHackScala

La plupart des langages de programmation réussis ont une philosophie globale ou un ensemble de principes directeurs qui organisent leur vocabulaire et leur grammaire - l'ensemble d'instructions possibles qu'ils mettent à la disposition du programmeur - en un tout logique. PHP ne le fait pas. Son créateur, Rasmus Lerdorf, admet librement qu'il vient de le bricoler. Je ne sais pas comment l'arrêter, il a dit dans une interview en 2003 . Je n'ai absolument aucune idée de comment écrire un langage de programmation - j'ai juste continué à ajouter la prochaine étape logique en cours de route.

L'exemple préféré des programmeurs est une fonction PHP appelée mysql_escape_string, qui débarrasse une requête d'une entrée malveillante avant de l'envoyer à une base de données. (Pour un exemple d'entrée malveillante, pensez à un formulaire sur un site Web qui vous demande votre adresse e-mail ; un pirate peut entrer du code dans cet emplacement pour forcer le site à cracher des mots de passe.) Lorsqu'un bogue a été découvert dans le fonction, une nouvelle version a été ajoutée, appelée mysql_ réel _escape_string, mais l'original n'a pas été remplacé. Le résultat est un peu comme avoir deux boutons d'apparence similaire juste à côté l'un de l'autre dans un cockpit d'avion : un qui met le train d'atterrissage vers le bas et un qui le met vers le bas. sans encombre . Ce n'est pas seulement un affront au bon sens, c'est une recette pour un désastre.



Pourtant, malgré le mépris répandu pour PHP, une grande partie du Web a été construite sur son dos. PHP alimente 39 % de tous les domaines , selon une estimation. Facebook, Wikipedia et la principale plateforme de publication WordPress sont tous des projets PHP. C'est parce que PHP, malgré tous ses défauts, est parfait pour commencer. Le nom signifiait à l'origine la page d'accueil personnelle. Il a facilité l'ajout de contenu dynamique comme la date ou le nom d'un utilisateur aux pages HTML statiques. PHP a permis le saut du bricolage avec un site Web site écrire un Web application être si petit qu'il est imperceptible. Vous n'aviez pas besoin d'être un pro.

Le démarrage de PHP a été crucial pour le succès de Wikipédia, déclare Ori Livneh, ingénieur logiciel principal à la Wikimedia Foundation, qui gère le projet. J'ai toujours détesté PHP, me dit-il. Le projet souffre de défauts de conception à grande échelle en raison de sa dépendance à la langue. (C'est en partie pourquoi la fondation n'a pas rendu les pages Wikipédia disponibles dans une version adaptée aux appareils mobiles jusqu'en 2008, et pourquoi le site n'a pas obtenu une interface d'édition conviviale jusqu'en 2013.) Mais PHP a permis aux personnes qui n'étaient pas - ou étaient à peine - ingénieurs en logiciel pour apporter de nouvelles fonctionnalités. C'est ainsi que les entrées de Wikipédia en sont venues à afficher des hiéroglyphes sur les pages d'égyptologie, par exemple, et à gérer les partitions.

Le langage de programmation PHP a créé et soutient la culture d'entreprise de Facebook axée sur les hackers.



Vous n'auriez pas construit Google en PHP, car Google, pour devenir Google, devait très bien faire exactement une chose : il fallait que la recherche soit simple, rapide et méticuleusement bien conçue. Il a été réalisé avec des langages plus raffinés et plus puissants, tels que Java et C++. Facebook, en revanche, est un bazar de petites expériences, un assortiment de boutons, de flux et de gadgets essayant de capter votre attention. PHP est fait pour fabrication – pour préparer rapidement les fonctionnalités.

Vous pouvez presque imaginer Zuckerberg dans son dortoir de Harvard le jour fatidique de la naissance de Facebook, faisant le moins qu'il pouvait pour mettre son site en ligne. Le Web évolue si vite et les utilisateurs sont si inconstants que la seule façon de saisir l'instant est d'être le premier. Peu importait qu'il fasse une grosse boule de boue, une assiette de spaghettis ou une horrible armoire à tuyaux (pour emprunter au riche lexique des programmeurs pour décrire le code désordonné). Il a fait le truc. Les gens pourraient l'utiliser. Il ne pensait pas à du beau code ; il pensait à ses amis se connectant à Le Facebook regarder des photos de filles qu'ils connaissaient.

Aujourd'hui, Facebook vaut plus de 200 milliards de dollars et il y a des pancartes partout sur les murs de ses bureaux : 'Fait c'est mieux que parfait' ; Déplacez-vous vite et cassez des choses. Ces messages audacieux sont censés maintenir les employés en phase avec la culture hacker de l'entreprise. Mais ce sont précisément PHP valeurs. Aller vite et casser des choses est en fait tellement l'essence de PHP que toute personne qui parle la langue pense de cette façon de manière indélébile. Vous pourriez dire que la langue elle-même a créé et soutient la culture de Facebook.

L'arme secrète

Si vous vouliez trouver l'exact opposé de PHP, une sorte d'expérience naturelle pour vous montrer à quoi ressemblait l'autre extrême, vous ne pouviez pas faire mieux que le siège sérieux de Lower Manhattan de la société de négoce financier Jane Street Capital. La société de 400 personnes affirme être responsable d'environ 2% du volume quotidien des transactions sur actions aux États-Unis.

Lorsque je rencontre Yaron Minsky, le responsable de la technologie de Jane Street, il est assis à un bureau avec une machine Enigma en état de marche à côté de lui, l'une des quelques dizaines d'appareils à code de la Seconde Guerre mondiale qui restent dans le monde. Je penserais que c'est le grand gagnant du concours de Coolest Secret Weapon in the Room s'il n'y avait pas la façon dont il continue de parler d'un langage de programmation obscur appelé OCaml. Minsky, docteur en informatique, a convaincu son employeur il y a 10 ans de réécrire tout le système commercial de l'entreprise en OCaml. Avant cela, presque personne n'utilisait la langue pour le travail réel ; c'était développé dans un institut de recherche français par des universitaires essayant d'améliorer un système informatique qui prouve automatiquement des théorèmes mathématiques. Mais Minsky pensait qu'OCaml, qu'il avait appris à connaître à l'université, pourrait remplacer les feuilles de calcul Excel complexes qui alimentaient les systèmes de négociation de Jane Street.

Le principal argument de vente d'OCaml est son système de type, qui ressemble au vérificateur de grammaire de Microsoft Word, sauf qu'au lieu de simplement mettre une ligne verte ondulée sous le code qu'il pense être faux, il ne vous laissera pas l'exécuter. Les programmes écrits avec un système de type ont tendance à être beaucoup plus fiables que ceux écrits sans système, ce qui est utile lorsqu'un programme peut échanger 30 milliards de dollars en un grand jour.

Minsky dit qu'en attrapant des bogues, le système de type d'OCaml permet aux codeurs de Jane Street de se concentrer sur des problèmes plus complexes. On se demande s'ils ont intériorisé le harcèlement constant du système au fil du temps, de sorte qu'OCaml est devenu une sorte de novlangue qui rend impossible d'avoir de mauvaises pensées.

Le hic, c'est que pour tirer pleinement parti du vérificateur de type, les programmeurs doivent ajouter des annotations complexes à leur code. C'est comme si le vérificateur de grammaire de Word vous demandait de schématiser toutes vos phrases. L'écriture de code avec des contraintes de type peut être une nuisance, voire démoralisante. Pour aggraver les choses, OCaml, plus que la plupart des autres langages de programmation, traite une sorte de mathématiques abstraites profondes bien au-delà de la plupart des codeurs. La rigueur de la langue est comme de l'herbe à chat pour certaines personnes, cependant, donnant à Jane Street un avantage inhabituel sur le marché de l'embauche serré pour les programmeurs. Les développeurs de logiciels rejoignent principalement Facebook et Wikipedia malgré PHP. Minsky dit qu'OCaml - avec son livre OCaml du monde réel — aide à attirer un approvisionnement régulier de candidats de haute qualité. L'attraction n'est pas seulement la langue mais le genre de personnes qui l'utilisent. Jane Street est une entreprise où ils jouent aux échecs à quatre dans la salle de pause. La culture de l'intelligence compétitive et l'utilisation d'un langage de programmation sophistiqué semblent aller de pair.

Google semble essayer de réussir une astuce similaire avec Go, un langage de programmation hautes performances qu'il a développé. Destiné à rendre le fonctionnement du Web plus élégant et efficace, il est bon pour développer le type de logiciel à fort enjeu nécessaire pour faire fonctionner les collections de serveurs derrière de grands services Web. Il agit également comme un sifflet de chien pour les codeurs intéressés par le nouveau et le difficile.

Grandir

Fin 2010, Facebook traversait une crise. PHP n'a pas été conçu pour la performance, mais on lui a demandé de fonctionner. Le site grandissait si vite qu'il semblait que si quelque chose ne changeait pas assez radicalement, il commencerait à tomber.

Changer complètement de langue n'était pas une option. Facebook avait des millions de lignes de code PHP, des milliers d'ingénieurs experts dans son écriture et plus d'un demi-milliard d'utilisateurs. Au lieu de cela, une petite équipe d'ingénieurs seniors a été affectée à un projet spécial pour inventer un moyen pour Facebook de continuer à fonctionner sans renoncer à sa langue maternelle hacky.

Une partie de la solution consistait à créer un logiciel, un compilateur, qui traduirait le code PHP de Facebook en code C++ beaucoup plus rapide. L'autre était un exploit d'ingénierie linguistique informatique qui permettait aux programmeurs de Facebook de conserver leur culture PHP-ian mais d'écrire un code plus fiable.

Les startups peuvent utiliser intelligemment la puissance des langages de programmation pour manipuler leur psychologie organisationnelle.

L'équipe de sauvetage l'a fait en inventant un dialecte de PHP appelé Hack. Hack est PHP avec un optionnel système de types ; c'est-à-dire que vous pouvez écrire du PHP simple et rapide - ou, si vous le souhaitez, vous pouvez vous lier au mât, en ajoutant des annotations pour permettre au système de type de vérifier l'exactitude de votre code. Que ce vérificateur de type soit entièrement écrit en OCaml n'est pas une coïncidence. Facebook voulait que ses codeurs continuent à avancer rapidement dans le confort de leur langue maternelle, mais il ne voulait pas qu'ils aient à casser les choses comme ils le faisaient. (L'année dernière, Zuckerberg a annoncé un nouveau slogan d'ingénierie : Avancez rapidement avec une infra stable, en utilisant le raccourci hacker pour l'infrastructure qui permet au site de fonctionner.)

À peu près à la même époque, Twitter a subi une transformation similaire. Le service a été construit à l'origine avec Ruby on Rails, un cadre de programmation Web populaire créé à l'aide de Ruby de Matsumoto et inspiré en grande partie par PHP. Puis vint le déluge d'utilisateurs. Quand quelqu'un avec des centaines de milliers d'abonnés a tweeté, des centaines de milliers de chronologies d'autres personnes ont dû être immédiatement mises à jour. De gros tweets comme celui-ci submergeaient fréquemment le système et obligeaient les ingénieurs à supprimer le site pour lui permettre de rattraper son retard. Ils l'ont fait si souvent que la baleine défaillante sur la page de maintenance de l'entreprise est devenue célèbre à part entière. Twitter a stoppé l'hémorragie en remplaçant de gros morceaux de la plomberie du service par un langage appelé Scala. Il ne devrait pas être surprenant que Scala, comme OCaml, ait été développé par des universitaires, dispose d'un système de typage puissant et récompense l'exactitude et la performance même au détriment de la liberté et du plaisir des programmeurs individuels dans leur métier.

Au fur et à mesure que les startups mûrissent en découvrant enfin d'où proviendront leurs revenus, elles peuvent utiliser intelligemment la puissance des langages de programmation pour manipuler leur psychologie organisationnelle. Concepteur de langage de programmation Guido van Rossum , qui a passé sept ans chez Google et travaille maintenant chez Dropbox, dit qu'une fois qu'une entreprise de logiciels atteint une certaine taille, la seule façon d'éviter le chaos est d'utiliser un langage qui demande plus au programmeur dès le départ. On a l'impression que cela vous ralentit, car vous devez tout dire trois fois, dit van Rossum. C'est pourquoi de nombreuses startups attendent aussi longtemps qu'elles le peuvent avant de faire le changement. Vous perdez certains des hackers fanfarons qui vous ont lancé, et la possibilité que de petites équipes puissent se précipiter sur de nouvelles fonctionnalités. Mais un langage plus exigeant aide les gens de l'entreprise à comprendre le code de l'autre et donne à votre produit la stabilité nécessaire pour faire partie du mobilier de la vie quotidienne.

Le fait que les startups logicielles puissent effectuer de telles manœuvres pourrait même aider à expliquer pourquoi elles peuvent être si puissantes. La portée croissante des ordinateurs en fait partie. Mais ces entreprises ont aussi une capacité unique à se refaire. Au fur et à mesure qu'ils changent et grandissent, ils peuvent faire plus que simplement redessiner l'organigramme. Parce qu'ils sont construits en code, ils peuvent faire quelque chose de beaucoup plus radical. Ils peuvent se recâbler, leur culture, leur façon de penser.

James Somers est écrivain et programmeur à New York. Il travaille à génie.com .

cacher