Tout est incroyable dans les logiciels, mais tout le monde est mécontent



Il y a une position typique que l'on retrouve sur Habré et pas seulement: "même si le matériel s'est amélioré au fil des ans, l'humanité a réduit l'effet à néant en écrivant des logiciels pires".

Comme, il y a plus de cœurs dans les processeurs, mais cela ralentit plus que jamais. Electron et Slack sont des créatures des ténèbres qui sont venues nous voler le bonheur et la mémoire. Les applications mobiles sont devenues plus voraces que les anciens systèmes d'exploitation. Et dans les systèmes d'exploitation eux-mêmes, il n'y a vraiment aucun progrès, mais pour une raison quelconque, ils continuent de grossir. Que ce soit quand les gens savaient comment installer le système d'exploitation sur une disquette!

Je dirai directement: quand je vois de telles déclarations, ils me bombardent. À mon avis, ils manquent un certain nombre de facteurs importants. Et à la fin, la situation ressemble au discours classique de Louis X Kay " Tout est incroyable et personne n'est heureux"": Tout était étonnamment bon, et les gens sont assis et se plaignent.

Par conséquent, j'ai décidé de décrire ces facteurs manqués. Comme le texte s'est avéré précis, je tiens à souligner que mon opinion est purement personnelle (bien que je fasse référence à la conférence de l'entreprise dans laquelle je travaille).

Sélectivité de la mémoire


On sait qu'il y a un effet nostalgique "plus tôt, l'herbe était plus verte et la musique était meilleure". Mais, à mon avis, pour beaucoup, cet effet prend des proportions effrayantes, lorsque les sensations s'écartent de façon dramatique de la réalité.

Je parle de déclarations comme celle-ci: "Presque tout sur un ordinateur semble plus lent qu'en 1983." A en juger par les milliers de likes, ce n'est pas une opinion isolée, mais une opinion massive.


Ma première réaction: "Eh bien, comment s'est passé le streaming de vidéo 4K en 1983?" C'est-à-dire, pour commencer, rappelons que la plupart des applications informatiques d'aujourd'hui étaient auparavant impossibles, y compris juste à cause de la vitesse. Une fois, un film (même pas en 4K, mais en 1080p) devait être téléchargé pendant des mois, puis l'ordinateur ne pouvait pas le lire avec 24 FPS. Et comment alors comparer la vitesse actuelle avec une vitesse qui serait si prohibitive qu'elle n'existait pas du tout?

Deuxième réaction: oui, certaines choses qui sont passées de la ligne de commande à l'interface graphique peuvent y prendre plus de temps. Je suis prêt à croire que Word en 2020 démarre plus lentement que l'éditeur de console vi en 1983 (je ne peux pas comparer personnellement: c'était la première fois que j'étais sur mon ordinateur dans les années 90). Mais si cela est si important pour vous, vous pouvez également utiliser la ligne de commande pour de nombreuses «tâches des années 80» en 2020. J'écris ce texte en ce moment dans vim - un excellent éditeur que l'écosystème de plugins aide à suivre le temps. Il a fière allure sur l'iMac Retina moderne: les lettres sont devenues très claires et fonctionnent toujours instantanément. Quel est le problème?

Mais la chose la plus importante n'est même pas dans les deux choses nommées. Le plus important est le suivant: à mon avis, nous avons commencé à oublier le ralentissement des ordinateurs. Quand quelque chose commence à ralentir plus fortement, nous le remarquons immédiatement - mais quand quelque chose devient plus rapide ou plus facile, nous le prenons pour acquis et oublions le passé.

À toutes les personnes qui écrivent «tout était plus rapide», j'ai cette question: vous souvenez-vous, par exemple, de cela?


J'avoue honnêtement: je ne m'en souviens pas particulièrement. Lorsque j'éteins l'ordinateur aujourd'hui, je ne pense pas au fait que je me suis assis et ai attendu il y a vingt ans entre appuyer sur un bouton du système d'exploitation et appuyer sur un bouton de l'unité centrale. J'ai juste pris pour acquis que maintenant ce n'était plus si nécessaire, et j'ai oublié ce qui était différent.

Avec le démarrage de l'ordinateur, il y a également eu de grands changements. Maintenant, je m'assois à l'aimak, j'appuie sur une touche, et après une seconde, il est prêt à fonctionner (grâce au SSD et au mode veille). Quand, dans mon enfance, j'attendais que Windows démarre à partir du disque dur, j'aurais à peine cru que je vivrais pour le voir.

"Quand dans une lettre il y a des centaines d'images, elle s'ouvre terriblement lentement, parfois même dix secondes!" Je comprends que cela peut être ennuyeux - mais écoutez, en 2000, pour vérifier le courrier, j'ai d'abord apprécié les trilles du modem pendant une minute, puis j'ai attendu que la page principale du courrier soit chargée lentement, puis la lettre elle-même n'était pas non plus chargée immédiatement - et ce n'était pas le cas pas d'images du tout, juste du texte. Aujourd'hui, cela s'ouvrirait sans tarder. Peut-être n'avez-vous simplement pas besoin de marteler sur mille images un moyen de communication inventé pour un autre? Et avant de déclarer «tout s'est mal passé», réfléchissons: combien de temps une lettre avec autant d'images s'ouvrirait-elle en 2000?

Ou voici un autre souvenir perdu dans le temps, comme des larmes sous la pluie. Une telle blague était populaire dans les années 2000: "Un ordinateur lent, c'est quand on connaît les noms de tous les développeurs Photoshop." Pour ceux à qui cela ne veut rien dire: alors Photoshop en spirale était très populaire en Russie, et chaque fois qu'il a été lancé, les Russes ont dû le regarder longtemps:


Oh, j'ai réalisé maintenant que je connais une de ces personnes - Sean Parent a parlé chez nous C ++ Russie

Maintenant, comparez. Aujourd'hui, ils plaisantent "une fois qu'il a fallu deux kilo-octets de mémoire pour lancer un homme sur la lune, et maintenant vous avez besoin de deux gigaoctets pour lancer Slack". Cela semble mauvais, mais remarquez-vous la différence? Peu importe la quantité de RAM que Slack consomme, les utilisateurs ne rencontrent pas la situation «vous pouvez aller prendre le thé au début du programme». Tout s'est amélioré, mais nous ne l'avons pas remarqué.

Ou voici un artefact historique révélateur: la série Masyanya «Télécharger» (2002). Les héros sont extrêmement inquiets de la déconnexion, dans laquelle vous devez télécharger à nouveau le fichier.


Remarque: le fichier qu'ils téléchargent pèse 591 kilo-octets. Les personnages craignent de devoir recharger un demi-mégaoctet. Telle est la situation réelle en 2002.

À titre de comparaison, un nouvel exemple de la vie. J'ai eu un petit problème technique sur mon Mac, sur Stack Overflow j'ai trouvé le conseil «d'installer Xcode et d'accepter ses conditions d'utilisation». Ma réaction: il est étrange de télécharger un IDE de 8 gigaoctets en un seul clic, mais si cela aide, pourquoi pas.

Autrement dit, la taille des programmes a augmenté au fil des ans (à l'époque de Masyan, les gens de «8 gigaoctets IDE» se déplaçaient les cheveux), mais il est devenu beaucoup plus facile de les télécharger et notre vie s'est beaucoup améliorée.

Eh bien, le dernier exemple de cette partie concerne les «applications mobiles gonflées». Des articles outragés comme «Parfois» écrivent à ce sujet.La taille des applications est hors de contrôle ":" depuis quand LinkedIn a-t-il commencé à occuper 275 mégaoctets sur le téléphone?! " En 2018, il a été possible de lire la plainte «après avoir installé les applications, il ne me restait que des gigaoctets pour les photos».

Je ne mentirai pas, ces 275 mégaoctets de LinkedIn me posent aussi des questions. Mais je me souviens comment en 2010, sur Habré, ils ont écrit qu'Alfa-Bank avait une application mobile. Il pesait 30 mégaoctets - aujourd'hui, une telle taille n'aurait soulevé aucune question. Et puis dans les commentaires, ils ont écrit:



Savez-vous pourquoi? À cette époque, un utilisateur russe pouvait marcher, par exemple, avec HTC Hero. Regardons ses caractéristiques: "stockage - 512 Mo, 165 pour les applications". 165 mégaoctets au total pour toutes les applications installées! Dans de telles circonstances, je devais constamment choisir celles qui étaient les plus importantes et celles dont vous pouviez vous passer. Et pour en installer un de 30 mégaoctets, il faudrait en démolir plusieurs autres à la fois. Ce fut une douleur.

Et si nous pouvions revenir à 2010, approcher les personnes qui éprouvent cette douleur et leur dire la phrase de 2018, "après avoir installé des applications, il ne me reste que des gigaoctets pour les photos", je pense que nous serions battus. Ces mots ne sonneraient pas une plainte, mais une moquerie et une vantardise.

Et même à partir de 2018, lorsque cette plainte est apparue, la situation a réussi à s'améliorer: maintenant le budget du Xiaomi Mi A3 dans la version de base est équipé de 64 gigaoctets, donc après l'installation des applications, il y aura évidemment beaucoup plus d'un gratuit.

Oui, les applications ont considérablement augmenté en 10 ans. Mais le volume d'espace en même temps a augmenté de CENT. Autrement dit, la vie est devenue dix fois meilleure.

Et vous rappelez-vous ce que c'était d'utiliser un smartphone en 2010 et combien de douleurs différentes «tout ralentit» là-bas?

  • Une petite quantité de RAM signifiait que l'application devait constamment fonctionner à partir de zéro et ne pas passer immédiatement à une déjà en cours d'exécution.
  • Et les processeurs basse consommation les ont lancés très lentement à partir de zéro.
  • Je ne veux pas me souvenir de la vitesse de l'Internet mobile.
  • , USB 2.0 .

L'utilisation d'un smartphone ressemblait à une attente constante: peu importe ce que vous voulez faire, cela inclut des périodes de «position debout et stupide». Si vous êtes dans la rue et que vous avez besoin d'une carte, vous vous tenez immobile et attendez d'abord que l'application daigne démarrer, puis attendez que la carte qu'elle daigne charger. Et vous payez considérablement pour le trafic consommé en même temps.

Par rapport à cela, nous vivons tous maintenant dans des conditions célestes, mais en même temps, nous nous plaignons activement. Cela ressemble à des "problèmes du premier monde" - quelque chose comme "Je veux lire Twitter couché, en tenant le téléphone sur mon visage, mais vous pouvez accidentellement le laisser tomber sur vous-même." Eh bien, je sympathise, mais dire dans une telle situation «tout est devenu pire» ressemble à un manque de respect pour le passé et le présent.

: « » . , , . .



«»


Il y a une autre situation typique. Les gens disent que «les logiciels deviennent de plus en plus gonflés et lents, bien que pour l'utilisateur, rien ne change pour le mieux» - et en même temps, ils ne sont pas complètement conscients de ce qui s'y passe réellement.

Comme un petit exemple illustratif. En 2018, il y avait un texte sensationnel de Nikita Prokopov sur les «logiciels gâtés», et entre autres les mots «services Google Play que je n'utilise pas (je n'y achète pas de livres, de musique ou de vidéos) - 300 Mo qui restent assis ici et qui ne peuvent pas être supprimés. "

En lisant ceci, je veux être rempli de colère juste, oui. Mais il y a une mise en garde: en fait, les services Google Play ne consistent pas à «acheter des livres». Il comprend de nombreuses API différentes et, comme indiquéWikipedia, "Tous les principaux services Android sont contrôlés par les services Google Play." Autrement dit, selon toute vraisemblance, Nikita utilise activement ce logiciel, sans le savoir lui-même - c'est simplement que Google lui a donné un nom déroutant.

Mon objectif ici n'est pas de critiquer un article en particulier, mais de montrer une approche générale: nous déclarons souvent «des applications gonflées / ralenties sans raison valable», ne comprenant pas pleinement ces raisons. Ils ont ajouté quelque chose à l'application, ses développeurs ont des informations détaillées sur quoi et pourquoi, mais nous ne l'avons pas - mais pour une raison quelconque, nous nous considérons plus compétents qu'eux dans ce domaine.

Mais à l'intérieur, il y a beaucoup de ce qui n'est pas évident de l'extérieur. Prenons l'exemple des éditeurs de texte: il semblerait que les gens les fabriquent depuis des temps immémoriaux sur le matériel le plus faible, tout est clair avec eux depuis longtemps et il n'y a rien à ralentir ", ce qui pourrait être plus facile". Par conséquent, de l'extérieur, cela ressemble à ceci: si quelque chose ne fonctionne pas instantanément, alors ces développeurs tordus ont oublié comment l'humanité est déjà qualifiée. Mais si vous plongez dans le sujet (nous avons en quelque sorte publié un habrapost à ce sujet), beaucoup de nuances non évidentes sont clairement révélées - et les mots "ce qui pourrait être plus simple" cessent de paraître convaincants.

Ou encore une chose. Les nouvelles concernant les OS mobiles provoquent souvent une telle réaction: «Au cours des huit dernières années, rien d’utile n’a été fait là-bas. Chaque année, avec un peu d'histoires, ils déploient une nouvelle version qui pèse plus que la précédente, mais des différences je ne vois que de nouveaux emojis. Dans le cercueil, j'ai vu ces emojis, retourner l'ancienne version, c'était mieux. "



Écoutez, il semble que tous les informaticiens le savent par expérience: vous pouvez consacrer beaucoup d'efforts à une refactorisation justifiée du backend, et l'utilisateur ne le remarquera même pas, ou vous pouvez changer quelques icônes dans l'interface en une demi-heure, et des discussions animées commenceront entre les utilisateurs. Autrement dit, nous savons que «à l'extérieur», seuls certains changements sont perceptibles, et souvent pas les plus importants. Pourquoi, alors, nous ne réalisons pas que si nous ne remarquons nous-mêmes que des emojis dans la nouvelle version de l'OS, cela parle plus de nous que de l'OS?

Prenez, par exemple, Project Treble d'Android 8.0. Android est connu pour avoir un gros problème: alors que les iPhones sont facilement mis à jour vers de nouvelles versions de système d'exploitation, les téléphones Android restent généralement pour toujours avec la version préinstallée, car leurs fabricants ne veulent pas s'amuser. Et Google a commencé une modification à grande échelle de toute l'architecture afin de simplifier la vie des fabricants et de stimuler les mises à jour. Et bien que Treble n'ait pas complètement résolu le problème, les statistiques montrent une amélioration notable. Autrement dit, pour faire face à un problème urgent, Google a investi beaucoup de travail (refactoriser un tel colosse n'est pas une bonne chose pour vous de rouler sur la fenêtre), et la situation a été partiellement améliorée. À mon avis, l'entreprise a juste besoin de faire face à des problèmes douloureux, elle a tout fait correctement.

