Meine Enttäuschung über Software


Die Essenz der Softwareentwicklung
„Wir müssen 500 Löcher in die Wand bohren, deshalb habe ich einen automatischen Bohrer entworfen.“ Es verwendet elegante, präzise Gänge, um Geschwindigkeit und Drehmoment nach Bedarf kontinuierlich anzupassen.
- Großartig, sie hat ein Idealgewicht. Wir laden 500 dieser Bohrer in die Kanone, die wir hergestellt haben, und schießen auf die Wand.

Ich programmiere seit 15 Jahren. Aber in letzter Zeit wurde es während der Entwicklung nicht akzeptiert, über Effizienz, Einfachheit und Perfektion nachzudenken: bis zu dem Punkt, dass ich für meine Karriere und für die IT-Branche insgesamt traurig bin.

Zum Beispiel betreiben moderne Autos beispielsweise 98% dessen, was das aktuelle Motorkonzept physikalisch zulässt. Die moderne Architektur verwendet eine genau berechnete Materialmenge, um ihre Funktion zu erfüllen und unter diesen Bedingungen sicher zu bleiben. Alle Flugzeuge konvergierten auf die optimale Größe / Form / Last und sehen im Grunde gleich aus.

Nur in der Software wird es als normal angesehen, wenn das Programm mit 1% oder sogar 0,01% der möglichen Leistung ausgeführt wird. Niemand scheint etwas dagegen zu haben. Die Leute sind sogar stolz darauf, wie ineffizient das Programm ist, wie zum Beispiel „Warum sich die Mühe machen, Computer sind schnell genug“:

@tveastman : Ich führe jeden Tag ein Python-Programm aus, es läuft in 1,5 Sekunden. Ich habe sechs Stunden damit verbracht, es auf Rust umzuschreiben, jetzt läuft es in 0,06 Sekunden. Diese Beschleunigung bedeutet, dass sich meine Zeit in 41 Jahren und 24 Tagen auszahlt :-)

Sie haben wahrscheinlich dieses Mantra gehört: "Die Zeit des Programmierers ist teurer als die Zeit des Computers." Dies bedeutet, dass wir Computerzeit in einem beispiellosen Ausmaß verbringen. Würden Sie ein Auto mit einem Durchfluss von 100 Litern pro 100 Kilometer kaufen? Wie wäre es mit 1000 Litern? Bei Computern geschieht dies ständig.

Alles ist unerträglich langsam


Schauen Sie sich um: Tragbare Computer sind tausende Male leistungsstärker als solche, die eine Person zum Mond gebracht haben. Auf dem neuesten Top-End-MacBook Pro kann jedoch nicht jede zweite Site ein flüssiges Scrollen mit 60 FPS ermöglichen. Ich kann bequem Spiele spielen, 4K-Videos ansehen, aber keine Webseiten scrollen! Es ist in Ordnung?

Die Google Posteingang- E-Mail- Anwendung im Chrome-Browser von Google benötigt 13 Sekunden, um eine mittelgroße E-Mail zu öffnen :


Es animiert auch leere weiße Formulare, anstatt deren Inhalt anzuzeigen, da dies die einzige Möglichkeit ist, etwas auf einer Webseite mit anständiger Leistung zu animieren. Nein, nicht 60 FPS, sondern "so schnell wie möglich auf dieser Seite". Ich freue mich darauf, was die Web-Community bieten wird, wenn 120-Hz-Displays zum Mainstream werden. Sie kommen mit 60 Hz kaum zurecht.

Das Windows 10-Upgrade dauert 30 Minuten . Was kann man so lange machen? Diese Zeit reicht aus, um mein SSD-Laufwerk vollständig zu formatieren, den neuesten Build herunterzuladen und etwa fünfmal hintereinander zu installieren.



Pavel Fatin : Das Eingeben im Editor ist ein relativ einfacher Vorgang, sodass selbst 286 einen ziemlich reibungslosen Eingabevorgang ermöglichen kann.

In modernen Texteditoren sind die Verzögerungen bei der Eingabe länger als bei 42-jährigen Emacs. Texteditoren! Was könnte einfacher sein? Für jeden Tastendruck müssen Sie nur einen winzigen rechteckigen Bereich auf dem Bildschirm aktualisieren, und moderne Texteditoren können dies nicht in 16 ms tun. Und das ist viel Zeit. VIEL. Ein 3D-Spiel füllt den Bildschirm für die gleichen 16 ms mit Hunderttausenden (!!!) Polygonen, verarbeitet Eingaben, erzählt die Welt und lädt / entlädt Ressourcen dynamisch. Wie so?

