Εκμάθηση της C++

Ξεκίνησε από accordionman, 01 Μαΐου 2013, 03:29:12 ΜΜ

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

striker

Παράθεση από: itt στις 25 Ιουν 2013, 06:42:10 ΜΜ
Μπορείς να ξεκινήσεις μα κάτι πιο απλό,αντί C++.Ἀλλα άμα έχεις αυτές τις δύο "αδυναμίες"που λες,καλύτερα να ασχοληθείς με τίποτα άλλο,no offense.

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

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

Τέλος πάντων,θα ξεκινήσω την C++ και θα δω τι θα καταφέρω...

itt

Δεν εννοούσα ότι έχεις πρόβλημα στο να γράφεις κώδικα,εννοούσα πώς έχεις πρόβλημα στο να διαβάζεις 10 πράγματα θεωρητικά στο γιατί δεν δουλεύει ο κώδικας  :P Εμείς πάντως εδώ είμαστε,άμα μπορούμε να σε βοηθήσουμε σε κάτι θα το κάνουμε.

striker

Παράθεση από: itt στις 25 Ιουν 2013, 07:19:23 ΜΜ
Δεν εννοούσα ότι έχεις πρόβλημα στο να γράφεις κώδικα,εννοούσα πώς έχεις πρόβλημα στο να διαβάζεις 10 πράγματα θεωρητικά στο γιατί δεν δουλεύει ο κώδικας  :P Εμείς πάντως εδώ είμαστε,άμα μπορούμε να σε βοηθήσουμε σε κάτι θα το κάνουμε.

Μόλις είδα το edit που έκανες.Άρθρα και σχετικές ιστοσελίδες μπορώ να διαβάσω.Αυτό που δεν μπορώ να διαβάσω είναι ένα PDF βιβλίο των 500 σελίδων.Πιστεύω ότι υπάρχει διαφορά άναμεσα σε αυτές τις δυο περιπτώσεις.

itt

Εχω και εγώ πρόβλημα,αλλά για αυτό υπάρχουν τα ebook readers(π.χ kindle).Εναλλακτικά,μπορείς να τα εκτυπώνεις.Είναι πιο οικονομικό απο το να τα αγοράζεις(ακόμα και το kindle είναι πιο οικονομικό),δεδομένου πώς ένα καλό βιβλίο απο την Addison-Wesley θα πάει κοντά στα 40 ευρώ.

itt

Επίσης,έψαξα λίγο για το βιβλίο του Χατζηγιαννάκη,αναφέρεσαι σε αυτό; http://www.klidarithmos.gr/main/index.php?dispatch=products.view&product_id=33159


ΥΓ. Λάθος,είδα πώς έχει βγάλει και κάτι για C++,θα ψάξω να το βρω.

evry

Κάθε χρόνο φτιάχνω ένα γκρουπάκι μαθητών στο σχολείο και κάνουμε μαθήματα προετοιμασίας για τον πανελλήνιο διαγωνισμό πληροφορικής. Από την εμπειρία μου όλα αυτά τα χρόνια έχω καταλήξει στο γεγονός ότι το καλύτερο για κάποιον που θέλει να μάθει C++ αλλά δεν ξέρει C, είναι να ξεκινήσει με το C κομμάτι της C++.
Το καλύτερο βιβλίο για να το κάνεις αυτό από το 0 είναι κατά τη γνώμη μου το C++ How To Program, Deitel & Deitel.
Υπάρχει μεταφρασμένο και στα ελληνικά, αλλά καλύτερα να πάρεις το Αγγλικό. τα αγγλικά του είναι απλά , δεν θα έχεις πρόβλημα.

Επίσης το βιβλίο του Roberts ποπυ είχα αναφέρει σε άλλο post είναι πολύ καλό για C, και μου αρέσει γιατί σε εισάγει και σε καποιες βασικές έννοιες αλγοριθμικής , αν δεν βιάζεσαι τόσο να πας στη C++. Δεν θα σου κάνει κακό να δουλέψεις λίγο σε C και να μεταβείς μετά στη C++. Έτσι θα εκτιμήσεις περισσότερο τη C++ όταν φτάσεις εκεί και λιγότερο τη Java  ;)  όταν έρθει η ώρα της
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

itt

