Σχόλιο (προγραμματισμός)

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

Στον προγραμματισμό, σχόλιο ονομάζεται μια δομή[1] που χρησιμοποιείται για να ενσωματώνονται σημειώσεις προς τον προγραμματιστή στον πηγαίο κώδικα ενός προγράμματος υπολογιστή.[2] Αυτές οι σημειώσεις μπορεί να είναι σημαντικές για τον προγραμματιστή αλλά συνήθως αγνοούνται από το μεταγλωττιστή ή το διερμηνέα[3][4]. Τα σχόλια προστίθενται συνήθως για να κάνουν κατανοητό τον κώδικα ενώ η σύνταξη και οι κανόνες τους διαφέρουν και ορίζονται από κάποιο πρότυπο μιας γλώσσας προγραμματισμού.

Τα σχόλια μπορούν να χρησιμοποιούνται για πολλούς σκοπούς: από την προσθήκη βασικών περιγραφών στον κώδικα του προγράμματος, μέχρι την παραγωγή εξωτερικής τεκμηρίωσης.[5] Τα σχόλια επίσης χρησιμοποιούνται για τη σύνδεση με συστήματα διαχείρισης πηγαίου κώδικα και άλλα εξωτερικά προγραμματιστικά εργαλεία.

Η ευελιξία των σχολίων συνήθως επιτρέπει ένα μεγάλο εύρος και ποικιλία πληροφορίας στον πηγαίο κώδικα, η οποία μπορεί να μην είναι πάντα χρήσιμη. Για αυτόν το λόγο, πολλοί σχολιαστές και αναλυτές λογισμικού υιοθετούν διάφορες "φιλοσοφίες" και κανόνες για τη σωστή χρήση των σχολίων.

Γενικά[Επεξεργασία | επεξεργασία κώδικα]

Τα σχόλια συνήθως μορφοποιούνται σαν ενότητες σχολίων (block comments), γνωστά και σαν σχόλια προλόγου (prologue comments), ροές σχολίων (stream comments), σχόλια γραμμής (line comments) ή εμβόλιμα σχόλια (inline comments).[6]

Οι ενότητες σχολίων αποτελούν μια περιοχή του πηγαίου κώδικα που μπορεί να καταλαμβάνει πάνω από μια γραμμές. Η περιοχή αυτή ορίζεται από ένα διαχωριστικό αρχής και ένα διαχωριστικό τέλους. Κάποιες γλώσσες προγραμματισμού (όπως η MATLAB) επιτρέπουν στις ενότητες σχολίων να βρίσκονται η μία μέσα στην άλλη, ενώ άλλες δεν το επιτρέπουν.[7][8][9]

Τα σχόλια γραμμής είτε ξεκινούν με ένα διαχωριστικό σχολίου και συνεχίζονται μέχρι το τέλος της γραμμής, ή, σε κάποιες περιπτώσεις, αρχίζουν σε μια συγκεκριμένη στήλη (character line offset) του πηγαίου κώδικα και συνεχίζουν μέχρι το τέλος της γραμμής.[9]

Κάποιες γλώσσες προγραμματισμού περιλαμβάνουν τόσο ενότητες σχολίων, όσο και γραμμές σχολίων, με διαφορετικά διαχωριστικά. Για παράδειγμα η C++ χρησιμοποιεί τα διαχωριστικά /* και */ στις ενότητες σχολίων της που μπορούν να καταλαμβάνουν πολλές γραμμές, και το διαχωριστικό // για τα σχόλια γραμμής. Άλλες γλώσσες υποστηρίζουν μόνο ένα είδος σχολίων. Για παράδειγμα τα σχόλια της Ada είναι σχόλια γραμμής: αρχίζουν με -- και συνεχίζουν μέχρι το τέλος της γραμμής.[9]

Χρήση[Επεξεργασία | επεξεργασία κώδικα]

Υπάρχουν διαφωνίες σχετικά με τη σωστή χρήση των σχολίων - οι απόψεις διαφέρουν, πολλές φορές σε βαθμό που να συγκρούονται μεταξύ τους.[10][11][11]

