Σχόλια για Bernstein (was: Re: Linux Stability)

Vasilis Vasaitis vvas at hal.csd.auth.gr
Wed May 29 02:43:01 EEST 2002


On Tue, May 28, 2002 at 04:58:40PM +0300, Giorgos Keramidas wrote:
> ------------------------------------------------------------------
> Προσοχή, ακολουθεί ΠΟΛΥ μεγάλο γράμμα.
> ------------------------------------------------------------------
> 
> Διαβάστε μόνο αν δεν βαριέστε να δείτε γιατί -δεν- πιστεύω
> πως ο Dan Bernstein είναι η αφρόκρεμα των προγραμματιστών.

  Καταρχήν, νομίζω ότι ξέχασες να ενσωματώσεις όλο το μήνυμά σου σε ένα σετ
από <rant> </rant> tags. ;^) Αλλά πάμε στα επιμέρους:

..[snip]..

> Ναι, τουλάχιστον ο Bernstein αποφεύγει μετά μανίας να γράψει κώδικα
> που χρησιμοποιεί το στυλ ή τις δυνατότητες ενός UNIX συστήματος.  Για
> παράδειγμα, δεν γράφει Makefiles παρά μόνο για ελάχιστα πράγματα.
> Δεν χρησιμοποιεί τις μεταβλητές περιβάλλοντος CC και CFLAGS που είναι
> πλέον όχι απλά παράδοση αλλά κάτι hardwired στο μυαλό κάθε UNIX
> προγραμματιστή.  Το να μην χρησιμοποιείς `standard' εργαλεία όταν
> προγραμματίζεις είναι καταφανής παράβαση του POLA (principle of least
> astonishment).  Κάποιος που βλέπει ένα tarball με πηγαίο κώδικα για το
> πρόγραμμα X που τρέχει σε UNIX, ενστικτωδώς ψάχνει να βρει κάπου εκεί
> μέσα ένα Makefile για να δει πως θα το κάνει compile.  Το να έχεις ένα

..[snip makefile rant]..

  Νομίζω, μέσα σε όλους τους ισχυρισμούς του djb και των οπαδών του, ότι δεν
είναι να μπορούν και άλλοι απαραίτητα να καταλάβουν τα προγράμματά του.
Κανέναν δεν έχω ακούσει ποτέ να ισχυρίζεται ότι το qmail και τα άλλα έχουν
κάποιο τέτοιο πλεονέκτημα. Άλλωστε, ο ίδιος ο djb είναι διάσημος στο να
αγνοεί συστηματικά patches που του στέλνουν άλλοι για τα προγράμματά του.
Επομένως, τι νόημα έχει να τον κατηγορείς για κάτι που ουδέποτε αρνήθηκε;
Άστο καλύτερα...

..[snip various rants]..

> > I've had a thorough code-review done of one of my products by two
> > more seasoned professionals. It was a great experience, but, after
> > all their concerns were addressed, there were still bugs. Sure, not
> > "too many" according to management, but too many that I'm sure could
> > have been designed out of existence up front if I'd known how.)
> 
> Κι αυτό σημαίνει πως οι reviewers ήταν χαζοί;  Ή ότι ο σχεδιασμός ήταν
> από την αρχή λάθος;  Οι reviewers είχαν το ελεύθερο να κάνουν
> σχεδιαστικές αλλαγές;  Μόνο δυο reviewers σε σχέση με τους χιλιάδες
> reviewers που έχει ένα open source λειτουργικό;  Μήπως αυτό
> αποδεικνύει μόνο την ανάγκη για περισσότερους reviewers και είναι
> απόδειξη του γιατί ένα πρόγραμμα δεν πρέπει να είναι closed source?
> 
> Φάουλ 4.

  Όχι ρε, εδώ το παρεξήγησες τελείως. Αυτό που λέει εδώ (δεν το συμμερίζομαι
απαραίτητα) είναι ότι, καλοί οι reviewers, αλλά δεν συγκρίνονται με το να
ήξερε αυτός από την αρχή και να σχεδίαζε σωστά τα προγράμματά του. Που είναι
μια σχετικά σωστή άποψη, αν το καλοσκεφτείς...

..[snip more ranting]..

> Είμαι περίεργος πως κάποιος μπορεί να είναι portable και εντελώς μη
> συμβατικός.  Η μόνη λύση που μπορώ να σκεφτώ είναι να χρησιμοποιήσει
> τα ελάχιστα κοινά χαρακτηριστικά των UNIX συστημάτων, και να μην
> βασιστεί σε μη-μεταφέρσιμα χαρακτηριστικά.  Αλλά ακριβώς αυτό τον
> σκοπό εξυπηρετούν πρότυπα όπως της ANSI C, του POSIX και του ISO.
> Με μια μεγάλη προϊστορία καταπάτησης και αφού έχει επιδεικτικά
> αγνοήσει όλα τα πρότυπα που είναι δυνατόν να αγνοήσει κάποιος και να
> εξακολουθήσει να κάνει compile τα προγράμματά του, ο Bernstein δεν
> είναι ακριβώς portable.

  FUD. Από τη στιγμή που τα προγράμματα αυτά είναι όντως μεταφέρσιμα, και
που απ' ότι φαίνεται δεν το έχεις ψάξει και πολύ, οι κατηγορίες σου είναι
λίγο πολύ αβάσιμες.

..[snip yet more ranting]..

> > What I have in mind, though, is much more comprehensive than such
> > cross-checking. That's just an illustration of what I mean by
> > "crystalline" -- you change one thing and not another, and the
> > system (as a whole, through deployment) breaks or even shatters. If
> > the system doesn't even let you *deploy* the (errant) change in the
> > first place, and especially if it appropriately leads you to better
> > understand what you're doing, the system as a whole should, at least
> > in theory, end up being more robust.

  Από τα παραπάνω, μάλλον δίνεται η εντύπωση στους περισσότερους ότι διαφωνώ
μαζί σου. Δεν είναι όμως έτσι· συμφωνώ γενικά, απλά νομίζω ότι το παρακάνεις
κάπως και ψυρίζεις το παραμικρό που λέει ο τύπος για να έχεις κάτι να
κατηγορήσεις.

  Πάντως, το παραπάνω ξεχειλίζει το ποτήρι. Αυτό που λέει ο τύπος εδώ, είναι
ότι είναι σωστό ένα πρόγραμμα/σύστημα να είναι τόσο αλληλένδετο στα
επιμέρους μέρη του, που αν αλλάξεις έστω και ένα μέρος του, να πρέπει να
αλλάξεις και όλα τα υπόλοιπα ώστε να συμβαδίζουν και να μην καταρρεύσει
τελείως η λειτουργία του. Ισχυρίζεται δε, ότι αυτό μειώνει τα bugs, επειδή
ό,τι (πιθανώς λανθασμένη) αλλαγή γίνεται, χαλάει ολόκληρο το σύνολο. Κοινώς,
τρίχες. Όλος ο κόσμος προσπαθεί να γράψει προγράμματα με μεγάλη
τμηματοποίηση και καθαρά interface, που σου επιτρέπουν να πειράξεις το από
κάτω και να είσαι άνετος παρόλ' αυτά. Και σ' αυτήν την περίπτωση, όλος ο
κόσμος ξέρει τι κάνει.

..[deletia]..

-- 
Vasilis Vasaitis
vvas at hal.csd.auth.gr
+30976604701





More information about the Linux-greek-users mailing list