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

Oliver Bandel oliver at first.in-berlin.de
Mo Aug 28 08:37:37 CEST 2006


On Mon, Aug 28, 2006 at 01:58:40AM +0200, David Hansen wrote:
> On Mon, 28 Aug 2006 00:44:48 +0200 Oliver Bandel wrote:
> 
> > 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:
> >>
> >> > Enn ich in einem Modul eine "Variable" auserhalb aller
> >> > Funktionen und Module definiere, dann ist sie innerhalb
> >> > der gesamten Datei sichtbar.
> >> >
> >> > Das ist auch schon alles.
> >>
> >> also "nicht wirklich global" oder wie? :)
> >
> > Nö, nicht wirklich. :)
> >
> > Nur compilation-unit-"global", also lokal in der Compilation Unit.
> 
> Ach, und verschiedene compilation units können *überhaupt*
> nicht miteinander kommunizieren?  Dann muss man ja sein
> ganzes Programm in eine Datei schreiben, also doch global...
> 

Nö.

Da haben wir wohl wieder Miss Verständnis zu Besuch?!

In pur funktionalen Sprachen besteht das ganze Programm aus einem Ausdruck.
Und alle "Variablen" (eigentlich Name-Value-Bindings) haben immer nur Gültigkeit
in ihrer Umgebung. Die äusseren sind nach innen global, alles innere hat immer
local scope.
OCaml ist übrigens multiparadigm, also gibt es auch imperative Features.
Es gibt bier auch Referenzen, die sind aber anders zu verstehen als
malloc(3)-mäßige.
Auch die Referenzen verschwinden, wenn das ausführende Etwas verschwindet.
Man kann da keine Bereiche/Objekte/Dingsdas allokieren und die bleiben einfach
da, auch wenn man die vergisst.
Man kann zwar mit malloc solche Späßchen machen, aber mit den Referenzen
in OCaml bekommt man nur GC-basierte Entitäten. Und die verschwinden, sobald
man sie nicht mehr braucht und der GC fertig damit ist.

Gruß,
   Oliver



Mehr Informationen über die Mailingliste linux-l