Περιγραφή του κώδικα[Επεξεργασία | επεξεργασία κώδικα]

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

"Μην τεκμηριώνετε κακό κώδικα - ξαναγράψτε τον."[12]
"Τα καλά σχόλια δεν επαναλαμβάνουν τον κώδικα και δεν τον εξηγούν. Ξεκαθαρίζουν αυτό που προτίθεται να κάνει. Τα σχόλια θα έπρεπε να εξηγούν, σε ένα επίπεδο αφαίρεσης που να είναι υψηλότερο από τον κώδικα, αυτό που προσπαθείτε να κάνετε."[13]

Τα σχόλια μπορούν επίσης να χρησιμοποιηθούν για να εξηγήσουν γιατί μια ενότητα κώδικα φαίνεται να μη συμμορφώνεται με συμβάσεις ή γνωστές καλές πρακτικές. Αυτό συμβαίνει ιδιαίτερα σε εγχειρήματα που έχουν πολύ λίγο χρόνο ανάπτυξης ή στη διόρθωση σφαλμάτων. Για παράδειγμα:

' Δεύτερη μεταβλητή λόγω σφαλμάτων εξυπηρετητή κατά την επαναλαμβανόμενη χρήση
' δεδομένων φόρμας. Δεν υπάρχει διαθέσιμη τεκμηρίωση, παρακάμπτεται μέσω κώδικα.
vtx = server.mappath("local settings")

Αλγοριθμική περιγραφή[Επεξεργασία | επεξεργασία κώδικα]

Κάποιες φορές ο πηγαίος κώδικας περιέχει μια νέα ή άξια αναφοράς λύση σε ένα συγκεκριμένο πρόβλημα. Σε αυτές τις περιπτώσεις, τα σχόλια μπορούν να περιέχουν μια περιγραφή της μεθοδολογίας. Αυτές οι εξηγήσεις μπορεί να περιέχουν διαγράμματα ή τυπικές μαθηματικές αποδείξεις. Αυτό μπορεί να αποτελεί επεξήγηση του κώδικα και όχι ξεκαθάρισμα των προθέσεών του - άλλοι άνθρωποι όμως που πρέπει να συντηρούν τον κώδικα μπορεί να θεωρούν σημαντική αυτήν την επεξήγηση. Αυτό μπορεί να ισχύει στην περίπτωση ιδιαίτερα εξειδικευμένων πεδίων ή σε σπάνια χρησιμοποιούμενες βελτιστοποιήσεις, δομές ή κλήσεις συναρτήσεων.[14]

Για παράδειγμα, ένας προγραμματιστής μπορεί να προσθέσει ένα σχόλιο για να εξηγήσει γιατί μια ταξινόμηση εισαγωγής (insertion sort) επιλέχθηκε αντί για ταξινόμηση quicksort, καθώς η πρώτη είναι θεωρητικά πιο αργή. Αυτό θα μπορούσε να γραφεί ως εξής:

 list = [f (b), f (b), f (c), f (d), f (a), ...];
 // Χρειάζεται μια σταθερή (stable) ταξινόμηση. Επίσης, η ταχύτητα εδώ δεν έχει σημασία.
 insertion_sort (list);

Συμπερίληψη πόρων[Επεξεργασία | επεξεργασία κώδικα]

Στον πηγαίο κώδικα μπορούν να τοποθετηθούν λογότυπα, διαγράμματα (απλά και διαγράμματα ροής), σαν δομές τέχνης ASCII (ASCII art) σε σχόλια.[15] Επιπλέον, σε σχόλια μπορούν να βρίσκονται κείμενα σχετικά με την πνευματική ιδιοκτησία του κώδικα. Στα σχόλια μπορούν να κωδικοποιηθούν και δυαδικά δεδομένα με μια διαδικασία γνωστή σαν "κωδικοποίηση δυαδικό-σε-κείμενο" ("binary-to-text encoding"), αν και κάτι τέτοιο δε συνηθίζεται γιατί προτιμώνται τα εξωτερικά αρχεία.

Αποσφαλμάτωση[Επεξεργασία | επεξεργασία κώδικα]

