L'essence du développement logiciel
«Nous devons faire 500 trous dans le mur, j'ai donc conçu une perceuse automatique.» Il utilise des engrenages élégants et précis pour ajuster en continu la vitesse et le couple selon les besoins.
- Génial, elle a un poids idéal. Nous chargeons 500 de ces exercices dans le canon que nous avons fabriqué et tirons sur le mur.Je fais de la programmation depuis 15 ans. Mais dernièrement, lors du développement, il n'a pas été habituel de penser à l'efficacité, la simplicité et la perfection: au point que je suis triste pour ma carrière et pour l'industrie informatique dans son ensemble.
Par exemple, les voitures modernes fonctionnent, disons, à 98% de ce que la conception actuelle du moteur permet physiquement. L'architecture moderne utilise une quantité de matériau calculée avec précision pour remplir sa fonction et rester en sécurité dans ces conditions. Tous les avions ont convergé vers la taille / forme / charge optimale et ont essentiellement la même apparence.
Ce n'est que dans le logiciel qu'il est considéré comme normal si le programme s'exécute au niveau de 1% ou même 0,01% des performances possibles. Personne ne semble avoir d'objection.
Les gens sont même fiers de l'inefficacité du programme, comme «pourquoi s'embêter, les ordinateurs sont assez rapides»:
@tveastman : J'exécute un programme Python tous les jours, il s'exécute en 1,5 seconde. J'ai passé six heures et l'ai réécrit sur Rust, maintenant il fonctionne en 0,06 seconde. Cette accélération signifie que mon temps sera rentable dans 41 ans, 24 jours :-)
Vous avez probablement entendu ce mantra: "Le temps du programmeur est plus cher que celui de l'ordinateur". Cela signifie que nous passons du temps informatique à une échelle sans précédent. Achèteriez-vous une voiture avec un débit de 100 litres aux 100 kilomètres? Que diriez-vous de 1000 litres? Avec les ordinateurs, cela se produit tout le temps.
Tout est insupportablement lent
Jetez un coup d'œil: les ordinateurs portables sont des milliers de fois plus puissants que ceux qui ont amené une personne sur la lune. Cependant, un site sur deux ne peut pas offrir un défilement fluide de 60 FPS sur le dernier MacBook Pro haut de gamme. Je peux jouer confortablement à des jeux, regarder des vidéos 4K, mais pas faire défiler les pages Web! Est-ce que ça va?
L'application de
messagerie Google Inbox dans le navigateur Chrome du même Google,
prend 13 secondes pour ouvrir un e-mail de taille moyenne :
Il anime également des formulaires blancs vides au lieu d'afficher leur contenu, car c'est le seul moyen d'animer quelque chose sur une page Web avec des performances décentes. Non, pas 60 FPS, mais plutôt "aussi vite que possible sur cette page". J'attends avec impatience ce que la communauté Web offrira lorsque les écrans 120 Hz deviendront grand public. Ils font à peine face à 60 Hz.
La mise à niveau de Windows 10
prend 30 minutes . Que peut-on faire si longtemps? Ce temps est suffisant pour formater complètement mon disque SSD, télécharger la dernière version et l'installer environ 5 fois de suite.

Pavel Fatin : Taper dans l'éditeur est un processus relativement simple, donc même 286 pourrait fournir un processus de frappe assez fluide.
Dans les éditeurs de texte modernes, les retards de frappe sont plus longs que dans les Emacs de 42 ans. Éditeurs de texte! Quoi de plus simple? Pour chaque frappe, il vous suffit de mettre à jour la petite zone rectangulaire à l'écran, et les éditeurs de texte modernes ne peuvent pas le faire en 16 ms. Et c'est beaucoup de temps. BEAUCOUP. Un jeu 3D remplit l'écran de centaines de milliers (!!!) de polygones pour les mêmes 16 ms, et traite également les entrées, raconte le monde et charge / décharge dynamiquement les ressources. Comment ça?
La tendance est que les logiciels ne deviennent pas du tout plus rapides et plus fonctionnels. Nous obtenons un équipement plus rapide sur lequel un logiciel avec les mêmes fonctions bascule plus lentement qu'auparavant. Tout fonctionne beaucoup plus lentement que la vitesse maximale. Vous êtes-vous déjà demandé pourquoi votre téléphone démarre de 30 à 60 secondes? Pourquoi ne peut-il pas démarrer, disons, en une seconde? Il n'y a aucune limitation physique. Personnellement, j'aimerais ça. Je veux que les développeurs atteignent la limite, en utilisant chaque bit pour les performances.
Tout est ENORME
Et c'est ballonnement. Les applications Web peuvent s'ouvrir dix fois plus rapidement si vous bloquez simplement les publicités. Google supplie tout le monde d'arrêter les freins à l'aide de l'initiative AMP - une solution technique qui ne nécessite aucune technologie, juste un peu de bon sens. Si vous supprimez le ballonnement, Internet commencera à fonctionner à une vitesse folle. Est-ce vraiment difficile à comprendre?
Le système Android sans applications
occupe près de 6 Go . Pensez juste une seconde à quel point l'énorme nombre est indécent. Qu'est-ce que c'est, les films HD? Je pense principalement au code: noyau, pilotes. Certaines autres ressources, bien sûr, mais elles ne peuvent pas être si importantes. De combien de pilotes avez-vous besoin pour le téléphone?

