Αποστολέας Θέμα: Εκμάθηση της C++  (Αναγνώστηκε 15476 φορές)

itt

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 429
  • Real stupidity beats ΑΙ any time
Απ: Εκμάθηση της C++
« Απάντηση #15 στις: 03 Μάι 2013, 10:40:11 μμ »
Εμ και επειδή κάτι θα ξέρω περισσότερο απο σένα,προφανώς και υπάρχει λόγος που σε αποτρέπω απο τη C++.Δεν είμαι καθηγήτης σου,ούτε σε αυτό το ύφος σου μιλάω.Στο λέω καθάρα σαν soft dev και μιλώντας σε έναν εν δυνάμει προγραμματιστή.Άμα θες λάθος επιλογές,απλά πήγαινε να παρακολουθούσεις οποιοδήποτε προπτυχιακό τμήμα CS,που δεν κάνει εισαγωγή στον προγραμματισμό με Pascal.

accordionman

  • Οπαδός
  • **
  • Μηνύματα: 19
Απ: Εκμάθηση της C++
« Απάντηση #16 στις: 04 Μάι 2013, 11:12:59 πμ »
Μάλιστα! Θα δώ τι θα κάνω! Σε ευχαριστώ για τον χρόνο σου!

dimitrios67

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 109
Απ: Εκμάθηση της C++
« Απάντηση #17 στις: 06 Μάι 2013, 08:20:00 μμ »
η προσωπική μου άποψη ειναι να μαθεις C (οπωσδηποτε...), αρχικα....
Μετα για να "πας" σε Object Oriented μπορεις να πας σε Java........
Η ΓΛΩΣΣΑ εχει σχεση με την Pascal, και θα πρεπει να μαθει κανεις pointers κλπ που χρειαζεται η C...

Για βιβλία θα σου προτεινα "Absolute C++" kai "Absolute Java" και τα δυο του Savitch

Στη C θα σου προτεινα αυτο... http://www.amazon.com/dp/0393979504/?tag=stackoverfl08-20,
Το "The C Programming Language" (K&R) νομιζω οτι ΔΕΝ ειναι το καλύτερο textbook....

Ελπιζω να βοήθησα......

itt

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 429
  • Real stupidity beats ΑΙ any time
Απ: Εκμάθηση της C++
« Απάντηση #18 στις: 06 Μάι 2013, 08:51:32 μμ »
Παράθεση
η προσωπική μου άποψη ειναι να μαθεις C (οπωσδηποτε...), αρχικα....
Μετα για να "πας" σε Object Oriented μπορεις να πας σε Java........

Μπορείς να μας συνοψίσεις τους λόγους που πρέπει οπωσδήποτε να μάθει C;Για πιο λόγο θα έπρεπε να προτιμήσει τη C από την python,την jruby η ακόμα και από την pascal;

dimitrios67

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 109
Απ: Εκμάθηση της C++
« Απάντηση #19 στις: 07 Μάι 2013, 12:28:03 μμ »
Το "οπωσδήποτε" το στηρίζω στο γεγονός ότι (σχεδόν) σε όλα τα Πανεπιστήμια του κόσμου, η εισαγωγική γλώσσα για τον προγραμματισμό είναι η C.
Από την προσωπική μου εμπειρία, λέω ότι με τη C κανείς, μαθαίνει όχι μόνο τις αλγοριθμικές δομές, τον τμηματικό προγραμματισμό, αλλά επίσης θεωρώ ΑΠΑΡΑΙΤΗΤΟ ο φοιτητής, αλλά και καθένας που θέλει να ασχοληθεί με τον προγραμματισμό να ξέρει από pointers, κάτι που μπορεί να το κάνει με τη C. (και όχι π.χ. με τη Java…)

Δυστυχώς δεν ξέρω Python kai jruby, και έτσι δεν μπορώ να απαντήσω επ’ αυτών.
Όσο αφορά όμως την Pascal, τα επιχειρήματα υπέρ της C, νομίζω ότι είναι τόσο «προφανή» που δεν είναι ανάγκη καν να αναφερθούν…