Μια συνηθισμένη τακτική των προγραμματιστών είναι να απενεργοποιούν με τη χρήση σχολίων τμήματα κώδικα, για να μην εκτελεστούν στο τελικό πρόγραμμα. Για παράδειγμα, κάποιος μπορεί να γράψει:

 if (opt.equals ("e"))
   opt_enabled = true;
 /*
  if (opt.equals ("d"))
   opt_debug = true;
 // */
 //*
 if (opt.equals ("v"))
    opt_verbose = true;
 // */

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

Αυτόματη παραγωγή τεκμηρίωσης[Επεξεργασία | επεξεργασία κώδικα]

τα προγραμματιστικά εργαλεία κάποιες φορές αποθηκεύουν την τεκμηρίωση και τα μεταδεδομένα στα σχόλια.[16] Αυτά μπορεί να περιλαμβάνουν θέσεις για αυτόματη συμπερίληψη αρχείων επικεφαλίδας, εντολές που ορίζουν το χρωματισμό της σύνταξης του αρχείου,[17] ή τον αριθμό της έκδοσης του αρχείου.[18] Αυτά τα λειτουργικά σχόλια πολλές φορές ονομάζονται και σημειώσεις (annotations). Η διατήρηση της τεκμηρίωσης σε σχόλια στον πηγαίο κώδικα θεωρείται ένας τρόπος να απλοποιείται η διαδικασία της ανάπτυξης του λογισμικού και να αυξάνονται οι πιθανότητες να ακολουθεί η τεκμηρίωση τις αλλαγές στον κώδικα.[19]

Παραδείγματα γεννητριών τεκμηρίωσης είναι το πρόγραμμα javadoc, που σχεδιάστηκε για χρήση με τη Java, το Ddoc για τη γλώσσα προγραμματισμού D, το PHPDoc για την PHP και το doxygen, που χρησιμοποιείται με τη C++, τη C, τη Java και την IDL.

Η C# και η Visual Basic υλοποιούν ένα παρόμοιο χαρακτηριστικό που ονομάζεται "Σχόλια XML" ("XML Comments"), τα οποία διαβάζονται από το μηχανισμό IntelliSense από το μεταγλωττισμένο αρχείο (assembly) του .NET.[20]

Ρυθμιστικές απόψεις[Επεξεργασία | επεξεργασία κώδικα]

Υπάρχουν πολλές απόψεις σχετικά με τη σωστή χρήση των σχολίων σε πηγαίο κώδικα.[21] Κάποιες από αυτές είναι άτυπες και βασισμένες σε προσωπικές προτιμήσεις ενώ άλλες δημοσιεύονται και προωθούνται σαν τυπικές οδηγίες.[22]

Σημασία των σχολίων[Επεξεργασία | επεξεργασία κώδικα]

Οι σχολιαστές τεχνικού περιεχομένου έχουν υποστηρίξει διάφορες απόψεις σχετικά με το αν και πότε τα σχόλια είναι απαραίτητα στον πηγαίο κώδικα.[12] [23] Κάποιοι από αυτούς πιστεύουν ότι ο κώδικας θα έπρεπε να γράφεται με όσο το δυνατό λιγότερα σχόλια, γιατί η λειτουργία του θα έπρεπε να είναι προφανής.[12] Άλλοι πιστεύουν ότι πρέπει να τεκμηριώνεται εκτεταμένα (δεν είναι ασυνήθιστο πάνω από το 50% των χαρακτήρων κενού του πηγαίου κώδικα να βρίσκονται μέσα σε σχόλια).[24][25]

Ανάμεσα στις δύο παραπάνω απόψεις βρίσκεται και η παραδοχή ότι τα σχόλια δεν είναι ούτε ωφέλιμα ούτε επικίνδυνα, αλλά αυτό που έχει σημασία είναι να είναι σωστά και να συμφωνούν με τον πηγαίο κώδικα ή να παραλείπονται αν είναι υπερβολικά μεγάλα, περιττά, δύσκολα στη συντήρηση ή γενικά δε βοηθούν.[26][27]