Windows 95 occupait 30 Mo. Aujourd'hui, nous avons des pages Web plus lourdes que ce système d'exploitation! Windows 10 fait déjà 4 Go, soit 133 fois plus. Mais est-ce 133 fois mieux? Je veux dire, fonctionnellement, ils sont presque les mêmes. Oui, nous avons Cortana, mais je doute qu'il pèse 3970 Mo. Mais c'est Windows 10, vraiment Android devrait être une fois et demie plus?
L'application clavier Google, comme si de rien n'était, consomme 150 Mo. Ce programme dessine 30 touches à l'écran - est-ce vraiment cinq fois plus compliqué que tout Windows 95? L'application Google, essentiellement un package pour Google Web Search, prend 350 Mo! Les services Google Play que je n'utilise pas (je n'y achète pas de livres, de musique ou de vidéos) sont de 300 Mo qui restent simplement ici et qui ne peuvent pas être supprimés.

Après avoir installé toutes les applications nécessaires (réseaux sociaux, chats, cartes, taxis, banques, etc.), il ne reste que 1 gigaoctet pour les photos sur le téléphone. Et c'est généralement sans jeux ni musique! Rappelez-vous les moments où le système d'exploitation, les applications et toutes vos données ont été placées sur une disquette?
Votre programme de prise de notes est probablement écrit en Electron et, par conséquent,
est livré avec un pilote pour la manette Xbox 360 , il peut afficher des graphiques 3D, lire du son et prendre des photos à l'aide d'une webcam.

Le chat texte simple a toujours été célèbre pour sa vitesse et sa faible consommation de mémoire. Slack est donc un exemple d'application très gourmande en ressources. Je veux dire, le chat et un éditeur de texte sont les choses les plus élémentaires, ils devraient consommer le moins de ressources. Bienvenue en 2018.
Vous pouvez dire qu'ils travaillent au moins. Mais une augmentation de taille ne signifie pas une amélioration. Cela signifie que quelqu'un a perdu le contrôle. Nous ne savons plus ce qui se passe. Une augmentation de taille est une augmentation de la complexité, une diminution des performances et de la fiabilité. Ce n'est pas normal et ne doit pas être considéré comme normal. Vous devez immédiatement faire attention à la taille gonflée - et rester loin d'eux.
Tout pourrit
Un téléphone Android de 16 Go était parfait il y a trois ans. Aujourd'hui, cela fonctionne à peine sous Android 8.1, car chaque application a doublé au moins sans raison apparente. Pas de fonctionnalités supplémentaires. Ils ne sont pas devenus plus rapides et l'apparence n'a pas changé. Sont-ils simplement ... gonflés?
L'iPhone 4s est sorti avec iOS 5, mais il peut à peine exécuter iOS 9. Et ce n'est pas parce que iOS 9 est beaucoup mieux - fondamentalement, le système n'a pas changé. Mais le nouveau matériel est plus rapide, ils ont donc rendu le logiciel plus lent. Ne vous inquiétez pas, vous disposez de nouvelles fonctionnalités intéressantes, par exemple ... les mêmes applications fonctionnent à la même vitesse! Je ne sais pas.
iOS 11 a cessé de prendre en charge les applications 32 bits. Cela signifie que si le développeur n'est pas prêt à retourner et à mettre à jour l'application, vous ne verrez probablement plus cet excellent programme.
@jckarter : Le programme DOS peut fonctionner sans changement sur presque tous les ordinateurs fabriqués après les années 80. L'application JavaScript peut se bloquer en raison de la mise à jour de Chrome de demain.
Les pages Web d'aujourd'hui
ne fonctionneront dans aucun navigateur après 10 ans (ou peut-être plus tôt).
"Nous devons courir aussi vite pour rester au même endroit." Mais le point? Je peux acheter constamment de nouveaux téléphones et ordinateurs portables, comme tout le monde, mais le fais-je juste pour pouvoir exécuter toutes les mêmes applications, qui ne sont devenues que plus lentes?
Je pense que nous pouvons et devons corriger la situation. Maintenant, tout le monde élabore des programmes pour aujourd'hui, parfois pour demain. Mais ce sera bien de faire des choses qui fonctionnent un peu plus longtemps.
Pire c'est mieux
Maintenant, personne ne comprend rien. Et ne veut pas comprendre. Nous publions juste des conneries à moitié cuites, en espérant le meilleur et en l'appelant «le bon sens pour une startup».
Les pages Web doivent être mises à jour en cas de problème. Qui a le temps de trouver la cause du problème?