Σίγουρα θα βοηθούσε να καταθέσουν την άποψή τους και άλλα μελή του φόρουμ που είναι καλοί γνώστες των γλωσσών προγραμματισμού…

PS: χωρίς να θέλω να είναι αδιάκριτος, ποια η σχέση σου «ακαδημαϊκά» και επαγγελματικά με την πληροφορική?

itt

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 429
  • Real stupidity beats ΑΙ any time
Απ: Εκμάθηση της C++
« Απάντηση #20 στις: 07 Μάι 2013, 12:46:33 μμ »
Παράθεση
Το "οπωσδήποτε" το στηρίζω στο γεγονός ότι (σχεδόν) σε όλα τα Πανεπιστήμια του κόσμου, η εισαγωγική γλώσσα για τον προγραμματισμό είναι η C.

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

Παράθεση
Από την προσωπική μου εμπειρία, λέω ότι με τη C κανείς, μαθαίνει όχι μόνο τις αλγοριθμικές δομές, τον τμηματικό προγραμματισμό, αλλά επίσης θεωρώ ΑΠΑΡΑΙΤΗΤΟ ο φοιτητής, αλλά και καθένας που θέλει να ασχοληθεί με τον προγραμματισμό να ξέρει από pointers, κάτι που μπορεί να το κάνει με τη C. (και όχι π.χ. με τη Java…)

Το θέμα δεν είναι να μάθει pointers που ακόμα και σε enterpise-level C++ δεν χρησιμοποιούνται σε raw μορφή.Το θέμα είναι να επιλύει το πρόβλημα που έχει στα χέρια ή να αναπτύξει τον αλγόριθμο που θέλει.Όπως ήδη έγραψα με άλλες γλώσσες 
Παράθεση
Μπορείς να εστιάσεις στο πρόβλημα και όχι να πολεμάς με συγκεκριμένες γλωσσικές δομές.
κάτι που στο οποίο οι pointers σαφώς και θα είναι τροχοπεδή.

Παράθεση
Δυστυχώς δεν ξέρω Python kai jruby, και έτσι δεν μπορώ να απαντήσω επ’ αυτών.
Δεκτόν,αλλά αντιλαμβάνεσαι πώς μια απάντηση απο κάποιον που δεν προτείνει εναλλακτικἠ είναι τουλάχιστον biased.

Παράθεση
Όσο αφορά όμως την Pascal, τα επιχειρήματα υπέρ της C, νομίζω ότι είναι τόσο «προφανή» που δεν είναι ανάγκη καν να αναφερθούν…
Προφανή;Σοβαρολογείς;Δεν απευθύνεσαι μόνο σε μένα αλλά και στο νηματοθέτη,ο οποίος είναι μαθητής.Αυτός τι προφανές πρέπει να καταλάβει;Η pascal είναι πιο κοντά σε αυτό που κάνει ως μαθητής κάτι που απο μόνο του στέκει ώς επιχείρημα υπέρ της.Plus υπάρχει και η Delphi οπότε και μπορείς να προχωρήσεις σε αυτό
Παράθεση
PS: χωρίς να θέλω να είναι αδιάκριτος, ποια η σχέση σου «ακαδημαϊκά» και επαγγελματικά με την πληροφορική?
Δεν πιστεύω πώς έχει σχέση με το θέμα,δεδομένου πώς τεκμηριώνω της απαντήσεις μου.Οπότε και προφανώς μπορεί οποιοσδήποτε να αντικρούσει αυτές.Δεν υπάρχει περίπτωση σε αυτόν τον χώρο να επικαλεστώ την αυθεντία μου οπότε μην οδηγείς τη συζήτηση εκεί που δεν πρέπει.
« Τελευταία τροποποίηση: 07 Μάι 2013, 02:13:06 μμ από itt »

itt

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 429
  • Real stupidity beats ΑΙ any time