Maintenant, dites-moi: si vous n'êtes pas un développeur mobile, en avez-vous entendu parler? Lorsque vous avez acheté un téléphone pour la première fois avec Android 8.0+, cela a-t-il influencé votre opinion sur la nouvelle version? C'est peu probable, car dans les premiers mois d'utilisation du téléphone, cela n'apparaît pas du tout à l'utilisateur. Vous ne pouvez remarquer qu'après un certain temps lorsque la nouvelle version d'Android sera publiée. Et seulement si le fabricant du téléphone fait partie de ceux pour lesquels Treble a pu mettre à jour ses appareils. Et même dans ce cas, l'utilisateur peut ne pas se rendre compte que la mise à jour est due à Google, et dire toujours "qu'il n'a rien fait d'utile en huit ans".

Et cette situation est typique - la «partie sous-marine de l'iceberg» est généralement grande. Lorsque Android a introduit la batterie adaptative (définition «intelligente», quelles applications peuvent avoir une batterie en arrière-plan), avez-vous mesuré si la consommation d'énergie de votre téléphone a changé? Lorsque Google Play Protect en arrière-plan prend soin de votre sécurité, vous souvenez-vous que ce n'était pas le cas auparavant? Lorsque vous avez ajouté la prise en charge du codec vidéo AV1, pensiez-vous que l'avenir de ce codec est très probable et qu'une telle prise en charge est utile? Ou prenez-vous simplement le téléphone, et les emojis frappent, mais le support AV1 ne frappe pas?

