Eine Mischung aus Programmierung und ungefähr

Das Jahrhundert der Galanterie vergeht. Er wird ersetzt
das Zeitalter der Sophisten, Ökonomen und Taschenrechner; Ruhm
Europa wird für immer verschwinden.
E. Beck (England, 1792)

Warum?


Nachdem ich als Programmierer kein kurzes Leben geführt habe, frage ich mich: "Gab es etwas Interessantes an der Programmierung, und wenn ja, was ist am meisten aufgefallen und in Erinnerung geblieben?" Je nach literarischem Talent kann die Antwort zu einem Roman, einer philosophischen Abhandlung, einem Gedicht oder einem Witz führen. Mit Tschechows Talent könnte man eine ganze Reihe von Geschichten über das graue / helle Leben gewöhnlicher Programmierer schreiben, mit denen das virtuelle Leben ein reales tötet / hervorbringt. Aber wo ist Tschechow, der Programmierer?

Nach bestem Wissen beschränke ich mich auf eine Essay-Mischung im Stil der "Sofa-Meditation". Und obwohl der Haupttext seit vielen Jahren, riskiere ich es immer noch ...

Die Szene ist Minsk.

Wie ich Programmierer wurde


Starten Sie . Nach ihrem Abschluss an der BSU gaben sie uns keine Diplome, sondern gingen im sechsten Jahr zum Thema ACS. Das Land brauchte Asushnikami. Stellen Sie sich das paradiesische Leben eines Studenten vor, der weiß, dass er ein Diplom hat, und studieren Sie weitere sechs Monate.

Die Programmierung begann mit dem CCK-Kurs - dem Symbolic Coding System für die Minsk-32-Maschine. Und am Anfang gab es ein mysteriöses Basisregister. Viel später habe ich in Assembler gut programmiert, aber stellen Sie sich eine Person vor, die nichts über Programmierung weiß und die Programmierung von Assembler und nicht von einem Lehrbuch, sondern von einer technischen Beschreibung zu lernen begann. Nach einem harmonischen System der Physik war es eine Art Unsinn (ich vermute, dass es tatsächlich Unsinn war). Die Seele eines Physikers konnte sich mit diesem Thema nicht auseinandersetzen. Und dann fielen mir alltägliche Schwierigkeiten auf und ich ging kaum zum Unterricht. Im Allgemeinen kannte ich SSK nicht absolut. Aber jetzt ist es Zeit, die Prüfung abzulegen. Alle fünf Jahre vor dieser Prüfung habe ich mich ehrlich gesagt gut auf die Prüfung vorbereitet. Was ist jetzt zu tun? Und hier treffe ich einen Freund vom sibirischen Schabbat (ich erinnere mich an ihn mit seiner fröhlichen Stimmung und dass an allen drei Tagen unserer Reise nach Sibirien Witze Tag und Nacht Geschichten erzählten). Er teilte seine Trauer über ein Bier. Die Lösung wurde schnell und mutig gefunden - er besteht für mich eine Prüfung für eine Flasche Wodka (die Angelegenheit wurde durch das Fehlen zusätzlicher Noten erleichtert). Alles ging an O'key.

Ein Versuch, Ausreden zu machen. "Ich bin nicht der einzige, der die Schuld trägt." Schuldig und Lehrer. Die Qualität des Unterrichts war in vielerlei Hinsicht widerlich. Ein Lehrer gab als Vorteil des Minsk-32-Computers gegenüber IBM mit dem OS / 360-System an, dass IBM nur mit 8 Bit (Bytes) arbeitet und Minsk-32 viermal so groß ist - 32 (Wort). Und es scheint, dass Minsk-32 viermal besser ist als IBM-Computer. Es stellte sich heraus, dass dies nur für die Adressierung galt. Dies alles änderte genau das Gegenteil.

Die beschriebene Situation war jedoch nicht nur für die Programmierung charakteristisch. Im vierten Jahr des BSU-Fachbereichs Physik wurde ein Jahr lang die Disziplin „Quantenfeldtheorie“ unterrichtet. Und ein ganzes Jahr lang haben wir nichts von ihr gehört, aber wir haben unsere eigenen Ergebnisse eines Lehrer-Akademikers vorgestellt, die sich auf seine ursprüngliche Parametrisierung der Lorentz-Gruppe beziehen. Das mag wichtig sein, aber wo ist die Quantenfeldtheorie des Grundapparats der Grundphysik? Übrigens kann jede Gruppe, wie es mir scheint, auf unendlich viele Arten parametrisiert werden, und jede von ihnen wird einige Vorteile haben. Können Sie sich vorstellen, wie viele Dissertationen Sie schreiben können? Aufgrund der Tatsache, dass es in der Republik Belarus mehrere Universitäten gibt, bezweifle ich noch mehr die Qualität ihrer Ausbildung. Wenn es nicht genug Lehrer für einen gab, ist nicht klar, wo sie in mehrere zerkratzt wurden. Mit der "Qualität" mussten sich Spezialisten später treffen. Zum Beispiel in der NGO Agat. Ein Doktor der Wissenschaften hat unsere Qualifikationen auf diese Weise verbessert: Er ging davon aus, dass "... der Vektor a größer ist als der Vektor b ...", und kam zu großartigen Schlussfolgerungen. Aber die Vektoren sind ungeordnet: Niemand hat das Verhältnis von mehr / weniger für sie bestimmt. Das zweite verwendete implizit das falsche Verhältnis: „Die Summe der Produkte ist gleich dem Produkt der Summe: $ inline $ ∑_i∏_ja (i, j) = ∏_j∑_ia (i, j) $ inline $ . Daraus erhielt er viele Konsequenzen. Und obwohl er den Fehler zugab, hielt er die Konsequenzen aus irgendeinem Grund für richtig („Ich brauche ihn, deshalb ist er richtig“). Und der nächste Fall ist im Allgemeinen pathologisch. Der Funkingenieur betrachtete den elektrischen Vektor des elektromagnetischen Feldes. Im Allgemeinen dreht es sich. In Erinnerung an die Mechanik Newtons führte der Funkingenieur eine Zentrifugalkraft ein, die auf das Ende des elektrischen Feldvektors einwirkt, und entwickelte von hier aus eine ganze Theorie, die einige Gonorovsky widerlegte - anscheinend eine Autorität auf dem Gebiet der Funktechnik.

Zurück zum Programmieren, ich mochte das Programmieren trotzdem nicht, aber ich war voller Respekt dafür. Aber das ist das Verdienst des besten Lehrers - des Lebens.

Fortsetzung folgt . Aber das Leben rächt sich an uns für Tricks. Ich verteilte mich an das Institut für Physik und begann mich auf dem Gebiet der axiomatischen Quantenfeldtheorie (Wow!) Zu belasten. Aber er erkannte bald, dass sich die axiomatische Quantenfeldtheorie nicht sehr eignet, wenn er 86 Rubel in seinen Händen hält und 30 davon für eine Wohnung gibt, und das Problem „Wie man lebt?“ Tritt immer mehr auf. Fazit: "So kann man nicht leben." Übrigens, mein Klassenkamerad, ein Dreijähriger, der als Einsteller bei Integral arbeitet, erhielt dreimal so viel wie ich mit einem BSU-Diplom. Wie lebst du weiter? Und auch hier hilft ein Bierkrug. Bei einem Treffen mit meinen Freundinnen lerne ich den Direktor des Zentralinstituts für wissenschaftliche Forschung für Telekommunikation und Informatik kennen - unter den Damen sprechen unsere Männer über Arbeit. Und so erzählt er mir, was er tut und es scheint mir, dass ich ein guter Task-Manager sein kann. Ziele setzen heißt doch nicht, sie zu lösen, oder? Und hier bin ich am Central Scientific Research Institute of Technology. Obwohl leider kein Regisseur, sondern ein Anfänger Programmierer. Aber was ist mit der "hohen" Physik? Ich tröstete mich, dass ich mich mit "hoher" Programmierung beschäftigen würde - mit allen Arten von wissenschaftlichen Berechnungen. Die Hauptsache ist weg von allen Belastungen und Gutschriften der Buchhaltung. Buchhaltung und Banken waren ein Symbol für Langeweile und wollten sich von ihnen fernhalten. Aber das Leben setzt unseren Snobismus hartnäckig in die Realität um. In Wirklichkeit mussten später genau Lastschrift und Gutschrift behandelt werden. Hier ist eine Entwicklung von Quarks zu Buchhaltungsprogrammierung. Ja, es war die Buchhaltung, die programmiert werden musste. Schließlich ist „Sozialismus Buchhaltung und Kontrolle“. Nun, da der Kontrollort bereits besetzt war (die Partei kontrollierte alles in unserem Land), mussten wir uns mit der Buchhaltung befassen.

Moral. Wir lieben nicht nur die Wissenschaften, die wir nicht verstehen. Sie müssen die Grundlage sehen. Respekt für das Thema setzt ein Verständnis der Grundlagen voraus, wenn es sich natürlich um die Grundlagen handelt.

Was ist Programmierung und das Hauptproblem der Mathematik


Es gibt eine solche Langeweile - die Frage „Was ist Programmierung?“, „Was ist Physik?“, „Was ist Mathematik?“. Auf solche Fragen kann es keine genaue Antwort geben. Die Natur teilt die Welt nicht in Physik, Chemie, ... Daher sind die Grenzen zwischen den Wissenschaften willkürlich. Sie wurden nicht von der Natur geliefert, sondern von Menschen. Übrigens scheint Engels gesagt zu haben, dass es am Ende zwei Wissenschaften geben wird - Physik und Psychologie (Materie und Bewusstsein). Ein Physiker, wütend auf die Frage "Also, was ist Physik?" Er antwortete folgendermaßen: "Physik ist das, was Physiker tun." Und das ist völlig ernst.

Was machen Programmierer dann? Was ist das Wesentliche ihrer Aktivitäten? Es scheint mir, dass die Hauptbeschäftigung des Programmierers darin besteht, das große ungelöste Problem als eine Zusammensetzung der gelösten kleinen Probleme darzustellen. Diese Zusammensetzung ist der Weg von der Inszenierung zur Lösung. Dieser Pfad wird in einer bestimmten formalen Sprache geschrieben und als Programm bezeichnet. Dann sollte die Komposition Text in einer bestimmten formalen Sprache sein - dies ist das Programm. Die formal-textuelle Verkörperung des Algorithmus ist die Programmierung und unterscheidet sich von anderen konstruktiven Disziplinen. Es gibt also zwei Programmierfunktionen: 1) Extreme Konstruktivität 2) Strenges syntaktisches Framework .

