Was ist ein Framework?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Dr.Miles
User
Beiträge: 38
Registriert: Montag 15. Dezember 2008, 08:33
Wohnort: Mannheim
Kontaktdaten:

Hallo,
ich habe gerade die etwas rekursive Definition von Framework auf Wikipedia gelesen:
Ein Framework (engl. für „Rahmenstruktur, Fachwerk“) ist ein Programmiergerüst,
welches in der Softwaretechnik, insbesondere im Rahmen der objektorientierten Softwareentwicklung
sowie bei komponentenbasierten Entwicklungsansätzen, verwendet wird.
Wenn ich bei Wikipedia Programmiergerüst eingebe, dann werde ich zu Framework weitergeleitet...
Also nach dem was ich rauslese/denke ist ein Framework sowas wie eine Sammlung von Funktionen/Objekten/Methoden, ja?
Falls ja, ist doch die Python-standard-library auch ein Framework oder?

Gruß
Dr.Miles
www.i2p2.de <--- sehr interressantes Anonymisierungsprojekt.
www.schaeuble-wegtreten.de <--- Petition gegen Schäuble
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Framework ist etwas unscharf definiert, da es ja doch recht Buzzwort-lastig ist.

Für mich ist ein Framework etwas, dass meine App und deren Hooks aufruft, eine Library ist etwas was ich selbst aufrufe ("they call me" vs. "I call them"). So gesehen ist zum Beispiel Werkzeug eine Library und als solches ist es auch gedacht.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Ein Framework würde ich (mal nicht von der tief-technischen Seite gesehen) als einen Rahmen definieren, der mir die Bewerkstelligung einer oder mehrerer gleichartiger Aufgaben erleichtert und häufig benutzte bzw. nützliche Features bietet, sodass der Aufwand, den ich als Entwickler betreiben muss, um mein Programm die Aufgabe(n) erfüllen zu lassen, minimiert wird.
Benutzeravatar
Dr.Miles
User
Beiträge: 38
Registriert: Montag 15. Dezember 2008, 08:33
Wohnort: Mannheim
Kontaktdaten:

Leonidas hat geschrieben:Für mich ist ein Framework etwas, dass meine App und deren Hooks aufruft
Tut das nicht der Interpreter?
Dauerbaustelle hat geschrieben:Ein Framework würde ich (mal nicht von der tief-technischen Seite gesehen) als einen Rahmen definieren, ...
Das liest sich für mich genau(bis auf den Rahmen) wie die Definition einer Library....
Was ist mit diesem "Rahmen" genau gemeint?
www.i2p2.de <--- sehr interressantes Anonymisierungsprojekt.
www.schaeuble-wegtreten.de <--- Petition gegen Schäuble
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dr.Miles hat geschrieben:
Leonidas hat geschrieben:Für mich ist ein Framework etwas, dass meine App und deren Hooks aufruft
Tut das nicht der Interpreter?
Jein. Der Interpreter führt nur einen Hook aus, das Framework, welches wiederrum die App aufruft.
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Für mich ist'n Framework'ne krassere Abstraktion um bestimmte Probleme zu lösen.

Webframework für Webapplikationen, GUI-Framework für Gui Applikationen... Gibt ja auch CMS-Frameworks, DB-Frameworks und was weiß ich. Dort wird's eben noch mehr abstrahiert und nimmt einen viel lästige Arbeit ab.
Benutzeravatar
Dr.Miles
User
Beiträge: 38
Registriert: Montag 15. Dezember 2008, 08:33
Wohnort: Mannheim
Kontaktdaten:

Leonidas hat geschrieben:Jein. Der Interpreter führt nur einen Hook aus, das Framework, welches wiederrum die App aufruft.
Also nach dem was ich gelesen habe, ist ein Hook eine Schnittstelle, wo du Code "drankleben" (So stell ich mir das irgendwie vor) kannst der dann ausgeführt wird, wenn ein bestimmtes ereignis eintritt. Aber vllt. kannst du/jemand anderes mir eine kurze erklärung geben(oder dt. Link) . Gibt es für jeden Interrupt einen Hook?
Bisher habe ich nur im Zusammenhang von Keyloggern davon gehört (Und im PyKeylogger Quelltext davon gelesen - aber nicht verstanden)

Aber sonst habe ich deinen Satz auch nicht ganz verstanden...
Meinst du:Der Interpreter führt einen Hook aus, der das Framework aufruft, woraufhin das Framework das Programm aufruft?
BlackVivi hat geschrieben:Für mich ist'n Framework'ne krassere Abstraktion um bestimmte Probleme zu lösen.Webframework für Webapplikationen, GUI-Framework für Gui Applikationen... Gibt ja auch CMS-Frameworks, DB-Frameworks und was weiß ich. Dort wird's eben noch mehr abstrahiert und nimmt einen viel lästige Arbeit ab.
Also sowas wie eine Library mit Zusatzfunktionen? Kann ich mir das so vorstellen?
www.i2p2.de <--- sehr interressantes Anonymisierungsprojekt.
www.schaeuble-wegtreten.de <--- Petition gegen Schäuble
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Eine Library ist nur dazu da, eine Aufgabe zu erfüllen. Ein Framework ist, wenn du so willst, ein (hoffentlich) gut gemixter Verband aus vielen Libraries, um einen Themenbereich abzudecken.

