Αρχές Προγραμματισμού Βασικές έννοιες προγραμματισμού

Βιβλιοθήκες συστήματος και linker

Τα περισσότερα λειτουργικά συστήματα χρησιμοποιούνται και για προγραμματισμό από τους χρήστες του. Θεωρούμε δηλαδή ότι προσφέρουν ένα περιβάλλον όπου δείνει τη δυνατότητα σε έναν προγραμματιστή να δημιουργήσει εκτελέσιμα προγράμματα. Απαραίτητα εφόδια είναι ένας editor και ένας compiler τα οποία είναι τα βασικά εργαλεία ενός προγραμματιστή.

Όπως θα παρατηρήσετε όταν ασχοληθείτε με τον προγραμματισμό, υπάρχουν κάποιες συναρτήσεις οι οποίες χρησιμοποιούνται αρκετά συχνά. Ένα παράδειγμα αυτών είναι και οι μαθηματικές συναρτήσεις όπως το ημίτονο sin(), το συνημίτονο cos(), ο λογάριθμος log() κτλ. Είναι φανερό ότι το να ανακαλύπτεις πάλι τον τροχό είναι μια επίπονη και μακρόχρονη διαδικασία. Φανταστείτε δηλαδή, κάθε φορά που θέλαμε να χρησιμοποιήσουμε τέτοιες κοινότυπες συναρτήσεις, να έπρεπε να τις ορίσουμε από την αρχή. Επιπλέον οι συναρτήσεις που χρησιμοποιούνται σε αυτές τις βιβλιοθήκες είναι συνήθως οι βέλτιστες.

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

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

α) Στατικά. Κατά το στάδιο της μεταγλώττισης του προγράμματός μας (compilation) ο κώδικας της συνάρτησης συμπεριλαμβάνεται πρώτα στο δικό μας πρόγραμμα και έπειτα προχωρά κανονικά η μεταγλώττιση.
β) Δυναμικά. Το πρόγραμμά μας μεταγλωτίζεται χωρίς να συμπεριλαμβάνει τον κώδικα της συνάρτησης αυτό καθ' αυτό. Αντίθετα συμπεριλαμβάνεται το όνομα της συνάρτησης και της βιβλιοθήκης που υφίσταται. Κατά τη διάρκεια λοιπόν της εκτέλεσης του προγράμματος, αναζητείται η απαραίτητη βιβλιοθήκη η οποία και χρησιμοποιείται.

Όπως για να κάνουμε compile ένα πρόγραμμα χρησιμοποιούμε τον compiler, έτσι και για να κάνουμε link με τα βιβλιοθήκη χρησιμοποιείται ένα διαφορετικό πρόγραμμα, ο linker.