Da Programmieren eine konstruktive Disziplin ist, ist es für ihn nicht so interessant, ob es eine Lösung gibt, sondern die Lösung selbst. In der Mathematik gibt es viele Existenzsätze, die behaupten, dass es eine Lösung gibt, aber nichts darüber sagen, wie man sie findet. Der Nobelphysiker Landau schlug vor, die Erwähnung von Existenzsätzen aus dem Kurs der Mathematik für Physiker auszuschließen. Was nützt ein Physiker, um zu wissen, dass eine Differentialgleichung eine Lösung hat? Sie müssen die Lösung kennen, nicht was sie ist. Nur zum Thema "Gibt es eine Lösung?" Es gibt so eine interessante Geschichte über Landau. Wenn Physiker irgendwohin gingen, um eine Party zu feiern, wurden sie auf der Straße unterhalten, weil es unter Berücksichtigung der vierstelligen Nummer vor dem Auto vor dem Auto notwendig war, das Muster im Raum so schnell wie möglich zu erfassen, indem nur Grundschulaktionen (Schulaktionen) verwendet wurden, ohne die Nummern neu anzuordnen und nur einmal zu verwenden . Zum Beispiel haben wir für die Nummer 73-85 7-3 = 8-5, für die Nummer 38-53 haben wir 8 = 5 - 3 . Landau war in dieser Angelegenheit eine große Autorität. Es stellte sich die Frage, ob eine Zahl als Muster gefunden werden kann - dies ist die Frage des Existenzsatzes. Landau antwortete: "Nein, für niemanden." "Warum haben Sie, Landau, den Satz der Nichtexistenz bewiesen?" "Nun, nein, einfach weil ich, Landau, dieses Muster für keine Zahl gefunden habe. Zum Beispiel für die Nummer 75-65 ”. Genial. Aber einer der jungen Mathematiker nahm den Existenzsatz absolut ernst und bewies, dass jede ganze Zahl mit einer anderen „gleichgesetzt“ werden kann, da es eine Formel gibt, um N + 1 auf N zu reduzieren: ( N + 1 ) = s e c ( a r c t g ( N ) )
Leider verlor das Spiel nach dem Beweis des Existenzsatzes seine Schärfe. Hier ist es: " Je mehr Wissen, desto mehr Traurigkeit . "

Die Entwurfslösung unterscheidet zwei Stufen:

  1. Algorithmisch. Algorithmus des Problems - Reduktion auf die Zusammensetzung von Standardoperationen, die Menschen verstehen. Dies ist der wichtigste Teil. Schließlich sind Programme für Menschen geschrieben.
  2. Codierung. Reduktion des Algorithmus auf eine Zusammensetzung elementarer gegebener Operationen und Datenphrasen in einer Programmiersprache. Das Schreiben des kleinsten Programms durchläuft jedoch die Phase der Mikroalgorithmusisierung.

Beispiele für private konstruktive Probleme


Die Menge der akzeptablen Operationen sind Schuloperationen, die von einem Kompass und einem Lineal ausgeführt werden: Erstellen einer Linie, die zwei gegebene Punkte verbindet, Teilen der Linie in zwei Hälften, Erstellen einer Senkrechten, Extrahieren der Quadratwurzel ...

Hier sind die klassischen Bauprobleme:

Das Quadrat des Kreises . Bei einem gegebenen Kreis müssen Sie eine endliche Anzahl der oben genannten Operationen verwenden , um ein Quadrat mit einer Fläche zu erstellen, die der Fläche eines gegebenen Kreises entspricht.

Dreiteilung des Winkels . Ein gegebener Winkel muss unter Verwendung einer endlichen Anzahl der obigen Operationen in drei gleiche Teile geteilt werden

Hier führt die Annäherung „an die Linie des Existenzsatzes - geben Sie uns sofort eine Lösung“ zu einer Fehlzündung. Unter der Annahme, dass es eine Lösung gibt, wird seit vielen Jahrhunderten danach gesucht. Es stellte sich jedoch heraus, dass es keine Lösung gab.

Viele Mathematiker und Amateure kämpften um diese Aufgaben (und als Kind schlug ich meine Lösung zum Quadrieren des Kreises vor, die sich mit einer Genauigkeit von etwa 10% als ungefähr herausstellte - aber dies wurde bereits in meiner Jugend klar). Es wurden viele Lösungen vorgeschlagen, die sich jedoch alle als ungefähr herausstellten. Im 19. Jahrhundert wurde bewiesen, dass Aufgaben keine Lösung haben. Für die Dreiteilung des Winkels kann dies nun dem Schüler gezeigt werden (siehe zum Beispiel Courant- und Robbins-Buch „Was ist Mathematik?“) Und um den Kreis zum Schüler zu quadrieren. Darüber hinaus ist die Situation so, dass es möglich ist, die Näherung beliebig genau zu finden, aber es kann keine genaue Lösung geben. Das Ergebnis ist seltsam, wenn Sie darüber nachdenken. Wie vor dem gewünschten Platz befindet sich eine Wand, die nicht überwunden werden kann. Es lohnt sich jedoch, auch andere Operationen zuzulassen, da die Lösung elementar wird. Dies wurde von Archimedes in Bezug auf die Dreiteilung des Winkels getan.

Formalisierung des Konzepts eines Algorithmus


Was ein Algorithmus ist, war intuitiv klar. Aber Mathematiker wären keine Mathematiker, wenn sie das Konzept eines Algorithmus nicht formalisieren würden. Die Intuition ist wiederholt gescheitert. Es war also unmöglich zu glauben, dass es kontinuierliche Funktionen gibt, die nirgendwo eine Ableitung haben - wo immer Sie die Kurve berühren - überall, wo es Dornen gibt. Die Intuition erlaubt dies nicht.

Es wurden verschiedene Formulierungen zum Erlernen des Konzepts eines Algorithmus (oder einer wissenschaftlichen Erklärung) vorgeschlagen: rekursive Funktionen, alphabetische Markov-Substitutionen, Postmaschine, Turingmaschine. Die Äquivalenz dieser Formulierungen wurde schrittweise bewiesen. Am Ende nahmen die Mathematiker es als Axiom, dass diese Formulierungen dem Konzept eines Algorithmus angemessen sind - dies ist die These der Kirche. Die Turing-Maschine nähert sich in ihren Begriffen realen Rechenmaschinen. Es ist elementar, es zu simulieren, aber diese Modelle werden aufgrund ihrer Primitivität und daher Langsamkeit nicht benötigt. Aber als theoretischer Apparat ist es unverzichtbar. Beispielsweise konnte das Konzept der algorithmischen Komplexität formalisiert werden. Und dann tauchten wieder erstaunliche Dinge auf. Die Intuition des Programmierers legt also nahe, dass die Multiplikation schwieriger ist als die Multiplikation. Das Multiplizieren der Zahl a mit der Zahl n bedeutet n Additionen. Die Multiplikation scheint also um ein Vielfaches komplizierter zu sein. Und was gibt die Theorie?

Angenommen, es gibt zwei n-Bit-Zahlen, und die Turing-Maschine multipliziert sie mit U (n) und die Addition mit S (n). Dann legt die Intuition nahe, dass U (n)) / (S (n) → ∞. Eine theoretische Analyse zeigte jedoch, dass wir für jedes beliebig kleine ε haben $ inline $ U (n)) / [S (n) (S (n)) ^ ε] → 0 $ inline $ . Und dies deutet darauf hin, dass es näher als die Multiplikation zur Addition bereits nichts gibt - sie sind sehr komplex.

Jedes konstruktive Problem kann als Programmierung einer universellen Turingmaschine dargestellt werden. Es stellt sich die Frage: Ist es möglich, einen universellen Algorithmus für jedes konstruktive Problem zu finden ? Und hier unterscheidet sich das Problem bereits radikal von der Aussage über die Art der Quadratur des Kreises. Dort konnte eine neue erlaubte konstruktive Operation hinzugefügt werden und das Problem wurde gelöst. Der universellen Turing-Maschine gibt es nichts hinzuzufügen - dies ist die allgemeinste Maschine, sie kann jeden Algorithmus implementieren. Und es stellte sich heraus, dass auch hier der Schöpfer Hindernisse setzte. Es werden viele konstruktive Probleme gefunden, die keinen gemeinsamen Algorithmus für ihre Lösung haben. In der mathematischen Logik haben sie beispielsweise lange versucht, einen Algorithmus zu finden, mit dem festgestellt werden kann, ob ein logischer Ausdruck von einem anderen ableitbar ist. Es stellte sich heraus, dass das Problem keine Lösung hat.

Wir haben eine ähnliche Situation in Fermats großem Satz: die Gleichung xn+yn=zn hat keine Lösung in ganzen Zahlen für n> 2.

Dieser Aussage kann ein solches Zeichen gegeben werden, dass ich sagen möchte: "Das kann nicht sein."
Wenn wir durch die rechte Seite teilen, gehen wir zu rationalen Zahlen über: der Gleichung pn+qn=1 hat keine Lösung in rationalen Zahlen <> 0.

Weiterhin beschränken wir uns auf gerade n. Für sie haben wir ein Bild:



Die Abbildung zeigt die Fermat-Kurven für n = 2 (Kreis) und n = unendlich (Quadrat). Für n = 2k> 2 liegen alle anderen Kurven zwischen dem Kreis und dem Quadrat, und wenn n zunimmt, kommen sie dem Quadrat immer näher. Und wenn Sie alle diese Kurven nehmen, füllen sie zunehmend den Raum um das Quadrat. Und es gibt unendlich viele Punkte mit rationalen Koordinaten, so dass, wenn alle rationalen Punkte in dunkler Farbe gemalt sind, der gesamte Raum des Quadrats schwarz ist - die Menge der Punkte mit rationalen Koordinaten ist überall dicht. Und doch geht keine von Fermats Kurven durch rationale Punkte. Es scheint, dass Sie dafür verrückt schleifen müssen. Der Satz von Fermat besagt jedoch, dass eine perfekt glatte Kurve keinen rationalen Punkt durchläuft. Nun, es ist unmöglich zu glauben. Hier stimmt etwas nicht.
Eine ähnliche Situation besteht in der gesamten Mathematik. Es wäre schön, mathematische Probleme zu lösen und sich mathematisch zu nähern. Stellen Sie sich zum Beispiel vor, Sie finden eine Lösung für das mathematische Problem „Wenn A, dann B“ als Bewegung in einem bestimmten Raum mathematischer Objekte von den Originaldaten zu den erforderlichen. Hier ist ein Beispiel für einen konstruktiven Weg von A nach B:



Wenn Sie sich entlang eines Pfades bewegen, werden nur die Axiome der Arithmetik verwendet.

Wenn nur für einen Satz „Wenn A, dann B“, könnte man mit konstruktiven Methoden die Flugbahn konstruieren, die von A nach B führt. Dies wäre ein Triumph der Mathematik. Kann das gemacht werden? Gibt es eine solche Flugbahn?

