[linux-l] POSIX und busybox (was: Subtilitäten von find und xargs)

Steffen Dettmer steffen at dett.de
Sa Nov 17 00:54:18 CET 2007


* Oliver Bandel wrote on Thu, Nov 15, 2007 at 23:00 +0100:
> > Es kann kein Programm geben, was das in allen Fällen richtig sagt.
> > Kann man beweisen wie das Halteproblem :-)
> [...]
> 
> Die praktische Frage dabei ist: kann man eine Menge von
> Fällen haben, bei denen es doch geht, und kann man diese
> automatisch erkennen?

Ja, man kann natürlich eine Teilmenge erkennen. Das ist trivial.
Beispielsweise könnte man aufzählen. Aber praktisch relevant ist das ja
auch nicht.

> Sozusagen: wenn es nicht in 100% der Fälle klappt mit der
> Verifizierung, kann man die 0,000xyz % der Fälle, die dann wohl in der
> Berechnungsmäcvhtigkeit etwas eingeschränkt sein mögen, wenigstens
> verifizieren?

Falls Du das meinst, was ich vermute, also sich auf eine >99% der Fälle
beschränken, dann würde ich mit der Gegenfrage antworten: wieviel sind
99% von unendlich?

> Und als weitere Frage: was kann man mit siner solchen eingeschränkten
> Menge an Programmen/Algorithmen denn noch programmieren?

Natürlich. Zum "Programmieren" braucht man in der Regel die Komplexität
endlicher Automat (regulär). Kann man NANDs beliebig verketten, kann man
die Komplexität schon erreichen. Auch reguläre Ausdrücke sind regulär.
Mit einer Minimalshell mit if und goto oder so sollte man eigentlich
alles hinkriegen, wird halt nur sehr umständlich. Und das war eigentlich
mein Punkt. Macht sowas Sinn? Warum nicht einfach bash nehmen? Weil man
dazu 1 MB installieren muss, ok. Obwohl, andere brauchen 20 JRE ;). SuSE
braucht sogar Perl; weiss nicht, wie's bei Debian aussieht. OpenWrt
brauchts jedenfalls nicht :) Obwohl man da auch keine SuSE RPMs oder
Debian packages installieren kann.

Mit anderen Worten: gibt es sinnvolle Anwendungen z.B. für
SuSE-bis-openWrt? Meistens sind diese Anwendungen ja dann via configure
(autoconf) angepasst (da kann man dann auch ein script pro Platform
haben, wenn man denn muss).

Was gäbe es da so für Programme?

Die andere interessante Frage, die in einer anderen Mail nochmal direkt
gestellt wurde, war ja "wie portabel ist POSIX eigentlich", auch
spannend.

> Also quasi das Halteproblem von hinten aufgezäumt: Was ist mit
> 100% verifizierbaren Programmen noch berechenbar?

Na ja, das Halteproblem für Programme beliebiger Komplexität kann man
immer lösen, wenn man dazu ein westenlich komplexeres Program nehmen
kann. Im Extremfall, in der das wesentlich komplexere Program alle
aufzählt (damit funktioniert der normale Haltsatz nicht, weil kein
Programm das Halteprogramm selbst benutzen kann, weil es ja dann
komplexer sein müsste, als das Halteentscheideprogramm, aber genau das
Gegenteil war ja die Bedingung). Damit kann man also beliebig komplexe
Algoritmen machen. 

> Oder anders gefragt: wie allgemein können programme sein, die
> verifizierbar sind?

beliebig.

> > > Denke nur daran, daß du mit
> > > VARIABLE=`externes_Programm_macht_Ausgabe`; eval $VARIABLE schon
> > > Dinge machen kannst, die kein automatisches Tool nachvollziehen
> > > kann.
> >
> > externes_Programm ist entweder POSIX und gut oder nicht und
> > durchgefallen - oder?
> 
> Von welchem POSIX redet ihr eigentlich?
> 
> Win NT war auch POSIX-konform, ich würde es mir aber niemals
> installieren wollen...

Ja, welche APIs auch immer da gemeint waren und wie das zu verstehen
ist... Es gab zwar ein select, aber es ging nicht auf seriellen Ports
etc. POSIX konform wäre ja auch, wenn man immer EPERM zurückgibt oder so
:)

> ... es gibt da eine Menge POSIX-Standards, und wenn man da nicht
> etwas genauer von redet, was denn als POSIX-konform hier in der
> Diskussion eigentlich gemeint ist, kann man sich das Diskutieren
> eigentlich auch sparen. ;-)

Ja, das stimmt natürlich. Welche POSIX Standard regelt die
Kommandozeilenoptionen der Tools und welche davon vorhanden sein müssen?

oki,

Steffen

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




Mehr Informationen über die Mailingliste linux-l