Wenn Sie sich für Paradigmen interessieren, behandelt das Papier Programmierparadigmen für Dummies: Was jeder Programmierer wissen sollte sie.
In der funktionalen Programmierung ist der Zustand implizit - das Programm wird ausgeführt, indem Funktionen aufgerufen werden, die andere Funktionen aufrufen. In der imperativen Programmierung und der objektorientierten Programmierung ist der Zustand explizit - Sie ändern den Wert einer Variablen oder eines Objektfelds.
Functional und imperative Systeme können in gewisser Weise als Duale betrachtet werden - was in einem fest ist, ist in einem anderen ein dynamischer Wert.
Closures - die einige explizite, veränderbare Zustände in einem Objekt einfangen, das als Funktion aufgerufen werden kann - liegen irgendwo dazwischen, sind weder reine funktionale Programmierung noch ganz ausgereifte Objekte; sie ähneln eher anonymen Objekten als Funktionen.
'Dynamische Sprachen' ist ein vager Begriff, der in der Regel eine der folgenden Bedeutungen hat:
-
Dynamisch typisierte Sprachen - Sprachen, bei denen die Bestimmung des Typs zur Laufzeit verzögert wird, wobei jedoch die Menge der Typen festgelegt ist. Beispiele sind Smalltalk, Lisps und aktuelle Fortress-Implementierungen. Einige ansonsten statisch typisierte Sprachen erlauben auch einige dynamische Typüberprüfungen - Java, C#, C++ und Ada. (Es war ein fehlgeschlagener dynamischer Typumwandlung von float zu int in Ada, der die Ariane 5 zum Absturz brachte)
-
Sprachen mit dynamischen Typen - Sprachen, in denen neue Typen zur Laufzeit erstellt werden können. Die bekannteste ist JavaScript. Da das Programm ausgeführt werden muss, um die Typen zu bestimmen, ist es schwieriger, für diese Typ-erkannte Vervollständigung zu erstellen.
-
Sprachen, die dynamisch kompiliert werden - Sprachen, in denen neue Skripte zur Laufzeit kompiliert werden können. Dies trifft auf Bash, JSP, PHP und ASP auf Seitenbasis zu und in feinerer Skala für Lisps und JavaScript, die eine 'eval'-Funktion unterstützen, die einen Ausdruck kompiliert und ausführt.
Funktionale Sprachen, die stark typisiert sind, führen oft eine große Menge an Typanalyse durch, sodass es in ihren Programmen üblich ist, weniger explizite Typanweisungen zu haben als in schlecht implementierten statisch typisierten Sprachen. Dies kann Menschen verunsichern, die nur die fehlende explizite Typanweisung in dynamisch typisierten Sprachen gesehen haben und glauben, dass Typanalyse dasselbe wie dynamische Typanalyse ist.
0 Stimmen
Antwortete auf Kommentar. - finde die kostenlose Version von Practical Common Lisp im Web und schau dir das Beispiel an, in dem der Autor eine Datenbank von MP3-Titeln mit 'nur Funktionen' erstellt. Ein kleines Beispiel, aber vermittelt die Möglichkeiten recht gut.