Der große Mathematiker Hilbert (von vielen als der größte des 20. Jahrhunderts angesehen) begann begeistert, das Leibniz-Programm umzusetzen - jedes mathematische Problem zu formalisieren, zu algorithmisieren. Dieses Programm wurde als Formalisierung der Mathematik bezeichnet - um eine axiomatische Grundlage für die gesamte Mathematik zu schaffen, alle mathematischen Probleme als Folge von Axiomen in einer formalen Sprache auszudrücken und alle Theoreme nach den Regeln der mathematischen Logik abzuleiten. Es wurden große Anstrengungen unternommen, um die Mathematik vollständig zu formalisieren. Wer möchte, kann zwei dicke Bände der Grundlagen der Mathematik von Hilbert und Bernays sehen. Inmitten der Arbeit erschien jedoch die Arbeit von Kurt Gödel, der unter anderem bewies, dass man in jeder formalen Theorie, die Arithmetik enthält, einen aussagekräftigen Satz aufstellen kann, der nicht ableitbar ist. Und sie (oder, nicht weniger gerechtfertigt, ihre Ablehnung) kann für ein neues Axiom gehalten werden. Wir machen auf das Wort „formal“ aufmerksam. Für eine informelle Theorie kann man immer etwas sagen wie "Es ist offensichtlich, dass ..." und alle möglichen Hindernisse werden beseitigt. Daher sind alle Anwendungen des Satzes von Godel auf informelle Theorien falsch. Dies gilt insbesondere für die Philosophie, die gerne über dieses Thema spekuliert.

FORMAT MATHEMATICS ist also bedeutend unvollständig und wird niemals vollständig sein. Dies macht sie mit der Physik verwandt, die aufgrund ihrer natürlichen Position niemals eine Formalisierung beanspruchte (und darüber hinaus ist der Geist der Formalisierung der Physik fremd, die daran gewöhnt ist, dass alle Axiome vorübergehend sind).

Es scheint, dass man aus der Situation herauskommen kann, indem man den irreduziblen Satz (oder seine Negation) als Axiom nimmt, ihn dem ursprünglichen Axiomensystem hinzufügt und die Folgesätze aus diesem erweiterten formalen System ableitet. Der Satz von Gödel ist jedoch auf dieses erweiterte formale System anwendbar. Wir bekommen einen endlosen Prozess. Nur in einem unendlichen System kann man Universalität finden. Aber wie arbeitet man mit einer unendlichen Menge von Axiomen? Die Sache wird durch die Tatsache kompliziert, dass das harmloseste Axiom völlig unerwartete Konsequenzen haben kann. Nehmen Sie zum Beispiel das Axiom der Wahl: Wenn eine Menge disjunkter Mengen angegeben ist, kann man aus jeder Menge ein Element auswählen und zu einer Menge zusammenfügen. Es scheint, dass es etwas zu streiten gibt. Aber mit dem Axiom der Wahl haben Banach und Tarski bewiesendass zwei Kugeln S1 und S2 mit unterschiedlichen Radien in dieselbe endliche Anzahl paarweise disjunkter Mengen unterteilt werden können:

S1 = A1 + A2 + ... + An und S2 = B1 + B2 + ... Bn,

so dass für alle i: Ai = Bi. So wurden ungleiche Kugeln in identische Teile geteilt. Was für ein Unsinn ist das? Aber alles ist logisch. Was soll man glauben, was soll man ablehnen? Wenn wir jeweils eine hinzufügen, erhalten wir eine Kugel und eine andere - eine große.

John von Neumann hat mit dem Axiom der Wahl bewiesen, dass ein Segment A einer Linie mit einer endlichen Partition kleiner ist als ein Segment B einer Linie, die kürzer als ihre Länge ist. Glaube also an diese Mathematik. Wenn wir das harmlose Axiom der Wahl akzeptieren (und was offensichtlicher sein könnte als die Tatsache, dass ein Schüler aus der ersten Klasse, ein Schüler aus der zweiten usw. ausgewählt werden kann), ergeben sich völlig paradoxe Konsequenzen.

Übrigens zeichnete sich von Neumann auch in der Programmierung aus - er bewies die Möglichkeit der Selbstreproduktion von Automaten und die von Neumann-Computerarchitektur stammte von ihm; zeichnete sich in der Mathematik und in der Quantenphysik aus - er baute den mathematischen Apparat der Quantenphysik auf der Grundlage des Konzepts des Hilbert-Raums und versuchte, die Unmöglichkeit der verborgenen Parameter zu beweisen, auf die sich Einstein stützte, und argumentierte, dass die Quantentheorie unvollständig sei.

Wenn wir also zur höheren Zeichnung zurückkehren, bedauern wir, dass wir die angegebene universelle Flugbahn nicht mit konstruktiven Mitteln konstruieren können. Ach !!! Dies bedeutet, dass die Mathematik noch komplizierter ist, als es scheint. Sie können die Lösung beliebig nah umrunden, aber nie darauf kommen. Hier ist es die "Quadratur" des allgemeinen mathematischen Problems. Aber im Gegensatz zum Quadrieren eines Kreises,Bei jeder Erweiterung des Satzes konstruktiver Operationen gibt es keine Lösung . Sie können nur ziemlich private Aufgaben programmieren. Das häufigste Problem hat keine konstruktive Lösung. Darüber hinaus haben selbst viele bestimmte Probleme keine gemeinsame konstruktive Lösung, und daher müssen sie in noch spezifischere Probleme unterteilt werden, die möglicherweise eine konstruktive Lösung haben.

Zurück zum Satz von Godel stellen wir fest, dass eine Programmiersprache ein formales System ist. Sie können also ein Programm schreiben, für das es kein Programm gibt, das seine Richtigkeit oder Unrichtigkeit beweist. Ist es wirklich so? Ein schriftliches Programm oder dessen Negation kann als Axiom der Programmierung herangezogen werden.

Es kann also keine universelle Überprüfung von Programmen geben. Und es kann kein universelles Programm geben. Nun, obwohl es unmöglich ist, ein universelles Programm im Allgemeinen zu haben, aber zumindest ein universelles für ein bestimmtes Fachgebiet zu bekommen.
Hier ist ein typisches Programmbild:



Der Nachteil dieses Ansatzes besteht darin, dass er durch eine bestimmte Funktion geschärft wird. Natürlich können Sie es parametrieren. Bei dieser Parametrierung ändert sich der Typ der Funktion nicht, sondern nur die Argumentparameter. Ich möchte aber, dass die Parameter die Art der Funktion ändern können. Ja, Sie können eine Funktion als Parameter übergeben, beispielsweise ein Funktionsintegrationsprogramm. Aber es geht nicht über die Integration hinaus. Kurz gesagt - es wäre schön, eine vollständige Beschreibung des Themenbereichs als Parameter zu geben . Das heißt, Folgendes möchte ich:



Bah!- Aber das ist ein Programm auf Prologe. Prolog selbst fungiert als die oben erwähnte parametrische Funktion. Domänenbeschreibung - Prologentext, der die Domäne codiert. Das Ziel ist ein Parameter.

Ich war angenehm erstaunt, als ich versuchte, Suchaufgaben für viele Beziehungen in Prolog zu implementieren. Diese Suche wurde zuerst in Delphi und dann in C # implementiert. Was also von mehreren ziemlich großen Programmen in Delphi (C #) auf Prologe implementiert wurde, passt in eine kompakte Beschreibung der Beziehungen und Funktionen auf ihnen. Und dann könnten verschiedene Zielanforderungen für diese Beschreibung angefordert werden. Ich kann zwar nichts über die vergleichende Leistung sagen. Bei einigen konkreten Beispielen habe ich jedoch keinen signifikanten Unterschied festgestellt. Delphi zeichnete jedoch immer noch schöne Diagramme der Zielbeziehungen. Ich habe das bei Prologe nicht gemacht. Aber jedem sein eigenes. Logik muss durch eine logische Sprache implementiert werden, Präsentationen - Präsentationssprache, Berichte - Berichtssprache, Eingabe - Eingabesprache, Kommunikation - Kommunikationssprache, Dienstinteraktion - Verteilungssprache,Interaktion und Orchestrierung von Diensten.

Klassisch


Alte Klassiker


"Die Klassiker müssen wissen und ehren." Sie müssen nicht glauben, dass in unserem Jahrhundert alles erfunden wurde. "Nichts ist neu unter dem Mond." Dies gilt für die Programmierung und ihre Grundkonzepte. Der Begriff „Algorithmus“ selbst wurzelt übrigens im 9. Jahrhundert und leitet sich vom Namen des Mathematikers al-Khwarizmi ab. Algorithmisch viele Konstruktionen von Euklid. Sein Algorithmus zum Finden des größten gemeinsamen Teilers lebt also noch. Lully (Muslime warfen Steine ​​auf ihn - dies ist die „fortschrittliche“ Rolle der Religion) kam im 13. Jahrhundert auf die Idee einer logischen Maschine, die mit Symbolen arbeitet. In den Manuskripten von Leonardo da Vinci wurden Zeichnungen eines dreizehnstelligen Computergeräts gefunden. (In seinen Manuskripten wurden jedoch nur so viele gefunden, dass einige Gelehrte ernsthaft behaupten, Da Vinci sei kein Mann, sondern ein Außerirdischer.)

1623 entwarf Schickard, Professor für Sprachen (!!) an der Universität Thüringen, einen Computer. Great Pascal hatte eine klare Vorstellung von einem mechanischen Computer und baute mechanische Arithmometer. Der große Leibniz brachte die Idee vor, Aussagen zu arithmetisieren, um den Streit auf eine Berechnung zu reduzieren. "" Um zu streiten, setzen wir uns und finden heraus, wer Recht hat. " Wenn ich gleichzeitig eine Maschine benutzen könnte “, sagte Leibniz, baute einen Computer und träumte von einer universellen Maschine, die alles berechnen konnte.

Bebbage entwarf und begann im 19. Jahrhundert mit dem Bau einer universellen programmierbaren mechanischen Maschine . Dies war der erste Universalcomputer. Babbage ist etwas unverdient vergessen, deshalb kann ich nicht widerstehen, und ich werde einige interessante Fakten über ihn zitieren.

"Wir glauben, dass die Existenz solcher Geräte nicht nur Arbeit spart, wenn arithmetische Operationen durchgeführt werden, sondern auch so viel machbar macht, was, da es machbar ist, zu nahe an den Grenzen menschlicher Fähigkeiten liegt", heißt es in dem Bericht der British Association for the Advancement of Science für das Studium der Babbage Analytical Machine.

Wenn Sie der modernen Terminologie folgen - Babbage "Physiker". Er mochte keine Musik. In der Oper kam er auf Farbmusik. In Bezug auf Tennysons Gedichte

„Jede Minute stirbt ein Mann,
Aber jede Minute wird ein Mann geboren. “