Βαθμός λεπτομέρειας[Επεξεργασία | επεξεργασία κώδικα]

Το πόσο λεπτομερές και περιγραφικό μπορεί να είναι ένα σχόλιο διαφέρει ανάλογα με το επιθυμητό κοινό και άλλους παράγοντες.

Για παράδειγμα, το εξής σχόλιο σε Java θα μπορούσε να ταιριάζει σε ένα εισαγωγικό κείμενο στον προγραμματισμό:

    String s = "Wikipedia"; /* Αναθέτει την τιμή "Wikipedia" στη μεταβλητή s. */

Αυτός ο βαθμός λεπτομέρειας όμως, δεν είναι κατάλληλος για κώδικα παραγωγής ή όταν ο κώδικας απευθύνεται σε πεπειραμένους προγραμματιστές. Αυτές οι απλοϊκές περιγραφές δε συμφωνούν με την αρχή ότι "Τα καλά σχόλια ... ξεκαθαρίζουν το σκοπό του κώδικα."[13] Επιπλέον, σε επαγγελματικά περιβάλλοντα προγραμματισμού, ο βαθμός της λεπτομέρειας ορίζεται ανάλογα με τις επιχειρηματικές απαιτήσεις.[25]

Στυλ[Επεξεργασία | επεξεργασία κώδικα]

Υπάρχουν διαθέσιμες πολλές στυλιστικές εναλλακτικές λύσεις όσον αφορά το πώς φαίνονται τα σχόλια στον πηγαίο κώδικα. Στα μεγάλα εγχειρήματα, που περιλαμβάνουν μια ομάδα προγραμματιστών, το στυλ των σχολίων συμφωνείται πριν αρχίσει το εγχείρημα ή προκύπτουν από συμβάσεις ή από ανάγκες καθώς αυτό μεγαλώνει. Συνηθως οι προγραμματιστές προτιμούν στυλ που είναι ομοιόμορφα, δεν εμποδίζουν κατά τη χρήση τους, τροποποιούνται εύκολα και δύσκολα καταστρέφονται.[28]

Τα παρακάτω κομμάτια κώδικα σε C δείχνουν ένα μικρό παράδειγμα σχετικά με το πόσο μπορεί να διαφέρουν στυλιστικά σχόλια, ενώ παρέχουν την ίδια πληροφορία:

/* 
     Τα σώμα των σχολίων.
     Παραλλαγή πρώτη.
*/
/***************************\
*                           *
* Τα σώμα των σχολίων.      *
* Παραλλαγή δεύτερη.        *
*                           *
\***************************/

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

Μια άποψη είναι η στοίχιση των αριστερών άκρων των σχολίων:[29]

 /* Στυλ για τη C και τη C++.
  * Εμφανίζεται στο βιβλίο ''Enough Rope'',<ref name="Holub001" /> στον κανόνα 29.
  */
 /* Ένας άλλος τρόπος να γίνει το ίδιο πράγμα,επίσης σε C.
 ** Είναι πιο εύκολο να γίνει σε διορθωτές που δε στοιχίζουν αυτόματα από τη δεύτερη
 ** ως την τελευταία γραμμή των σχολίων κατά ένα κενό σε σχέση με την πρώτη.
 ** Χρησιμοποιείται επίσης στο προαναφερθέν βιβλίο, στον κανόνα 31.
 */

Σχόλια μέχρι το τέλος της γραμμής[Επεξεργασία | επεξεργασία κώδικα]

Σύμφωνα με αυτήν την άποψη, αγνοείται όλο το κείμενο από τους χαρακτήρες ASCII // μέχρι το τέλος της γραμμής.

/// Παραλλαγή τρίτη.
/// --------------------
/// Το σώμα των σχολίων.
/// --------------------

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

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

Ετικέτες[Επεξεργασία | επεξεργασία κώδικα]