Απ: Εκμάθηση της C++
« Απάντηση #21 στις: 07 Μάι 2013, 03:00:39 μμ »
Αλλά ας αναπτύξω γιατί η C δεν είναι καλή ιδέα για αρχάριους.Θα επικεντροθώ αρχικά στο ότι ο νηματοθέτης θέλει να μάθει C++.

Η C++ μπορεί να χαρακτηριστεί ως superset της C.Προσφέρει OO κομμάτι,generic programming είναι γενικά,multiparadigm.Έχει πιο χαλαρούς κανόνες σε κάποια κομμάτια(variable declarations).Φέρει δομές της C,όπως τα structs αλλά σε ένα superset manner.

Αλλά δεν είναι αυστηρό superset.Υπάρχουν πολλές διαφορές και θα αναφέρω ενδεικτικά κάποιες.

Αυτή η δήλωση :

Κώδικας: [Επιλογή]
extern void func();
Είναι διαφορετική στις δύο γλώσσες.Στη C++ αυτή είναι μια συνάρτηση η οποία δεν έχει value return και δεν παίρνει καμμια παράμετρο,οπότε και καλείται για όποιο side-effect έχει.Αλλά στη C είναι μια συνάρτηση η οποία δεν έχει return value αλλά δεν υπάρχει πληροφορία για το argument list της.

Αυτό :

Κώδικας: [Επιλογή]
int *i = malloc(sizeof(int) * 3);
Είναι valid στη C γιατί το standard της επιτρέπει implicit conversion απο void* σε άλλου τύπου pointer.

Στη C++ πρέπει να γίνει expilict cast :

Κώδικας: [Επιλογή]
int *i = static_cast<int*>(malloc(sizeof(int) * 3));

  //Η μήπως να μην μπλέκουμε τα sets oπότε

          int *i = (int*) malloc(sizeof(int)*3);

Επίσης το sizeof(char) είναι διαφορετικό σε κάθε γλώσσα.

Αυτό που θέλω να πω πάντως,είναι πώς με δυσκολία, μπορείς να γράψεις κώδικα που γίνεται compiled και στις δύο γλώσσες.Δεν υπάρχει κανένα πλεονέκτημα απο το να μάθεις C πρώτα.Επίσης υπάρχουν πάρα πολλά ιδιώματα (acceptable) της C,που στη C++ αποτελούν κακό practise.Preprocessor abuse,αστόχαστη χρήση primitive pointers,τα semantics των structs.

Καλύτερα να μάθει Objective C,αυτή είναι κανονιστικό superset της C(Οχι της C99 όμως).


Τώρα ειδικά γιατί όχι C :

Mου έρχονται πάρα πολλά πράγματα στο μυαλό,θα προσπαθήσω να στοιχειοθετήσω μερικά.Τα strings στη C είναι POD arrays(Με end-marker).Χρειάζονται functions για βασικές λειτουργίες επί των strings.Τα arrays σε function calls γίνονται decayed σε pointers.Υπάρχει χρήση jumps για κάτι σαν εμβρυακό "exception handling".Μπορώ να αναλύσω πιο δεξιοδικά άμα το ζητήσει κάποιος,αλλά υποθέτω προς το παρόν πώς επαρκούν αυτά.

Η C θα σου δώσει ένα abstraction layer πάνω απο ένα εύρος αρχιτεκτονικών επεξεργαστών.Γιατί απλούστατα να μην μάθεις μια high-level γλώσσα και χρήσιμα paradigms;Άμα κάποιος θελήσει να εμβαθύνει στο υλικό,μαθαίνει assembly RISC αρχιτεκτονικής,δεν χάνει το χρόνο του πάνω σε abstractions.

Eδώ μιλάμε για αρχάριους όμως.Δεν βλέπω κανένα λόγο να μάθει C αρχικά.Όταν αποφασίσει ότι χρειάζεται να κατανοήσει κάποια πιο low-level στοιχεία,ας προσπαθήσει C++ ή έστω και C(Κάτι που και πάλι δεν το συνιστώ).
Δεν μαθαίνεις κάποιον να κολυμπάει πετώντας τον στα νερά με τους καρχαρίες.Τον βάζεις στα ρηχά με μπρατσάκια.