Babbage schrieb an den Autor Folgendes: „Ich muss Ihnen ernsthaft mitteilen, dass diese Berechnungen zu dem Schluss führen, dass sich die Gesamtbevölkerung in einem Zustand konstanten Gleichgewichts befindet. Gleichzeitig ist bekannt, dass die genannte Menge ständig zunimmt. Daher erlaube ich mir anzunehmen, dass in der nächsten Ausgabe Ihres ausgezeichneten Gedichts die fehlerhaften Berechnungen, auf die ich hingewiesen habe, wie folgt korrigiert werden:

Jeden Moment stirbt eine Person
Aber 1,16 Menschen werden geboren ...

Ich kann Ihnen eine genauere Zahl sagen - 1.167, aber dies sollte natürlich den Rhythmus des Verses verletzen ... “

Trotzdem (und vielleicht auch dank dessen) wollte Babbage die Natur des Humors untersuchen. Er ist ein typischer Ideengeber. Aufgrund eines Überflusses an Ideen brachte er seine zahlreichen Vorschläge und Projekte nicht zum Abschluss. Erfand den Tacho, schuf Hobel- und Drehmaschinen, Formen, Fräser und schlug eine Methode zum Gravieren auf Holz vor. Im Allgemeinen ist dies der englische Leonardo da Vinci. 1832 schrieb er ein Buch mit dem Titel „Die Wirtschaftlichkeit von Maschinen und Produktion“, in dem er die Systemanalyse, die Betriebsforschung und die wissenschaftliche Organisation der Arbeit vorwegnahm. Marx kannte dieses Buch gut und zitierte es in Capital. Keynes sprach mit Bewunderung darüber. Die wichtigste Erfindung ist jedoch eine Analysemaschine, bei der es sich um einen universell programmierbaren mechanischen Computer handelt. Es gab nicht genug Staatsgeld und Babbage gibt sein Geld für den Bau eines Autos aus. Auf der Suche nach Geld kommen alle Arten von Quellen auf. Ada Lovelace entwickelt zusammen mit seinem Partner ein „Win-Win-System“ für Pferderennen. Das System führte dazu, dass die Dame mit Familienperlen bezahlen musste. Dann plant Babbage, einen Roman für das Jahr zu schreiben und den Erlös für das Auto auszugeben. Hat seinen Freund von diesem Unterfangen abgehalten. Dann plant der unermüdliche Babbage, das Land mit Tic-Tac-Toe-Maschinen zu überfluten und den Erlös erneut in das Auto zu stecken. Dafür wurde aber Geld benötigt.

Straßenmusiker störten seine Auftritte. Babbage durch die Presse, das Parlament, die Polizei kämpft gegen sie. Als Reaktion darauf hielt es jeder Betrunkene für seine Pflicht, unter den Fenstern von Babbage zu schreien. Die Musiker sind bereits von weitem, um Spaß unter seinen Fenstern zu haben. Nach Babbages Tod steht in dem Nachruf in The Times: "... ein Mann, der trotz der Verfolgung von Straßenmusikern fast 80 Jahre alt wurde." Ich frage mich, welche Jahre er jetzt gelebt hätte, wenn moderne Straßenmusiker mit viel größeren Dezibel bewaffnet wären.

Sobald Babbage einen Plan zur wirksamen Bekämpfung von Bränden ausgearbeitet hatte, sagte er: "Ich werde ihn nicht veröffentlichen, sie werden alle verloren sein und alle ihre Häuser verbrennen lassen." Ich hasste Frömmigkeit. Als er in Italien eine Wasserpumpe mit der Aufschrift sah, dass der Besitzer sie im Namen der Liebe zu Gott und seinem Land gebaut hatte, damit der müde Wanderer seinen Durst stillen konnte, war Babbage vorsichtig, untersuchte die Wasserpumpe und stellte fest, dass jedes Mal ein Reisender gepumptes Wasser, das meiste davon fiel in das Haus eines frommen Meisters. Nach dieser Episode fügte Babbage hinzu: " Es gibt nur eine Sache, die ich mehr hasse als Frömmigkeit: Patriotismus. "

Der erste Programmierer für die Babbage-Analysemaschine war die Tochter des Dichters Byron Ada. Hier sind einige ihrer Aussagen.

"Die Analysemaschine kann als die materielle Verkörperung einer unbestimmten Funktion mit einem beliebigen Grad an Allgemeinheit oder Komplexität definiert werden " !!!
"Wenn wir über eine neue Erfindung nachdenken, stoßen wir oft auf Versuche, das zu überschätzen, was wir bereits für interessant oder sogar herausragend hielten, und andererseits den wahren Stand der Dinge zu unterschätzen, wenn wir feststellen, dass unsere neuen Ideen diejenigen ersetzen, die wir für unerschütterlich hielten."

Ada prägte die Begriffe "Arbeitszellen", "Zyklus". Die im Pentagon verwendete Programmiersprache „Ada“ hat also einen würdigen Namen.

Babbage war eher ein Physiker als ein Mathematiker. Er war von der praktischen Verkörperung eines Universalrechners angezogen. Als sich Mathematiker an die Arbeit machten, wollten sie wie immer das Konzept eines Universalrechners formalisieren. Schließlich ist das informelle Konzept einer Maschine eine Sache, und das genaue Konzept ist eine andere. Wie wir gesehen haben, gehen Intuition und Formalismus am Ende auseinander. Church, Markov waren die ersten, die das Konzept eines Algorithmus formalisierten. Die erste als rekursive Funktion, die zweite als eine Reihe von Permutationen im Alphabet, dh als Grammatik. Turing formalisiert das Konzept eines Algorithmus in fast technischer Hinsicht - es ist eine Turing-Maschine.

Eine universelle Turingmaschine ist das theoretische Äquivalent einer universellen Rechenmaschine - eines Computers. Es stellt sich heraus, dass es genug Sprache mit zwei Zeichen (| und einem Leerzeichen), vier Befehlen und unendlich viel externem Speicher gibt - und jeder Algorithmus kann auf einer universellen Turing-Maschine programmiert werden. Es ist bewiesen, dass alle drei obigen Definitionen des Algorithmus äquivalent sind - das, was in einer Definition ausgedrückt wird, wird in anderen Definitionen ausgedrückt. Die Verdienste von Turing spiegeln sich in der Existenz des Turing-Preises für die besten Programmierleistungen wider. Übrigens hat Turing den sogenannten Turing-Test vorgeschlagen - einen Test zur Unterscheidung einer Person von einem Computer. Dies ist ein rein funktionaler Test ohne mystische Substanzen wie die menschliche Seele . Wenn eine Person in einem Raum sitzt und eine Maschine über das Display mit ihnen in einem anderen kommuniziert und wir lange Zeit nicht entscheiden können, wo sich die Person befindet und wo die Maschine bedeutet, ist diese Maschine dieser Person intellektuell gleichwertig und es besteht keine Notwendigkeit zu diskutieren, welche gemacht und wie. Dies ist nicht wesentlich.

Der bereits erwähnte von Neumann hat rein theoretisch die Möglichkeit der Selbstreproduktion von Automaten bewiesen. Diese Funktion ist übrigens in der Praxis implementiert.

Klassische Literatur


Der Text steht auf einer der babylonischen Tafeln: „Es sind schwere Zeiten gekommen, die Götter sind wütend geworden, Kinder gehorchen ihren Eltern nicht mehr und jeder versucht, ein Buch zu schreiben.“ Eine große Anzahl von Büchern wurde gelesen, halb gelesen. Aber nur wenige von ihnen waren für mich entscheidend. Welche? Zu Beginn meiner IT-Aktivitäten waren dies:

Brooks Wie Softwaresysteme entworfen und programmiert werden
Ein Klassiker zu den Problemen großer Projekte.
Dahl, Dijkstra, Hoor. Strukturelle Programmierung .
Es markiert den Beginn einer neuen Ära in der Programmierung. Sie sind überrascht, wie unerwartet und tief Sie gewöhnliche Programme betrachten können. Es enthält viele philosophische Bemerkungen.
Dijkstra. Die Disziplin der Programmierung.
Absolut tolles Buch. In meiner Jugend habe ich zwei Ferien damit verbracht. Leider kann ich mir nicht sicher sein, dass ich alles verstanden habe. Als ich Programmierer traf, die versuchten, mit ihrem Intellekt zu glänzen, ließ ich sie dieses Buch lesen. Sie gaben sie mit einiger Verlegenheit zurück. Eine ähnliche Reaktion war auf den „überarbeiteten Bericht über Algol-68“ (wie eine der Behörden über Algol-68 formulierte - „es ist eine Sprache für Programmierer und Dichter“).
Wirth. Systematische Programmierung.
Das erste gelesene Buch zeigte, dass ein Programmier-Tutorial gut sein kann.
Yodan. Strukturelle Programmierung .
Die Hauptsache ist zu einem modischen Thema zu beachten. Aber hier war es fehl am Platz.
Gris. Wissenschaft der Programmierung
„Wenn wir das entscheidende Buch der intellektuellen Offenbarung von Dijkstra (die Disziplin der Programmierung) betrachten, ist das Buch Gris ein apostolischer Akt“ (Ershov).
Aho, Hopcroft, Ullman. Konstruktion und Analyse von Rechenalgorithmen
Das Gegengewicht zu modernen Eintagesbüchern wie „C- + in 21 Sekunden, eine Minute, ...“ enthält eine Darstellung wichtiger schneller Algorithmen, die für lange Zeit nicht sterben werden.
Touren. Programmiermethode
Es gibt viele interessante Hinweise sowohl zum Programmieren im Kleinen als auch zum Programmieren im Großen.
Kushnirenko. Programmierung für Mathematiker
Tolles Tutorial mit einem hohen Präsentationsniveau.

Während meiner aktiven Programmierung konnte dieser Liste nur sehr wenig hinzugefügt werden. Seitdem ist viel Zeit vergangen. Aber selbst jetzt hat die Programmiertechnologie keine fundamentale Basis wie die Physik als Basis für technische Technologie. Die Situation ähnelt dem Stand der mittelalterlichen Technologie, als sie keine wissenschaftliche Grundlage in Form von Physik hatte. Dann erscheinen die Projekte der Perpetual Motion Machine.

Verschiedenes


Mythen


Jeder kann programmieren . Aus diesem Grund an den Ort des Zitats von Shakespeare: " Ich kann Geister aus dem Abgrund beschwören, und ich kann und jeder kann. Die einzige Frage ist, ob sie zum Anruf gehen ." Wie bei jeder beruflichen Tätigkeit erfordert das Programmieren eine Neigung und Fähigkeit. Es scheint mir, dass nicht alle Programmierer programmieren können. Es ist möglich, Windows NT ein wenig zu kennen und machtlos zu sein, bevor Sie eine elementare Anwendungsaufgabe selbst lösen.

Jeder kann in seiner Muttersprache schreiben, aber es gibt nicht so viele gute Schriftsteller. Dies gilt auch für das Schreiben in einer Programmiersprache.

Die Aufgabe der Buchhaltung ist einfach zu schreiben und uninteressant, aber das Erstellen einer Webseite ist schwierig und interessant.

