FW: provlima me tin c++

Pantelis Koukousoulas pktoss at gmail.com
Mon Jul 20 19:03:35 EEST 2009


2009/7/20 tony gourd <tony_gourd at hotmail.com>:
> paidia einai ekdoseis kleidari8mos kai o titlos einai gnorizontas tin c++
> exete na mu protinete kanena kalitero tropo na tin ma8o?? ha kanena biblio
> kalitera?

Αυτό που θέλεις σίγουρα είναι το βιβλίο του Stroustrup "The C++
Programming Language". Υπάρχει και μεταφρασμένο στα ελληνικά πράγμα
που μπορεί (ή μπορεί και όχι) να σε βολέψει περισσότερο.

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

Υπάρχουν πολλές επιλογές σε τέτοια "tutorial" βιβλία και ένα από αυτά
είναι π.χ., και το "thinking in C++" που είναι και ελεύθερα διαθέσιμο.

Και με σκέτο το Stroustrup πάντως και γράφοντας αρκετά μικρά
παραδείγματα μόνος σου μπορείς να προχωρήσεις πάρα πολύ. Προτείνω
ανεπιφύλακτα τα αρχικά προβλήματα του project euler και τα εύκολα
προβλήματα από τους διαγωνισμούς τις ACM που έχουν on-line βαθμολόγηση
(γενικά αν δεις ένα πρόβλημα που δεν έχεις αμέσως ιδέα περί τίνος
πρόκειται και μέσα σε μισή / μία ώρα δεν έχεις ένα περίγραμμα της
λύσης το αφήνεις. Αυτά που θα μείνουν είναι τα εύκολα. Προσοχή:
συνήθως τα εύκολα έχουν τις πιο ψαρωτικές διατυπώσεις).

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

Μετά που θα λύσεις αρκετά από αυτά και θα έχεις εμπιστοσύνη ότι ξέρεις
καλά τα βασικά των βασικών, μπορείς να δοκιμάσεις να συμμετέχεις σε
επιτυχημένα έργα ελεύθερου λογισμικού γραμμένα στη C++ (π.χ., Qt/KDE
στον τομέα του Desktop, crystalspace στον τομέα των 3D γραφικών, L4
ή/και bochs στον τομέα του hardware / kernels και llvm/clang στον
τομέα των μεταγλωττιστών).

Αυτό θα σε φέρει σε επαφή με πρακτικές λεπτομέρειες που μόνος σου δε
θα είχες φανταστεί και θα σε εξοικειώσει πολύ με τον τρόπο που
λειτουργούν τα εργαλεία της πλατφόρμας σου. (Π.χ., C++ και linker, C++
και αποδοτικότητα σε μνήμη, C++ και δέσμευση μνήμης από συγκεκριμμένo
μέρος (π.χ., ROM) C++ και debugging, C++ και ταυτοχρονισμός, C++ και
χρόνος που χρειάζεται για να μεταγλωττιστεί ένα μεγάλο πρόγραμμα κλπ)

Αν περάσεις και από αυτό το στάδιο θα είσαι πλέον παραπάνω από έτοιμος
να γράψεις τα δικά σου μεγάλα προγράμματα. Μην παραλείψεις κατά τη
διάρκεια του "ταξιδιού" αυτού να πειραματιστείς και με περιβάλλοντα
ανάπτυξης (π.χ., προτιμάς το vim, τον emacs ένα απλό editor
(kate/gedit), ένα IDE (eclipse/kdevelop/qtcreator)? Καλύτερα να
αρχίσεις όσο απλά γίνεται και να προσθέτεις features όσο τα
προγράμματα που φτιάχνεις μεγαλώνουν και δυσκολεύουν).

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

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

Φιλικά,
Παντελής


More information about the Linux-greek-users mailing list