Seite 1 von 2

Verfasst: Dienstag 7. April 2009, 21:07
von Pascal
Leonidas hat geschrieben:(Ich meine, wie schwer ist es einem Thread einen sinnvollen Titel zu geben, wenn man schon umbedingt eine unnötige Umfrage haben muss)
Deswegen habe ich diese Frage bei Just Testing reingeschrieben, weil dies denn nach einer Woche gelöscht werden sollte..

Aber ich bin von den bisherigen Antworten positiv überrascht!!!

Vielen Dank dafür

Verfasst: Mittwoch 8. April 2009, 08:56
von Leonidas
Pascal hat geschrieben:Deswegen habe ich diese Frage bei Just Testing reingeschrieben, weil dies denn nach einer Woche gelöscht werden sollte..
Just Testing ist nicht für Diskussionen oder Fragen gedacht.

Verfasst: Mittwoch 8. April 2009, 17:13
von Goswin
FAZIT:
Das "verallgemeinerte-Übersichtlichkeits-Problem" lässt sich ohne Klassen NICHT lösen :-). Es ist ja auch ein sehr komplexes Problem.

Verfasst: Mittwoch 8. April 2009, 17:15
von Leonidas
Goswin hat geschrieben:Das "verallgemeinerte-Übersichtlichkeits-Problem" lässt sich ohne Klassen NICHT lösen :-).
Logisch geht das, nur ist es nunmal so dass man in Python für so etwas meist Klassen einsetzt.
Sonst würdest du ja sagen, dass man in Programmiersprachen die keine Klassen haben, keine übersichtlichen Programme schreiben kann. Das stimmt aber so nicht.

Verfasst: Mittwoch 8. April 2009, 17:29
von str1442
@Goswin

Das kannst du so allgemein nicht sagen (und was ist eine allgemeine Übersichtlichkeit? ;) ). Klassen sind ein Werkzeug, genau wie Generatoren / Koroutinen, Closures, Continuations, goto, Rekursion und nicht zuletzt auch Funktionen. Je nach Problem können mehrere Werkzeuge mehr oder weniger geeignet sein, manche hingegen absolut nicht. Man kann auch jedes beliebige iterative gelöste Problem auch rekursiv lösen. Das sagt aber nichts über die Qualität der Lösung aus. Manche Dinge lassen sich iterativ natürlicher lösen, andere Dinge dagegen rekursiv, wo einem die Lösung direkt ins Auge springt. Letztendlich gehört immer Abwägung dazu, denn man kann irgendwo alles als Objekt betrachten, das macht OOP auch gefährlich. Typischer Fall von "If you only have a hammer, everything looks like a nail.". Außerdem kann man Klassen mit Funktionen und Closures nachbilden, sofern die verwendete Sprache Funktionsdefinitionen innerhalb von Funktionen erlaubt.

Verfasst: Mittwoch 8. April 2009, 18:16
von sma
Um noch ein bisschen zu Klugscheißen: Natürlich sind Klassen nicht notwendig. Selbst das Konzept von Objekten - welches von Klassen unabhängig ist, auch wenn das häufig in einen Topf geworfen wird - ist entbehrlich. Ebenso sind Funktionen als Abstraktion entbehrlich. Wir wissen, dass eine Turingmaschine (Turing, 1936) alle berechnbaren Probleme lösen kann. Wir wissen, dass z.B. eine Unbeschränke Registermaschine (Shepherson und Sturgis, 1963) mit den beiden Befehlen "Springe, wenn Register X ungleich 0 ist" und "Ziehe 1 von Registerinhalt X ab" auskommt, da man damit eine Turning-Maschine simulieren kann. Ein weiteres Stichwort ist "Lambda-Kalkül" (Church und Kleene, 1936), ein Formalismus, der einzig Funktionen kennt und die mathematische Grundlage für fast alle Programmiersprachen, die wir so kennen (und die auf dem von Neumann-Prinzip basieren), bildet.

Es ist eine Fingerübung, Objekte mittels Funktionen (die über Variablen abgeschlossen sind, so genannte Closures) zu repräsentieren. Klassen sind schließlich nichts anderes (neben der Idee, als Bauplan zu fungieren) als Funktionen, die Objekte erzeugen können.

Stefan

Verfasst: Mittwoch 8. April 2009, 20:03
von BlackJack
Nur für den Fall, dass es bisher noch nicht erwähnt wurde: Auch für OOP braucht man kleine Klassen, es reichen auch Objekte. Heisst ja auch nicht Klassenorientierte Programmierung. :-)