ΠαράθεσηΕπίσης το βιβλίο του Roberts ποπυ είχα αναφέρει σε άλλο post είναι πολύ καλό για C, και μου αρέσει γιατί σε εισάγει και σε καποιες βασικές έννοιες αλγοριθμικής , αν δεν βιάζεσαι τόσο να πας στη C++. Δεν θα σου κάνει κακό να δουλέψεις λίγο σε C και να μεταβείς μετά στη C++. Έτσι θα εκτιμήσεις περισσότερο τη C++ όταν φτάσεις εκεί και λιγότερο τη Java    όταν έρθει η ώρα της

Δεν νομίζω να έχει πρόβλημα.Για τόσο trivial κώδικα,οι αλλάγες που θα χρειαστεί να κάνει για να γίνει compiled με C++ compiler θα είναι ελάχιστες.Όπως είπες και εσύ,μπορεί απλούσταστα να περιοριστεί σε ένα subset της C++ που είναι κοντά στη C.

Άμα θέλει να μάθει κάποια στοιχειώδη αλγοριθμικά πράγματα,δεν χρειάζεται να ασχοληθεί καν με C,C++,D και άλλα τέτοια χαριτωμένα.Δεν θέλει java;C# μέσω monodevelop,ακόμα και η pascal που ξέρει τον καλύπτει για τους αλγόριθμους.Γιατί να θέλει κάποιος να ξεκινήσει να μαθαίνει προγραμματισμό με την C++ είναι beyond me που λένε και οι Άγγλοι.</rant>

evry

Παράθεση από: itt στις 25 Ιουν 2013, 10:20:43 ΜΜ
Όπως είπες και εσύ,μπορεί απλούσταστα να περιοριστεί σε ένα subset της C++ που είναι κοντά στη C.
Το καλύτερο κατά τη γνώμη μου είναι αυτό. Δηλαδή χρησιμοποιείς για έξοδο cin, cout, δεν μιλάς καθόλου για pointers, δεσμεύεις μνήμη με new/delete, και από εκεί και πέρα το πόσο βαθιά θα πας είναι δικό σου θέμα. Την τακτική αυτή τη χρησιμοποιώ τα τελευταία 2 χρόνια που κάνω C++ στην Β Λύκειου στο μάθημα της επιλογής. (όταν λέω κάνω C++ προφανώς δεν κάνω αντικειμενοστρεφή, αλλά αυτό το subset που λέμε. Τα παιδιά όμως τρελαίνονται αν τους πεις "θα κάνουμε C++" και μπορείς να τους κρατήσεις για κάποια μαθήματα με απλά προγραμματάκια, τα οποία τους δίνεις έτοιμα και τα παιδιά τα τροποποιούν)

Παράθεση
Γιατί να θέλει κάποιος να ξεκινήσει να μαθαίνει προγραμματισμό με την C++ είναι beyond me που λένε και οι Άγγλοι.</rant>

Ας πούμε ότι κάποιος θέλει να ξεκινήσει προγραμματισμό. Προφανώς κάποια στιγμή θα χρειαστεί να εμπλακεί με κάποια από τις C, C++, Java, θα τις βρει μπροστά του. Για ποιο λόγο λοιπόν να μάθει Pascal ? δεν του προσφέρει τίποτα. Το μόνο θετικό της Pascal είναι ότι μοιάζει λίγο στη σύνταξη με τη ΓΛΩΣΣΑ. Έτσι ξεκινώντας με αυτό το υποσύνολο της C++ που λέω, και μαθαίνει στοιχειώδη προγραμματισμό αλλά και "είναι πιο κοντά" στην δομή/σύνταξη αυτών των γλωσσών που είναι παράγωγα της C.

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

Για να συνοψίσω η γνώμη μου είναι ότι αν κάποιος θέλει να ασχοληθεί με τον προγραμματισμό θα πρέπει να δει τουλάχιστον μια γλώσσα από την οικογένεια C#, C++, Java (με προτιμότερη τη C++) και μια script γλώσσα όπως javascript ή python με προτίμηση στην python.

ΥΓ. Παρατηρώ ότι αποτρέπεις τον κόσμο να ασχοληθεί με τη C. Γιατί   ???
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

itt