Υπάρχουν κάποιες ετικέτες (tags) που χρησιμοποιούνται στα σχόλια για να βοηθούν την ανάλυση κάποιων συνηθισμένων θεμάτων. Αυτές οι ετικέτες συνήθως μορφοποιούνται με χρώματα στο διορθωτή και μπορεί να γίνει αναζήτησή τους με κλασικά προγραμματιστικά εργαλεία, όπως το εργαλείο grep του UNIX. Παραδείγματα συμβάσεων για ετικέτες:

  • FIXME που δείχνει κώδικα που πιθανόν να έχει πρόβλημα και χρειάζεται αναθεώρηση.
  • NOTE που τεκμηριώνει εσωτερικές λειτουργίες του κώδικα και δείχνει πιθανά προβλήματα.
  • TODO για προγραμματισμένες βελτιώσεις.
  • XXX που προειδοποιεί άλλους προγραμματιστές για προβληματικό ή παραπλανητικό κώδικα.

Υπάρχει το πρόβλημα της συσσώρευσης των ετικετών καθώς περνάει ο χρόνος, για αυτό συνίσταται να περιλαμβάνεται η ημερομηνία και ο ιδιοκτήτης της ετικέτας στο σχόλια για να διευκολύνεται η παρακολούθησή της.[30]

Παραδείγματα[Επεξεργασία | επεξεργασία κώδικα]

C[Επεξεργασία | επεξεργασία κώδικα]

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

 /*
  * Ελέγχει αν είμαστε πάνω από το μέγιστο όριο διεργασιών, χωρίς όμως
  * να περιλαμβάνει το root. Αυτό χρειάζεται ώστε η login και οι παρόμοιες
  * με αυτήν να μπορούν να ορίζουν το όριο διεργασιών ανά χρήστη σε κάτι μικρότερο
  * από τις διεργασίες που τρέχει ο root. -- Rik
  */
 if (atomic_read(&p->user->processes) >= p->rlim[RLIMIT_NPROC].rlim_cur
     && !capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RESOURCE))
     goto bad_fork_free;

Το παραπάνω απόσπασμα είναι από το αρχείο fork.c από τον πηγαίο κώδικα του πυρήνα Linux.

Κλασική BASIC[Επεξεργασία | επεξεργασία κώδικα]

Αυτό το απόσπασμα κώδικα σε BASIC είναι ένα πλήρες πρόγραμμα στο οποίο τα σχόλια περιγράφουν τη λειτουργία του στους αρχάριους προγραμματιστές.

10 REM Αυτό το πρόγραμμα σε BASIC δείχνει τη χρήση των εντολών PRINT και GOTO.
15 REM Γεμίζει την οθόνη με τη λέξη "WIKIPEDIA".
20 PRINT "WIKIPEDIA"
30 GOTO 20

Όταν εκτελεστεί, το πρόγραμμα τυπώνει συνέχεια (σε ατέρμονα βρόχο) τη λέξη "WIKIPEDIA" (χωρίς τα εισαγωγικά).

ColdFusion[Επεξεργασία | επεξεργασία κώδικα]

Το ColdFusion χρησιμοποιεί σχόλια παρόμοια με αυτά της HTML/XML, αλλά αντί για δύο παύλες χρησιμοποιεί τρεις. Τα σχόλια ανιχνεύονται από τη μηχανή του ColdFusion και δεν εμφανίζονται στο φυλλομετρητή.

 <!--- Τυπώνει "Hello World" στο φυλλομετρητή. --->
 <cfoutput>
   Hello World<br />
 </cfoutput>

Fortran 90[Επεξεργασία | επεξεργασία κώδικα]

Ο παρακάτω κώδικας σε Fortran δείχνει πώς χρησιμοποιούνται τα σχόλια σε αυτήν τη γλώσσα, με τα ίδια τα σχόλια να περιγράφουν βασικούς κανόνες μορφοποίησης.

!* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!* Όλοι οι χαρακτήρες μετά το θαυμαστικό θεωρούνται σχόλια             *
!* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 
       PRINT "WIKIPEDIA" ! Η Fortran 90 εισήγαγε τα εμβόλιμα σχόλια.
       END

Java[Επεξεργασία | επεξεργασία κώδικα]