Après la sortie de ce poste, un merveilleux fil est apparu delanyce logiciel gonfle en grande partie en raison de la gestion de situations rares. Et puis ce qui se passe: pour 1% des cas où ces situations surviennent, tout s'est beaucoup amélioré - mais 99% des personnes qui ne rencontrent pas ces situations rares ne peuvent pas correctement évaluer les changements.



Et il en résulte que lorsque nous jurons en masse à toutes les «applications gonflées et inhibitrices», dans de nombreux cas, il y avait des raisons objectives à cela. Quelque part, pendant les heures de travail, les gens ont soigneusement pesé tous les avantages et les inconvénients, en ont discuté entre eux et sont arrivés à la conclusion que les avantages l'emportaient. Et puis nous arrivons, nous n'avons aucune idée de ce qui était sur la balance, nous n'allons pas passer du temps sur une étude réfléchie, nous ne voyons que la taille modifiée - et nous concluons avec confiance que «tout s'est mal passé».

Conclusion générale: certaines des affirmations concernant les "logiciels insensés" sont causées par des malentendus. Et faire de telles déclarations sans une étude approfondie des causes n'est pas la stratégie la plus judicieuse.



Attention aux performances


Les déclarations sur les «logiciels gâtés» sonnent comme si les développeurs avaient l'habitude d'économiser de la puissance de calcul, mais maintenant ils voulaient tous cracher sur l'optimisation. Par exemple, il est seulement important que cela fonctionne - et que les besoins en fer soient élevés, donc la loi de Moore va tout gâcher. Si le code est exécuté lentement, il mange de la mémoire comme s'il était en lui-même et prend beaucoup de place - et ainsi de suite, personne ne s'en souciera et n'améliorera quelque chose.

