[linux-l] Re: SW-Design / Modules vs. Objects/Classes

Rocco Rutte pdmef at cs.tu-berlin.de
So Okt 23 20:12:58 CEST 2005


Hi,

* Axel Weiß [05-10-23 18:40:14 +0200] wrote:
>Rocco Rutte schrieb:

>> Wie macht man sowas in C++ _ohne_ Switch/Case und If/Then/Else?

>ich denke, das ist hier nicht die Frage: wie macht man etwas in einer 
>Sprache, ohne ein bestinmmtes Sprachkonstrukt zu verwenden.

Das hat IMHO nichts mit der Sprache zu tun.

>Es geht doch ums Umsetzen von Konzepten. Und hier geht es um den 
>Vergleich zwischen FP- und OO-Konzepten. Meine These an dieser Stelle 
>ist: die Wahl der Sprache, mit der man ein Konzept umsetzt, ist zunächst 
>zweitrangig.

Der Begriff "Konzept" ist leider etwas schwammig. Zumindest vom 
wissenschaftlichen Standpunkt her sind funktional und OO ja schon mal 
nicht in der selben Klasse (imperativ dagegen wäre es).

>Natürlich haben Sprachen ihre Vorzüge - was man in der einen Sprache 
>elegant mit wenig Worten formuliert, benötigt in einer anderen Sprache 
>vielleicht mehr Aufwand.

Jein. Bei funktional ist nicht der Hauptpunkt, dass man meist weniger 
Code hat sondern dass der Code eine _mathematische_ Abbildung einer 
_konstanten_ Eingabe- auf eine Ausgabemenge ist mit allen Implikationen, 
wenn man es genau nimmt. Das widerspricht dem
Algorithmus-Konzept von vielen OO-Sprachen völlig, weil die meist 
imperativ sind. So können dort Algorithmen Userinput während der 
Laufzeit entgegen nehmen und verarbeiten, was funktional (streng 
gesehen) völlig ausgeschlossen ist (die Eingabe, d.h. der 
Ausgangsszustant wäre ja nicht konstant; während man eine mathematische 
Abbildung "abarbeitet" können sich die Rahmenbedingungen ja auch nicht 
ändern, etc.)

Das dann Sprachen der jeweiligen Familien auf der Grundidee aufbauen ist 
ja klar, aber das kann man IMHO nicht konzeptionell der Sprache 
anrechnen sondern eben der Grundidee.

>Aber es wäre falsch, zu sagen, dass man mit C++ nicht funktional 
>programmieren kann, genauso wäre es falsch, zu sagen, mit OCaml könne 
>man nicht objektorientiert programmieren. Ich hoffe, da sind wir uns 
>einig.

Von der Grundidee her eigentlich "ja", aber eben "eigentlich" und 
deshalb wissenschaftlich "nein", IMHO.

   bye, Rocco
-- 
:wq!



Mehr Informationen über die Mailingliste linux-l