Programmier Paradigmen
 
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern

Veränderung (letzte Änderung) (keine anderen Diffs, Normalansicht)

Hinzugefügt: 8a9
* objektbasiert

[ Diese Seite befindet sich erst im Aufbau; ich versuche ein Refactoring -- hl]

Folgende Begriffe werden als ProgrammierParadigmen angesehen und als Attribute für ProgrammierSprachen verwendet:

Ziele:

Auf dieser Seite soll nun eine eher konservative Lehrmeinung zum Thema widergegeben werden. Diese wird dann aber [nach und nach] eine entsprechende Differenzierung und Vertiefung erfahren.

D.h. der Beitrag hier soll lediglich der Aufhänger für eine weitergehende Diskussion und auch weiterführenden ja vielleicht sogar divergierenden Darstellungen sein.

Seiten für Detailfragen und Diskussionen:


Vorbemerkungen / Überlegungen

Es ist wichtig, zwischen

zu unterscheiden.

Unter ProgrammierParadigmen versteht man primär abstrakte Konzepte, die nur mehr oder weniger direkt (bzw. unmittelbar) von real existierenden ProgrammierSprachen "realisiert" werden.

Eine Programmiersprache kann einem Paradigma zugeordnet werden, wenn

Man spricht dann bei dieser Sprache von einem Vertreter dieses Paradigmas. Dabei ist es ohne weiteres möglich, dass eine Sprache mehrerer Paradigmen zugerechnet wird (werden muss, werden kann).


Begriffe

InArbeit


Ordnungssystem

Das ist eine gängige "Zusammenfassung":


Klassifikation


In medias res

Im folgenden möchte ich als eine kurze Einstimmung in das Thema eine Auswertung der Informationen, die man auf von FOLDOC findet, vornehmen:

Facts

1.) "procedural language" wird (dort) mit "imperative language" gleichgesetzt!

2.) "imperative language" (bzw. "procedural language") wird als Gegenbegriff zu "declarative language" aufgefasst.

"Imperative (or procedural) languages specify explicit sequences of steps to follow to produce a result, while declarative languages..."

3.) Als typische "prozedurale Sprachen" werden angesehen: Basic, Pascal, C, Modula-2.

4.) Unter "declarative language" werden subsumiert: "logic programming language" bzw. "relational language" und "functional language".

"The most common examples of declarative languages are logic programming languages such as Prolog and functional languages like Haskell."

4a) Über "relationale Sprachen" heißt es: "Relational languages specify output in terms of some property and some arguments. For example, if Tom has two brothers, Dick and Harry, a relational language will respond to the query "Who is Tom's brother?" with either Dick or Harry. Notice that unlike functional languages, relational languages do not require a unique output for each predicate/argument pair. Prolog is the best known relational language."

Bemerkung: Offenbar ist mit "relational" hier das gemeint, was im Deutschen mit "prädikativ" wiedergegeben wird. Diese Ansicht wird auch gestützt durch einen Link auf FOLDOC, der zu einem Text führt, in dem es heißt: "Predicates (or relations)..." usw.

4b) Als typische funktionale Sprachen werden angesehen: Clean, FP, Haskell, Hope, LML, Miranda and SML. Weiters heißt es: "Many other languages such as Lisp have a subset which is purely functional but also contain non-functional constructs."

5.) "applicative language" wird kurzerhand mit "functional language" gleichgesetzt (!). Weiters heißt es dazu: "Sometimes used loosely for any declarative language though logic programming languages are declarative but not applicative."

6.) OOP wir kurz erklärt ohne Bezugnahme auf die oben beschriebenen "Paradigmen".

Conclusion

Daraus ergibt sich nun folgenden BILD:

Die Sprachen können unterschieden werden in:

- prozedural-imperative und

- deklarative Sprachen.

Die deklarativen Sprachen wiederum sind untergliedert, in

- logisch/prädikative Sprachen

- funktionale ("applikative") Sprachen

Davon unabhängig gibt es auch noch die Objektorientierung...

Wir erhalten also das Ergebnis, dass sich auf FOLDOC praktisch dieselbe Meinung wiederfindet, wie sie auch hier von mir im Rahmen der ProgrammierParadigmen/Begriffe vertreten wurde.

Dies belegt zumindest die "praktische Relevanz" einer derartigen Einteilung.

Jedoch hat die Diskussion auch gezeigt, dass diese Darstellung ZU EINFACH ist, und differenziert werden muss.


Erste Schlussfolgerungen

Aus all dem ergibt sich für mich folgendes Bild:

Die Unterscheidung in "prozedural" (oder auch "imperativ") und "deklarativ" ist üblich und wird auch häufig angetroffen im Netz (und natürlich auch sonstigen "Literatur"). "Deklarativ" wird zudem noch [mindestens] unterteilt in "logisch" und "funktional".

Wenn von Paradigmen die Rede ist, findet sich aber häufig auch noch OO als eigenes "Paradigma"...

Bsp.: "...look at xxx for examples of scheme doing OO, logic programming, and functional programming..." - bekanntlich ist ermöglicht Scheme in mehreren Stilen zu programmieren: so heißt es in der "Selbst-Charakterisierung" zu der SpracheScheme: "A wide variety of programming paradigms, including imperative, functional, and message passing styles, find convenient expression in Scheme." (Bem.: "Message passing" ist charakteristisch für OO...)

[ To be continued ]


Diskussion

Siehe /Diskussion


Fragen

Wie fügt sich AspektOrientierteProgrammierung in das Bild?

Wohin gehört SQL?

SQL ist deklarativ: Es wird vorgegeben, was gesucht wird, nicht wie gesucht werden soll.


KategorieProgrammierSprachenKonzepte
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 22. März 2006 14:19 (diff))
Suchbegriff: gesucht wird
im Titel
im Text