Sowohl der erste als auch der zweite können variiert werden. Die Hauptsache: Die alltägliche Aufgabe sei einfach umzusetzen, und man sollte nicht besonders daran arbeiten. Nur alle Arten von Kunshtyuki verdienen Aufmerksamkeit. Aber so sagen meiner Meinung nach nur Programmierer, ohne ein einziges anständiges Projekt zu schaffen. Dies ist wie eine Vorstellung von Musik als modischen Kopfhörern - und viele Musikliebhaber in Kopfhörern wandern und mit einer besonderen Art von Beteiligung an einer Art Esoterik. Ich selbst habe einmal dem Programmierer-Snobismus Tribut gezollt. Anscheinend durchläuft jeder Programmierer die Phase „Ich weiß alles und ich kann alles“. Aber für die meisten dauert es nicht lange.

Diese Art von Stimmung kann von der "hohen" Seite sein. In einer Firma treffe ich einen Programmierer aus Fiztekh, der einst einen Flug mit ballistischen Raketen programmierte. Wir beginnen ein Gespräch über den Einsatz von Mathematik im Bankwesen. Er bringt mir sofort viele Seiten mit einem mathematischen Modell eines Fragments der Bankaktivität - Differentialgleichungen mit Verzögerung (!!) (die Verzögerung kam von Zinsen - das heute ausgegebene Darlehen macht nach einer Weile einen Gewinn - das ist die Verzögerung). Es stellt sich heraus, dass er von der Gewinnfunktion der Bank ausgeht und dann die bekannten Methoden der Mathematik anwendet. Die Aufgabe besteht dann aber darin, diese Funktionalität zu finden. Aber dem Mathematiker-Programmierer schien dies eine Kleinigkeit zu sein, mit der jeder Bankier fertig werden würde, aber der Bankier würde nicht in der Lage sein, eine Reihe von Formeln weiter anzuhäufen. Der zweite ist wahr, der erste nicht. Und das ist der Punkt. Was benötigt wird, ist nicht nur Mathematik, sondern Arbeitsmathematik. Ansonsten ist es nur eine Scholastik der Formeln. Übrigens wird die Gewinnfunktion sicherlich eine diskontinuierliche Funktion sein (fast alle Wirtschaftsindikatoren sind diskontinuierlich, zum Beispiel der Wechselkurs), und daher sind kontinuierliche klassische Methoden nicht darauf anwendbar - zum Beispiel das Pontryagin-Maximalprinzip.

Gib mir einen Computer, der stark genug ist und ich werde jeden Code knacken . Es gibt viele Programmierer, die heiser sicherstellen, dass jeder Code gehackt werden kann. Geben Sie nur einen Computer an, der stark genug ist. Meiner Meinung nach ist dies eine Unkenntnis der von Shannon aufgestellten Grundlagen der Informationstheorie. Und alles ist ganz einfach. Betrachten Sie Rauschen als verschlüsselte Nachricht. Aus dem Lärm kann alles extrahiert werden. Es kann in keiner Weise dekodiert werden - um etwas Nützliches zu extrahieren. Ansonsten ist dies kein Rauschen. Das der Nachricht überlagerte Rauschen erzeugt ein Rauschen. Lassen Sie uns also ein Geräusch auf die Nachricht setzen: Rauschen (W) + Nachricht (C) = Rauschen1 (1). Rauschen 1 kann nicht entschlüsselt werden. Natürlich können Sie durch umfassende Suche der Nachricht auf den Grund gehen. Aber woher weißt du, dass dies die richtige Botschaft ist? Lassen Sie uns die Nachricht "Petja ist ein Dummkopf." Eine vollständige Suche extrahiert diese Nachricht, aber auch Folgendes: "Petya ist ein kluger Kerl" und "Vasya ist ein Narr" usw. Also welches nehmen?

Sie können die Nachricht jedoch trotzdem extrahieren. Dazu müssen Sie das Rauschen und die Überlagerungsmethode kennen. Dann ist = 1-. Dies erfordert jedoch keinen Supercomputer, aber Sie müssen das Rauschen kennen.

Im Übrigen scheint ein ähnliches Schema bei Gesprächen zwischen dem amerikanischen und dem russischen Präsidenten angewendet zu werden.

Programmierer brauchen keine Mathematik

Um die Programmierung herum begannen die Geisteswissenschaftler zu kämpfen. Wie kann ein Programmierer eine schöne Webseite ohne Ästhet zeichnen und wie kommt er ohne Ästhet mit einer GUI-Oberfläche zurecht? Und Transplantationen erscheinen. Und es scheint, dass sie Programmierer sind.

Es scheint mir, dass ein Physiker ohne Mathematik unglücklich ist, ebenso ein Programmierer und unglücklich und lächerlich ohne Mathematikkenntnisse. Bestenfalls ist es ein Handwerker. Sie kennen jede Option des Betriebssystems, wissen, wie alle Arten von Treibern installiert werden, und können kein elementares Projekt entwickeln. In der Technologie ist dies eine vertraute Situation. Es gibt Ingenieure und Arbeiter. Sie können ein ausgezeichneter Konstrukteur von Autos sein und schlecht fahren, oder Sie können ein Rennfahrer sein und keine verdammte Sache, die man in den Prinzipien des Motorenbaus verstehen muss.

Prinzipien


Welche allgemeinen Bestimmungen haben Sie beeindruckt?

Teilen und erobern

Das nützlichste Prinzip. Jede Aufgabe muss in mehrere einfachere unterteilt werden können, damit die Unteraufgaben gelöst und kombiniert werden können, um eine Lösung für das ursprüngliche Problem zu erhalten. In Bezug auf die erhaltenen Unteraufgaben kann man dasselbe tun. Usw. Die Kunst der Teilung ist in vielerlei Hinsicht die Kunst, einen Algorithmus zu finden. In den Beispielen fehlen Zahlen: Die schnelle Sortierung teilt die sortierte Menge in zwei Teile, die binäre Suche teilt die Suchmenge in zwei Teile.

Hässlich aber einheitlich lassen

Schaffen Sie keine unnötige Abwechslung. Es erhöht nur die Entropie. Akzeptieren Sie den einheitlichen Standard und halten Sie ihn unerschütterlich ein. Dies gilt für Namen, Abkürzungen und Codierungsstile.

In dieser Hinsicht ist es überraschend, dass es keine notwendigen Sprachkonstrukte gibt, die das System vorantreiben. Die fortschrittlichsten Tools zum Entwickeln von DBMS-Anwendungen selbst basieren auf Dateiansätzen. Und wie wäre es bequemer, das Projekt in Form einer Datenbank zu präsentieren und den Such- und Auswahlapparat darauf anzuwenden ...

Sprache definiert Denken

Indem wir uns auf bestimmte syntaktische Konstruktionen beschränken, ahnen wir nicht einmal, wie wir unser Denken einschränken. Was wäre eine Differentialrechnung ohne mathematische Symbolik? Was wäre die Syntax einer Programmiersprache ohne den Backus-Naur-Formalismus oder gleichwertig?

Programm = Algorithmus + Daten

In einem objektorientierten Ansatz erstreckt sich diese Position auf elementare Konstrukte - Objekte, die aus Daten und Methoden bestehen. Die Programmierung wurde zuerst im Zeichen von Algorithmen und dann von Daten entwickelt. Betreff DBMS fällt vollständig unter die Überschrift „Daten“. Aber auch dort haben sich die Algorithmen eingeschlichen - Suchmethoden, Indizierungsmethoden.

Modellieren Sie einen Themenbereich

Das verbale Modell erzeugt eine Vorstellung des Themenbereichs, die für den IT-Spezialisten zugänglich ist und die wichtigsten enthält. Ein Informationsmodell vom Typ "Entität - Kommunikation" generiert eine Datenbank. Das Funktionsmodell „Modul M empfängt am Eingang In und konvertiert es in Out“ definiert die Architektur der Programme. Ein Objektmodell repräsentiert einen Themenbereich als eine Reihe interagierender Objekte. Das Ereignismodell hilft dabei, die Bewegung des Systems als Änderung als Reaktion auf bestimmte Ereignisse darzustellen.

Einige Aufgaben


Ein paar Aufgaben, die mich beeindruckt haben. Ich zitiere natürlich nur kleine Aufgaben. Es ist schwer, kurz über große Aufgaben zu sprechen und sich an das Genre zu halten.

Problem mit Kaffeebohnen

Die Bank verfügt über eine bekannte Anzahl schwarzer und weißer Kaffeebohnen und einen kostenlosen Vorrat an Bohnen. Wählen Sie zufällig zwei Körner aus der Dose. Wenn sie die gleiche Farbe haben, legen Sie sie auf Lager und legen Sie schwarze Körnung in die Bank. Wenn sie unterschiedliche Farben haben, geben Sie die weiße Maserung zurück und legen Sie die schwarze auf Lager. Setzen Sie den Vorgang fort, bis sich ein Korn in der Bank befindet. Welche Farbe wird es haben?

Lösung.
Der Prozess ist eindeutig zyklisch: Die Aktion „Herausnehmen und Einsetzen“ wird wiederholt
Die Invariante des Zyklus ist die Parität der Anzahl der weißen Körner. Wenn also die anfängliche Anzahl der weißen Körner gerade ist, ist das letzte Korn schwarz, und wenn es ungerade ist, dann weiß.

Das Handbuch enthält

drei sehr lange Dateien: Arbeiter r, Studenten s, Arbeitslose b. Sie sind nach Namen geordnet. Es ist bekannt, dass es Schurkenstudenten gibt, die arbeiten und auf der Liste der Arbeitslosen stehen und daher Arbeitslosengeld erhalten. Schreiben Sie ein Programm, das den ersten solchen Schurken findet - den, dessen Name zuerst in alphabetischer Reihenfolge steht.

Lösung.
Sei i, j, k die Koordinaten in den Dateien r, s, b
I, j, k: = 0,0,0; - von vorne beginnen
Bisher (r (i) <> s (j) und s (j) <> b (k) und b (k) <> r (i)) den
Anfang wiederholen
Wenn r (i) <s (j ) dann i: = i + 1;
Wenn s (i) <b (j) ist, dann ist j: = j + 1;
Wenn b (i) <r (j) ist, dann ist k: = k + 1;
Ende

i, j, k enthalten Schurkenkoordinaten in ihren Dateien.

Aber wie elegant es in Dijkstras Notation aussieht:

i, j, k: = 0,0,0;
do
 R (i) <S (j) i: = i + 1;
 S (j) <B (k) j: = j + 1;
 B (k) <R (i)  k: = k + 1;
od
{i, j, k sind die gewünschten Koordinaten}
Wobei das Symbol  die sogenannte Wache kennzeichnet (R (i) <S (j) usw.).
Es ist schade, dass diese Notation nicht in den Sprachen enthalten ist.

Das Gleichnis von den Toiletten in den Zügen

