Βιβλία C/C++

Ξεκίνησε από Νίκος Αδαμόπουλος, 05 Νοε 2020, 07:31:47 ΜΜ

« προηγούμενο - επόμενο »

Νίκος Αδαμόπουλος

Έχει κανείς άποψη για κάποιο/κάποια από τα παρακάτω βιβλία;

Η ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++, BJARNE STROUSTRUP
Η ΓΛΩΣΣΑ C++ ΣΕ ΒΑΘΟΣ, ΝΙΚΟΣ Μ. ΧΑΤΖΗΓΙΑΝΝΑΚΗΣ
C++ Προγραμματισμός, 9η Εκδ., Paul J. Deitel, Harvey M. Deitel
Προγραμματισμός με τη C++, 2η Έκδοση, Stroustrup Bjarne

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

bugman

Ας περάσει από το https://www.pdfdrive.com/ να δει τι έχει έτοιμο και τσάμπα!

pgrontas

Έχω την τρίτη έκδοση του Η ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++ του  Stroustrup.

Όταν το διάβασα το βρήκα πολύ δύσκολο, αλλά το γεγονός ότι είναι από τον δημιουργό της γλώσσας είναι ίσως μια εγγύηση.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

bugman

θα πρότεινα να δει όλα τα παραδείγματα εδώ:
http://www.rosettacode.org/wiki/Category:C%2B%2B



Λίγα λόγια για τη γλώσσα, όπως την έχω δει εδώ και πολλά χρόνια:

Η C++ στηρίζεται σε βιβλιοθήκες και το τελικό πρόγραμμα που κάνει κανείς είναι αποτέλεσμα επιλογών βιβλιοθηκών (το λέμε και framework).

Με μια απλή ματιά, η γλώσσα έχει κορμό παρόμοιο με αυτό της C. Επιπλέον έχει αντικείμενα αν θες να τα χρησιμοποιήσεις, και μπορείς να τη φορτώσεις με αντικείμενα από βιβλιοθήκες.

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

1. Μένει σε προγράμματα απλής κονσόλας. (διεπαφή εποχής πριν το 1980)

2. Ξεκινάει με μια γλώσσα Visual τύπου, όπου κυριαρχούν οι φόρμες, τα αντικείμενα σε αυτές, δηλαδή μια εφαρμογή με γραφική διεπαφή (GUI), δηλαδή το τρόπο που δούλευαν τα πράγματα από την εποχή των Windows, και σε ευρύτερο βαθμό αποδοχής τεχνολογίας, από το 95, με τα Windows 95, και τους επεξεργαστές Pentium. To 96 θυμάμαι είχα αγοράσει το πρώτο Windows 95, με 32μπιτο Pentium 100Mhz, 32Mbyte Ram (πολύ καλύτερο από το πρώτο μου, Acorn Electron 8bit 6502, 2Mhz, 32kb Ram, 1984)

Το ερώτημα που προκύπτει είναι, γιατί υπάρχουν αυτές οι δυο κατηγορίες; Δηλαδή γιατί δεν παίζει μόνο αυτή με τα παράθυρα, που είναι πιο νέα; Η απάντηση είναι απλή, είναι θέμα λειτουργίας. Ό,τι δουλεύει με παράθυρα έχει μια εσωτερική διαδικασία ανάγνωσης μηνυμάτων που από τη φύση της τρώει από την ισχύ επεξεργασίας. Έτσι όταν θέλουμε να εκτελούνται υπολογισμοί με ενδιαφέρον στη ταχύτητα εκτέλεσης, τότε τρέχουμε κάτι χωρίς το message loop (τη διαδικασία ανάγνωσης μηνυμάτων). Υπάρχει τρόπος να συνδυαστεί ένα front-end (με message loop) με ένα back-end (καθαρό), το οποίο καλείται κάθε φορά σαν νέο πρόγραμμα ή πρόγραμμα σε αναμονή, να κάνει τη δουλειά του και επιστρέφει το αποτέλεσμα.

