Το προφίλ μας στο Google Plus
0

Το παρασκήνιο μιας εκτέλεσης!

Πώς γράφονται τα προγράμματα; Πώς χρησιμοποιείται η μνήμη για την εκτέλεση ενός προγράμματος; Τι αποθηκεύεται και πού; Πότε και από ποιον; Σε μια προσπάθεια να μάθουμε όσα συμβαίνουν κατά την εκτέλεση ενός προγράμματος, απαντάμε σε όλα αυτά τα ερωτήματα — και σε αρκετά ακόμα!

deltaHacker Ιανουαρίου (τεύχος 004) | Το παρασκήνιο μιας εκτέλεσης!

Ένα πρόγραμμα, στη μορφή που το γράφει ο δημιουργός του, αποτελείται από εντολές κατανοητές μόνο από ανθρώπους και ονομάζεται πηγαίος κώδικας ή απλά κώδικας. Αυτός ο κώδικας περνάει από μια επεξεργασία με ειδικά εργαλεία, που ονομάζονται μεταγλωττιστές (compilers) ή διερμηνευτές (interpreters), για να μεταφραστεί σε μια γλώσσα κατανοητή μόνο από τον επεξεργαστή του υπολογιστή. Τώρα θα αναρωτηθούν κάποιοι: Σε τι διαφέρει ένας compiler από έναν interpreter; Σε πολλά! Ένας compiler μεταφράζει ολόκληρο τον πηγαίο κώδικα και παράγει ένα ολοκληρωμένο πρόγραμμα, το οποίο ονομάζουμε εκτελέσιμο (βλ., π.χ., τα γνωστά αρχεία exe στα Windows). Ένα εκτελέσιμο αρχείο αποτελείται από εντολές στη λεγόμενη γλώσσα μηχανής. Όπως αντιλαμβάνεστε, αυτή η γλώσσα είναι κατανοητή από τον υπολογιστή χωρίς να απαιτούνται περαιτέρω μεταφράσεις. Οι μεταγλωττιστές χρησιμοποιούνται σε πηγαίο κώδικα που γράφτηκε σε C, C++, Pascal κ.ά. Οι διερμηνευτές (interpreters) από την άλλη μεταφράζουν τον πηγαίο κώδικα εντολή προς εντολή. Συνήθως φορτώνουν τον πηγαίο κώδικα στη μνήμη, διαβάζουν μία γραμμή, την εκτελούν και προχωρούν στην επόμενη. Οι διερμηνευτές, λοιπόν, δεν παράγουν κανένα νέο αρχείο. Διερμηνευτές υπάρχουν για πολλές γλώσσες και μάλλον για όλες όσες χρησιμοποιούνται στο web (PHP, ASP κ.ά.).

Φυσικά, κάθε προσέγγιση έχει τα καλά αλλά και τα κακά της: Ένα μεταγλωττισμένο πρόγραμμα εκτελείται πολύ πιο γρήγορα από κάποιο που διερμηνεύεται γραμμή προς γραμμή. Επίσης, ένα μεταγλωττισμένο πρόγραμμα είναι σίγουρα απαλλαγμένο από κάθε συντακτικό λάθος. Μιλάμε για τα λάθη που μπορεί να κάνει ένας προγραμματιστής επειδή πληκτρολογεί βιαστικά ή γιατί ξέχασε έναν απαραίτητο χαρακτήρα (π.χ. εκείνον που τερματίζει μία γραμμή κώδικα). Αυτό για την απουσία συντακτικών σφαλμάτων είναι βέβαιο, διότι πριν ξεκινήσει την εργασία του ένας μεταγλωττιστής, εξασφαλίζει ότι ο πηγαίος κώδικας είναι 100% σωστά γραμμένος. Ένα εκτελέσιμο πρόγραμμα είναι –τουλάχιστον θεωρητικά– πολύ δύσκολο να διαβαστεί από κάποιον τρίτο, ο οποίος προσπαθεί να μάθει την εσωτερική/κρυφή λογική ενός προγράμματος.

Από την άλλη, τα προγράμματα που περνάνε από διερμηνευτές είναι πολύ πιο εύκολα στην συντήρηση και στην επέκταση, αφού αν μη τι άλλο δεν απαιτείται η χρονοβόρα διαδικασία του compilation κάθε φορά που αλλάζουμε/δοκιμάζουμε κάτι. Για προγράμματα στα οποία η ταχύτητα δεν είναι κρίσιμη και στα οποία επεμβαίνουμε συχνά, οι διερμηνευόμενες (interpreted) γλώσσες είναι ιδανικές!

Για λόγους πληρότητας, πρέπει να αναφέρουμε και μια τρίτη κατηγορία προγραμμάτων. Πρόκειται για εκείνα που εκτελούνται σε εικονικές μηχανές (virtual machines ) και δεν μεταγλωττίζονται σε γλώσσα μηχανής αλλά σε μία γλώσσα κατανοητή από την εικονική μηχανή. Αυτή η προσέγγιση ακολουθείται σε γλώσσες όπως η Java και για το γνωστό Microsoft .Net. Βέβαια μη νομίζετε ότι αυτή η ιστορία είναι και πολύ καινούρια! Τη 10ετία του 1980 υπήρχε το περίφημο P-System της Pascal, για το οποίο είχαν γραφτεί πολλές εφαρμογές! Το κύριο πλεονέκτημα που προκύπτει από τη χρήση μιας εικονικής μηχανής είναι η φορητότητα. Ένα πρόγραμμα που γράφτηκε για μία εικονική μηχανή θα μπορεί να εκτελείται σε κάθε υπολογιστή και σε κάθε λειτουργικό σύστημα, στο οποίο τρέχει η σχετική εικονική μηχανή. Όσο για την ταχύτητα εκτέλεσης, ένα πρόγραμμα που τρέχει σε εικονική μηχανή είναι συνήθως ταχύτερο από ένα διερμηνευόμενο (interpreted) αλλά πιο αργό από ένα μεταγλωττισμένο σε γλώσσα μηχανής.

Διαβάστε όλο το άρθρο στο deltaHacker Ιανουαρίου (τεύχος 004). Όλες τις πληροφορίες για τις συνδρομές στο deltaHacker, το μοναδικό μηνιαίο περιοδικό με θεματολογία ethical hacking και infosec που δεν κυκλοφορεί στα περίπτερα, θα τις βρείτε εδώ ακριβώς. Για παραγγελίες μεμονωμένων τευχών ή συνδρομών συμπληρώστε τη σχετική φόρμα.

Σημείωση: Οι συνδρομές μπορούν να ξεκινούν από όποιο τεύχος επιθυμείτε, αρκεί να υπάρχει σε stock.

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

Αρχείο δημοσιεύσεων