Ich habe mehrmals gehört, dass jeder Programmierer eine von jeder Art von Sprache lernen sollte. Nun, das ist nicht unbedingt wahr, aber ich halte es für eine gute Idee.
Ich habe eine prozedurale Sprache (Perl) gelernt, aber was sind die anderen Arten?
Was sind die Unterschiede zwischen ihnen und was sind einige Beispiele von jedem?
programming-languages
paradigms
Dynamisch
quelle
quelle
Antworten:
Auch wenn die Terminologie alles andere als standardisiert ist, besteht eine gängige Methode darin, die wichtigsten Programmierparadigmen in Kategorien einzuteilen
Sie scheinen bereits zu wissen, wie prozedurale Programmierung ist.
In funktionalen Sprachen werden Funktionen als erstklassige Objekte behandelt. Mit anderen Worten, Sie können eine Funktion als Argument an eine andere Funktion übergeben, oder eine Funktion kann eine andere Funktion zurückgeben. Das Funktionsparadigma basiert auf der Lambda-Rechnung, und Beispiele für Funktionssprachen sind LISP, Scheme und Haskel. Interessanterweise unterstützt JavaScript auch die funktionale Programmierung.
In der logischen Programmierung definieren Sie Prädikate, die Beziehungen zwischen Entitäten beschreiben, z. B.
president(Obama, USA)
oderpresident(Medvedev, Russia)
. Diese Prädikate können sehr kompliziert werden und Variablen enthalten, nicht nur wörtliche Werte. Nachdem Sie alle Prädikate angegeben haben, können Sie Fragen an Ihr System stellen und logisch konsistente Antworten erhalten.Die große Idee bei der logischen Programmierung besteht darin, dem Computer nicht zu sagen, wie er die Dinge berechnen soll, sondern zu sagen, was die Dinge sind. Beispiel: PROLOG.
Das objektorientierte Paradigma ist in gewisser Weise eine Erweiterung der prozeduralen Programmierung. In der prozeduralen Programmierung haben Sie Ihre Daten, die primitive Typen wie Ganzzahlen und Gleitkommazahlen, zusammengesetzte Typen wie Arrays oder Listen und benutzerdefinierte Typen wie Strukturen sein können. Sie haben auch Ihre Prozeduren, die mit den Daten arbeiten. Im Gegensatz dazu haben Sie in OO Objekte, die sowohl Daten als auch Prozeduren enthalten. Auf diese Weise können Sie schöne Dinge wie Verkapselung, Vererbung und Polymorphismus haben. Beispiele: Smalltalk, C ++, Java, C #.
Die generische Programmierung wurde erstmals 1983 in Ada eingeführt und verbreitete sich nach der Einführung von Vorlagen in C ++. Dies ist die Idee, dass Sie Code schreiben können, ohne die tatsächlichen Datentypen anzugeben, mit denen er arbeitet, und dass der Compiler dies herausfindet. Zum Beispiel statt zu schreiben
du würdest schreiben
einmal und lassen Sie den Compiler spezifischen Code generieren, für was
T
auch immer sein mag, wann erswap()
tatsächlich im Code verwendet wird.Die generische Programmierung wird in unterschiedlichem Maße von C ++, Java und C # unterstützt.
Es ist wichtig zu beachten, dass viele Sprachen, wie z. B. C ++, mehrere Paradigmen unterstützen. Es ist auch richtig, dass eine Sprache, von der gesagt wird, dass sie ein bestimmtes Paradigma unterstützt, möglicherweise nicht alle Merkmale des Paradigmas unterstützt. Ganz zu schweigen davon, dass es viele Meinungsverschiedenheiten darüber gibt, welche Funktionen für ein bestimmtes Paradigma erforderlich sind.
quelle
Programmiersprachen weisen eine Reihe von meist orthogonalen Merkmalen auf. Das prominenteste liegt in dem Paradigma oder den Paradigmen, die sie unterstützen. Der Wikipedia-Artikel befasst sich ausführlich mit Paradigmen. Die wichtigsten Paradigmen sind wahrscheinlich folgende:
Aber Sprachen unterscheiden sich auch in anderer Hinsicht:
quelle
Es gibt verschiedene Programmierparadigmen, die derzeit in Mode sind:
quelle
Prolog ist eine logische Programmiersprache und ist relativ einfach zu erlernen . Es erfordert ein völlig anderes Denken als die prozedurale Programmierung, daher ist es gut zu erforschen, wenn Sie versuchen, Ihr Gehirn zu dehnen.
Wenn Sie ein College besuchen, sollten Sie einen Kurs über Programmiersprachen belegen, der darauf abzielt, die verschiedenen Arten von Programmiersprachen vorzustellen und zu erklären, wofür sie am besten geeignet sind.
quelle
Die meisten gängigen Sprachen mischen Aspekte der imperativen, funktionalen und deklarativen Programmierung. Nischensprachen neigen dazu, exotischer zu sein oder interessante neue Ideen einzuführen, die aus dem einen oder anderen Grund nicht für die allgemeine Programmierung geeignet sind. Einige, keineswegs vollständige Beispiele:
(+/ % #)&.:*:
Berechnet in J den Effektivwert eines Arrays. Bekannt für seine Prägnanz, berüchtigt dafür, unleserlich zu sein.quelle