Μια **Πρότυπη βιβλιοθήκη** σε μια γλώσσα προγραμματισμού είναι μια βιβλιοθήκη συναρτήσεων η οποία είναι διαθέσιμη σε κάθε υλοποίηση της συγκεκριμένης γλώσσας. Σε κάποιες περιπτώσεις η βιβλιοθήκη περιγράφεται κατευθείαν στον ορισμό-περιγραφή της γλώσσας ενώ σε άλλες περιπτώσεις η πρότυπη βιβλιοθήκη περιγράφεται με μη επίσημο τρόπο από την προγραμματιστική κοινότητα.

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

* Υπορουτίνες (subroutines)
* Ορισμούς μακροεντολών (macros)
* Γενικές μεταβλητές (global variables)
* Ορισμό κλάσεων (classes)
* Πρότυπα (templates)

Οι περισσότερες πρότυπες βιβλιοθήκες περιέχουν ορισμούς οι οποίοι μπορεί να είναι:

* Αλγόριθμους (όπως για παράδειγμα αλγόριθμους ταξινόμησης δεδομένων)
* Δομές δεδομένων (όπως δομές για λίστες, δένδρα ή πίνακες hash)
* Αλληλεπίδραση με την τοπική πλατφόρμα, όπως δια παράδειγμα κλήσεις συστήματος και κλήσεις εισόδου/εξόδου δεδομένων.

Φιλοσοφίες
----------

Υπάρχουν διάφορες φιλοσοφίες για τον σχεδιασμό μιας πρότυπης βιβλιοθήκης. Για παράδειγμα ο Bjarne Stroustrup, σχεδιαστής της γλώσσας προγραμματισμού C++ γράφει:

> Τι θα πρέπει να βάλουμε σε μια πρότυπη βιβλιοθήκη της C++? Ιδανικό για κάθε προγραμματιστή είναι να βρίσκει μέσα σε μια βιβλιοθήκη ενδιαφέρον, ουσιαστικές και γενικά αποδεκτές γενικές κλάσεις, συναρτήσεις, πρότυπα κλπ. Παρόλα αυτά το ερώτημα δεν είναι "Τι θα πρέπει να εισάγουμε σε *ορισμένες* βιβλιοθήκες;" αλλά "Τι θα πρέπει να εισάγουμε σε μια *πρότυπη* βιβλιοθήκη;" Η απάντηση "Τα πάντα!" είναι μια σχετικά καλή προσέγγιση στο πρώτο ερώτημα και όχι στο τελευταίο. Ο σχεδιαστής σε μια πρότυπη βιβλιοθήκη θα πρέπει βιβλιοθήκες τις οποίες ο κάθε προγραμματιστή θα μπορεί να βασίζεται σε αυτές.
> 
> — Bjarne Stroustrup. *The C++ Programming Language* 

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

Σε αντίθεση ο Guido van Rossum, σχεδιαστής της γλώσσας προγραμματισμού Python, πρότεινε ένα πιο περιεκτικό όραμα για την πρότυπη βιβλιοθήκη. Στο εγχειρίδιο εισαγωγής στην Python έγραψε:

> Η γλώσσα Python έχει μια φιλοσοφία "οι μπαταρίες περιέχονται". Αυτό σημαίνει ότι υπάρχουν εξελιγμένες και ισχυρές δυνατότητες στα πακέτα/πρότυπες βιβλιοθήκες της γλώσσας. 
> 
> — Guido van Rossum *Python Tutorial* 

Ο Van Rossum στην Python έχει συναρτήσεις για προσπέλαση XML, XML-RPC, μηνυμάτων ηλεκτρονικού ταχυδρομείου κλπ 
δυνατότητες τις οποίες η πρότυπη βιβλιοθήκη της C++ παραλείπει. Αυτή η φιλοσοφία υπάρχει στις γλώσσες προγραμματισμού σεναρίων (όπως στην Python ή Ruby) ή στις γλώσσες οι οποίες χρησιμοποιούν μηχανισμούς *εικονικών μηχανών* (virtual machines,όπως το γνωστό VirtualBox) όπως η γλώσσα Java.

Παραδείγματα πρότυπων βιβλιοθηκών
---------------------------------

* C Πρότυπη βιβλιοθήκη, για την γλώσσα C
* C++ Πρότυπη βιβλιοθήκη, για την γλώσσα προγραμματισμού C++.

Παραπομπές
----------

1. ↑  Bjarne Stroustrup. *The C++ Programming Language*. 3rd Ed. Addison-Wesley, 1997
2. ↑  Guido van Rossum. Python Tutorial.