- Ist Javascript eine funktionale Sprache? Ich weiß, es hat Objekte und Sie können OOP damit auch machen, aber ist es auch eine funktionale Sprache, kann es auf diese Weise verwendet werden?
- Sie wissen, wie OOP die nächste Evolution in der Programmierung wurde / scheint. Bedeutet dies, dass 'Funktionale Programmierung' die nächste Evolution ist (Hinweis: Dies ist KEINE Aufforderung zur Stellungnahme, ABER eine Aufforderung zur faktenbasierten Beantwortung, und dieser Hinweis ist mehr für die Moderatoren als für die Mitwirkenden;)).
- Ich lerne am besten anhand von Beispielen, vielleicht könnte jemand zeigen, wie man dieselbe Aufgabe auf eine OOP-Art und dann auf eine funktionale Programmierweise ausführt, um zu verstehen und zu vergleichen, was funktionale Programmierung tut / ist.
Um ehrlich zu sein, verstehe ich 'Functional Programming' nicht wirklich vollständig: P Ein Vergleich von Javascript mit funktionaler Programmierung kann also völlig falsch sein.
Funktionale Programmierung in einfachen Worten ausgedrückt: Ist es einfach der Vorteil von Abstration durch Verwendung anonymer Funktionen?
Oder ist das zu einfach? Auf einfache Weise ist OOP der Vorteil der Abstraktion durch Objekte, aber ich glaube, dass dies etwas zu einfach ist, um OOP zu beschreiben.
Ist dies ein gutes Beispiel für funktionale Programmierung? ...
Javascript OOP Beispiel:
// sum some numbers
function Number( v )
{
this.val = v;
}
Number.prototype.add( /*Number*/ n2 )
{
this.val += n2.val;
}
Funktionsprogrammierbeispiel:
function forEach(array, action)
{
for (var i = 0; i < array.length; i++)
action(array[i]);
}
function add(array)
{
var i=0;
forEach(array, function(n)
{
i += n;
});
return i;
}
var res = add([1,9]);
Or is that way too simple?
Ja, das ist es. Anonyme Funktionen werden manchmal mit funktionalen Sprachen und Multi-Paradigmen-Sprachen assoziiert, die die funktionale Programmierung bevorzugen, aber sie sind kein eindeutiges Merkmal von funktionalen Sprachen. Aber wenn man sie als eine Implementierung von λ-Kalkül betrachtet, dann sind sie ein zentraler Bestandteil der funktionalen Programmierung. Der wichtigste Punkt ist, dass es nicht so einfach ist :)
I know it has objects & you can do OOP with it also
Nein, kannst du nicht. Es ist eine prototypbasierte Programmierung, die die Unterscheidung zwischen Klasse und Objekt beseitigt. Persönlich betrachte ich die prototypbasierte Programmierung auf dieser Basisebene als fehlerhaft.