Es war einmal ein bestimmtes Land, in dem jeder Wagen mit einer Toilette gebaut wurde. Aber dann erschien ein Ökonom und beschloss zu sparen, indem er die Hälfte der Wagen mit einer Toilette versorgte. Also fingen sie an zu tun. Aber sie haben vergessen, vor diesen Sortierstationen zu warnen, an denen der Zug fährt. Infolgedessen hatten einige Züge keine Toiletten mehr. Um die Situation zu korrigieren, wurde jeder Wagen mit einer Aufschrift versehen, aus der hervorgeht, ob sich eine Toilette darin befindet, und die Kupplungen angewiesen: „Es sollte ungefähr die Hälfte der Toiletten im Zug sein.“ Obwohl dies das Leben der Anhänger komplizierte, folgten sie ehrlich den Anweisungen. Es gab jedoch Beschwerden, dass sich die Toiletten manchmal in einer Hälfte des Zuges befanden. Um das Problem zu beheben, veröffentlichten sie eine neue Anweisung: „Wechseln Sie beim Koppeln die Wagen mit den Toiletten und ohne sie.“ Dies fügte den Anhängern zusätzliche Arbeit hinzu, aber sie begannen murrend, den Anweisungen ehrlich zu folgen. Es gab jedoch Beschwerden darüberdass für ein Auto ohne Toilette die Toilette nicht am Anfang von mindestens einem benachbarten Auto stand, sondern am anderen Ende von beiden. Schreckliche Ungerechtigkeit für ein demokratisches Land. Was zu tun ist?Nach dem Nachdenken erteilten die Beamten eine zusätzliche Anweisung: „Jeder Wagen mit einer Toilette mit einem Pfeil zu versorgen, der angibt, wo sich die Toilette befindet. Beim Koppeln sollten alle Pfeile der Waggons in eine Richtung gerichtet sein. “ Die Anhänger spannten sich an und begannen, dies zu tun, obwohl sie nicht genügend Plattenspieler hatten. Aber - oh Horror! - Die Passagiere begannen sich Sorgen zu machen, dass die nächste Toilette zwar nicht mehr als ein Auto war, aber nicht klar war, auf welcher Seite sich die Toilette befand. Zusätzliche Anweisungen kamen heraus: "Zeichnen Sie in jedem Auto ohne Toilette den Pfeil" Toilette "und verriegeln Sie die Autos so, dass dieser Pfeil auf die nächste Toilette zeigt." Die Anhänger heulten: Sie hatten keine Zeit in der Zeit. Und dann gab es einen Mann, der Folgendes bemerkte: Wenn Sie das Auto mit und ohne Toilette einhaken, so dass sich die Toilette in der Mitte des Paares befindet, und das Paar niemals lösen,dann behandelt die Sortierstation anstelle von N orientierten Wagen N / 2 symmetrische (nicht orientierte) Wagenpaare. Dann verschwanden alle Sortierprobleme. Zwar müssen Züge eine gerade Anzahl von Wagen enthalten. Aber du kannst es ertragen. Also taten sie es.

Die Klassiker behaupten, dass, obwohl Computer in diesem Land noch nicht bekannt waren, derjenige, der die Lösung fand, ein echter Programmierer war.

Schnelle Sortierung

Nach dem Sortieren und Sortieren von Blasen ist Shell eine Offenbarung. Schöner Algorithmus und das schnellste Ergebnis.

Ein Programm, das den Text von sich selbst druckt.

Dies ist ein Programm, dessen Ergebnis das Drucken seines eigenen Textes ist. Ich war angenehm erstaunt, wie ein junger Programmierer dieses Programm in einer Viertelstunde in Pascal schrieb.

Schach auf mehreren Zeilen

Ich war beeindruckt von dem Programm von ungefähr fünfzig Zeilen in C, das anständig Schach spielte. Eine Zeile kann mehrere Anweisungen enthalten.

Fälle


Polnischer Eintrag


Es ist lange her. Auf dem Messegelände Belpromstroibank entwickeln wir ein Projekt zur Pflege von Daten zu Bauprojekten in der Republik. Der Berichtsgenerator wird gezeichnet. Jeder Graph kann durch eine beliebige arithmetische Formel definiert werden. Wie berechnet man das? Es wird entschieden, dass der Benutzer ein spezielles Formular ausfüllen muss, in dem er selbst die Formel auf elementar reduziert. Zum Beispiel wird die Formel r = (a + b) / (cd) wie folgt zerlegt: 1) x = a + b, 2) y = cd, 3) r = x / y. Also taten sie es. Wir rennen hinein. Das Projekt wird umgesetzt. Täglich werden Dutzende von Berichten auf zig Kilogramm perforiertem finnischem Papier gedruckt. Der Chef denkt über die Weiterentwicklung des Projekts nach. Allmählich kam ihm die Idee, dass die Zerlegung einer Formel von der Maschine selbst durchgeführt werden könnte. Auf diese Weise wird der Benutzer von der schlechten Arbeit befreit - der Zerlegung der Formel (Zerlegung in eine Folge von einfachen).Die Idee, eine Formel in einen klammerfreien Datensatz umzuwandeln, erscheint. Als nächstes kommt die Idee eines Stapels. Und dann erinnere ich mich, dass ich irgendwo über die polnische Aufzeichnung des Ausdrucks gelesen habe. Ich finde ein Buch und sehe, dass mein Chef selbst auf die Idee eines polnischen Datensatzes (oder mit anderen Worten eines Postfixes) und eines Stapels gekommen ist. All dies wäre ohne die Erfindung des Fahrrads sehr erfreulich gewesen. All dies sollte ein Programmierer wissen. Aber sowohl er als auch ich waren Amateure - Außerirdische aus anderen Berufen ... Leider stellte sich heraus, dass unsere Profis (die das BSU-Matfak absolvierten und am Computer Research Institute arbeiteten) dies nicht wussten. Hier ist es also noch trauriger.All dies sollte ein Programmierer wissen. Aber sowohl er als auch ich waren Amateure - Außerirdische aus anderen Berufen ... Leider stellte sich heraus, dass unsere Profis (die das BSU-Matfak absolvierten und am Computer Research Institute arbeiteten) dies nicht wussten. Hier ist es also noch trauriger.All dies sollte ein Programmierer wissen. Aber sowohl er als auch ich waren Amateure - Außerirdische aus anderen Berufen ... Leider stellte sich heraus, dass unsere Profis (die das BSU-Matfak absolvierten und am Computer Research Institute arbeiteten) dies nicht wussten. Hier ist es also noch trauriger.

Leider scheint es mir, dass diese Situation nicht nur in der Programmierung liegt. Wir werden von Drei-Wege-Ärzten behandelt, Drei-Wege-Bauherren bauen und Drei-Wege-Lehrer unterrichten. Wir haben "den Studenten, der nicht lernt, sondern nur langweilt". Und dann kommen Amateur-Experten heraus. Infolgedessen haben wir viele ungebildete Narren, viele gebildete Narren, viele ungebildete kluge Leute, aber nur sehr wenige kluge und gebildete Leute.

Ein bisschen mehr über Amateurismus. Nachdem er für uns gearbeitet hatte, beschloss der Chef (wir werden ihn A.M. nennen), den Leiter der Programmierer zu wechseln. Ich werde also als Anwärter betrachtet. Es scheint, als würde ein nettes Interview geführt, aber die Tests sind tatsächlich im Gange. Und so wird mir die Frage gestellt: "Wie wird das Ende der Datei physisch bestimmt?" Leider wusste ich das nicht und antwortete, dass sie sagen, warum sollte ich wissen, ob die Sprache mir eine EOF-Situation gibt und es keine Rolle spielt, wie sie implementiert wird. Wie K. Prutkov sagte: "... Kostaki hat recht, ich habe recht." Aber als Programmchef wurde ich gehackt. Mir wurde jedoch angeboten, die Direktoren zu leiten. (Zurück zum Anfang der Geschichte und in Erinnerung an die Klassiker können wir sagen: "Der Traum des Idioten wurde wahr"). "Unter Berücksichtigung der breiten Weltanschauung", wie A.M. Also wurden die Schafe von den Ziegen getrennt - Generalisten von Spezialisten. Und weiter A.M. Geschickt mit Personal umgehen.Meine Herangehensweise an das Problem „von oben nach unten - von Problem zu Maschine“ dominierte und dominierte, und mein Kollege hatte das Gegenteil von „von unten nach oben - von Maschine zu Problem“. A.M. führte uns sofort zu verschiedenen Polen. Ein Kollege begann an Treibern für Eingabegeräte für Bauprojekte zu arbeiten, und ich arbeitete an einem mathematischen Modell, um Berichte über den Status von Bauprojekten zu erhalten. In anderen Projekten habe ich das Gegenteil mit anderen Managern getroffen. Infolgedessen spricht man über Bits und der zweite über Integrale und versteht sich nicht.In anderen Projekten habe ich das Gegenteil mit anderen Managern getroffen. Infolgedessen spricht man über Bits und der zweite über Integrale und versteht sich nicht.In anderen Projekten habe ich das Gegenteil mit anderen Managern getroffen. Infolgedessen spricht man über Bits und der zweite über Integrale und versteht sich nicht.

Also wurde ich Direktor. Und natürlich programmiert. Und die Programmierer wurden von einer anderen Person geführt, einem Profi. Wir sind gute Freunde geworden. Und ich erhielt von ihm die schmeichelhafte und ironische Charakterisierung „Spezialist für ungewisse Probleme“, in der ich erkannte, dass ich das banalste Problem auf die mathematische Grundlage bringen und es festigen konnte, auch wenn es im Wesentlichen ein Bluff sein könnte. Das Erbe eines theoretischen Physikers ist betroffen.

Am Beispiel von A.M. Ich habe gesehen, dass ein Projekt ein Produkt von weniger Intelligenz als Willen ist .
Mit Respekt vor dem Koch haben wir sogar seine Sätze gesammelt.

Beispiele:

" Von und nach " - es gibt nichts, was Sie nur an Ihre Wunde denken könnten. Sie müssen den gesamten Prozess sehen.
" To Bitik " - ein hackiger, oberflächlicher Ansatz wird hier nicht funktionieren.
" Ärmel hochkrempeln " - es gibt nichts zu befreien, ohne Netz zu arbeiten.
Ist das so? "- Redest du Unsinn, Bruder?

Diese Aufzeichnungen wurden täglich mit ihm wiederholt. War aber bei A.M. und unangenehmere Eigenschaften. Er war sehr gern Brainstorming in den Ferien. Urlaub. Die Tischgestaltung ist abgeschlossen, der Champagner entkorkt - und dann auf den Anruf von AM warten. Das stimmt, die Glocke. - „Dann habe ich ein paar Ideen. Ich schlage vor, sie zu besprechen. “ Und - auf Wiedersehen Urlaub.

Eine Schlange, die den ganzen Raum ausfüllt