Beispiel:
Library: sqlalchemy, regular expressions, jinja
Framework: django (sqlalchemy=DB-Abstraktion, regular expressions fürs url-handling, jinja fürs Templating*; wobei das natürlich nicht alle Bestandteile sind :))

* Mir ist bewusst, dass django kein Jinja nutzt, aber es ist ähnlich und sieht besser aus als "die-template-engine-von-django" ;)
Benutzeravatar
Dr.Miles
User
Beiträge: 38
Registriert: Montag 15. Dezember 2008, 08:33
Wohnort: Mannheim
Kontaktdaten:

Dauerbaustelle hat geschrieben:Eine Library ist nur dazu da, eine Aufgabe zu erfüllen. Ein Framework ist, wenn du so willst, ein (hoffentlich) gut gemixter Verband aus vielen Libraries, um einen Themenbereich abzudecken.
Danke, das war einleuchtend.
www.i2p2.de <--- sehr interressantes Anonymisierungsprojekt.
www.schaeuble-wegtreten.de <--- Petition gegen Schäuble
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Dr.Miles hat geschrieben:Hallo,
ich habe gerade die etwas rekursive Definition von Framework auf Wikipedia gelesen:
Die Beschreibung die *danach* in der Wikipedia steht deckt sich mit dem hier gesagten auch recht gut.
Falls ja, ist doch die Python-standard-library auch ein Framework oder?
Kann man natürlich so sehen

Code: Alles auswählen

$ ls /System/Library/Frameworks/ | grep Python
Python.framework
(das ist mal Apples Meinung zu dem Thema, wobei hier eher Python insgesamt gemeint ist)
BlackJack

Die Unterscheidung "eine Aufgabe" und "Themenbereich" finde ich nicht gut, denn Themenbereiche können auch Bibliotheken abdecken.

Bibliotheken werden von Code verwendet den man schreibt, während man bei Rahmenwerken Code schreibt, der dann vom Rahmenwerk verwendet wird.

Beispiel `easygui` (Bibliothek) vs. `Tkinter` (Rahmenwerk). Bei `easygui` schreibt man Code der die Bibliothek benutzt und dort nur die Funktionen aufruft. Bei `Tkinter` schreibt man Code, der bei bestimmten Ereignissen ausgeführt werden soll, und dann gibt man die Kontrolle an `Tkinter` ab und das ruft dann je nach Ereignis den selbstgeschriebenen Code auf.
farid
User
Beiträge: 95
Registriert: Mittwoch 8. Oktober 2008, 15:37

BlackJack hat geschrieben:Bibliotheken werden von Code verwendet den man schreibt, während man bei Rahmenwerken Code schreibt, der dann vom Rahmenwerk verwendet wird.
In dem Sinne waere dann auch der X Server, oder das Aequivalent bei Windows ein Framework, denn es ruft ja die Hooks der GUI-Anwendung auf... und es bietet eine Library (API) fuer die Anwendung an (fuer die andere Richtung). ;)
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Bei einem Framework arbeitet man in einem bestimmten Gerüst. Die Kontrolle hat dann dasjenige, das den Rahmen zur Verfügung stellt, das eigentliche "Framework". Eine Library dagegen ist vollkommen ohne eigene Kontrolle. Also ja, im Grunde Inversion of Control vs Control, imho.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Eine Library stellt etwas zu Verfügung dass ich für was auch immer nutzen kann.

Ein Framework stellt auch etwas zu Verfügung aber mit dem Fokus auf ein ganz bestimmtes Ziel. Django ist z.B. ein Framework für Webanwendungen und dementsprechend stellt es dafür schon alles aufeinander abgestimmt bereit.

Werkzeug hingegegen ist eher sowas wie eine WSGI Library + etwas Spielzeug für Webanwendungen, damit kann ich zwar theoretisch auch schon eine Webanwendung schreiben aber in der Realität fehlt dann eben doch eine Templateengine, ORM und eventuell etwas für Forms.
BlackJack

@farid: Das X-Server-Beispiel verstehe ich nicht. Wo gibt's da Hooks? Der X-Server und die Bibliothek stellen soweit ich weiss nur Aufrufe zur Verfügung. Die Ereignisse muss man sich aktiv selber aus der Warteschlange holen. Rückruffunktionen registrieren ist auf der Ebene nicht möglich. Das bieten dann erst die Rahmenwerke wie Gtk, Qt, ….
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Hier ist die Daumenregel: Don't call us, we call you.

Java-Applets benötigen z.B. ein Rahmenwerk, denn eine Applet-Klasse ist alleine nicht lauffähig. Sie hat nur einige Methoden, die dann, zur passenden Zeit, vom Rahmenwerk aufgerufen werden.

Meistens werden Rahmenwerke aber Rahmenwerke, weil das cooler klingt. Eigentlich sind das in Regel nur Funktionsbibliotheken oder meinenwegen Klassenbibliotheken.

Stefan
Antworten