Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C

Μια πρώτη γνωριμία

Αγαπητοί αναγνώστες της PCNEWS,

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

Τα μαθήματα αυτά τα οποία ξεκινούν από το συγκεκριμένο τεύχος, έχουν ως στόχο να σας διδάξουν κάποιες βασικές τεχνικές που χρησιμοποιούνται στις περισσότερες γλώσσες προγραμματισμού που μπορεί να συναντήσει κανείς σήμερα. Ως βάση θα χρησιμοποιήσουμε τη γλώσσα προγραμματισμού C, η οποία είναι μια γλώσσα γενικού σκοπού (μπορεί να χρησιμοποιηθεί για την ανάπτυξη μιας μεγάλης ποικιλίας εφαρμογών), η οποία είναι πάρα πολύ ευέλικτη και ισχυρή, αλλά ταυτόχρονα αρκετά εύκολη στην κατανόηση. Παρότι η γλώσσα C δεν είναι καινούρια (για την ακρίβεια έχουν περάσει πάνω από 30 χρόνια από τότε που ανακαλύφθηκε από τον Dennis Ritchie στα εργαστήρια της Bell), αποτελεί τον πυρήνα πολλών σύγχρονων γλωσσών προγραμματισμού, όπως η Java και η C#.

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

 

Πηγαίος κώδικας – Μεταγλώττιση – Εκτέλεση

Ο προγραμματιστής στη C θα πρέπει να ακολουθήσει μία σειρά βημάτων για να μπορέσει να αναπτύξει ένα πρόγραμμα που θα έχει την επιθυμητή λειτουργία.

Το πρώτο βήμα είναι η συγγραφή του λεγόμενου πηγαίου κώδικα (source code). Ο πηγαίος κώδικας είναι ένα κείμενο γραμμένο σύμφωνα με το συντακτικό και τη γραμματική της γλώσσας, το οποίο μπορεί κάποιος να το θεωρήσει και ως μία ακολουθία από εντολές προς τον Η/Υ. Στη C ο πηγαίος κώδικας αποθηκεύεται σε ένα αρχείο κειμένου το οποίο συνήθως έχει επέκταση “.c” (π.χ. test.c ή my_game.c).

Μετά την συγγραφή του πηγαίου κώδικα ο προγραμματιστής περνά στη διαδικασία της μεταγλώττισης (compilation) η οποία μεταγλωττίζει (μετατρέπει) τον πηγαίο κώδικα σε γλώσσα μηχανής ώστε να μπορέσει το πρόγραμμα να εκτελεστεί από τον Η/Υ. Η μεταγλώττιση γίνεται χρησιμοποιώντας ειδικά προγράμματα που ονομάζονται μεταγλωττιστές (compilers). Ο ρόλος τους είναι να ελέγχουν τον πηγαίο κώδικα για πιθανά λάθη (π.χ. συντακτικά ή γραμματικά) και σε περίπτωση που αυτά απουσιάζουν να τον μεταγλωττίζουν σε γλώσσα μηχανής και να δημιουργούν το λεγόμενο εκτελέσιμο (executable) αρχείο. Το εκτελέσιμο αρχείο είναι ένα αρχείο (συνήθως με επέκταση “.exe” – στα λειτουργικά συστήματα Windows) το οποίο μπορεί κάποιος να το εκτελέσει (στον υπολογιστή που δημιουργήθηκε ή σεν οποιοδήποτε άλλο υπολογιστή) και να έχει την επιθυμητή λειτουργία.

Η μεταγλώττιση είναι μια αρκετά σύνθετη διαδικασία και συνήθως περιλαμβάνει διάφορα στάδια, όπως η παραγωγή του κώδικα αντικειμένου (object code) και η σύνδεση (linking) του κώδικα αντικειμένου με εξωτερικά αρχεία (π.χ. βιβλιοθήκες με έτοιμο κώδικα), για την παραγωγή του εκτελέσιμου αρχείου. Τα στάδια αυτά δεν θα μας απασχολήσουν έντονα στα πρώτα μαθήματα και υπάρχουν πολλοί αρχάριοι προγραμματιστές  που αγνοούν ακόμη και την ύπαρξη τους, αλλά είναι πολύ σημαντικά και αργά ή γρήγορα θα τα βρούμε μπροστά μας.

 

