Evangelisten gegen Werwölfe


Der Name könnte vorgeben, ein B-Film zu sein, aber tatsächlich geht es um viel banalere Dinge, nämlich: leidenschaftliche und manchmal völlig unvernünftige Liebe zu Programmierern und anderen Menschen, die Technologielösungen für den „Silberpool“ fördern - die Überzeugung, dass dies der Fall ist Die Lösung hat ein breites Anwendungsspektrum.

Programme sind besonders


Ich fange ein wenig von weitem an: Programmcode im weiteren Sinne ist immer eine bestimmte Funktion, die streng in einem bestimmten Bereich möglicher Werte funktioniert. Jeder Ausweg aus dem Bereich ist eine Notsituation und ein ernstes Problem, das meistens zum Stillstand führt (es gibt jedoch andere Gesichtspunkte zu diesen Themen, siehe zum Beispiel die Rust-Ideologie). In der modernen Elektronik funktioniert viel mehr Code in eingezäunten Sandboxen, die von einem anderen Code verwaltet werden, und entlastet sich somit von der Verantwortung für "schwere" Abstürze: Ihr Telefon wird höchstwahrscheinlich nicht beschädigt und erfordert nicht einmal einen Neustart, wenn eine der Anwendungen abstürzt. Dies ändert jedoch weder die Besonderheiten jedes einzelnen Codeblocks noch die Notwendigkeit einer genauen Übereinstimmung der Hardware, auf der das Programm ausgeführt wird, mit den Erwartungen dieses Programms: Unabhängig davon, wie sicher Rust ist, können Sie den Code nicht ausführen.kompiliert für eine andere Prozessorarchitektur. Alle Erweiterungen des Bereichs akzeptabler Werte für die Verarbeitung - beispielsweise die Fähigkeit von Browsern, das "schlechte" HTML zu ignorieren und zu überspringen, alle "guten" zu verarbeiten und anzuzeigen - müssen explizit im selben Code beschrieben werden.

Der Programmcode ist nicht in der Lage zu replizieren, dank dessen wir 60 bis 90 Jahre lang mehr oder weniger normal leben, trotz Billionen kleinerer Störungen in unserem Körper auf zellulärer Ebene, und kann nicht einmal auf natürliche Weise von den Gesetzen der Physik „gewinnen“, sagen wir: Aus dem zweiten Hauptsatz der Thermodynamik und der schwachen Wechselwirkung, dank dessen Sie versehentlich etwas von Ihren Händen fallen lassen können, es aber vom Boden oder Boden aufheben können - weil es nicht über den Boden hinausfliegt. Wenn der Programmcode bricht, bricht er.

Dies alles steht natürlich im Widerspruch zu unserer objektiven Realität. Wenn der Code in einer Reihe bestimmter diskreter Zustände funktioniert (lassen Sie uns hier nicht über Quantencomputer sprechen), selbst wenn es sehr, sehr viele von ihnen gibt, dann arbeitet die reale Welt mit einer unendlichen Anzahl von Zuständen in bestimmten Bereichen. Oder in einem viel größeren (astronomischen) diskreteren Zustand, wenn Sie glauben, dass die Realität diskreter Natur ist.

Nun, warum war das alles?


Nein, nicht auf die Tatsache, dass der Standardcode „fragiler“ ist als in der Realität viel mehr - obwohl dies so ist, ist es nicht die Hauptsache. Und die Hauptsache hier ist, dass aus der Tatsache, dass Ihre Softwarelösung theoretisch in einem bestimmten Wertebereich arbeiten kann (d. H. Bestimmte spezifische Probleme lösen kann), nicht folgt, dass sie diese in der Realität lösen wird - mögliche Zustände viel mehr, und die theoretische Eignung des Programms unter ihnen kann völlig irrelevant sein.

Zum Beispiel ist die Signalsprache im Spiel Factorio Turing-vollständig:


Und damit können Sie sogar Clips anzeigen. Heben Sie jetzt Ihre Hand, wer glaubt, dass kommerzielle Software darauf geschrieben wird - obwohl dies theoretisch durchaus möglich ist?

Trotzdem stoße ich beim Lesen von Artikeln über Technologien sehr oft auf die Tatsache, dass Leute, die sie schreiben, es vorziehen, solide Mathematiker zu sein und technisch korrekt zu sterben (die beste, schlechteste Art von richtig).

