Programmierparadigma

Programmierparadigmen sind eine Möglichkeit, Programmiersprachen nach ihrer Funktion zu gruppieren. Sprachen können in mehr als einem Paradigma enthalten sein.

Einige Paradigmen betrachten die Art und Weise, wie der Code ausgeführt wird, wie z.B. das Zulassen von Nebenwirkungen oder die Notwendigkeit, Dinge in einer bestimmten Reihenfolge zu tun. Andere Paradigmen befassen sich mit der Art und Weise, wie der Code gruppiert wird, wie z.B. Code in ein oder zwei Teile (oder stattdessen in viele kleine Teile) aufgeteilt wird. Andere Paradigmen befassen sich mit der Reihenfolge und den Teilen, die das Programm so machen, wie es ist.

Es gibt zwei Hauptgruppen von Paradigmen, imperative und deklarative. Eine Sprache kann beides zur gleichen Zeit sein.

Inhalt

·         1 Imperative Programmierung

·         2 Deklarative Programmierung

·         3 Andere Paradigmen

·         4 Überblick

·         5 Probleme mit Paradigmen

·         6 Geschichte

o    6.1 Maschinencode

o    6.2 Verfahrenssprachen

o    6.3 Objektorientierte Programmierung

o    6.4 Deklarative Paradigmen

·         7 Verwandte Seiten

·         8 Literaturhinweise

·         9 Andere Websites

Imperative Programmierung

Bei imperativen Programmen geben die Programmierer dem Computer eine Reihe von geordneten Schritten vor, die ausgeführt werden müssen, um etwas zu tun. Wenn jemand wollte, dass der Computer ein Katzengesicht zeichnet, könnte er Anweisungen geben wie "Zeichne hier einen Kreis, zeichne dort zwei kleinere Kreise, zeichne oben zwei Dreiecke" und so weiter. Imperative Programme haben manchmal eine Menge Nebenwirkungen.

Es gibt zwei wichtige imperative Paradigmen, und ein Großteil der Zeit wird eine Sprache beide haben:

  • Strukturiert - Dem Computer werden Richtungen vorgegeben, die immer in einer bestimmten Reihenfolge sind. Schritte wie "zurück zu Schritt 3" (bekannt als goto-Anweisungen) sind nicht erlaubt.
    • Prozedural - Das Programm ermöglicht es dem Programmierer, einer Liste von Aufträgen einen Namen zu geben, wodurch diese Aufträge zu einer "Prozedur" werden, die sie später verwenden können. Die meisten strukturierten Sprachen sind auch prozedural.
  • Objektorientiert - Ideen werden dem Computer anhand von Objekten, Codestücken, die eine Reihe von Befehlen haben, die man ihnen geben kann, und einigen Informationen über sie erklärt.

Deklarative Programmierung

In deklarativen Paradigmen sagt der Programmierer dem Computer, was er tun soll, anstatt wie er es tun soll. Wenn sie wollten, dass der Computer ein Katzengesicht zeichnet, könnten sie Anweisungen wie "Zeichne ein Gesicht, zeichne zwei Augen, zwei Ohren und einen Mund" geben.

Die bekanntesten deklarativen Paradigmen sind

  • Funktional - Der größte Teil der Arbeit wird von Funktionen ohne Nebenwirkungen erledigt.
  • Logik - Es wird eine Reihe von Fakten dargelegt, und dann werden eine oder mehrere "Fragen" gestellt.
  • Ereignisgesteuert - Code-Stücke werden so eingestellt, dass sie ausgeführt werden, wenn bestimmte Dinge passieren (z.B. wenn der Computer eingeschaltet wird).

Andere Paradigmen

Einige Paradigmen können sowohl in imperativen als auch in deklarativen Sprachen gefunden werden. Diese Paradigmen finden sich in der Regel zusammen mit einem der oben genannten Paradigmen, anstatt auf sich allein gestellt zu gehen.

Übersicht

Programmiersprachen werden nach Paradigmen in der gleichen Weise gruppiert, wie Maschinen nach dem, wofür sie verwendet werden, gruppiert werden könnten.

Einige wenige Sprachen passen zu nur einem Hauptparadigma, wie zum Beispiel

  • Smalltalk (objektorientiert)
  • Versammlung (imperativ, aber nicht strukturiert oder objektorientiert)
  • Haskell (funktionell)
  • Prolog (Logik)

Die meisten Sprachen gehören jedoch mehr als einem Paradigma an. Einige derer, die sich dadurch auszeichnen, dass sie mehr als nur eine haben, sind es:

  • Scala (objektorientiert, funktional, parallel)
  • Visual Basic (ereignisgesteuert, objektorientiert)
  • Allgemeines Lispeln (prozedural, funktional, objektorientiert, Meta)
  • Schema (funktional, prozedural, meta)
  • Perl (funktional, prozedural, Meta, objektorientiert, ereignisgesteuert)
  • Python (funktional, objektorientiert, prozedural)
  • Rubin (funktional, objektorientiert, prozedural)
  • Wolfram-Sprache (funktional, prozedural, allgemein deklarativ)
  • Oz (logisch, funktional, imperativ, objektorientiert)
  • F# (funktional, Imperativ, objektorientiert, Meta)