Ολοκληρωμένα Περιβάλλοντα Ανάπτυξης

Συνοψίζοντας τα παραπάνω, ο προγραμματιστής πρέπει να γράψει τον πηγαίο κώδικα, να τον οργανώσει σε αρχεία, φακέλους και άλλες εξειδικευμένες δομές, να ζητήσει τη μεταγλώττιση του, να ενημερωθεί για τα πιθανά λάθη, να τα διορθώσει χρησιμοποιώντας κατάλληλα εργαλεία, να δημιουργήσει το εκτελέσιμο αρχείο, να το εκτελέσει και να παρακολουθήσει την εκτέλεση του.

Τα παλαιότερα χρόνια, ο προγραμματιστής το μόνο που χρειάζονταν για τα παραπάνω ήταν ένας απλός συντάκτης κειμένου (π.χ. το vi στο UNIX) και ένας μεταγλωττιστής της γλώσσας C (π.χ. το GNU C compiler), ο οποίος λειτουργούσε σε κατάσταση γραμμής εντολών. Στις μέρες μας όμως έχουν αναπτυχθεί Ολοκληρωμένα Περιβάλλοντα Ανάπτυξης (IDE) μέσω των οποίων μπορεί κάποιος να αναπτύξει τα προγράμματα του, χρησιμοποιώντας πληθώρα εργαλείων, που του επιτρέπουν να γράφει, να διορθώνει και να εκτελεί τα προγράμματα του εύκολα και γρήγορα.

Τέτοια περιβάλλοντα υπάρχουν πάρα πολλά στις μέρες μας, ορισμένα από τα οποία είναι εμπορικά (π.χ. Microsoft Visual C++ ή Borland C++ Builder) και άλλα είναι ελεύθερα (π.χ. το NetBeans της SUN Microsystems, το CDT της πλατφόρμας Eclipse κ.α.).

Αν κάποιος είναι εξοικειωμένος με κάποιο από τα παραπάνω  περιβάλλοντα ή με κάποιο άλλο περιβάλλον ανάπτυξης προγραμμάτων σε C, τότε μπορεί να παρακολουθήσει τη σειρά αυτή των μαθημάτων χρησιμοποιώντας αυτό το περιβάλλον για την υλοποίηση των παραδειγμάτων και των ασκήσεων. Για τους αρχάριους στον προγραμματισμό όμως, θα πρότεινα ένα πιο «ελαφρύ» και ευέλικτο περιβάλλον, όπως το Dev C++ ή το Code::Blocks, τα οποία είναι ελεύθερα, μικρά σε μέγεθος, έχουν μικρές απαιτήσεις σε μνήμη και υπολογιστικούς πόρους γενικότερα και καλύπτουν πλήρως τις ανάγκες κάποιου που θέλει να ξεκινήσει την ενασχόληση του με τον προγραμματισμό σε γλώσσα C. Τα δύο αυτά περιβάλλοντα μπορείτε να τα  κατεβάσετε από τις διευθύνσεις http://www.bloodshed.net/devcpp.html (για το Dev C++) και http://www.codeblocks.org/ (για το code::blocks). Προσωπικά θα προτιμούσα το Code::Blocks το οποίο είναι πιο σύγχρονο και διαθέτει εκδόσεις και για άλλα λειτουργικά συστήματα πέρα από τα Windows, αλλά ο καθένας μπορεί να χρησιμοποιήσει όποιο επιθυμεί.

Κάπου εδώ θα πρέπει να σταματήσουμε όμως, οπότε μέχρι το επόμενο τεύχος της PC NEWS, μπορείτε να κατεβάσετε το περιβάλλον να το εγκαταστήσετε και να κάνετε λίγη υπομονή. Τα λέμε στο επόμενο τεύχος…

 

Δημήτρης Βράκας

 

Leave a Reply

Your email address will not be published. Required fields are marked *