ΠαράθεσηΑς πούμε ότι κάποιος θέλει να ξεκινήσει προγραμματισμό. Προφανώς κάποια στιγμή θα χρειαστεί να εμπλακεί με κάποια από τις C, C++, Java, θα τις βρει μπροστά του. Για ποιο λόγο λοιπόν να μάθει Pascal ? δεν του προσφέρει τίποτα. Το μόνο θετικό της Pascal είναι ότι μοιάζει λίγο στη σύνταξη με τη ΓΛΩΣΣΑ. Έτσι ξεκινώντας με αυτό το υποσύνολο της C++ που λέω, και μαθαίνει στοιχειώδη προγραμματισμό αλλά και "είναι πιο κοντά" στην δομή/σύνταξη αυτών των γλωσσών που είναι παράγωγα της C.

Μιλώντας για κάποιον που δεν ξέρει τίποτα πέρα απο την λογική της ΓΛΩΣΣΑΣ,μου φαίνεται αρκετά αποδεκτό να δει pascal.Υπάρχει η delphi,υπάρχουν διάφορα.Γενικά δεν θα το συνιστούσα σε κάποιον αλλά δεν είναι και τόσο εξωπραγματικό.Στους ΗΜΜΥ αρκετά χρόνια κάναν pascal.

ΠαράθεσηΕπίσης αυτό το υποσύνολο της C++ είναι και η καλύτερη επιλογή για όποιον θέλει να ασχοληθεί με τους διαγωνισμούς πληροφορικής.
Δεν διαφωνώ,στο code jam γράφανε C++ με STL,άμα ξέρεις τι κάνεις,θα έχεις απίστευτο αποτέλεσμα.Δεν ξέρω και πώς λειτουργούν οι συγκεκριμένοι διαγωνισμοί που ανέφερες,άμα έχουν περιορισμό στο performance προφανώς και θα αξίζει C ή C++.Αλλά εντάξει,στα δύο άτομα που είχα γράψει σε αυτό το νήμα,δεν νομίζω να τους απασχολούσε σε πρώτη φάση η συμμετοχή σε διαγωνισμό.

ΠαράθεσηΓια να συνοψίσω η γνώμη μου είναι ότι αν κάποιος θέλει να ασχοληθεί με τον προγραμματισμό θα πρέπει να δει τουλάχιστον μια γλώσσα από την οικογένεια C#, C++, Java (με προτιμότερη τη C++) και μια script γλώσσα όπως javascript ή python με προτίμηση στην python.

Γιατί να μην ασχοληθεί με C# και να προτιμήσει C++;Επειδή είναι ΜS;Είναι σε κάθε περίπτωση πιο rewarding,ειδικά τώρα που υπάρχει και το VS express και μπορείς να κάνεις πολύ πιο εύκολα πράγματα που στην C++ σου βγαίνει το λάδι να τα γράψεις(και να τα κάνεις debugg).

ΠαράθεσηΥΓ. Παρατηρώ ότι αποτρέπεις τον κόσμο να ασχοληθεί με τη C. Γιατί   
Δεν αποτρέπω γενικά κόσμο.Αποτρέπω αυτούς που θέλουν να ασχοληθούν με προγραμματισμό και δεν έχουν εμπειρία.Άμα θες να γράψεις κάτι για linux και να το κολλήσεις στον kernel,φυσικά και θα σου πω να γράψεις C.Εξαρτάται απο το τι θες να κάνεις.Η C και η C++,δεν μου φαίνεται πώς προσφέρουν κάτι σε κάποιον που ξεκινάει.Το έχω ξαναγράψει.Θα κάτσουν να μάθουν λεπτομέρειες που αρχικά,δεν θα έπρεπε να τους απασχολούν.Λεπτομέρειες,που δεν έχουν σχέση με το πρόβλημα που επιλύουν.Πιστεύω πώς είναι πιο ευχάριστο να προσπαθήσεις να λύσεις το knight tour,από το να προσπαθείς να λύσεις γιατί η συνάρτηση δεν δουλεύει,επειδή δεν αρχικοποιήθηκε ο τάδε pointer ή επειδή κάνει mutate το state της τάδε δομής.