Ορίστε και ένα κείμενο απο κάποιον που μπορείς να εμπιστευτείς  τη σχέση του με το computer science.


« Τελευταία τροποποίηση: 08 Μάι 2013, 03:14:25 μμ από itt »

striker

  • Οπαδός
  • **
  • Μηνύματα: 15
Απ: Εκμάθηση της C++
« Απάντηση #22 στις: 25 Ιούν 2013, 04:09:15 μμ »
Παίδια θέλω να μάθω c++.Το βιβλίο που έχω είναι  Η γλώσσα c++ σε βάθος του Χατζηγιαννάκη.Το πρόβλημα είναι ότι δεν έχω τις κατάλληλες βάσεις για να ξεκινήσω την μελέτη της c++.Ξέρω μόνο βασικές γνώσεις της pascal-την έδωσα ως εξεταζόμενο μάθημα στις πανελλήνιες.Μου πρότειναν να μάθω c και μετά να πάω στην c++.

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


itt

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 429
  • Real stupidity beats ΑΙ any time
Απ: Εκμάθηση της C++
« Απάντηση #23 στις: 25 Ιούν 2013, 05:46:54 μμ »
Δεν χρειάζεται να διαβάσεις C για να μάθεις C++.

Τα  reference βιβλία είναι :


Για αρχάριους,θα πρότεινα το Programming:Principles and Practice Using C++,του Bjarne Stroustrup,ο οποίος δημιούργησε και την γλώσσα.

Bιβλία για καλές πρακτικές  :

Effective C++
Effective STL


Πιο προχωρημένα :


Mερικά πολύ προχωρημένα είναι τα Modern C++ Design:Generic Programming and Design Patterns Applied(Πάρα πολύ καλό βιβλίο,αλλά προϋποθέτει αρκετή εξοικείωση με τη γλώσσα και με κάποια απο τα παραπάνω βιβλία) και το C++ Concurrency in Action:Practical Multithreading(Τhread library,atomics library,το C++ memory model,locks,mutexees και διάφορα θέματα debugging multithreaded εφαρμογών).

Υπάρχουν και καλά(προχωρημένα όμως) βιβλία για TMP σε C++,όπως το Advanced C++ Metaprogramming
.

Όπως είπα δεν χρειάζεται να μάθεις C για να προχωρήσεις στη C++.Σε αυτό το νήμα έχει γίνει μια συζήτηση και είχα εξηγήσει γιατί δεν είναι και ιδαίτερα καλή ιδέα να ασχοληθείς με την C++ σαν αρχάριος anyway.

striker

  • Οπαδός
  • **
  • Μηνύματα: 15
Απ: Εκμάθηση της C++
« Απάντηση #24 στις: 25 Ιούν 2013, 06:08:35 μμ »
Δηλαδή μου προτείνεις να πάω από την pascal κατευθείαν σε c++;

Για το βιβλίο του Χατζηγιαννάκη,τι έχεις να πεις;

itt

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 429
  • Real stupidity beats ΑΙ any time
Απ: Εκμάθηση της C++
« Απάντηση #25 στις: 25 Ιούν 2013, 06:16:36 μμ »
Παράθεση
Δηλαδή μου προτείνεις να πάω από την pascal κατευθείαν σε c++;

Nαι,στο προτείνω.Το ότι η C++ έχει διάφορα paradigms,δεν σημαίνει πώς θα κάτσεις να τα μάθεις όλα ταυτόχρονα.Id est,δεν χρειάζεται να μάθεις procedural και OO ταυτόχρονα.

Παράθεση
Για το βιβλίο του Χατζηγιαννάκη,τι έχεις να πεις;