Der Trend geht dahin, dass Software überhaupt nicht schneller und funktionaler wird. Wir erhalten schnellere Geräte, bei denen Software mit denselben Funktionen langsamer als zuvor umschaltet. Alles arbeitet viel langsamer als die Höchstgeschwindigkeit. Haben Sie sich jemals gefragt, warum Ihr Telefon 30 bis 60 Sekunden lang startet? Warum kann es nicht in einer Sekunde booten? Es gibt keine physischen Einschränkungen. Persönlich würde mir das gefallen. Ich möchte, dass die Entwickler das Limit erreichen und jedes Bit für die Leistung nutzen.

Alles ist riesig


Und das ist aufgebläht. Webanwendungen können zehnmal schneller geöffnet werden, wenn Sie Anzeigen einfach blockieren. Google bittet alle, mit Hilfe der AMP-Initiative die Bremsen zu stoppen - eine technische Lösung, die keine Technologie benötigt, nur ein wenig gesunden Menschenverstand. Wenn Sie das Aufblähen entfernen, beginnt das Internet mit einer verrückten Geschwindigkeit zu arbeiten. Ist es wirklich schwer zu verstehen?

Das Android-System ohne Apps nimmt fast 6 GB ein . Denken Sie für eine Sekunde darüber nach, wie unanständig die große Zahl ist. Was ist das, HD-Filme? Ich denke meistens Code: Kernel, Treiber. Einige andere Ressourcen natürlich, aber sie können nicht so groß sein. Wie viele Treiber benötigen Sie für das Telefon?



Windows 95 nahm 30 MB ein. Heute haben wir schwerere Webseiten als dieses Betriebssystem! Windows 10 hat bereits 4 GB, d. H. 133-mal mehr. Aber ist es 133 mal besser? Ich meine, funktionell sind sie fast gleich. Ja, wir haben Cortana, aber ich bezweifle, dass es 3970 MB wiegt. Aber das ist Windows 10, sollte Android wirklich eineinhalb Mal mehr sein?

Die Google-Tastatur-App verbraucht, als wäre nichts passiert, 150 MB. Dieses Programm zeichnet 30 Tasten auf dem Bildschirm - ist es wirklich fünfmal komplizierter als Windows 95? Die Google App, im Grunde nur ein Paket für die Google Web Search, benötigt 350 MB! Die Google Play-Dienste, die ich nicht benutze (ich kaufe dort keine Bücher, Musik oder Videos), sind 300 MB groß und befinden sich einfach hier und können nicht gelöscht werden.



Nach der Installation aller erforderlichen Anwendungen (soziale Netzwerke, Chats, Karten, Taxis, Banken usw.) verbleibt nur noch 1 Gigabyte für Fotos auf dem Telefon. Und das ist in der Regel ohne Spiele und Musik! Erinnern Sie sich an die Zeiten, als das Betriebssystem, die Anwendungen und alle Ihre Daten auf einer Diskette abgelegt wurden?

Ihr Notizprogramm ist wahrscheinlich in Electron geschrieben und wird daher mit einem Treiber für den Xbox 360-Controller geliefert. Es kann 3D-Grafiken anzeigen, Audio abspielen und Bilder mit einer Webcam aufnehmen.



Einfacher Text-Chat war schon immer für Geschwindigkeit und geringen Speicherverbrauch bekannt. Slack ist also ein Beispiel für eine sehr ressourcenintensive Anwendung. Ich meine, Chat und ein Texteditor sind die grundlegendsten Dinge, sie sollten die geringsten Ressourcen verbrauchen. Willkommen im Jahr 2018.

Man kann sagen, dass sie zumindest funktionieren. Eine Vergrößerung bedeutet jedoch keine Verbesserung. Dies bedeutet, dass jemand die Kontrolle verloren hat. Wir wissen nicht mehr, was passiert. Eine Zunahme der Größe ist eine Zunahme der Komplexität, eine Abnahme der Leistung und der Zuverlässigkeit. Dies ist nicht normal und sollte nicht als normal angesehen werden. Sie sollten sofort auf die aufgeblähte Größe achten - und sich von ihnen fernhalten.

Alles verrottet


Ein 16 GB Android-Handy war vor drei Jahren perfekt. Heute funktioniert es unter Android 8.1 kaum noch, da sich jede Anwendung zumindest ohne ersichtlichen Grund verdoppelt hat. Keine zusätzlichen Funktionen. Sie wurden nicht schneller und das Aussehen änderte sich nicht. Sind sie nur ... aufgebläht?

Das iPhone 4s wurde mit iOS 5 herausgebracht, kann jedoch kaum iOS 9 ausführen. Dies liegt nicht daran, dass iOS 9 viel besser ist - im Grunde hat sich das System nicht geändert. Neue Hardware ist jedoch schneller, sodass die Software langsamer wird. Keine Sorge - Sie haben zum Beispiel aufregende neue Funktionen ... dieselben Anwendungen arbeiten mit derselben Geschwindigkeit! Weiß nicht.

