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.
Benutzeravatar
Dr.Miles
User
Beiträge: 38
Registriert: Montag 15. Dezember 2008, 08:33
Wohnort: Mannheim
Kontaktdaten:

Was ist ein Framework?

Beitragvon Dr.Miles » Freitag 23. Januar 2009, 19:30

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 23. Januar 2009, 19:45

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

Beitragvon Dauerbaustelle » Freitag 23. Januar 2009, 19:52

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:

Beitragvon Dr.Miles » Freitag 23. Januar 2009, 20:36

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 23. Januar 2009, 20:40

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:

Beitragvon BlackVivi » Freitag 23. Januar 2009, 20:49

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:

Beitragvon Dr.Miles » Freitag 23. Januar 2009, 21:13

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

Beitragvon Dauerbaustelle » Freitag 23. Januar 2009, 21:24

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:

Beitragvon Dr.Miles » Freitag 23. Januar 2009, 21:30

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

Re: Was ist ein Framework?

Beitragvon Darii » Freitag 23. Januar 2009, 21:32

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

Beitragvon BlackJack » Freitag 23. Januar 2009, 23:44

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

Framework

Beitragvon farid » Montag 26. Januar 2009, 18:42

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

Beitragvon str1442 » Montag 26. Januar 2009, 20:51

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: 2402
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Beitragvon DasIch » Montag 26. Januar 2009, 21:21

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

Beitragvon BlackJack » Montag 26. Januar 2009, 23:47

@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, ….

Wer ist online?

Mitglieder in diesem Forum: Google [Bot]