Ich bin den größten Teil meines Studiums im Programmieren von Spielen. Dies ist kein Informatik-Abschluss, daher wird ein Großteil der Theorie zugunsten des praktischen Portfolioaufbaus und des JIT-Lernens gemieden, was in der Spielebranche anscheinend wichtiger ist. Das erste Thema war "Einführung in die objektorientierte Programmierung".
Dieser Satz hat mich nicht gestört, bis ich etwas über die verschiedenen Programmierparadigmen erfahren habe (diese Liste erhalte ich von https://en.wikipedia.org/wiki/Comparison_of_programming_paradigms ):
- Imperativ
- Funktional
- Verfahrens
- Strukturiert
- Ereignisgesteuert
- Objektorientierten
- Deklarativ
- Automatenbasiert
Ich verstehe, dass dies keine vollständige Liste ist und dass nicht alle dieser Konzepte gleich sind und die meisten von ihnen nicht einmal exklusiv sind, aber ich verstehe nicht, warum die meisten von ihnen nur ein Wort haben - Imperativ; funktionell; deklarativ - aber wenn wir über das Programmieren mit Objekten sprechen, müssen wir klarstellen, dass wir uns an diesen Objekten orientieren. Können wir nicht einfach verwenden Objekte? Kann nicht nur wir haben Objekte? Warum müssen sie uns als Leitstern ausrichten ?
Wenn Sie hier nachsehen ( https://en.wikipedia.org/wiki/Object-oriented_programming ), wird der Begriff "orientiert" nirgends als eigener Begriff verwendet. Es wird nur "Objekt" erklärt.
Außerdem kann ich aus praktischen Gründen nachvollziehen, warum Event-Driven verwendet wird, da die Ereignisprogrammierung bereits bei der Ausführung einer Konferenz erfolgt und die automatische Programmierung so klingt, als würden Sie eine Roboterproduktionslinie einrichten. daher ist es hilfreich, dort zusätzliche klärende Worte zu haben.
Was macht die Objektprogrammierung als Ausdruck nicht genug, um zu beschreiben, was wir tun, wenn wir Objekte in unserer Programmierung verwenden?
Von meinem Ton her mag ich das Wort "orientiert" natürlich nicht so sehr. Es erinnert mich an meine Zeit als Gerichtsreporter, als ich Anwälten zuhöre, die den Satz "in Bezug auf" als eine Art verbales Häkchen verwenden. Es hatte nichts zu bedeuten; Es war nur ein Begriff, den sie benutzten, um die Luft zu füllen, während sie versuchten, darüber nachzudenken, was sie als nächstes sagen sollten. Ich versuche jedoch nicht, einen Sprachwechsel zu befürworten, ich frage nur, warum es so ist, wie es ist. Wenn jemand weiß, warum es aus rein historischen Gründen auf diese Weise bekannt wurde, dann ist das die Antwort. Es wird Munition sein, wenn ich jemals beschließe, meine Zeit für einen Sprachwechsel zu verschwenden.
Auf der anderen Seite, wenn es tatsächlich ein nützlicher Grund , warum eine Sprache oder ein Stück Code muss , ist darauf zu Objekten, unter Ausschluß aller anderen Richtungen, im Gegensatz zu nur sie in seinem toolbelt mit, wie Werkzeuge , würde ich wirklich sein interessiert, darüber zu lernen. Ich mag es, nützliche Dinge zu lernen.
quelle
Antworten:
Ich glaube, Sie lesen viel zu viel in einem einfachen grammatikalischen Konstrukt. Schauen Sie sich Ihre Paradigmenliste an, die aus einem Grund, den wir in Kürze behandeln werden, unterschiedlich sortiert ist:
Was haben die Wörter gemeinsam? Sie sind alle Adjektive, weil sie das Wort "Programmierung" modifizieren sollen. Mit Ausnahme von "imperativ" sind sie alle keine "natürlichen" Adjektive, sondern "adjektivierte" Substantive - Substantive, die tatsächlich den Kern des Paradigmas beschreiben: Funktion, Struktur, Automaten und Objekt.
Es gibt zwei verschiedene Arten, wie die Substantive adjektiviert werden: durch ein Suffix wie -al oder -ed oder durch das Erstellen eines zusammengesetzten Wortes unter Verwendung eines Bindestrichs. Nun, wie Doc Brown betont hat, haben die Suffixe, die zur Adjektivierung von "Objekt" verwendet werden könnten, eine andere Bedeutung. Was Zusammensetzung hinterlässt.
Und ich behaupte, dass es reiner Zufall oder Geschmack ist, dass Alan Kay "orientiert" für sein zusammengesetztes Adjektiv "objektorientiert" gewählt hat. Es hätte genauso gut "objektgesteuert" oder "objektbasiert" sein können, und Sie könnten auch zu viel in diese hineinlesen. Klingt "getrieben" nicht nach einer ungesunden Besessenheit?
quelle
Ehrlich gesagt, ist es ein Überbleibsel der Geschichte. Funktionale Programmierung ist wirklich funktionsorientierte Programmierung, deklarative Programmierung ist wirklich deklarationsorientierte Programmierung ... verwenden wir schließlich nicht einfach Funktionen? Können wir nicht einfach Funktionen haben?
"Objektorientiert" rollt besser von der Zunge und ist historisch verwurzelt.
Die "Orientierung" kommt, weil wir nicht über Programmierung sprechen, sondern über Design. Nur weil wir Objekte oder Funktionen oder Ereignisse verwenden, bedeutet dies nicht, dass unsere Entwurfsmethodik durch Modellierung aller drei erfolgt. Durch die Angabe der Ausrichtung der Entwurfsmethodik wird Programmierern mitgeteilt, wie sie diesen Entwurf interpretieren und erweitern sollen - wie der Modellierungsfokus die Implementierung färbt.
quelle
Nennen wir es, um zu erklären, dass Objekte ein sehr wichtiger Teil des Paradigmas sind.
Die objektorientierte Programmierung hat ihre Wurzeln in Simula , das im Wesentlichen ALGOL und einige neue Funktionen zur Objektprogrammierung war. Und im Einklang mit dieser Geschichte ist es auch heute in vielen Sprachen (sogar in den "reinen OO-Sprachen") durchaus möglich, etwas zu codieren, das im Wesentlichen nur ein prozedurales Programm mit einigen darin enthaltenen Objekten ist. Aber dies wird von erfahreneren Entwicklern als schlechter Stil angesehen.
Tatsächlich unterscheidet sich etwas, das "objektorientiert" ist, sehr von "prozedural". Das wichtigste Konzept ist die Verwendung von Vererbung und Polymorphismus. Wenn Sie die Funktionsweise von Klassen und virtuellen Methoden wirklich verstehen und verinnerlichen , ist dies eine aufschlussreiche Erfahrung, die in vielen Fällen die Art und Weise ändert, wie Sie Code schreiben. Dies ist ein echter Paradigmenwechsel. (Angenommen, Sie haben zuerst mit dem Schreiben von Prozedurcode begonnen. Viele Studenten verwenden heutzutage direkt Java oder C # als Muttersprache, und IMO verpassen sie es, die Vorteile von OO wirklich zu verstehen.)
Wir nennen es objektorientierte Programmierung, weil ein im OO-Stil geschriebenes Programm nicht nur Objekte enthält. Die Struktur des gesamten Programms basiert auf ihnen und ihrer Arbeitsweise.
quelle