Ακόμα και η java,που θα προσπαθούσα να την αποφύγω σε κάθε περίπτωση,σε βοηθάει να εστιάσεις εκεί που θες,τις περισσότερες φορές.Αλλά δεν έχω πρόβλημα με τη C.Εντάξει,να γράφεις wrappers πάνω στα ugly C ΑPIs δεν είναι και ότι πιο ευχάριστο,αλλά κάποτε έπρεπε να γίνει.Κατα τη γνώμη μου για έναν αρχάριο python > C(και C++) .


(Έχω πρόβλημα με την java πάντως  ;D )


striker

http://www.papasotiriou.gr/product/c-how-to-program-264220

Κύριε Ευριπίδη,αυτό το βιβλίο λέτε; Ωραία, άμα είναι θα το αγοράσω στα αγγλικά(αφού είναι καλύτερο).
Το πρόβλημα είναι ότι δεν έχω τα χρήματα για την άμεση αγορά του, οπότε θα ξεκινήσω με το βιβλίο του Χατζηγιαννάκη.

itt:Έχω διαβάσει ότι η python είναι η κατάλληλη γλώσσα για να ξεκινήσει κάποιος αρχάριος.Άμα μπορείτε, στείλτε μου κάποιο βιβλίο.Φυσικά προτεραιότηταέχει η C#/C++, οπότε με την python θα ασχοληθώ αργότερα.

evry

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

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

http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html

Μια άλλη λύση είναι να δεις μαθήματα πανεπιστημιακών τμημάτων σε C, C++ και να κατεβάσεις το υλικό.

Έχω ανεβάσει κάποια στη σελίδα μου εδώ
users.sch.gr/evripides/pdp.html

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

https://www.coursera.org/course/interactivepython
https://www.coursera.org/course/programming1
https://www.coursera.org/course/cs101
https://www.edx.org/course/harvard-university/cs50x/introduction-computer-science/254
https://www.edx.org/course/mit/6-00x/introduction-computer-science/601

πολύ Python όπως βλέπεις. Δες τι σου ταιριάζει, γράψου και περίμενε να ξεκινήσουν

@itt
Νομίζω ότι αυτό το μάθημα είναι ότι πρέπει  :D  C++ For C Programmers


What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

itt

#41
Παράθεση@itt
Νομίζω ότι αυτό το μάθημα είναι ότι πρέπει    C++ For C Programmers

To coursera είναι πολύ καλό site,παρακολουθώ το μάθημα του Odersky για την Scala και κλαίω που δεν το είχα πάρει στην ώρα του,για την πιστοποίηση.Με τη Scala,δεν θα ξαναγράψω ούτε μιση γραμμή snippet java στη ζώη μου  ;)

Το μάθημα(και η Scala φυσικά) είναι καταπληκτικό,ξαναμαθαίνεις να προγραμματίζεις και το χαίρεσαι.Ακόμα και στη C++ κάνω refactor ότι μπορώ με functional λογική πλέον.

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

Δεν υπάρχει καλό βιβλίο για C++ σε καλή τιμή.Της Addison-Wesley που είναι με διαφορά τα καλύτερα,οι τιμές είναι εξωπραγματικές.Αλλά ας πούμε εντάξει,αυτό του Χατζηγιαννάκη δεν είναι δυνατόν ο Κλεδάριθμος να το δίνει 65 ευρώ,δεν πάνε καλά.

itt

#42
Παράθεσηitt:Έχω διαβάσει ότι η python είναι η κατάλληλη γλώσσα για να ξεκινήσει κάποιος αρχάριος.Άμα μπορείτε, στείλτε μου κάποιο βιβλίο.Φυσικά προτεραιότηταέχει η C#/C++, οπότε με την python θα ασχοληθώ αργότερα.

Tώρα είδα ότι το είχες γράψει αυτό.Η python είναι εξαιρετική επιλογή για να ξεκινήσεις.Ορίστε ένα πολύ καλό βιβλίο,είναι και free.

Άμα θες C#,αυτό είναι ότι καλύτερο.Ψάξε άμα δικαιούσε ως φοιτητής να κατεβάσεις το Visual Studio(το 10) από το Spark,αλλιώς κατέβασε το Visual Studio Express.

itt


striker

Σας ευχαριστώ και τους δυο για το υλικό που μου δώσατε.Ήδη έχω ξεκινήσει την Python.Άμα έχω καμιά απορία, θα την διατυπώνω εδώ.