Toute application Web produit un flux constant d'erreurs JS "aléatoires", même sur les navigateurs compatibles.
L'architecture de la base de données Web / SQL entière est basée sur la prémisse (même l'espoir) que personne ne changera les données pendant que vous regardez une page Web ouverte.
La plupart des applications de collaboration ont fait de leur mieux, il existe des tonnes de scénarios typiques lorsqu'elles perdent des données. Nous avons vu le dialogue "Quelle version dois-je enregistrer?" Aujourd'hui, la barre est si basse que les utilisateurs sont satisfaits même sur cette question.

Et non, dans mon monde l'application n'est pas normale, qui dit: "Je détruirai une partie de ton travail, choisis juste laquelle."
Linux tue
intentionnellement des processus aléatoires. Et pourtant, c'est l'OS serveur le plus populaire.
Chaque appareil que j'ai régulièrement plante de toute façon. De temps en temps, le moniteur Dell doit être redémarré, car il dispose de logiciels. Airdrop? Vous aurez de la chance s'il trouve un appareil, sinon que dois-je faire? Bluetooth? Les spécifications sont si complexes que les
appareils ne communiqueront pas entre eux et les
redémarrages périodiques sont la meilleure option .

Et je ne parle même pas de l'
Internet des objets . C'est tellement au-delà de la raison qu'il n'y a rien à ajouter.
Je veux être fier de mon travail. Je veux travailler, des choses stables. Pour ce faire, vous devez comprendre ce que nous développons exactement, à l'intérieur comme à l'extérieur, et cela ne peut pas se faire dans des systèmes gonflés et trop compliqués.
Le même chaos dans la programmation
Il semble que personne d'autre ne s'intéresse à des solutions de haute qualité, rapides, efficaces, durables et complètes. Même si des solutions efficaces sont connues depuis longtemps, nous rencontrons toujours les mêmes problèmes: gestion des packages, systèmes d'assemblage, compilateurs, conception de langage, IDE.
Les systèmes d'assemblage sont intrinsèquement peu fiables et nécessitent périodiquement un nettoyage complet, bien qu'ils disposent de toutes les informations relatives au handicap. Rien n'empêche de rendre le processus d'assemblage fiable, prévisible et 100% reproductible. Personne ne pense que c'est important. Le NPM est dans un état «parfois fonctionnel» depuis de nombreuses années.
@przemyslawdabek: , rm-rf node_modules
Node.js/JavaScript.
? , . « »? , - , , .

, , . , Hadoop
, .
, .
@rakhim: « » « », «, , ». «», : , .
Linux, Docker , , , . , . , « » Go. == .
Python , .
. Python — sudo? « » , . . , - ( ) ( , ,
):

.
— . , .
, , . , . AWS. . . , 20 . :
- — . , .
. . , , . — . , , .
, , . , .
,
.
.

? , 25 ? , . , .
— :
@sahrizv: 2014 — .
2016 — Docker, .
2018 — Kubernetes, Docker.
:
@dr_c0d3: 2000: 100 XML, «» EJB.
2018: 100 YAML, «» .
XML …
, .
. , . () , Android 350 ? , . , ? , , . : « , »? . .
. , , . (iPhone/iOS , Chrome ) , .
— , , . , . , . .
.
(
LMAX Disruptor,
SBE,
Aeron) , .
Xi , , .
, 500 000 . , , .
, . - . , , — , .
. . , . , . - — , , , , , , .
— . - . , . , . - .
:
— . , , . , , , , , ( !). , . , , . . « , ...» — !
, . , , . , , . , , , .