Re: Implementierung von malloc und free unter FreeBSD

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Mon, 13 Sep 2004 14:40:06 +0200 (CEST)

Bernd Walter <ticso(at)cicely12.cicely.de> wrote:
> On Mon, Sep 13, 2004 at 11:54:06AM +0200, Oliver Fromme wrote:
> > Bernd Walter <ticso(at)cicely12.cicely.de> wrote:
> > > Globale Pointer sind eher selten die richtige Wahl.
> >
> > Laß mich das ein wenig verschärfen:
> > Globnale Variablen sind eigentlich nie die richtige Wahl.
>
> Mit einem extren kleinem Stack ohne malloc kann das durchaus die
> einzige Wahl sein.
> Man programmiert ja schließlich in C nicht nur auf Megabyte Kisten.

Richtig -- Das Problem ist, daß _auch_ auf den »Megabyte-
Kisten« in C programmiert wird.

>
> > > > Letztlich ist es natürlich ein Design-Mangel der Program-
> > > > miersprache C.
> > >
> > > C ist eine Sprache, die für maschinennahes Programmieren spezialisiert
> > > ist und für diesen Zweck ist es absolut kein Mangel, sondern ein
> > > Vorteil.
> >
> > Äh? Was genau bezeichnest Du da als Vorteil?
>
> Wenn ich eine Hardware mit 128Byte RAM habe brauche ich einfach die
> Kontrolle über den Speicher.
> Ein Sandkasten für die »besseren« Programmiersprachen ist da einfach
> nicht drin.

Da läuft aber höchstwahrscheinlich kein BSD drauf, und ge-
hört somit thematisch nicht hierher.

Ich rede von typischen Applikationen, die auch auf einem
ganz normalen PC unter BSD (aber nicht nur dort) laufen
können.

Ich erinnere mich dunkel, daß wir so eine ähnliche Diskus-
sion schonmal hatten ... :-)

> > C ist heutzutage einfach völlig überholt. Für die meisten
> > Applikationen, die heute noch in C (oder C++) geschrieben
> > werden, sollte man besser eine Hochsprache verwenden, die
> > es nicht so einfach macht, Bugs zu produzieren.
>
> C ist bestenfalls in anbetracht des heutigen Gigabyte Wahns überholt.
> Wenn dein Kühlschrank aber zukünftig in was anderem als C oder
> Assembler programmiert werden soll, dann wird der letzlich auch spürbar
> teurer - und wird letzlich auch mehr Strom brauchen.

Nein. Er muß weder teurer sein, noch muß er mehr Strom
ziehen.

Und davon mal ganz abgesehen: Wenn ein Kühlschrank fehler-
frei funktioniert, wäre ich gerne bereit, dafür etwas mehr
auszugeben.

Wenn ich die Wahl hätte zwischen einem Kühlschrank für 500
Euro, der auf Windows-CE basiert und dessen Anwendungen in
C oder Java geschrieben sind, und einem Kühlschrank für 600
Euro, der auf (z.B. Net-)BSD basiert und dessen Anwendungen
in O'Caml oder Haskell geschrieben sind -- was meinst Du,
welchen ich nehmen würde? Welchen würdest Du nehmen?

(Und wie gesagt: Es gibt keinen Grund, warum der BSD-Kühl-
schrank nicht ebenfalls 500 Euro kosten sollte, wenn die
Hardware sonst technisch identisch ist.)

> > C ist einer der Hauptgründe, warum heutige Software so vie-
> > le Bugs enthält.
>
> Sicherlich hilft C wenig um derartige Fehler zu vermeiden, aber die
> meisten Fehler in C Programmen liegen daran dass viele Programme von
> unerfahrenen Programmieren geschrieben wurden, die in jeder Sprache
> ihre Fallen finden würden.

In bestimmten besseren Sprachen kannst Du zahlreiche typi-
sche Fehler gar nicht machen (auch nicht als Anfänger),
z.B. Typfehler, unitialisierte Variablen, Pufferüberläufe,
unbeabsichtigte Seiteneffekte etc. Unter bestimmten Um-
ständen kann man sogar das korrekte Verhalten von Funktio-
nen mathematisch beweisen und diesen Beweis vom Compiler
verifizieren lassen. Von sowas kann C nur träumen.

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"Unix gives you just enough rope to hang yourself --
and then a couple of more feet, just to be sure."
        -- Eric Allman
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Mon 13 Sep 2004 - 14:40:36 CEST

search this site