Écoutez, ce n'est tout simplement pas vrai. À titre d'exemple distinct: Facebook Messenger a récemment été réécrit, et il est rapporté que la productivité a doublé et la taille a quadruplé. Et aux mots ci-dessus que l'application LinkedIn pèse 275 mégaoctets - je l'ai vérifié maintenant et j'ai vu les mots "195,4 Mo" dans l'App Store, il semble qu'ils ont également réussi à la réduire d'une fois et demie. Autrement dit, les deux sociétés ont clairement pensé à la consommation de ressources et ont alloué beaucoup de main-d'œuvre pour les réduire, qui pourrait être dépensée pour «scier des fonctionnalités».

Et puisque je travaille avec des conférences pour les développeurs et que je croise beaucoup d'entre eux (et à partir de différentes piles), je peux voir quels sujets les intéressent. Ce dont ils écoutent les rapports, ce dont ils parlent et écrivent des articles.

Et la productivité est exactement l'un de ces sujets. Par les noms de rapports comme "Optimiser l'heure de lancement des applications iOS"on le voit: les développeurs sont prêts à consacrer 60 minutes à écouter environ millisecondes.

Ils parlent de performances partout - même dans le monde JavaScript ( «les performances JavaScript à travers la longue-vue» ), du moins dans le développement mobile ( «Comment installer un million d'étoiles dans un iPhone» ). Mais surtout, ils disent dans le backend. Je pense que c'est parce que les utilisateurs achètent des smartphones pour eux-mêmes, mais dans le backend, l'entreprise paie pour la puissance de calcul, il y a donc une puissante motivation financière à optimiser.

J'ai récemment fait une expérience simple: j'ai ouvert le programme de notre conférence Java JPointet regardé combien de descriptions de performances il y avait sur les performances. Plus tard, à cause du coronavirus, nous avons reporté la conférence au mois de juin, afin que le programme puisse changer, mais les résultats sont en tout cas indicatifs. Elles sont:

  • "Cette conférence portera sur le réglage des performances du producteur."
  • «Envisagez les méthodes d'optimisation des E / S de fichiers»
  • "Peut-être que pour l'un des modules, vous voulez plus de performances que vous ne pouvez jamais le faire sortir de Java?"
  • «Quelle optimisation liée à Safepoint la machine virtuelle Java HotSpot fait-elle?» De quoi les développeurs doivent-ils se souvenir pour éviter les pauses indésirables? »
  • «Projet Valhalla, types en ligne et tout ce qui les entoure, du modèle logiciel aux performances»
  • "Optimiser les performances des requêtes, le débit et la consommation de mémoire"
  • "Le rapport est consacré à une analyse détaillée de la façon dont le processus d'écriture dans la base de données Apache Cassandra se déroule en termes de performances."

Écoutez, si je menais cette expérience comme un jeu à boire, à la fin j'aurais été ivre. À l'œil nu, vous pouvez voir: les développeurs Java se soucient de la façon dont ils font que leur code fonctionne non seulement, mais aussi rapidement.

De plus: souvent cela les excite même trop! Des gens qui sont étroitement impliqués dans la performance, j'ai entendu à plusieurs reprises qu'il était facile d'en faire trop. Par exemple, par souci d'une légère augmentation de la productivité, les gens utilisent une sorte de hacks sales, qui en fin de compte créent plus de problèmes qu'ils n'en résolvent. Eh bien, à ce sujet, c'était dans la belle keynote d'Alexey Shipilev au JPoint 2017, nous avons fait le décryptage pour Habr .



Pour résumer: alors qu'Internet se lamente «les développeurs étaient paresseux et ont complètement arrêté de penser aux freins», en réalité, de nombreux développeurs y pensent plus que nécessaire .



Signification et opportunité


Et maintenant, à mon avis, la thèse la plus importante.

Oui, les applications au fil du temps nécessitent de plus en plus de ressources, parfois par ordre de grandeur. Oui, nous avons commencé à nous enraciner beaucoup plus dans nos projets, même lorsqu'il y a quelque chose de pas trop nécessaire là-bas, au lieu de passer du temps à isoler le «strictement nécessaire». C'est vrai.

Mais je crois que les applications développées ne font pas des fous les développeurs d'aujourd'hui. De plus, l'inverse est vrai: les

développeurs seraient idiots si les applications n'avaient PAS grandi.

Imaginez un monde dans lequel le matériel évolue activement et l'approche du développement logiciel reste la même. Les programmes tiendraient toujours dans le volume de la disquette, bien que personne n'aurait utilisé la disquette elle-même. Au nom de la performance, à peu près tout serait écrit en C ++. Tous les développeurs descendraient constamment à des niveaux bas et connaîtraient chaque endroit où quelques octets peuvent être extraits. Il n'y a pas «maintenant, nous allons installer cinq bibliothèques pour cette tâche», seulement des solutions qui ont été soigneusement vérifiées pour un projet spécifique, dans lesquelles il n'y a pas de ligne supplémentaire. En général, des vacances d'optimisation et une approche soignée des ressources. Tout cela est maintenant regretté comme une «compétence perdue».

Savez-vous quelle impression cette image me fait? Une grande famille a été forcée de vivre dans une petite pièce, alors elle a appris à placer les choses avec une précision millimétrique et a maîtrisé l'art secret de créer des lits à cinq niveaux. Et puis elle a déménagé dans un spacieux appartement de plusieurs pièces - mais par habitude, elle n'y a pris qu'une seule pièce, elle a laissé toutes les autres vides. Les gens sont toujours assis l'un sur l'autre.

Question: Pensez-vous que c'est fou? S'il était possible de donner à tout le monde beaucoup d'espace, alors pourquoi le conserver? Quoi de mieux de l'ancien savoir-faire des lits à cinq niveaux, si en même temps il n'y a nulle part où inviter quelqu'un à visiter? Est-il temps de maîtriser la nouvelle compétence de choisir un lit king size?

Il en va de même pour les logiciels. Si à une époque où même les smartphones à petit budget ont 64 gigaoctets chacun, nous connaîtrons «le temps d'exécution de Kotlin augmentera notre application de mégaoctets», alors nous deviendrons cette famille. Détendez-vous, un endroit pour cela est nécessaire pour que quelque chose soit dedans. S'il est gaspillé, il ne fait rien de mieux. S'il y a beaucoup d'espace, et pour une raison quelconque, un piano est nécessaire, vous pouvez le configurer en toute sécurité sans vous soucier des centimètres carrés.

Slack - c'est le piano. D'accord, il mange beaucoup de mémoire, mais avez-vous entendu des non-informaticiens se plaindre de lui comme ils se plaignaient de Photoshop? Selon mes sentiments, les utilisateurs ordinaires ont déjà suffisamment d'espace pour que ce «piano» ne les empêche pas de «se promener dans la pièce». Oui, vous pouvez le remplacer par un piano et économiser de l'espace. Mais si vous vivez dans un palais, et au fil des ans, la superficie du palais devient encore plus grande, alors pourquoi?

À mon avis, à cause de Slack, ce sont surtout des informaticiens expérimentés qui ont besoin de RAM pour d'autres tâches difficiles. Mais les informaticiens sont une autre histoire: développer une métaphore d'appartement, ce sont des gens dont l'atelier est fait à partir d'un appartement. Eh bien, oui, peu importe le palais que vous fournissez, toutes les pièces seront occupées par quelque chose de très important. Et puis le piano peut interférer, car vous pouvez mettre un tour à la place. Mais la plupart des gens dans le monde vivent différemment, ils n'ont pas besoin de tours à la maison et il y a déjà suffisamment de ressources pour leur mode de vie.

Et dans une telle situation, il est fébrile d'éviter tout ce qui prend de la mémoire, alors qu'il y en a déjà beaucoup - c'est comme avec les gestionnaires de tâches mobiles, où les utilisateurs battent les applications en cours d'exécution pour «effacer la RAM». À plusieurs reprises, les créateurs de plateformes mobiles ont déclaré: «Arrêtez, fous. Le système lui-même tuera les applications s'il n'y a pas assez de mémoire, et pourquoi devraient-elles être clouées avant? Quel est l'intérêt d'acheter un smartphone avec une grande quantité de RAM, puis de le garder vide et de ne pas utiliser ce qu'il a payé? »


Il semble optimisé. Voulez-vous vivre ici?

Et je me souviens aussi de l'histoire avec "l'erreur 2000". Quelqu'un de l'informatique du milieu du XXe siècle dans la vieillesse se souvient: «Nous étions parmi ceux qui l'ont fait naître. Nous avons ensuite enregistré chaque octet. Et lorsque nous avons eu l'idée que vous pouvez garder l'année en deux chiffres, pas quatre, nous nous sommes sentis très intelligents. Nous avons enregistré deux octets dans un tas d'endroits! Et ce n'est que vers la fin du siècle que les conséquences sont devenues claires. »

Oui, à cette époque, l'enregistrement de l'année sur deux chiffres semblait probablement une décision raisonnable. Et il incarne directement tout ce qui préconise une approche «prudente». C'est là qu'ils ont vraiment atteint leurs limites en s'occupant des ressources.

Mais ensuite, de nombreuses années plus tard, d'autres personnes ont dû dépenser beaucoup de ressources pour comprendre les conséquences de cette décision et éviter les problèmes.

Et maintenant, lorsque les deux octets enregistrés n'aideront plus personne et que les conséquences négatives sont connues, il serait très étrange de garder l'année comme ça.

Donc: une grande partie de ce que je veux chanter aujourd'hui comme «une conservation raisonnable des ressources» à l'avenir ressemblera à la même «économie sur les matchs», qui a dépensé plus de ressources qu'elle n'en a économisé. Par exemple, car le temps du développeur est également une ressource très précieuse, et il n'est souvent pas inclus dans les calculs ici. Si vous êtes allé au-delà de l'alignement des données et que votre application est devenue un peu plus petite et plus rapide, mais que vous y avez consacré une semaine, ce qui aurait pu être utile, avez-vous rendu l'utilisateur meilleur ou pire?

, « , , ». .

— . , , .

, - ( ), . .




J'anticipe l'objection dans les commentaires: "Mais la tâche X a commencé à être exécutée vraiment plus lentement pour moi qu'il y a 13 ans, rendez-moi ma 2007e."

Ne vous méprenez pas: je n'essaie pas de dire qu'il n'y a pas de telles tâches. Il y en a . Et la surutilisation des dépendances se produit. Et le bloatware se produit. Lorsque j'entends dire qu'il y a un montage vidéo dans Photoshop, je ressens le même «pourquoi», comme si vous le faisiez. Lorsque j'ai lu que la création d'une application avec create-react-app signifie immédiatement 4304 répertoires contenant 28678 fichiers, je me demande également si nous sommes allés ailleurs. Il existe de nombreux problèmes réels qui méritent d’être abordés.

Ma seule affirmation est qu'en relation avec ces problèmes, il existe une sorte de secte radicale qui croit au bout du monde en raison de la prolifération des logiciels. Ils réécrivent l'histoire dans cette secte («ça fonctionnait plus vite!»), Ils comprennent mal ce qui se passe («pourquoi Windows a grandi au fil des ans, rien n'y a vraiment changé»), des choses imméritées sont dites sur les développeurs («ils ne veulent rien optimiser ") Et aller aux extrêmes" économisons chaque octet, même lorsque cela aggrave les utilisateurs. " Ne faisons pas ça.

Bien sûr, mes objections à la position radicale se sont avérées quelque peu radicales (juste dans le sens opposé). Vous pouvez également leur reprocher, et ils peuvent également être appelés une secte. Mais le but de cet article n'est pas de faire de chaque mot de moi la vérité ultime. Son objectif est de rendre les gens moins impliqués dans les sectes.

La principale conclusion est ennuyeuse et banale, mais non moins correcte: tout dépend de la situation spécifique. L'optimisation n'est pas un mal absolu ni un bien absolu. Ils peuvent à la fois aider et nuire. Il y a des situations où les optimisations en valent clairement la peine, et des situations où elles ne le valent clairement pas. Et il y a des situations intermédiaires où différentes personnes considéreront «ça vaut le coup ou pas» de différentes manières, et aucune d'entre elles n'aura plus raison, et c'est normal.

Et si quelqu'un, y compris moi, vous dit le contraire - c'est un sectaire, poursuivez-le dans le cou.

All Articles