Sobald die Anzeigen erschienen, erschienen visuelle Spiele. Eine der ersten ist eine Schlange, die ihren Schwanz fängt. Die Schlange musste geführt werden, um zufälligen Hindernissen auszuweichen und Befehle nach links / rechts zu geben. Die Schlange verlängerte sich ständig, so dass weniger Platz übrig blieb. Und dann hatte ich eine Aufgabe. Ist es möglich, eine Schlangenroute so zu wählen, dass sie den gesamten Bildschirmbereich ausfüllt? Nachdem ich ein paar Stunden nachgedacht hatte, fand ich den richtigen Weg. Lass uns zum Mittagessen gehen. Ich stelle die Aufgabe meinem Kollegen zur Verfügung. Und zu meiner Überraschung hatten wir keine Zeit, den ersten einzuschenken, da er das Problem löste (obwohl die Schlangen lang waren, aber nicht für ein paar Stunden). Nachdem ich über diesen Fall nachgedacht hatte, begann ich mich damit zu trösten, dass anscheinend der Wunsch zu essen den Intellekt anregt.

Klassische Sätze


Einige mittlere Sätze von Klassikern kosten Volumen der Mittelmäßigkeit. Hier sind einige Aussagen, die ganze Bereiche der Programmierung definiert haben.

Brooks :

  • Hinter der Meisterschaft steht der Einfallsreichtum, durch den wirtschaftliche und schnelle Programme entstehen. Fast immer ist dies das Ergebnis eines strategischen Durchbruchs, nicht einer taktischen Fähigkeit. Manchmal ist ein solcher strategischer Durchbruch ein Algorithmus, wie zum Beispiel die von Cooley und Tukey vorgeschlagene schnelle Fourier-Transformation, oder ein Ersatzn2Vergleiche auf n * log (n) beim Sortieren.

    Häufiger kommt es durch die Darstellung von Daten oder Tabellen zu einem strategischen Durchbruch. Der Kern des Programms ist hier. Zeigen Sie mir die Flussdiagramme, ohne die Tabellen zu zeigen, und ich werde in die Irre gehen. Zeigen Sie mir Ihre Tabellen, und Flussdiagramme werden höchstwahrscheinlich nicht benötigt: Sie sind offensichtlich .

  • Datenpräsentation ist die Essenz der Programmierung.
  • Sich an die Anforderungen perfekter Genauigkeit zu gewöhnen, ist meiner Meinung nach am schwierigsten beim Erlernen der Programmierung.
  • Sobald das Projekt endgültig angenommen ist, ist es im Sinne seiner Konzepte veraltet.

Wirth :

  • Programm = Algorithmus + Daten.
  • () , , .
  • . , .
  • , , .
  • , (, ), . , .
  • , , , , . , . , . .
  • ( ) ; , . , .
  • , , . , :

    1. ,
    2. Die gewählte Zerlegung ermöglicht es Ihnen, Anweisungen in gewisser Weise näher an die Sprache zu bringen, in der das Programm letztendlich formuliert wird.

SONNE :

Ein Netzwerk ist ein Computer.

Eine super Idee.Daher sollte sich ein verteiltes Programm, das auf der Ebene einer Entwicklungssprache betrachtet wird, im Idealfall nicht von einem einheitlichen Programm unterscheiden. Die verteilte Basis auf der Ebene der Nutzung sollte sich nicht von der nicht zugewiesenen unterscheiden. Die Verteilung sollte vom Betriebssystem implementiert werden. Die Verteilung und Orchestrierung von Diensten sollte auch nicht das Anliegen eines Anwendungsprogrammierers sein.

Dijkstra :

  • - , ( , , , ).
  • -: – .
  • ? : “ : . , , , – , ,
    … , . , , , “” . – … , ,
    – ”.


  • 1/106104 . . , -, .
  • .

    , , , , , , . , , , . , , , . , , , . , , . , – , . , , , , .
  • … . : “” ? : ””, , ; : ””, — . , , – – , . , , , . : , .
  • , .
  • , , « » — ! — « ». - ,
    , : « , , , , «» , ?» , , -, ." , , , , .
  • , , ( ), , « ». ; , , , « », . . , ,
    .

Weiß nicht_to :

Die wichtigste Programmiersprache ist die Muttersprache. Ein Programm in einer formalen Sprache ist eine Übersetzung von Ideen, die in der Muttersprache formuliert sind. Daher werden diejenigen, die sich in ihrer Muttersprache dunkel präsentieren, auch in der formalen Sprache dunkler.

Marketing und Programmierer


Ich habe Werbematerial für die Ausstellung zu meinem Projekt vorbereitet. Vermarkter meiner Firma griffen mein Werbematerial mit solchen Angriffen an:

  • Das Material hat viele Negative (eine Beschreibung der Mängel bestehender Projekte), und dies trägt negative Energie
  • Die Größe der Flugblätter passte nicht in den goldenen Schnitt.

Und so etwas noch.

Diese Vermarkter bemerkten jedoch nicht das Fehlen von Telefonen, Adressen und Informationen über das Unternehmen in den Broschüren, auf die mein ehemaliger Chef freundlich aufmerksam machte, als ich meine Materialien auf der Ausstellung kennenlernte. Ich fing an zu stoßen: Meine Herren, ich gebe Ihnen eine technische Beschreibung des Produkts, und Sie, Vermarkter, geben ihm eine Marktbeschreibung. Wo da. Sie stimmen nur zu, zu kritisieren. Infolgedessen kam es an die Spitze des Unternehmens. Er sagte mir: Gehorche dem Vermarkter, schließlich hat sie die Wirtschaft mit Auszeichnung abgeschlossen. Ich: und ich habe die BSU mit Auszeichnung abgeschlossen. Dann sagt der Koch: "Sie ausgezeichnete Schüler verstehen sich selbst, und ich werde nicht in Ihre Streitigkeiten gehen."

Ich war davon im Marketing beeindruckt (im Allgemeinen und nicht im Marketing eines Unternehmens). Das ist die Magie der Namen. Jeder muss zumindest einer signifikanten Tatsache einen Namen und möglicherweise eine klangvolle Abkürzung geben. Dies garantiert bereits, dass Sie diese Tatsache selbst nicht außer Acht gelassen haben. Und dann müssen Sie den Namen abgleichen. Der Name ist die Anwendung des Prinzips "Teilen und Erobern". Wenn wir einen Namen geben, markieren wir damit das Thema. Wie viele Urheberrechtsansprüche lauteten: „Wir haben das gesehen, aber wir haben diese Tatsache nicht herausgestellt und ihm keinen Namen gegeben.“ Das ist nur der Punkt! Dann verstand ich den Wirbel von OLE -> OCX -> ActiveX -> COM -> ?; Und die Site -> Portal ->? .. Nun, was können wir über das Zusammenspiel von Business-to-Business sagen, aber wenn wir B2B (Business-to-Business) sagen, ist dies der Begriff und daher steckt etwas dahinter, obwohl tatsächlich in der Tat kann es nichts geben, sondern nur eine Bezeichnung. Sobald die Abkürzung ERP erschien, begannen so viele Entwickler, ihre Entwicklungen als ERP zu präsentieren ... Mode für Begriffe ist eine mächtige Sache.

In diesem Zusammenhang wird auf Folgendes hingewiesen. Als die Partei Kybernetik erlaubte, begann eine Debatte darüber, was man heute als „Computer“ bezeichnen soll. "Rechner", "TsAM", "Computer" ... - alles lief nicht. Die große und mächtige Sprache von uns hat "Computer" vor dem Amerikanismus gerettet. Meiner Meinung nach ist dies eine Manifestation des Minderwertigkeitskomplexes im Westen. Und ich muss leider sagen, ein völlig gerechtfertigter Komplex.

Über Integration


Ich habe viele Implementierungen von Bankensystemen gesehen und fast immer wurden sie als integrierte Systeme angepriesen. Aber wirklich, sie waren noch nie so. Ich denke, ein wirklich integriertes System steht noch bevor. Ein solches System sollte ein einziges Informationsmodell, ein einziges Objektmodell, ein einziges Funktionsmodell, ein einziges Konzept und eine einzige Architektur aufweisen: Die Integration sollte über Daten, Objekte, Funktionen, Ereignisse und Schnittstellen erfolgen. Ich habe das nicht gesehen.

Am meisten


Die interessanteste Aufgabe


Dies ist ein Business Analytics-Projekt. Was kann Stolz als Bewusstsein dafür amüsieren, dass TK sich selbst bestimmt hat, die Produktion selbst gemacht hat, das Informationsmodell selbst, das Objektmodell selbst, und zusätzlich programmieren Sie auch. Die Aufgabe ist in ihrer Neuheit und Breite interessant. Seine Grenzen sind nicht sichtbar.

Größte Herausforderung


Das größte kollektive Projekt sind Baupässe in ganz Weißrussland. Das Projekt wurde auf Assembler von EU-Computern implementiert. Themenbereich - Daten zu allen Bauprojekten in Belarus. Der Benutzer selbst hat die Struktur und den Inhalt des Bauberichts festgelegt.

Das größte Einzelprojekt ist Business Intelligence. Themenbereich - Analyse des vergangenen, aktuellen, geplanten und prognostizierten Geschäftszustands. Werkzeuge: Zersetzer, Komparatoren, Simulationsszenarien, Zeitreihen, statistische Hypothesen. Sprachen: Delphi, C #.

Die auffälligste Herausforderung


Dies ist die erste Einführung in die Rekursion. Ich war sehr beeindruckt von der Lösung des Hanoi-Turmproblems durch Rekursion - Reduktion auf dasselbe Problem, jedoch mit geringerer Dimension, sodass die Lösung für kleine Dimensionen offensichtlich ist. Das Problem von acht Königinnen war ebenfalls sehr beeindruckend.

Das auffälligste Buch


Dahl, Dijkstra, Hoar. Strukturelle Programmierung.
Dijkstra. Die Disziplin der Programmierung.

Die lächerlichsten Fälle


Wir haben ein Projekt auf Kobol für den EC-1020 entwickelt. Ich bin ein Anfängerprogrammierer. Es bestand Bedarf an einem Dispatcher-Programm, das je nach Situation bestimmte Programme aufruft. Programme auf Kobol konnten nicht von anderen heruntergeladen werden (oder ich wusste nicht, wie das geht). Es war notwendig, entweder in Assembler zu schreiben (was wir nicht wussten) oder etwas anderes zu tun. Und dann fanden sie das anders - dies ist die Job Management Language (JCL) des DOS-Betriebssystems.