In der Theorie unterscheidet sich die Theorie nicht von der Praxis


Warum machen sie das? Dies ist eine ausgezeichnete Frage, und ich persönlich bin auf zwei Versionen gestoßen: Erstens verstehen einige den Unterschied zwischen „vielleicht in der Theorie“ und „vielleicht in der Praxis“ ziemlich ehrlich, aber sie ziehen es vor, ihn in Artikeln ganz bewusst zu ignorieren, geleitet vom Prinzip „wenn Sie Donner schreien - mehr er wird etwas über Menschen herausfinden. “ Die Ironie hier ist zwar, dass dieses Prinzip auch keine Silberkugel ist, und wenn Sie ohne Grund sehr laut schreien, werden die meisten Menschen keine schmeichelhaften Dinge über Sie wissen.

Nun, und zweitens verstehen einige den Unterschied, der zu einer ganzen Reihe von schlechten Situationen führt, nicht wirklich, wenn „ein Wissenschaftler einen Journalisten vergewaltigt hat“, wenn eine Person, die Artikel schreibt, kein direkter Autor von Technologie ist und im Allgemeinen sogar glücklich ist, vergewaltigt zu werden wie er glaubt, dass eine radikalere und „konvexere“ Beschreibung in seinem Interesse oder im Interesse der beschriebenen Technologie liegt; zu Situationen, in denen der Autor einfach an seine eigenen allgemeinen Thesen glaubt, obwohl es grundsätzlich keinen Grund für einen solchen Glauben gibt.

Und es wäre sehr gut, wenn die These des Artikels ein nicht allzu wichtiges theoretisches Problem bleiben würde, aber leider wird sie sehr viel in die Realität umgesetzt. Aus meiner Sicht: Vor nicht allzu langer Zeit habe ich mehr als einen Arbeitstag damit verbracht, meinem Kollegen zu erklären, dass das Entfernen von nicht verwendetem Code im Webpack (Baumschütteln) existiert, aber es funktioniert nach ziemlich primitiven Prinzipien, weshalb der Umfang dieser Sache recht bescheiden ist und Sie können sich nicht blind darauf verlassen, ohne eine Reihe zusätzlicher Tricks und Prüfungen(Übrigens ein ausgezeichneter Artikel, aber ich selbst habe dieses Material lange vorher ausgegraben). Sie könnten natürlich einen Kollegen beschuldigen - aber ich selbst erinnere mich an die große Anzahl von Artikeln und Materialien zum Thema "Jetzt gibt es Baumschütteln im Webpack, Banzai!", Die nicht die ganze Bescheidenheit und Primitivität dieses Themas abdeckten, sondern im Gegenteil laut drängten Die Tatsache, dass unsere Baugruppen jetzt klein werden und dies alles aufgrund der "Magie" des Webpacks absolut automatisch erfolgt.

Wer ist schuld und was zu tun?


Natürlich denke ich überhaupt nicht, dass die Stimme eines Menschen, der in der Wüste (und sogar auf dem Habr) weint, hier etwas ändern wird, und am Ende gibt es einen ziemlich großen Anteil derer, die den Umfang ihrer Technologien absichtlich ganz allgemein beschreiben, um attraktiver auszusehen . Aber wenn jemand dies absichtlich tut - DENKEN SieBitte denken Sie darüber nach. Seien Sie sich zumindest bewusst, dass, wenn Ihr Programm oder Ihre Technologie in der Lage ist, etwas zu tun - von der Tatsache bis zur Tatsache, dass es mit Hilfe Ihres Programms oder Ihrer Technologie wirklich möglich wäre, etwas in der Praxis zu tun, insbesondere für diejenigen, die nicht die Autoren sind - sehr lange Weg. Erkennen Sie, dass Sie, wenn Sie etwas getan haben, das in einem bestimmten Fall an einem Projekt eines bestimmten Themas mit einer bestimmten Liste von Problemen funktioniert, keinen Grund haben, automatisch davon auszugehen, dass Ihre Technologie überall nützlich ist. Beachten Sie schließlich, dass der Code für "Ihr" und der Code für alle zwei große Unterschiede sind. Wenn Sie den Code "für Ihr" in Open Source einfügen, wird er nicht automatisch zu einem Code, der für andere Entwickler nützlich ist.

All Articles