Mehr Paradigmen zu haben ist nicht immer gut. Eine Zeit, in der weniger Paradigmen eine gute Sache sein können, ist, wenn es eine Sprache gibt, die nur funktional ist. Eine Funktion in einer dieser Sprachen leistet manchmal weniger Arbeit (wie z.B. nur die Teile einer Gruppe von Dingen durchzugehen, die sie tatsächlich benötigt), als es vielleicht der Fall wäre, wenn die Sprache auch prozedural wäre.

Viele Programmierparadigmen sind ebenso bekannt für die Dinge, die sie den Menschen nicht erlauben, wie für die, die sie den Menschen erlauben. Eine Zeit, in der dies zutrifft, sind funktionale Sprachen. Wenn eine funktionale Sprache nur oder überwiegend funktional ist, erlaubt sie normalerweise keine Nebenwirkungen. Ein anderes Mal, wo dies zutrifft, ist die strukturierte Programmierung: Sie unterscheidet sich von normalen imperativen Sprachen, weil sie es Programmierern nicht erlaubt, "goto-Anweisungen" zu verwenden (Anweisungen, die dem Programm sagen, dass es zu einem früheren Schritt übergehen soll). Aus diesem und anderen Gründen denkt man manchmal, dass neue Paradigmen nicht genug Dinge erlauben. Es ist jedoch manchmal in Ordnung, wenn der Computer den Leuten Dinge nicht erlaubt: Er kann den Leuten helfen, Probleme mit ihrem Code zu vermeiden, und den Computer Vermutungen anstellen lassen, damit er den Code schneller ausführen kann, oder sogar den Code auf Probleme überprüfen lassen, bevor der Code ausgeführt wird!

Überblick über die verschiedenen Programmierparadigmen nach Peter Van RoyZoom
Überblick über die verschiedenen Programmierparadigmen nach Peter Van Roy

Probleme mit Paradigmen

Einige Leute, die Programmiersprachen studieren, mögen es nicht, dass Paradigmen verwendet werden, um Programmiersprachen zu gruppieren, wie zum Beispiel Harper und Krishnamurthi. Diese Leute sagen, dass viele Programmiersprachen nicht einfach in Paradigmen gruppiert werden können, weil Sprachen Dinge und Ideen von vielen Paradigmen ausleihen.

Geschichte

Im Laufe der Zeit sind neue Paradigmen entstanden, und die Menschen haben entweder damals oder rückblickend auf sie hingewiesen. Eines der ersten Paradigmen, das als eine neue Art der Programmierung anerkannt wurde, war die strukturierte Programmierung aus den 1960er Jahren. Die Idee eines "Programmierparadigmas" stammt aus dem Jahr 1978, wenn nicht sogar noch früher, als Robert W. Floyd es beim Unterrichten verwendete. Das Wort "Paradigma" in der Art, wie Robert es meinte, wurde erstmals von Thomas Kuhn in seinem Buch "The Structure of Scientific Revolutions" (1962) verwendet.

Maschinencode

Die niedrigste Ebene (am nächsten daran, wie der Computer die Dinge verstehen möchte) und das älteste Programmierparadigma ist der Maschinencode, ein imperatives Paradigma. Die Richtungen im Maschinencode sind nur eine Menge von Zahlen in einer bestimmten Reihenfolge. Die Assemblersprache ist etwas weniger Low-Level (und etwas weniger alt). In Assemblersprache werden den Richtungen für den Computer Mnemoniken (leichter zu merkende Namen) gegeben, und Speicheradressen (Richtungen, um eine Information im Computer zu finden) können Namen gegeben werden. Diese werden manchmal als Sprachen der ersten und zweiten Generation bezeichnet.

In den 1960er Jahren wurden Assemblersprachen verbessert, indem neue Dinge wie die Bibliothek COPY, Makros (Bits von "speziellem" Code, die vor dem Programmstart in normalen Code umgewandelt wurden), laufende Prozeduren (Sätze von Richtungen, denen ein Name gegeben und die für später gespeichert wurden) und Variablen (Elemente, denen Namen gegeben und die für später gespeichert wurden) von außerhalb des Programms hinzugefügt wurden. Auf diese Weise können Leute etwas Code in mehr als einem Projekt verwenden und müssen sich dank Befehlen (Namen für Richtungen) wie READ/WRITE/GET/PUT nicht um hardwarespezifische Probleme (Probleme, die nur bei einer Art von Computer auftreten) kümmern.

