Απ: Απ: Ελεύθερο Λογισμικό / Λογισμικό Ανοικτού Κώδικα: τι είναι και σε τι διαφέρει από το Ιδιόκτητο Λογισμικό

Giorgos Keramidas keramida at ceid.upatras.gr
Mon Mar 12 16:21:34 EET 2007


On 2007-03-12 15:55, Christos Ricudis <ricudis at komodino.itc.auth.gr> wrote:
>>> Αν έχεις λίγο υπομονή, μπορώ να το μετατρέψω εγώ σε DocBook/XML και να
>>> κάνω ότι διορθώσεις πιάσει το μάτι μου.  Τότε μπορεί να το βάλει κι ο
>>> Μιχάλης στο Magaz πιο άνετα πιστεύω.
>>
>> με μεγάλη μου χαρά
>
> Afou to metatrepsete se kati eykolws dior8wsimo (read : PLAIN ASCII :P), 
> steilte mou to na tou allaksw ligo ta fwta prin to dhmosieysete. Thanks.

Καιρός να σε μυήσω στις χαρές του DocBook/XML κι εσένα νομίζω ε;

$ pwd
/home/keramida/tmp/ndemou
$ xsltproc xsl/default.xsl ellak.xml > ellak.html.out
$ tidy -q -raw -preserve -asxml ellak.html.out > ellak-ricudis.html
$ elinks -dump ellak-ricudis.html > ellak-ricudis.txt 
$ more ellak-ricudis.txt

(Attached to apotelesma se TXT morfh)

-------------- next part --------------
Ελεύθερο Λογισμικό / Λογισμικό Ανοικτού Κώδικα: Τι Είναι και σε τι Διαφέρει από
                             το Ιδιόκτητο Λογισμικό

  Ν. Δήμου

  Μάρτιος 2007

  ----------------------------------------------------------------------------

  Ξ ίνακας Ξ εριεχομένων

  [1]1. Εισαγωγή

  [2]2. Βασικές Γνώσεις: Τα Μικρά Μυστικά Της Τέχνης Του Ξ ρογραμματιστή

