Original von menace
natuerlich braucht man den ganzen kram nicht. man braucht auch keine funktionen. diese ganzen konzepte zur abstraktion bringen gar nichts, deshalb wird heutzutage auch praktisch nur in assembler programmiert.
Oi, ja, Pauschalisierung und Generalisierung sind toll.
ich wollte eigentlich keine richtige diskussion anfangen, deshalb die etwas polemische antwort. wird doch sonst ganz schoen ot und ausserdem bin ich selbst kein fanboy von irgend einer bestimmten programmiersprache. ich bin nur neugierig auf verschiedene arten programmiersprachen zu bauen.
Darf ich hier auf das Thema GarbageCollection in Java verweisen?
hm, garbage collection im allgemeinen hat sich in letzter zeit ganz schoen weiter entwickelt. da wurde viel geforscht und auch ergebnisse erzielt. malloc() kann uebrigens bei unbedachter benutzung aehnliche laufzeiteigenschaften haben wie garbage collection. aber es ist eben nur eine moegliche loesung fuer ein problem und wenn man konkrete anforderungen hat dann muss man immer ueberlegen welche eigenschaften die loesung haben muss.
Oder auf die Komplexität in C++ durch Mehrfachvererbung.
ich bin auch eher ein freund von kompakten sprachen. deshalb mag ich c auch lieber als c++. man kann die sprache mehr oder weniger komplett im kopf haben. das gleich gilt auch fuer python, btw. der schoepfer von python hat in seinem blog vor einiger zeit uebrigens laut darueber nachgedacht, konstrukte die man von funktionalen sprachen kennt (reduce, filter, map) wieder rauszuschmeissen. mit der begruendung, dass es andere methoden gibt das gleich zu erreichen (list comprehensions). redundanz zu vermeiden ist eines der haupt designkriterien in python. das hinzufuegen neuer syntax wird nur sehr selten gemacht.
Warum sonst ist das funktionale Paradigma für viele so ungewohnt und eckig?
vermutlich, weil es ueblich ist programmieren mit einer nicht-funktionalen sprache zu lernen. ich kann mir vorstellen, dass leute die als erstes scheme oder haskell gelernt haben anders darueber denken. z.b. hab ich letztens an der uni utrecht mit jemandem darueber geredet. in utrecht wird den bachelorstudenten neben java auch haskell gelehrt. viele moegen das nicht und machen nur das allernoetigste an kursen mit haskell. aber bei manchen ist die uebereinstimmung zwischen der art zu denken und der art in funktionalen sprachen zu programmieren groesser als bei anderen sprachen. der meinte jedenfalls, wenn er java code z.b. sieht dann ist da viel zu viel rauschen im signal und er hat muehe die wesentlichen teile vom housekeeping zu trennen. fuer die meisten leute (mich eingeschlossen) ist das andersrum. da is der funktionale code zu "dicht" und man muss an ein paar zeilen ewig knabbern bis man die bedeutung raus hat.
aber wenn mans nicht ausprobiert dann findet man nicht raus welche sprache am ehesten dem eigenen denken entspricht und somit am effektivesten ist.
einigen wir uns auf das was Dawen gesagt hat; verschiedene programmiersprachen erfuellen verschiedene aufgaben unterschiedlich gut.
funktionale sprachen die keine seiteneffekte haben eignen sich z.b. sehr gut fuer parallele ausfuehrung. und das ist durchaus in der "echten welt" interessant. z.b. wenn man einen cell prozessor effektiv nutzen will oder fuer massiv verteilte anwendungen wie google.
einen linux treiber in haskell zu schreiben macht dagegen vermutlich recht wenig sinn. dafuer gibts eben den portablen assembler (aka c).