Αυτή η ιστορία του back-end & front-end, πήρε μεγάλες διαστάσεις μετά την έλευση του διαδικτύου, όπου εμφανίστηκε ο διαχωρισμός Desktop (εφαρμογές επιφάνειας εργασίας) και web app (εφαρμογές μέσα από browser, αναγνώστη ιστοσελίδων). Το βασίλειο της C++ έπεσε. Νέες γλώσσες φτιάχτηκαν για web app, οι οποίες ήταν τόσο βολικές που παίζουν πια σε desktop, και έμεινε λίγος χώρος για την C++, ίσως για τους λάτρεις του ρετρό!


Η C++ είναι γλώσσα βασιλιάς αλλά την δουλειά την κάνουν άλλες γλώσσες!

ΓΚ
Και καλό ξεμπέρδεμα με το νέο LockDown..

Νίκος Αδαμόπουλος

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

bugman

Μια γεύση από C++ (αν δεν περιέχει το μάθημα τέτοια στοιχεία, τότε θα μιλάμε για προγραμματισμό στυλ ΑΕΠΠ σε πανεπιστήμιο).

Διάλεξα ένα θέμα από κώδικα στο rosseta code που δείχνει πώς στη C++, με χρήση αντικειμένου, να ορίσεις επιλογή παραμέτρου μεταξύ ακέραιας και πραγματικής.
Το πρόγραμμα το έβαλα εδώ και τρέχει κατευθείαν (είναι repl), δεν χρειάζεται να κατεβάσει κανείς τον compiler.
https://repl.it/@GeorgePhilip1/TroubledParchedServicepack#main.cpp

Ορίζεις int operator()(int x) και float operator()(float x), οπότε το αντικείμενο, κλάσης Acc, που λέγεται a, ως a(10) βάζει 10 ακέραιο και γυρνάει το συνολικό άθροισμα (σε ότι έχουμε βάλει) ως ακέραια τιμή, ενώ ως a(2.3f) βάζει το 2.3 πραγματικό και γυρνάει to άθροισμα ως πραγματική τιμή!

Ο κώδικας, πάρθηκε από εδώ http://www.rosettacode.org/wiki/Accumulator_factory#C.2B.2B


evry

Αν θέλει να μάθει από την αρχή C++ και είναι αρχάριος το βιβλίο των Deitel είναι το καλύτερο, είναι πολύ μεγάλο και αναλυτικό, πλατιάζει πολύ, αλλά μπορεί από εκεί να μάθει C++ κάποιος όχι πολύ δυνατός μαθητής/φοιτητής και μάλιστα πολύ καλά.
Τώρα αν απλά πρέπει να επιλέξει ένα βιβλίο για την βιβλιοθήκη του συμφωνώ και εγώ με τον Παναγιώτη, Stroustrup ανεπιφύλακτα. Είναι προχωρημένο, πρέπει να έχεις γράψει κώδικα σε C++ για να το καταλάβεις και να το εκτιμήσεις. Αξίζει όμως τον κόπο.
Αν τώρα κάποιος έχει και άλλες ανησυχίες για την C++ προτείνω το Design and Evolution of C++, πάλι του Stroustrup .
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

dpa2006

Παράθεση από: Νίκος Αδαμόπουλος στις 05 Νοε 2020, 07:31:47 ΜΜ
Έχει κανείς άποψη για κάποιο/κάποια από τα παρακάτω βιβλία;

Η ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++, BJARNE STROUSTRUP
Η ΓΛΩΣΣΑ C++ ΣΕ ΒΑΘΟΣ, ΝΙΚΟΣ Μ. ΧΑΤΖΗΓΙΑΝΝΑΚΗΣ
C++ Προγραμματισμός, 9η Εκδ., Paul J. Deitel, Harvey M. Deitel
Προγραμματισμός με τη C++, 2η Έκδοση, Stroustrup Bjarne

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


Του Bjarne Stroustrup τα βιβλία είναι στριφνά και όχι για αρχή.
Για αρχή προτείνεται των Deitel.
Θα πρότεινα την αγγλική έκδοση των Deitel για να έχει και την πιο πρόσφατη έκδοση.
Έπειτα ας ασχοληθεί και με τα υπολοιπα.
Computer science (abbreviated CS or CompSci) is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical processes (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded in bits and bytes in a computer memory or transcribed engines and protein structures in a human cell.source:http://en.wikipedia.org/wiki/Computer_science