Multiparadigmen-Programmiersprachen umfassen: 1. Objektorientierte Programmierung, die die Wiederverwendbarkeit, Flexibilität und Skalierbarkeit von Software verbessert; 2. Funktionale Programmierung, ein Programmierparadigma, das mathematische Funktionen als Kernprogrammierungssprachenmodellierung verwendet; Die allgemeine Typprogrammierung bietet eine höhere Abstraktionsebene.
Die Betriebsumgebung dieses Artikels: Windows 7-System, Dell G3-Computer.
Multiparadigmen-Programmiersprachen sind:
Zusammenfassung:
In diesem Artikel geht es hauptsächlich um die Konzepte der drei Programmierparadigmen – objektorientierte Programmierung, funktionale Programmierung und generische Programmierung
Programmierparadigmen
Programmierparadigmen sind die Idee hinter Programmiersprachen. Stellt die Sicht des Programmdesigners dar, wie das Programm erstellt und ausgeführt werden sollte. Zu den gängigen Programmierparadigmen gehören: prozedurale, objektorientierte, funktionale, generische Programmierung usw.
Einige Programmiersprachen sind speziell für ein bestimmtes Paradigma konzipiert. Beispielsweise ist Smalltalk eine relativ reine objektorientierte Programmiersprache. Darüber hinaus ist die Beziehung zwischen einigen Programmiersprachen und Programmierparadigmen nicht eins zu eins. Beispielsweise unterstützen Python, Scala und Groovy alle bis zu einem gewissen Grad objektorientierte und funktionale Programmierung. C++ ist ein gelungenes Beispiel für eine Multiparadigmen-Programmiersprache. C++ unterstützt das gleiche prozedurale Programmierparadigma wie die Sprache C und unterstützt außerdem das objektorientierte Programmierparadigma STL (Standard Template Library), wodurch C++ über generische Programmierfunktionen verfügt. Die Unterstützung mehrerer Paradigmen könnte einer der Gründe dafür sein, dass C++ bis heute immer noch eine starke Vitalität aufweist.
Swift ist eine typische Multiparadigmen-Programmiersprache, die objektorientierte Programmierparadigmen, funktionale Programmierparadigmen und generische Programmierung unterstützt. Die Unterstützung mehrerer Programmierparadigmen durch Swift wird durch seine Entwicklungsziele bestimmt. Die ursprüngliche Absicht von Swift bestand darin, eine praktische Industriesprache bereitzustellen. Es unterscheidet sich von akademischen Programmiersprachen wie Haskell, die von Universitäten und Forschungseinrichtungen stammen. Apple hatte bei der Einführung von Swift ein klares Geschäftsziel: Objective-C, die Hauptprogrammiersprache für Mac OS- und iOS-Systeme, ist veraltet und wird Entwicklern von Apple-Systemen eine modernere Programmiersprache ermöglichen und so Apple The Healthy fördern Entwicklung des gesamten Ökosystems.
Das Design und die Entwicklung von Swift spiegeln alle das Ziel einer „praktischen Industriesprache“ wider. Dies bedeutet, dass Swift keine extremen Sprachexperimente durchführen kann. Es muss sorgfältig nach Durchbrüchen suchen, die auf einer rationalen Betrachtung der Realität basieren. Daraus ergibt sich, dass Swift das historische Erbe erben, sich um die praktischen Bedürfnisse der meisten Programmierer von heute kümmern und sich gleichzeitig in Richtung Zukunft entwickeln muss.
1. Objektorientiert – Vererbung
Objektorientierte Programmierung verwendet Objekte als Grundeinheit des Programms und kapselt darin Programme und Daten, um die Wiederverwendbarkeit, Flexibilität und Skalierbarkeit der Software zu verbessern.
Kernkonzepte der objektorientierten Programmierung:
Polymorphismus bezieht sich auf verschiedene verwandte Klassen, die durch Vererbung generiert werden und deren Objekte unter bestimmten Umständen unterschiedlich auf dieselbe Nachricht reagieren. Unterklassen". Die Unterklasse ist spezifischer als die ursprüngliche Klasse (genannt übergeordnete Klasse);
Kapselung, objektorientierte Programmierung verbirgt die spezifischen Ausführungsschritte einer bestimmten Methode und überträgt stattdessen Nachrichten über den Nachrichtenübermittlungsmechanismus an diese.
In einer objektorientierten Programmiersprache werden Objekte verwendet, um die Grundeinheit des Programms aufzubauen. Polymorphismus bietet höhere Abstraktionsfähigkeiten und ermöglicht es uns, allgemeinere Programme zu entwerfen. Vererbung bietet eine Möglichkeit, Code wiederzuverwenden. Die Kapselung bietet einen bequemeren und sichereren Mechanismus zur Verwendung anderen Codes.
Java hat ein rein objektorientiertes Konzept. Von Anfang an hoffte man, die Welt mit einem reinen Objektmodell zu modellieren, in dem alles ein Objekt ist. Aber mit der Entwicklung wurden Java immer mehr Nicht-Objekt-Dinge hinzugefügt. Abschlüsse werden eingeführt, um Funktionen der ersten Ebene in der funktionalen Programmierung zu erhalten; Generika werden eingeführt, um parametrisierte Typen zu erhalten. Dies könnte darauf hindeuten, dass die Welt so reich und vielfältig ist, dass die Modellierung mit einem einzigen Modell nicht erfolgreich sein wird.
2. Funktionale Programmierung – EntwicklungFunktionale Programmierung ist ein Programmierparadigma, das mathematische Funktionen als Kern der Programmiersprachenmodellierung verwendet. Es behandelt Computeroperationen als mathematische Funktionsberechnungen und vermeidet die Verwendung von Programmstatus und veränderlichen Objekten. Es gibt zwei Hauptideen in der funktionalen Programmierung:
Verwendung von Funktionen als Kern der Programmiersprachenmodellierung
;Vermeiden Sie Zustand und Wandelbarkeit.
Funktion ist der Grundstein der funktionalen Programmierung. Der Code einer funktionalen Programmiersprache besteht aus Funktionen. Der Prozess des Schreibens einer funktionalen Sprache besteht darin, Funktionen zu entwerfen. Umfangreiche Programme bestehen aus Tausenden von Funktionen, und diese Funktionen müssen effizient kombiniert werden. Funktionale Programmiersprachen versuchen, Zustände und veränderliche Objekte zu vermeiden. Das Fehlen eines veränderlichen Zustands macht Funktionen in funktionalen Sprachen zu reinen Funktionen. Reine Funktionen lassen sich leichter modularisieren, leichter verstehen und benutzerfreundlicher wiederverwenden.
Funktionale Programmiersprachen haben auch einige nützliche Programmierwerkzeuge hervorgebracht:
Funktionen der ersten Ebene,
Curry-Funktionen;
Diese werden in den folgenden Kapiteln erwähnt. Diese Programmierwerkzeuge tauchen zunehmend auch in anderen Programmiersprachen auf.
Funktionale Programmiersprachen haben ihre Vorteile und könnten in Zukunft zu einem wichtigen Programmierparadigma werden. Die Bedeutung funktionaler Programmiersprachen spiegelt sich jedoch möglicherweise eher in der Beeinflussung der Entwicklung anderer Programmiersprachen wider. In Zukunft könnte es für eine Programmiersprache, die hauptsächlich mit einem funktionalen Programmierparadigma entwickelt wurde, schwierig sein, eine Mainstream-Programmiersprache zu werden. Programmiersprachen wie Java, die auf einem einzigen Programmierparadigma (objektorientiert) basieren, haben kaum eine Chance, Mainstream zu werden. Das Streben nach einer rein funktionalen Programmiersprache wie Haskell dürfte eher ein akademisches Sprachexperiment sein.
Wiederholen Sie die im vorherigen Abschnitt genannten Gründe: Die Welt ist so reich und farbenfroh, dass die Modellierung der Welt mit einem einzigen Modell nicht gelingen wird.
Objektorientierte und funktionale ProgrammierungWenn wir die derzeit gängigen Sprachen nach Sprachparadigmen klassifizieren. Die Unterstützung objektorientierter Programmiersprachen sollte die längste Warteschlange sein. Die meisten gängigen modernen Programmiersprachen sind objektorientiert und ermöglichen die Erstellung von Objekten. Gleichzeitig werden Sie jedoch feststellen, dass einige der populäreren Programmiersprachen, Python, Scala und sogar Java, mehr oder weniger von funktionalen Programmiersprachen beeinflusst sind. Sie alle führen einige funktionale Programmierkonzepte ein, die es Ihnen ermöglichen, bis zu einem gewissen Grad Code im funktionalen Stil zu schreiben. Nachdem Sie sich mit objektorientierten Programmiersprachen vertraut gemacht haben, werden Sie es oft erfrischend finden, wenn Sie mit funktionalen Programmiersprachen in Kontakt kommen, und vielleicht haben Sie sogar vage das Gefühl, dass funktionale Sprachen eine gute Möglichkeit sind, die Welt zu retten. Sollten wir also komplett auf funktionale Programmiersprachen umsteigen? Verwenden Sie Haskell, um die Welt zu retten.
Nachdem wir objektorientierte Programmiersprachen in großem Umfang praktiziert haben, haben wir ein tieferes Verständnis für deren Mängel (z. B. ist es schwierig, Softwareanwendungen in einer Multithread-Umgebung zu schreiben; Vererbung ist keine gute Methode für die Wiederverwendung von Code). ). Funktionale Sprachen haben viele Vorteile, von denen einige die Probleme objektorientierter Sprachen lösen können (reine Funktionen eignen sich sehr gut für Multithread-Umgebungen, reine Funktionen sind von Natur aus modular und lassen sich sehr gut wiederverwenden). Bei der funktionalen Programmierung können jedoch auch bestimmte Probleme auftreten. Diese Probleme werden möglicherweise erst nach einer größeren industriellen Praxis aufgedeckt. Wir haben nun festgestellt, dass es schwierig ist, die Welt allein anhand von Objekten zu modellieren. Dann ist es vielleicht nicht besser, die Welt mit mathematischen Modellen zu modellieren. Sicher ist, dass sie alle ihre eigenen Bereiche und Umgebungen haben, in denen sie sich auszeichnen. Wir haben immer noch kein Programmierparadigma, das alle Probleme lösen kann.
Die größere Realität ist, dass unzählige Unternehmen enorme Investitionen in objektorientierte Programmiersprachen getätigt haben. Auch wenn die objektorientierte Programmierung einige Probleme aufgedeckt hat, hat die funktionale Programmierung viele Vorteile gezeigt, die kein umsichtiger Mensch aufgeben kann objektorientierte Programmierung sofort und vollständig auf funktionale Programmiersprachen umsteigen.
Die realistische Wahl besteht darin, die objektorientierte Programmierung zu unterstützen und gleichzeitig funktionale Unterstützung bereitzustellen. Auf diese Weise können Sie objektorientierte Methoden immer noch an den meisten Stellen verwenden, an denen objektorientierte Methoden bequem sind. Und an Orten, an denen funktionale Programmierung geeignet ist und Sie über das Denken und die Fähigkeiten der funktionalen Programmierung verfügen, können Sie mit Methoden der funktionalen Programmierung dennoch die Produktivität steigern.
3. Generische Programmierung – schöne VerschönerungGenerische Programmierung ist ein weiteres interessantes Thema. Generics bieten eine höhere Abstraktionsebene für Programmiersprachen, nämlich parametrisierte Typen. Mit anderen Worten: Es geht darum, die Typinformationen eines Algorithmus oder einer Klasse zu abstrahieren, die ursprünglich für einen bestimmten Typ spezifisch sind. Dieses abstrahierte Konzept ist eine Vorlage in der STL (Standard Template Library) von C++. STL demonstrierte die Leistungsfähigkeit der generischen Programmierung und wurde sofort nach seinem Erscheinen zu einer leistungsstarken Waffe von C++. Neben C++ haben Programmiersprachen wie C#, Java und Haskell das Konzept der Generika eingeführt.
Generische Programmierung ist ein etwas lokaleres Konzept, es geht lediglich darum, wie man abstrakter mit Typen umgeht, also mit parametrisierten Typen. Dies reicht nicht aus, um die Kernkonzepte einer Sprache zu unterstützen. Wir hören nicht, dass eine Programmiersprache eine rein generische Programmierung ohne andere Programmierparadigmen ist. Doch gerade weil Generika den Kern der Programmiersprache nicht verändern, lassen sie sich meist gut in andere Programmiermethoden integrieren. Programmiersprachen mit unterschiedlichen Stilen wie C++, Scala und Haskell unterstützen alle Generika. Generische Programmierung bietet ein höheres Abstraktionsniveau, was eine größere Ausdruckskraft bedeutet. Dies ist eine köstliche Ergänzung zu den meisten Programmiersprachen.
In Swift werden häufig Generika verwendet, und viele Swift-Standardbibliotheken werden mit generischem Code erstellt. Beispielsweise sind die Array- und Wörterbuchtypen von Swift beide generische Mengen. Beispiele wie dieses finden sich überall in Swift.
Zusammenfassung
In dieser Artikelserie verwenden wir hauptsächlich Swift als Beispiel, um die Multiparadigmen-Programmiersprache zu erklären. Die Artikelreihe ist in drei Teile gegliedert, um die drei von Swift unterstützten Programmierparadigmen zu diskutieren:
Objektorientiertes Programmierparadigma
Funktionales Programmierparadigma
Generische Programmierung
Für weitere verwandte Kenntnisse Bitte besuchen Sie die Spalte FAQ!
Das obige ist der detaillierte Inhalt vonWas sind die Multiparadigmen-Programmiersprachen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!