[linux-l] Re: Ruby: sehr cool, aber laaaahm... wie geht's schneller?! - D?

Steffen Dettmer steffen at dett.de
Mi Aug 30 01:34:37 CEST 2006


* Oliver Bandel wrote on Mon, Aug 28, 2006 at 00:44 +0200:
> On Sun, Aug 27, 2006 at 11:06:28PM +0200, Steffen Dettmer wrote:
> > * Oliver Bandel wrote on Sun, Aug 27, 2006 at 20:18 +0200:
> > > > Und ohne "globale" Variablen kommt man nicht wirklich aus.
> > > Man kann auch Parameter übergeben.  Globale Variablen sind das
> > > übelste, 
> > 
> > Und wie macht man z.B. logging?
> > 
> Kommt drauf an, was Du unter Logging jetzt verstehst ;-)
> 
> Infos in eine Datei schreiben?
> Oder an syslogd übergeben? Oder was?
> 
> Was muss da global sein, und unter welchen Umständen?

Das Filehandle z.B.

> > > > Ob die nun streng genommen global sind oder man das über closures
> > > > oder Referenzen auf sonstwas simuliert spielt dann keine Rolle.
> > > 
> > > Man kann Parameter übergeben.
> > 
> > Wenn man denn kann, machmal geht das aus verschiedenen Gründen nicht.
> > Vielleicht wird ein Modul über callback aufgerufen etc.
> 
> Mir dämmert noch nicht, worauf Du hinaus willst.
> 
> Kleines Mini-Beipiel wäre nett.

stack:

timeout!
select(2)-wrapper
connection.read
parser(connection, rules)
irgendwas()
main()

Wie loggt man das Timeout? Logger bis zum Exzess durchreichen? Was, wenn
parser von 3rd Party ist? Oder so'n Kram. Und für logging möchte man ja
auch keine Riesen-Struct mitschleppen, und wenn alles in einem Parameter
ist, ist es ja auch wieder nur "global" :)

> > also "nicht wirklich global" oder wie? :)
> 
> Nur compilation-unit-"global", also lokal in der Compilation Unit.

na super :-)

> In C hat man auch Kapselung durch Datei, also compilation unit,
> jedenfalls wenn man mit static deklariert.

Na gut, wenn das nicht als "global" zählt, geht ein singleton, und das
ist aber meiner Meinung nach halt doch global. Nur
weniger-schlimm-global :)

> Nur, weil in der ganzen Datei etwas bekannt ist, und da quasi "global"
> ist, muss es das nicht wirklich sein (im Sinne von in der ganzen
> Software global).

Und wenn es ein
  int* getValue(void);
gibt? :-)

> Die Frage ist dann also "wie global meint global"?! ;-)

Es muss halt alles Sinn machen, genau. Zuviel Pragma-X ist nie gut :)

oki,

Steffen

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





Mehr Informationen über die Mailingliste linux-l