[linux-l] LinuxScript?

Steffen Dettmer steffen at dett.de
So Mär 31 23:16:20 CEST 2002


* Oliver Bandel wrote on Sun, Mar 31, 2002 at 21:29 +0200:
> > machen solche Ansätze überhaupt Sinn unter Unix? Ich meine, ein
> > Filesystem ist ja eben kein Object und so, was soll man da an
> > Aktionen anheften können. Kann mir nicht vorstellen, das sowas
> > elegant geht.
> 
> Die systemnahe Programmierung unter Unix/Linux ist sehr wohl
> OO-ähnlich.

Natürlich kann man mit Gewalt jedem funktionalem
Objektorientierung anhängen. 

> Aber den Filetyp (reg. File, Link, Directory) als Eigenschaft
> eines Objektes im FS zu betrachten liegt doch nahe, oder?

Da die Eigenschaften sehr ähnlich sind, würde man hier jedoch nur
eine ziemlich flache Vererbungshierachie hinkriegen, kann mir
nicht vorstellen, daß sowas sehr viel bringt. 

Natürlich kann man sockets von files ableiten und die
Socket-Eigenschaften hinzufügen. Aber in der Praxis braucht man
sowas eher selten. Na ja, ich gebe jedoch zu, sogar selbst sowas
schon gebaut zu haben :)

> Ebenso könnte man auch das Objekt Prozess nach dem pwd/cwd (getcwd()),
> seiner ID, etc. befragen.

Sicherlich die Instanz eines Prozesses. Aber macht erst wirklich
Sinn, wenn es dann "Kinder" gibt, die spezielle Eigenschaften
haben, die jedoch nicht immer interessieren, so daß man
beispielsweise Polymorphie ausnutzen könnte...

> Im FS hat sowohl ein File, als auch ein FIFO oder ein Directory
> einen Inhalt, einen Namen, einen ort, wo man es finden kann,
> und weitere Eigenschaften.

Eigenschaften zu haben, ist kein hinreichendes Kriterium für
Objekt/Klassenkandidaten, finde ich. Eigenschaften kann man auch
sehr gut über klassische Datentypen handhaben, also ein C-Struct,
dessen Instanz in einem Modul lebt. Natürlich ist sowas technisch
gesehen ziemlich genau eine Klasse. Ich meine ja nur, es gibt
hier nicht unbedingt notwendigerweise einen Bedarf.

> geworden (funktional ist evtl. mißverständlich, da das oft auch

Meinst Du wirklich funktional oder prozedural?

> fälschlicherweise benutzt wird für das, was man in C und Co. so
> verbricht; ich denke da eher an Scheme, Haskell, OCaml etc.).

Kenn die Leute leider nicht. Aber Du hast völlig Recht: man muß
je nach Problem die Lösungsstrategie wählen, und nicht behaupten,
irgenteine sei die Beste.

> Aber OO in Massen hat noch niemandem geschadet, 

Doch, hab schon viele C++-Klassen gesehen, die hatten überhaupt
nix mit OO zu tun usw. Das ist dann meist mehr verwirrend und
ärgerlich. Sinnvolle OO Abstraktion ist eine Kunst, aber ein
bißchen was sinnvolles sollte man schon machen, wenn man OO
benutzt :)

> ...und Unix ist von der Programierung her schon recht
> OO-ähnlich.

Finde ich gar nicht. Ich finde eher, daß die Daten, die von
Systemfunktionen verarbeitet werden, nicht zu den Verarbeitern
sondern den Aufrufer gehören; beim Kernel ist das natürlich bei
vielen Funktionen nun gerade wieder nicht so, aber spätestens bei
der libc - find ich.

> ähnliche Syntax erfreut. Ob's tatsächlich eine funktionale
> Sprche ist, muß ich mal genauer anschauen; sieht jedenfalls
> auf den ersten Blick schon etwas danach aus.

Ich hab jetzt nicht ansatzweise die Definition im Kopf, kann mich
nur noch aus dem Studium erinnern, daß sowas funktional
aussehendes prozedural heiß, und funktional irgentwas komisches
war, was ich gleich wieder vergessen konnte - IIRC. Wäre mal
interessant, wenn mal jemand kurz die Unterschiede hier umreißen
könnte. Zwar OT, aber interessant :)

Immer wieder interessant, mal kurz über solche Sachen
nachzudenken, finde ich...

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.



Mehr Informationen über die Mailingliste linux-l