Die Assemblierung wurde und wird manchmal immer noch in Systemen verwendet, bei denen es wichtig ist, dass der Code schnell ist, und sie wird auch häufig in eingebetteten Systemen eingesetzt, weil sie dem Benutzer die genaue Kontrolle darüber ermöglicht, was die Maschine tut.

Verfahrenssprachen

In den sehr späten 1960er Jahren begannen die Menschen, Verfahrenssprachen zu erfinden. Diese Sprachen der dritten Generation (die ersten von dem, was wir heute als Hochsprachen bezeichnen) hatten Wörter, die mit dem zusammenhingen, was sie zu lösen versuchten. Zum Beispiel

  • COmmon Business Oriented Language (COBOL) - verwendet Wörter wie Datei, Verschieben und Kopieren.
  • FORmula TRANslation (FORTRAN) - verwendet mathematische Wörter und Symbole (Formen, die beim Schreiben und Tippen verwendet werden). Sie wurde hauptsächlich für Wissenschaft und Technik entwickelt.
  • ALGOrithmische Sprache (ALGOL) - zum Schreiben von Algorithmen (Schrittfolgen, die dem Computer sagen, was er tun soll). Sie verwendet mathematische Wörter und Symbole, genau wie FORTRAN.
  • Programmiersprache Eins (PL/I) - sollte für alle nützlich sein.
  • Beginners All purpose Symbolic Instruction Code (BASIC) - entwickelt, um Anfängern beim Programmieren zu helfen.
  • C - eine Programmiersprache, die viele Dinge tun soll. Dennis Ritchie arbeitete von 1969 bis 1973 bei AT&T Bell Labs daran.

Objektorientierte Programmierung

Nachdem viele Menschen begonnen hatten, prozedurale Sprachen zu verwenden, erfanden sie objektorientierte Programmiersprachen. In diesen Sprachen werden Daten und ihre "Methoden" (Möglichkeiten zur Manipulation der Daten) in einem "Objekt" zusammengefasst. Einige Programmierer, wie z.B. Richard Stallman, sind nicht der Meinung, dass objektorientierte Sprachen besser geeignet sind, einem Computer Ideen zu erklären, als prozedurale Sprachen.

Da die objektorientierte Programmierung ein Paradigma und keine Sprache ist, haben die Menschen objektorientierte Assemblersprachen wie HLA (High Level Assembly) entwickelt.

Deklarative Paradigmen

Zur gleichen Zeit entwickelten einige Leute deklarative Programmiersprachen. Eine Sprache, die dafür bekannt ist, deklarativ zu sein, ist SQL (eine Sprache zum Hinzufügen und Entfernen von Dingen aus Tabellen).

Verwandte Seiten

  • Denkweise
  • Typensystem
  • Turing Vollständigkeit

Fragen und Antworten

F: Was ist ein Programmierparadigma?


A: Ein Programmierparadigma ist eine Art der Gruppierung von Programmiersprachen auf der Grundlage ihrer Funktionsweise.

F: Was sind die beiden Hauptgruppen von Paradigmen?


A: Die beiden Hauptgruppen von Paradigmen sind imperativ und deklarativ.

F: Wie unterscheiden sich imperative und deklarative Paradigmen?


A: Imperative Paradigmen befassen sich mit der Art und Weise, wie der Code ausgeführt wird, wie z.B. das Zulassen von Seiteneffekten oder das Erfordernis, Dinge in einer bestimmten Reihenfolge auszuführen, während deklarative Paradigmen sich mit der Art und Weise befassen, wie der Code gruppiert wird, wie z.B. das Aufteilen des Codes in ein oder zwei Teile (oder stattdessen in viele kleine Teile).

F: Kann eine Sprache sowohl ein imperatives als auch ein deklaratives Paradigma sein?


A: Ja, eine Sprache kann gleichzeitig ein imperatives und ein deklaratives Paradigma sein.

F: Wie gruppiert ein Programmierparadigma Sprachen?


A: Programmierparadigmen gruppieren Sprachen danach, was sie tun. Sie betrachten, wie der Code ausgeführt wird, wie er gruppiert ist und welche Reihenfolge und Teile das Programm ausmachen.

F: Gibt es noch andere Arten von Programmierparadigmen als imperative und deklarative?


A: Ja, es gibt noch andere Arten von Programmierparadigmen als imperative und deklarative. Einige befassen sich zum Beispiel mit der Art und Weise, wie der Code ausgeführt wird (z.B. das Zulassen von Seiteneffekten), während andere die Art und Weise betrachten, wie der Code gruppiert wird (z.B. das Aufteilen des Codes in ein oder zwei Teile).

F: Gehört jede Sprache nur zu einer Art von Programmierparadigma?


A: Nein, nicht jede Sprache gehört zu nur einer Art von Programmierparadigma; einige Sprachen können zu mehr als einer Art von Paradigma gehören.

AlegsaOnline.com - 2020 / 2023 - License CC3