1. Εισαγωγή

  Οι περισσότεροι από εμάς έχουμε αρκετή εμπειρία με το ιδιόκτητο λογισμικού.
  Είναι το λογισμικό που βρίσκουμε σχεδόν κατά αποκλειστικότητα στα ράφια των
  καταστημάτων. Το αγοράζουμε και το εγκαθιστούμε στον Η/Υ μας αφού
  φροντίσουμε να εισάγουμε έναν "σειριακό κωδικό". Μετά καμιά φορά πρέπει να
  κάνουμε και κάτι που λέγεται "ενεργοποίηση". Αν ένας φίλος μας το δει και
  του αρέσει αργά η γρήγορα θα συνειδητοποιήσουμε ότι οι κωδικοί και οι
  ενεργοποιήσεις έχουν σαν στόχο να μην μπορέσουμε να του δώσουμε ένα
  αντίγραφο ή το δικό μας CD για να το εγκαταστήσει και αυτός. Για την
  ακρίβεια κάποια στιγμή που από περιέργεια διαβάζουμε τις πρώτες οθόνες που
  εμφανίζονται κατά την εγκατάσταση θα μάθουμε πως όχι απλά δεν είναι πρακτικά
  εύκολο να το δώσουμε στο φίλο μας αλλά είναι και παράνομο. Επίσης οι ίδιες
  οθόνες συχνά λένε πως παράνομα είναι κι ένα σωρό άλλα πράγματα που ούτε καν
  υποψιαζόμασταν. Για παράδειγμα, μερικές φορές λένε πως δεν επιτρέπεται να
  εγκαταστήσουμε το λογισμικό σε Η/Υ με διπλό επεξεργαστή, πως δεν επιτρέπεται
  να δημοσιεύσουμε μετρήσεις για τις επιδόσεις του λογισμικού, πως δεν
  επιτρέπεται να το εγκαταστήσουμε σε οποιοδήποτε άλλο Η/Υ εκτός από τον
  αρχικό για τον οποίο το αγοράσαμε και πολλά άλλα μεταξύ των οποίων σχεδόν
  πάντα περιλαμβάνεται και η απαγόρευση της μελέτης και τροποποίησης του
  λογισμικού. Οι προγραμματιστές ξέρουν επίσης πως ακόμα και αν δεν
  απαγορευόταν, έχουν παραλάβει το λογισμικό σε μια μορφή που κάνει εξαιρετικά
  δύσκολη έως αδύνατη οποιαδήποτε εις βάθος μελέτη ή τροποποίηση.

  Όλα τα παραπάνω είναι πολύ διαφορετικά στην περίπτωση του Ελεύθερου
  Λογισμικού / Λογισμικού Ανοικτού Κώδικα (ΕΛ/ΛΑΚ). Ξ αρότι μπορεί να το
  βρούμε στα ράφια των καταστημάτων και να πληρώσουμε για να το αγοράσουμε θα
  το βρούμε διαθέσιμο και στο Internet, από όπου θα μπορούμε να το κατεβάσουμε
  δωρεάν. Μετά θα το εγκαταστήσουμε σε όσους Η/Υ θέλουμε, θα το εκτελέσουμε
  για όποιο σκοπό θέλουμε, όπου θέλουμε, και για όσα χρόνια θέλουμε. Επίσης αν
  έχουμε τις γνώσεις, ή αν βρούμε κάποιον άλλο που τις έχει, μπορούμε να το
  μελετήσουμε, να το τροποποιήσουμε, να το βελτιώσουμε, και μετά να το
  πουλήσουμε ή χαρίσουμε. Συχνά πολλοί προγραμματιστές συμμετέχουν ακριβώς με
  αυτό τον τρόπο στην ανάπτυξη, τροποποίηση και βελτίωση του ΕΛ/ΛΑΚ.

  Τα παραπάνω ακούγονται σε όσους δεν έχουν προσωπική εμπειρία με το ΕΛ/ΛΑΚ
  εντελώς ουτοπικά αλλά αποτελούν την καθημερινή πραγματικότητα για πολλά
  άτομα εταιρείες και οργανισμούς που τα τελευταία χρόνια αξιοποιούν το ΕΛ/ΛΑΚ
  σε εργασίες τετριμμένες, πρωτοποριακές, απλές, περίπλοκες, ασήμαντες ή
  κρίσιμες.

  Συνοπτικά ο όρος "ΕΛ/ΛΑΚ" αναφέρεται τόσο σε έναν ιδιαίτερα ελεύθερο τρόπο
  ανάπτυξης και διάθεσης λογισμικού, όσο και σε αυτό καθαυτό το λογισμικό που
  αναπτύσσεται και διαδίδεται με αυτό τον τρόπο.

  Οι προηγούμενες παράγραφοι αποτελούν μια σύντομη περιγραφή και μια καλή
  προσέγγιση αλλά δεν αποκαλύπτουν αρκετές και σημαντικές λεπτομέρειες για το
  ΕΛ/ΛΑΚ. Το κείμενο που ακολουθεί έχει ακριβώς αυτό το σκοπό και πιστεύω ότι
  θα ανταμείψει για τον χρόνο που θα του αφιερώσετε (και ναι, σωστά μαντέψατε,
  ακολουθεί πολύ κείμενο).

