Γράφω για να είναι χρήσιμο το post και σε όλους τους άλλους φίλους που το διαβάζουν: Ο φίλος που έγραψε το αρχικό post επιχείρησε να ανοίξει το executable αρχείο που δημιουργήθηκε θεωρώντας οτι εκεί θα βρεί τον αρχικό του κώδικα. Ειναι ένα "μπέρδεμα" που παθαίνουν όσοι έρχονται για πρώτη φορά αντιμέτωποι με την ομάδα source code / compiler / executable.
Για να δούμε λίγο τι γίνεται λοιπον:
Ο αρχικός κώδικας (πηγαίος ή source κώδικας) είναι αυτός που ο φίλος nickossd έγραψε. Ο κώδικας αυτός, προφανώς, από μόνος του δεν κάνει τίποτα, συνεπώς πρέπει να περάσει από κάποιον μεταφραστή (compiler) προκειμένου να μετατραπεί σε γλώσσα κατανοητή από τον υπολογιστή και να εκτελέσει τις λειτουργίες τις οποίες θα πρέπει να κάνει. Συγκεκριμένα, εδώ στην περίπτωσή μας, ο κώδικας περνάει από τον compiler της C++ και γίνεται ένα ΕΚΤΕΛΕΣΙΜΟ (executable) αρχείο. Αυτό το αρχείο είναι κατανοητό στον υπολογιστή και μπορεί να "τρέξει".
Εδώ είναι η παγίδα. Το executable ΠΑΥΕΙ να περιέχει τον αρχικό μας κώδικα. Περιέχει γλώσσα κατανοητή μόνο στον υπολογιστή (προσεκτικά, όπως βλέπετε, δεν μπαίνω σε περισσότερες λεπτομέρειες). Το executable ειναι κάτι που παρήχθη από τον αρχικό μας κώδικα με τη βοήθεια του compiler ΚΑΙ Ο ΑΡΧΙΚΟΣ ΜΑΣ ΚΩΔΙΚΑΣ ΜΑΣ ΕΙΝΑΙ ΑΠΑΡΑΙΤΗΤΟΣ. Εκεί θα κάνουμε όλες τις διορθώσεις / προσθήκες προκειμένου να παράξουμε αργότερα κάποιο άλλο, βελτιωμένο executable.
Ετσι λοιπον, όσο και αν προσπαθήσουμε να "διαβάσουμε" τι λέει το εκτελέσιμο (executable) αρχείο μας, δεν θα μπορέσουμε. Ειναι γλώσσα κατανοητή μονο στον υπολογιστή. Εξ'άλλου γι'αυτό αυτά τα αρχεία λέγονται και "binaries" γενικά, μια και τα 0 και τα 1 τους εμείς οι άνθρωποι δεν μπορούμε να τα αξιοποιήσουμε ιδιαίτερα.
Μην πετάτε ποτέ τον πηγαίο κώδικά σας. Ειναι αυτό που λέει το όνομά του: Πηγαίος. Η πηγή για να παραχθούν τα εκτελέσιμα.
Κλείνω αυτό το θέμα ως απαντημένο, και ελπίζω να βοήθησε η απάντησή μου και άλλους συναδέλφους που πιθανώς τώρα να ξεκινούν και να έχουν παραπλήσιες απορίες.
Σωτήρης Φιλιππίδης
DotSee Web Services