Δεν το έχω διαβάσει,αλλά αυτά τα βιβλία που σου έγραψα είναι από τα καλύτερα που υπάρχουν για C++.Γενικά δεν διαβάζω τίποτα από Έλληνες,πέρα απο τα βιβλία του Παπαδημητρίου,οπότε δεν μπορώ να σου προτείνω κάποιο ελληνικό.

Keep Growing

  • Ομάδα διαγωνισμάτων 2011
  • *
  • Μηνύματα: 2023
  • Παναγιώτης Πέντσας Γυμνάσιο Σορωνής
    • Περισσότερες πληροφορίες για μένα
Απ: Εκμάθηση της C++
« Απάντηση #26 στις: 25 Ιούν 2013, 06:23:04 μμ »
Ο Έρωτας (του Εκπ/κου Πληροφορικού) στ' αλώνια της καλδέρας (του υπνωτισμού).

itt

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 429
  • Real stupidity beats ΑΙ any time
Απ: Εκμάθηση της C++
« Απάντηση #27 στις: 25 Ιούν 2013, 06:34:46 μμ »
Αρκετά παλιό,αλλά δεν μου φαίνεται άσχημο για εισαγωγή.

striker

  • Οπαδός
  • **
  • Μηνύματα: 15
Απ: Εκμάθηση της C++
« Απάντηση #28 στις: 25 Ιούν 2013, 06:37:27 μμ »
Nαι,στο προτείνω.Το ότι η C++ έχει διάφορα paradigms,δεν σημαίνει πώς θα κάτσεις να τα μάθεις όλα ταυτόχρονα.Id est,δεν χρειάζεται να μάθεις procedural και OO ταυτόχρονα.

Δεν το έχω διαβάσει,αλλά αυτά τα βιβλία που σου έγραψα είναι από τα καλύτερα που υπάρχουν για C++.Γενικά δεν διαβάζω τίποτα από Έλληνες,πέρα απο τα βιβλία του Παπαδημητρίου,οπότε δεν μπορώ να σου προτείνω κάποιο ελληνικό.

Ωραία,θα κάνω μια προσπάθεια- αν και δεν νιώθω έτοιμος.

Θα ξεκινήσω με το βιβλίο που έχω.Καλώς-κακώς έχω δυο αδυναμίες: 1)Δεν μπορώ μελετήσω μέσω του υπολογιστή
2) Δεν με "βολεύουν" τα ξενόγλωσσα βιβλία.

itt

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 429
  • Real stupidity beats ΑΙ any time
Απ: Εκμάθηση της C++
« Απάντηση #29 στις: 25 Ιούν 2013, 06:42:10 μμ »
Παράθεση
Θα ξεκινήσω με το βιβλίο που έχω.Καλώς-κακώς έχω δυο αδυναμίες: 1)Δεν μπορώ μελετήσω μέσω του υπολογιστή
2) Δεν με "βολεύουν" τα ξενόγλωσσα βιβλία.

Μπορείς να ξεκινήσεις μα κάτι πιο απλό,αντί C++.Ἀλλα άμα έχεις αυτές τις δύο "αδυναμίες"που λες,καλύτερα να ασχοληθείς με τίποτα άλλο,no offense.



Edit :

Δεν ήθελα να φανώ συγκαταβατικός ή κάτι τέτοιο.Μαθαίνοντας μια programming γλώσσα,θα χρειαστεί να περάσεις πολύ χρόνο σε sites,blogs άρθρα,χρόνο δηλαδή μελέτης μέσω του υπολογιστή.Τα περισσότερα θα είναι στα αγγλικά.Θα μπορούσες να βρεις καλά βιβλία στα ελληνικά,μεταφράσεις ίσως καλών ξενόγλωσσων τίτλων,αλλά άμα έχεις τόσο πρόβλημα να αφιερώνεις χρόνο μελέτης πάνω απο τον υπολογιστή,ίσως δεν αξίζει και να κάθεσαι να παιδεύεσαι.Αυτό εννοούσα,προς αποφυγή παρεξηγήσεων.