Το παρακάτω απόσπασμα κώδικα σε Java δείχνει μια ενότητα σχολίων που χρησιμοποιείται για να περιγράψει τη μέθοδο setToolTipText. Η μορφοποίηση συμφωνεί με τα πρότυπα του Javadoc της Sun Microsystems. Το σχόλιο με αυτήν τη μορφή είναι έτοιμο για να αναγνωριστεί από τον επεξεργαστή του javadoc.

 /**
  * Καταχωρεί το κείμενο που θα εμφανίζεται σε ένα "tool tip". Το κείμενο
  * εμφανίζεται όταν ο δείκτης βρίσκεται πάνω σε ένα στοιχείο.
  *
  * @param text  το κείμενο που θα εμφανιστεί. Αν δε δίνεται κείμενο (null), 
  *              το "tool tip" απενεργοποιείται για αυτό το στοιχείο.
  */
 public void setToolTipText(String text) {

Perl[Επεξεργασία | επεξεργασία κώδικα]

Τα σχόλια γραμμής στην Perl, και σε άλλες γλώσσες σεναρίων, αρχίζουν με ένα σύμβολο δίεσης (#). Ένα σχόλιο στην αρχή, λέει στο σύστημα ποιόν διερμηνέα να χρησιμοποιήσει.

#!/usr/bin/perl
my $s = "Wikipedia"; # Θέτει τη μεταβλητή s ίση με "Wikipedia".
print $s . "\n";     # Προσθέτει ένα χαρακτήρα νέας γραμμής μετά από την εκτύπωση για κελύφη που δεν το κάνουν αυτόματα.

PHP[Επεξεργασία | επεξεργασία κώδικα]

Τα σχόλια στην PHP μπορούν να είναι είτε στο στυλ της C++ (εμβόλιμα και ενότητες), ή στο στυλ της Perl. Το PHPDoc είναι ένα στυλ που μεταφέρθηκε από το javadoc και αποτελεί κοινό πρότυπο για την τεκμηρίωση κώδικα PHP.

Python[Επεξεργασία | επεξεργασία κώδικα]

Τα σχόλια στην Python χρησιμοποιούν το χαρακτήρα της δίεσης. Τα προγράμματα σε Python αρχίζουν με το σύμβολο "#!" που λέει στο λειτουργικό σύστημα ποιόν διερμηνέα να χρησιμοποιήσει.

#!/usr/bin/env python
 
# αυτό το πρόγραμμα τυπώνει "Hello World" στην οθόνη και τερματίζει.
print "Hello World!"

Ruby[Επεξεργασία | επεξεργασία κώδικα]

Τα σχόλια σε Ruby

Σχολιασμός μιας γραμμής: (η γραμμή αρχίζει με το σύμβολο "#")

Αυτό δεν είναι σχόλιο
 
#αυτό είναι σχόλιο
 
Αυτό δεν είναι σχόλιο

Σχολιασμός πολλαπλών γραμμών: (τα σχόλια βρίσκονται μεταξύ των λέξεων-κλειδιών "begin" και "end")

Αυτό δεν είναι σχόλιο
 
=begin
 
οτιδήποτε τοποθετείται εδώ
 
αγνοείται :)
 
=end
 
Αυτό δεν είναι σχόλιο

SQL[Επεξεργασία | επεξεργασία κώδικα]

Τα σχόλια στην SQL είναι μόνο μιας γραμμής, όταν χρησιμοποιούνται δύο παύλες:

-- Ένα σχόλιο μιας γραμμής
-- ακολουθούμενο από άλλη μια γραμμή
SELECT COUNT(*) 
       FROM Authors
       WHERE Authors.name = 'Smith'; -- Σημείωση: θέλουμε μόνο το 'smith'
                                     -- αυτό το σχόλιο εμφανίζεται μετά τον κώδικα της SQL

Η σύνταξη της Transact-SQL υποστηρίζει επίσης εναλλακτικούς τρόπους μορφοποίησης για τον ορισμό σχολίων.[31] Μια μορφή αυτής της σύνταξης είναι ίδια με το στυλ "ενότητα σχολίων" που χρησιμοποιείται στη σύνταξη της C++ και της Java.

/*
Γραμμή σχολίου 1
Γραμμή σχολίου 2
*/
SELECT COUNT(*)
       FROM Authors

OCaml[Επεξεργασία | επεξεργασία κώδικα]

Η OCaml χρησιμοποιεί σχόλια που μπορούν να περιέχονται σε άλλα σχόλια, κάτι που είναι χρήσιμο για το σχολιασμό μιας ενότητας κώδικα.

γραμμή με κώδικα (* σχόλιο επιπέδου 1(*σχόλιο επιπέδου 2*)*)

Σημειώσεις και παραπομπές[Επεξεργασία | επεξεργασία κώδικα]

  1. Σε αυτό το άρθρο, τα σχόλια των γλωσσών προγραμματισμού θεωρούνται διαφορετικά από τα σχόλια σε γλώσσες σήμανσης (markup languages), αρχεία ρυθμίσεων (configuration files) και άλλες παρόμοιες περιπτώσεις. Επιπλέον, οι γλώσσες σήμανσης συνήθως ενσωματώνονται στον κώδικα μιας γλώσσας προγραμματισμού, ειδικά όταν πρόκειται για παραγωγή κώδικα (code generation). Δείτε π.χ. Ganguli, Madhushree (2002). Making Use of Jsp. New York: Wiley. ISBN 0471219746. , Hewitt, Eben (2003). Java for Coldfusion Developers. Upper Saddle River: Pearson Education. ISBN 0130461806. .
  2. Ο πηγαίος κώδικας μπορεί να χωριστεί σε κώδικα προγράμματος (που αποτελείται από εντολές που πρόκειται να μεταφραστούν σε γλώσσα μηχανής) και σε σχόλια (που περιλαμβάνουν σημειώσεις για ανάγνωση από τον άνθρωπο και άλλες σημειώσεις υποστήριξης του κώδικα προγράμματος).Penny Grubb, Armstrong Takang (2003). Software Maintenance: Concepts and Practice. World Scientific. ISBN 981238426X. 
  3. Κάποια περιβάλλοντα προγραμματισμού περιλαμβάνουν τα σχόλια στα στοιχεία της σύνταξης της γλώσσας που μπορεί να υπόκεινται σε περαιτέρω επεξεργασία, αντί απλά να αγνοούνται από τον επεξεργαστή της γλώσσας την πρώτη φορά που εμφανίζονται.
  4. Τα σχόλια πρέπει να δηλώνονται με τρόπο τέτοιο που ο επεξεργαστής του πηγαίου κώδικα να μπορεί να τα αναγνωρίσει. Συνήθως λέγεται ότι τα σχόλια "αγνοούνται" (όταν έχουν αναγνωριστεί και απορριφθεί) από τον επεξεργαστή.
  5. Η επεξεργασία των σχολίων μπορεί να γίνει με πολλούς τρόπους για την παραγωγή τεκμηρίωσης, εξωτερικής σε σχέση με τον ίδιο τον πηγαίο κώδικα.
  6. Dixit, J.B. (2003). Computer Fundamentals and Programming in C. Laxmi Publications. ISBN 8170088828. 
  7. Higham, Desmond (2005). MATLAB Guide. SIAM. ISBN 0898715784. 
  8. Vermeulen, Al (2000). The Elements of Java Style. Cambridge University Press. ISBN 0521777682. 
  9. 9,0 9,1 9,2 «Using the right comment in Java». http://javadude.com/articles/comments.html. Ανακτήθηκε στις 2007-07-24. 
  10. Το W. R., Dietrich (2003). Applied Pattern Recognition: Algorithms and Implementation in C++. Springer. ISBN 3528355581.  offers viewpoints on proper use of comments in source code. p. 66.
  11. 11,0 11,1 Keyes, Jessica (2003). Software Engineering Handbook. CRC Press. ISBN 0849314798.  αναλύει τα σχόλια και την "Επιστήμη της Τεκμηρίωσης" ("Science of Documentation") σελ. 256.
  12. 12,0 12,1 12,2 The Elements of Programming Style, Kernighan & Plauger
  13. 13,0 13,1 Code Complete, Steve McConnell
  14. Σπινέλλης, Διομήδης (2003). Code reading: The Open Source Perspective. Addison-Wesley. ISBN 0201799405. 
  15. «CodePlotter 1.6 - Add and edit diagrams in your code with this 'Visio-like' tool». http://www.codeproject.com/macro/codeplotter.asp. Ανακτήθηκε στις 2007-07-24. 
  16. Δείτε π.χ., Wynne-Powell, Rod (2008). Mac Os X for Photographers: Optimized Image Workflow for the Mac User. Oxford: Focal Press. ISBN 0240520270.  σελ. 243
  17. Το Lamb, Linda (1998). Learning the VI Editor. Sebastopol: O'Reilly & Associates. ISBN 1565924266.  περιγράφει τη σύνταξη modeline σε αρχεία ρυθμίσεων του Vim.
  18. Δείτε π.χ., Berlin, Daniel (2006). Practical Subversion, Second Edition. Berkeley: APress. ISBN 1590597532.  σελ. 168.
  19. Ambler, Scott (2004). The Object Primer: Agile Model-Driven Development with UML 2.0. Cambridge University Press. ISBN 1397805218. 
  20. Murach. C# 2005. σελ. 56. 
  21. Goodliffe, Pete (2006). Code Craft. San Francisco: No Starch Press. ISBN 1593271190. , Smith, T. (1991). Intermediate Programming Principles and Techniques Using Pascal. Belmont: West Pub. Co. ISBN 0314663142. 
  22. See e.g., Koletzke, Peter (2000). Oracle Developer Advanced Forms & Reports. Berkeley: Osborne/McGraw-Hill. ISBN 0072120487.  page 65.
  23. «Worst Practice - Bad Comments». http://www.sqlservercentral.com/columnists/awarren/worstpracticebadcomments.asp. Ανακτήθηκε στις 2007-07-24. 
  24. Morelli, Ralph (2006). Java, Java, Java: object-oriented problem solving. Prentice Hall College. ISBN 0131474340. 
  25. 25,0 25,1 «How to Write Doc Comments for the Javadoc Tool». http://java.sun.com/j2se/javadoc/writingdoccomments/. Ανακτήθηκε στις 2007-07-24.  Οι οδηγίες του JavaDoc δηλώνουν ότι τα σχόλια είναι πολύ σημαντικά για την πλατφόρμα, ενώ ορίζεται το πόσο λεπτομερή πρέπει να είναι.
  26. Your, Edward (2007). Techniques of Program Structure and Design. University of Michigan. 013901702X.  Η κατανόηση κώδικα γίνεται δύσκολη αν δεν υπάρχουν σχόλια, αλλά τα σχόλια μπορούν να προκαλούν σοβαρά προβλήματα αν είναι ξεπερασμένα, λάθος ή γενικά δε διευκολύνουν την κατανόηση της επιθυμητής λειτουργίας του πηγαίου κώδικα.
  27. Dewhurst, Stephen C (2002). C++ Gotchas: Avoiding Common Problems in Coding and Design. Addison-Wesley Professional. ISBN 0321125185. 
  28. «Coding Style». http://developer.gnome.org/doc/guides/programming-guidelines/code-style.html. Ανακτήθηκε στις 2007-07-24. 
  29. Allen Holub, Enough Rope to Shoot Yourself in the Foot, ISBN 0-07-029689-8, 1995, McGraw-Hill
  30. «TODO or not TODO». http://www.approxion.com/?p=39. Ανακτήθηκε στις 2009-02-08. 
  31. Talmage, Ronald R. (1999). Microsoft SQL Server 7. Prima Publishing. ISBN 0761513892. 

Εξωτερικοί σύνδεσμοι[Επεξεργασία | επεξεργασία κώδικα]

Στο λήμμα αυτό έχει ενσωματωθεί κείμενο από το λήμμα Comment (computer programming) της Αγγλικής Βικιπαίδειας, η οποία διανέμεται υπό την GNU FDL και την CC-BY-SA 3.0. (ιστορικό/συντάκτες).