2. Βασικές Γνώσεις: Τα Μικρά Μυστικά Της Τέχνης Του Ξ ρογραμματιστή

  Σημείωση

  Αν έχετε αρκετές γνώσεις προγραμματισμού μπορείτε να προσπεράσετε αυτό το
  τμήμα. Οι υπόλοιποι μην ανησυχείτε, δεν χρειάζεται να μάθετε προγραμματισμό.
  Για να διαβάσετε όμως το υπόλοιπο κείμενο και να κατανοήσετε κάποιες από τις
  έννοιες που αναφέρονται στα παρακάτω τμήματα του κειμένου, θα πρέπει να
  έχετε μια αμυδρή ιδέα για κάποιες βασικές πρακτικές που χρησιμοποιούνται
  κατά την ανάπτυξη οποιουδήποτε είδους λογισμικού.

  Το λογισμικό ξεκινά την ζωή του ως ένας μακροσκελής κατάλογος από προτάσεις
  σε μια λίγο-πολύ κωδικοποιημένη μορφή βασισμένη στην αγγλική γλώσσα. Επειδή
  φαντάζομαι ότι ο παραπάνω ορισμός δεν φωτίζει ιδιαίτερα το θέμα, ίσως ένα
  καλό παράδειγμα θα είναι αρκετό. Ορίστε λοιπόν μια λίστα με αναλυτικές
  οδηγίες για να βρείτε την έξοδο σας από έναν δαιδαλώδη λαβύρινθο γραμμένα με
  ένα στυλ που μοιάζει πολύ με τον πηγαίο κώδικα ενός προγράμματος (όσοι
  πρόσφατα διαβάσανε τον "Κώδικα Ντα Βίντσι" μην προσπαθήσετε να
  αποκρυπτογραφήσετε το βαθύτερο νόημα ή κάποιο κρυμμένο μήνυμα--δεν υπάρχει):

 AHEAD 5 STEPS
 TURN 90 DEGREES CLOCKWISE
 $StepsToWalk=10
 AHEAD $StepsToWalk STEPS /* at this point we should have reached a door */
 TURN KNOB 180 DEGREES CLOCKWISE
 WAIT
 DOING NOTHING
 UNTIL DOOR OPENS
 CROSS DOOR
 TURN -90 DEGREES CLOCKWISE...

  Είναι φανερό πως οι προτάσεις αυτές αποτελούνται μεν από συνηθισμένα
  γράμματα, αριθμούς και λίγα μαθηματικά κυρίως σύμβολα αλλά οι λέξεις και η
  σύνταξη θυμίζει περισσότερο κάποια περίεργη διασταύρωση αγγλικών και
  άλγεβρας. Και μπορεί το παράδειγμα μας να μοιάζει λίγο-πολύ εύληπτο αλλά
  στην περίπτωση ενός περίπλοκου προγράμματος τα πράγματα είναι σαφώς πιο...
  στρυφνά. Όμως με την παράθεση μέσα στο πρόγραμμα σχολίων σε απλή γλώσσα και
  σε συνδυασμό με αρκετή εμπειρία, το τελικό αποτέλεσμα είναι τελικά κατανοητό
  στους προγραμματιστές και ονομάζεται πηγαίος κώδικας (source code).

  Οι προγραμματιστές αναπτύσσουν λογισμικό δουλεύοντας σχεδόν αποκλειστικά με
  τον πηγαίο κώδικα. Στην συνέχεια ο πηγαίος κώδικας μπορεί κάλλιστα να δοθεί
  ως είναι στον Η/Υ για άμεση εκτέλεση αλλά η ταχύτητα δεν θα είναι η μέγιστη
  δυνατή. Για να έχουμε την μέγιστη ταχύτητα ο πηγαίος κώδικας περνά από ένα
  ειδικό πρόγραμμα το οποίο τον απογυμνώνει από καθετί περιττό ενώ επίσης
  συμπυκνώνει την ουσία του και την μετατρέπει σε μία μορφή την οποία ο Η/Υ
  μπορεί να εκτελέσει χωρίς καμιά ενδιάμεση μετατροπή--δηλαδή γρήγορα. Η μορφή
  αυτή καλείται "object code" ή "εκτελέσιμος κώδικας". Λόγω της απογύμνωσης
  και της συμπύκνωσης ο εκτελέσιμος κώδικας είναι αδύνατον να μετατραπεί με
  αυτόματο τρόπο στην αρχική μορφή πηγαίου κώδικα χωρίς να χαθούν πολλές και
  σημαντικές πληροφορίες. Αν ένας προγραμματιστής είναι αναγκασμένος να
  εργαστεί μόνο με τον πηγαίο κώδικα και μόνο εφόσον έχει την σχετική εμπειρία
  θα καταφέρει τελικά να εργαστεί, αλλά η πορεία του θα είναι και εξαιρετικά
  επίπονη και εξαιρετικά αργή. Για την ακρίβεια το επίπεδο δυσκολίας και
  καθυστέρησης είναι τέτοιο που οτιδήποτε πέραν από απλές αλλαγές καθίσταται
  πρακτικά αδύνατο.

  Από όλες τις παραπάνω λεπτομέρειες αρκεί να θυμάστε πως ο κώδικας του
  λογισμικού μπορεί να δοθεί στην πηγαία ή στην εκτελέσιμη μορφή του και πως
  οι προγραμματιστές δουλεύουν αποκλειστικά στην πηγαία μορφή (η εκτελέσιμη
  μορφή είναι πρακτικά άχρηστη για οτιδήποτε εκτός της εκτέλεσης του
  λογισμικού).

References

   Visible links
   1. file:///home/keramida/tmp/ndemou/ellak-ricudis.html#eisagwgh
   2. file:///home/keramida/tmp/ndemou/ellak-ricudis.html#basikes-gnoseis


More information about the Linux-greek-users mailing list