iOS 11 unterstützt keine 32-Bit-Anwendungen mehr. Dies bedeutet, dass Sie dieses hervorragende Programm höchstwahrscheinlich nicht mehr sehen werden, wenn der Entwickler nicht bereit ist, die Anwendung zurückzugeben und zu aktualisieren.

@jckarter : Das DOS-Programm kann auf fast jedem Computer, der nach den 80er Jahren hergestellt wurde, unverändert verwendet werden. Die JavaScript-App kann aufgrund des morgigen Chrome-Updates abstürzen.

Die heutigen Webseiten funktionieren nach 10 Jahren (oder möglicherweise früher) in keinem Browser mehr .

"Wir müssen so schnell rennen, um am selben Ort zu bleiben." Aber der Punkt? Ich kann wie alle anderen ständig neue Telefone und Laptops kaufen, aber nur, um dieselben Anwendungen ausführen zu können, die nur langsamer geworden sind?

Ich denke, wir können und sollten die Situation korrigieren. Jetzt entwickeln alle Programme für heute, gelegentlich für morgen. Aber es wird schön sein, Dinge zu tun, die etwas länger funktionieren.

Schlimmer ist besser


Jetzt versteht niemand etwas. Und will nicht verstehen. Wir veröffentlichen nur halbherzigen Bullshit, hoffen auf das Beste und nennen es "gesunden Menschenverstand für ein Startup".

Webseiten werden gebeten, aktualisiert zu werden, wenn ein Fehler aufgetreten ist. Wer hat die Zeit, die Ursache des Problems zu finden?



Jede Webanwendung erzeugt einen konstanten Strom von "zufälligen" JS-Fehlern, selbst in kompatiblen Browsern.

Die gesamte Web- / SQL-Datenbankarchitektur basiert auf der Voraussetzung (auch der Hoffnung), dass niemand die Daten ändert, während Sie eine geöffnete Webseite betrachten.

Die meisten Collaboration-Anwendungen haben so gut wie möglich gearbeitet. Es gibt unzählige typische Szenarien, in denen sie Daten verlieren. Wir haben den Dialog "Welche Version soll ich speichern?" Heute ist die Messlatte so niedrig, dass die Benutzer auch mit diesem Thema zufrieden sind.



Und nein, in meiner Welt ist die Anwendung nicht normal, die besagt: "Ich werde einen Teil Ihrer Arbeit zerstören, wählen Sie einfach welche."

Linux beendet absichtlich zufällige Prozesse. Und doch ist dies das beliebteste Server-Betriebssystem.

Jedes Gerät, das ich habe, stürzt sowieso regelmäßig ab. Von Zeit zu Zeit muss der Dell-Monitor neu gestartet werden, da er über Software verfügt. Lufttropfen? Sie werden Glück haben, wenn er ein Gerät findet. Was soll ich sonst tun? Bluetooth? Die Spezifikationen sind so komplex, dass Geräte nicht miteinander kommunizieren , und regelmäßige Neustarts sind die beste Option .



Und ich erwähne nicht einmal das Internet der Dinge . Es ist so unvorstellbar, dass es nichts hinzuzufügen gibt.

Ich möchte stolz auf meine Arbeit sein. Ich möchte arbeitende, stabile Dinge tun. Um dies zu tun, müssen Sie verstehen, was genau wir innen und außen entwickeln, und dies kann nicht in aufgeblähten, übermäßig komplizierten Systemen durchgeführt werden.

Das gleiche Chaos in der Programmierung


Es scheint, dass niemand anderes an hochwertigen, schnellen, effizienten, dauerhaften und gründlichen Lösungen interessiert ist. Auch wenn effektive Lösungen seit langem bekannt sind, haben wir immer noch mit denselben Problemen zu kämpfen: Paketverwaltung, Assemblersysteme, Compiler, Sprachdesign, IDEs.

Montagesysteme sind von Natur aus unzuverlässig und erfordern regelmäßig eine vollständige Reinigung, obwohl sie alle Informationen für Behinderungen enthalten. Nichts hindert den Montageprozess daran, zuverlässig, vorhersehbar und 100% reproduzierbar zu sein. Nur niemand hält es für wichtig. NPM ist seit vielen Jahren in einem „manchmal funktionierenden“ Zustand.

@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 . , , .

, . - . , , — , .


. . , . , . - — , , , , , , .

— . - . , . , . - .

: . , , . , , , , , ( !). , . , , . . « , ...» — !

, . , , . , , . , , , .

Source: https://habr.com/ru/post/de423889/


All Articles