Es gab so etwas wie SYSIN (logisches Eingabegerät), SYSRDRR (JCL für logische Direktiven) usw. Sie können zur Laufzeit neu zugewiesen werden. Nachdem Sie eine Reihe von SYSRDR für jeden möglichen Zweig vorbereitet haben, können Sie die Aufgabe im Prinzip abschließen. Und wir haben uns viel Mühe gegeben, dies zu tun. Und das alles natürlich vergebens. Nachdem wir Assembler studiert hatten, bekamen wir alles und nachdem wir viel Mühe mit JCL verbracht hatten, obwohl wir das Ergebnis erzielt hatten, bekamen wir nichts Neues. Sie müssen nicht auswählen, was näher liegt, sondern was im Allgemeinen mehr Vorteile bringt. DOS wurde übrigens durch OS / 360 ersetzt und JCL gehört der Vergangenheit an. Aber es wurde noch verführerischer, aber ein solcher Fehler wurde nicht wiederholt. Es ist schwer, aus einer Schleuder eine Waffe zu machen.

Das lustigste


Zu Beginn des „Gewindeschneidens“ wurde das Produkt anhand eines Testbeispiels in den Testbetrieb gebracht. Ein Testfall ist ein globaler Test, der von Ökonomen zusammengestellt wird. Das Ergebnis eines Produktlaufs waren normalerweise Tabulogramme - Berichte über den Zustand des zu lösenden Problems in verschiedenen Phasen seiner Lösung. Tabulagramme wurden gegen ein Kontrollbeispiel geprüft, und wenn sie übereinstimmten, wurde das Produkt für den Testbetrieb angenommen. Das Projekt ist aber noch nicht fertig. Was zu tun ist? Die Lösung ist einfach. Es werden Programme geschrieben, die Tabulagramme in der Stirn erzeugen. Bei Lieferung starten sie. Und ein unerfahrener (und wer war dann erfahren?) Kunde unterschreibt eine Abnahmebescheinigung für den Probebetrieb.

„Wenn Sie sagen können, warum dann zeigen?“ - ein lieber Programmierer antwortete mit einem solchen Satz, als dieser nach einer aufregenden Show des von ihm erstellten Programms zu Beginn der Show umfiel und von Show zu Erzählen wechselte.

Das seltsamste


Ein Projekt wird entwickelt - "Business Intelligence". Es wurde unter NT entwickelt. Und jetzt müssen wir das System dringend in der Bank demonstrieren. Wir beschließen, dies auf einem Laptop zu tun. Windows 98 stand bereits dort. Wir setzen, kompilieren, laufen - alles ist gut, bis auf eines: Der Beginn der Periode wird 1898 festgelegt. Wir beginnen zu vermuten, dass der Kontext mit den Daten falsch extrahiert wurde. Der Kontext wird durch den Benutzercode abgerufen, der durch Aufrufen der Funktion GetUserName der Windows-API abgerufen wird. Wir beginnen zu vermuten, dass diese Funktion nicht richtig funktioniert. Wir setzen den neugierigen Punkt und führen den Debugger aus. Alles ist in Ordnung und das Programm funktioniert gut und die Daten sind normal. Sie haben alles zufällig abgeschrieben. Es war Abend, und wir gingen erfreut nach Hause. Morgen bei der Bank. Am nächsten Morgen schalten wir ein - wieder die gleiche Situation mit den Daten. Wir schalten den Parser im Debugger ein - alles ist in Ordnung. Nun, die Situation in der Quantenmechanik ist einfach: Wenn sie kein Teilchen ausspionieren, stören sie die Wellen, und wenn sie sie ausspionieren, sind sie Teilchen. Wir haben also keine Antwort erhalten. Und damit alles gut ging, haben wir die richtigen Daten eingegeben und die Demonstration war erfolgreich.

Nun, und noch ein Fall von Teufelei. Wir haben das Analyseprojekt gemeinsam entwickelt und daher die Tools verwendet, um die Teamarbeit am Projekt zu unterstützen - MS SourceSafe. Dieses Produkt unterstützt mehrere historische Versionen. Und hier habe ich wiederholt festgestellt, dass ich nach dem Reparieren eines wichtigen Zweigs nach einiger Zeit bemerke, dass die alte Version genau dort ist, aber es gibt keine Korrekturen. Und so wurde es mehrmals wiederholt. Ich habe alles dem Analphabetismus zugeschrieben. Aber welche Art von Produkt ist für Analphabeten so rücksichtslos?

Fast Philosophie


Wie kann man die intellektuellen Fähigkeiten eines Programms beschreiben, eines Computers mit einer festen Speichergröße? Es ist klar, dass sie sich nicht einmal an eine ausreichend große Anzahl erinnern können. Also was - auch wir können uns nicht an eine ausreichend große Zahl erinnern und sie aufschreiben. Aber wir beziehen uns nicht auf
nicht-intellektuelle Wesen. Wo ist also die formale Definition von Intelligenz? Ich denke, das ist eines der grundlegenden Probleme. Wie kann man ein Maß für die Intelligenz eines Systems mit gegebenen externen Parametern beschreiben - Speicher? Wie kann sich ein Programm selbst verstehen - die Grenzen der Selbsterkenntnis? Die Verwendung von Makros - Programme, die sich selbst modifizieren, werfen Fragen auf: Kann ein Programm klüger werden? Wo liegen die Grenzen der Intelligenz?

Nach wie vor wurde das Weltbild von den Naturwissenschaften bestimmt, jetzt wird es zunehmend von der Informatik bestimmt. Ich meine nicht primitive Programmierung, sondern die Wissenschaft der Programmierung. So viele der abstraktesten philosophischen Probleme werden aus Computersicht völlig konkret . Betrachten Sie dieses Beispiel. Schließlich können intelligente Kreaturenprogramme auf einem Computer simuliert werden. Sie können Reproduktion, Auswahl, Vererbung, Raum, Zeit ... simulieren. Das Ergebnis ist eine Intra-Computer-Welt. Und hier leben die Intra-Computer-Kreaturen (Softhomo), kämpfen um ein Stück Brot, reden, philosophieren und denken früher oder später: Gibt es einen Gott auf der Welt? Was ist primär: Materie oder Bewusstsein? Gibt es Dinge in dir? Kennst du die Welt? Es gibt einen Solipsisten und erklärt: "Die ganze Welt existiert nur in meiner Vorstellung." Lokale Materialisten heulten in diesem Zusammenhang auf. Wer hat recht? Aus der Sicht ihrer Welt haben die Materialisten Recht, und aus der Sicht unserer Welt, außerhalb von ihnen, hat der Solipsist Recht. Ein Beweis dafür ist das Ausschalten des Computers.

Und in unserer Welt ist seit langem die Idee geäußert worden, dass sowohl Materialisten als auch Idealisten Recht haben. In der Physik ist primitives dichotomes Denken wie „entweder Teilchen oder Welle“ - „Und Teilchen und Welle“ längst überwunden. So ist es in der Philosophie. Auf die Frage, was tiefe Wahrheit ist, antwortete Bora: "Tiefe Wahrheit ist eine solche Wahrheit, deren Verleugnung auch tiefe Wahrheit ist." Die Verleugnung der Wahrheit 2 * 2 = 4 ist nicht tief, was bedeutet, dass diese Wahrheit selbst nicht tief ist. Aber die Ablehnung der Wahrheit „Materie ist primär“ ist tiefgreifend, wie die gesamte Entwicklung der Philosophie sagt, als die leninistischen Materialisten nur idealistische Innovationen kritisierten, ohne etwas Neues vorzubringen: Sie sagen: „Ja, sie selbst verstehen nicht, was sie sich ausgedacht haben. Aber sobald wir eine materialistische Interpretation geben, wird alles wirklich wissenschaftlich. “Beispiel - Kybernetik, Semiotik, Kopenhagener Interpretation der Quantenmechanik usw.

Und hier ist was: Egal was die Softhomes erfinden, egal wie hart der Intellekt ist, sie werden unsere Welt außerhalb von ihnen niemals sehen und hören - zum Beispiel den Programmierer (wenn der Programmierer den Dialog nicht explizit öffnet). Und für sie ist der Programmierer ein Gott, und unsere Welt ist eine Sache für sie an sich, und nichts von unserer Welt ist für sie unerkennbar, und ihre vom Programmierer vorgenommene intellektuelle Füllung ist a priori Wissen. Es scheint, dass Kant, der in seiner Philosophie über all das sprach, wirklich viel darüber wusste. Kants abstrakteste Konzepte von "Ding an sich", "transzendental", "transzendental", "a priori synthetisches Wissen" erhalten in dieser Interpretation durchaus verständliche Dinge. Für diese Welt ist unsere ganze Welt Dinge an sich, a priori synthetisches Wissen ist alles, was ein Programmierer in den Intellekt der Intra-Computer-Welt gesteckt hat. Transzendentales Wissen ist für ihn das Wissen darüber, wie ein Programmierer diese Computerwelt geschaffen hat.

In diesem Fall fragen Sie sich vielleicht: Oder sind wir für einige von uns die Computerwelt und Gott ist ein Programmierer? Das sogenannte anthropische Prinzip ist übrigens in der Physik formuliert. Es stellt sich heraus, dass alle Gesetze der Physik so angeordnet sind, dass sie sie ein wenig verändert hätten und eine Person nicht entstanden wäre. Wenn Sie die Gravitationskonstante oder die Ladung des Elektrons oder die Planck-Konstante ein wenig ändern, funktioniert alles so, dass entweder die Sonne nicht aufleuchtet oder es zu heiß wird. Das heißt, alles wird so gemacht, dass eine Person erscheint. Zwar sagen viele, dass dies selbstverständlich ist: Verschiedene Welten können millionenfach ohne eine Person entstehen, aber wenn eine Person bereits erschienen ist, dann ist natürlich die Welt, in der sie erschienen ist, so gestaltet, dass sie erscheint. Sobald der Traktor den Förderer verlässt, ist es selbstverständlich, dass der Förderer so konstruiert ist, dass der Traktor erscheint. Aber immer noch ...

Mit der Programmierung können Sie also Probleme mit der Weltanschauung neu betrachten. Dies kann das Weltbild selbst grundlegend verändern.

Zuletzt


Von meinem ganzen Lebensweg habe ich die banale Weisheit herausgenommen: " Ein Geist reicht nicht aus, um klug zu handeln ." Wie viele kluge Frauen waren auf unserem Kurs - viel. Wo sind sie Was braucht man noch für den Erfolg? Aber Gott kennt ihn. Und Glück und Geld und weltliche Arroganz. Leider regieren freche Drei-Herrscher alles. Auch kluge Männer zweifeln an sich. Sie haben genug Intelligenz, aber nicht genug Willen.

Die Klage der alten Babylonier „Die schweren Zeiten kamen, die Götter waren wütend, die Kinder gehorchen nicht mehr den Eltern und jeder will ein Buch schreiben.“ Die Moderne wurde geändert: „ Die schweren Zeiten kamen, die Götter sind wütend, die Kinder gehorchen nicht mehr den Eltern und jeder will ein Buch schreiben, und wehe allen Der Dummkopf möchte seine eigene Website / sein eigenes Portal / Blog auf der Internete erstellen . “

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


All Articles