Αρχάριος C++ προγραμματιστής : Αξίζει η C?

Γενικά θέματα για το διαγωνισμό. Ερωτήσεις, προτάσεις και ό,τι άλλο ταιριάζει.
Απάντηση
George
Δημοσιεύσεις: 7
Εγγραφή: Παρ Οκτ 12, 2018 6:20 pm

Αρχάριος C++ προγραμματιστής : Αξίζει η C?

Δημοσίευση από George »

Γεια σας.
Είμαι νέο μέλος σε αυτό το forum.
Άρχισα να ασχολούμαι με τον προγραμματισμό (και, συγκεκριμένα, με c++) πριν λιγότερο από ένα χρόνο (άρχισα με αυτήν την ιστοσελίδα: https://www.learncpp.com/, διάβασα για την διασκέδαση μου για λίγο καιρό μέχρι και το chapter 2, το παράτησα, και πριν από ένα μήνα το ξαναέκανα pick-up, αυτή τη φορά πιο σοβαρά, και έχω φτάσει μέχρι το chapter 7).
Θεωρώ τον εαυτό μου αρχάριο από κάθε άποψη (και γνώσης και εμπειρίας), καθώς δεν έχω σχεδόν καμία σχέση με τον προγραμματισμό πέρα από αυτό το site. Περιττό να πω ότι δεν γνωρίζω ελληνική C++ ορολογία.
Τώρα, για να μπω στο ψητό αυτού του θέματος:
Σκεφτόμουν αφού τελειώσω όλα τα tutorials σε εκείνο το site (μέχρι chapter 18 ή όσο πάει), να δοκιμάσω το χέρι μου στον ΠΔΠ (μετά από περαιτέρω άσkηση και συμβουλές μέσω αυτού του forum, φυσικά).
Ωστόσο, κοίταξα ένα άλλο θέμα όπου ένας άλλος αρχάριος προγραμματιστής ρώτησε ποια γλώσσα (C ή C++, αν θυμάμαι καλά)να επιδιώξει να μάθει για τον ΠΔΠ, και ο κ.Κηπουρίδης του απάντησε πως μικρό μέρος της C++ είναι σημαντικό για ΠΔΠ (STL et.c.) και πως σημαντική είναι η C, και μάλιστα είχε προτείνει κάποιες πηγές για εκμάθηση C.
Εγώ αυτή τη στιγμή αναριωτιέμαι και επανεξετάζω τις βάσεις μου. Τελικά, αν θέλω να ασχοληθώ με τον ΠΔΠ, να παρατήσω την C++ και ό,τι έχω κάνει, να μάθω C, και μετά να επιστρέψω για να μάθω ό,τι υπόλοιπο χρειάζομαι; Ή μπορώ να συνεχίσω την πορεία μου και να μάθω εναλλακτικούς τρόπους;
Side-note: Παρατήρησα ότι αυτό δεν είναι και το πιο ενεργό forum (lol). Αν αυτό είναι λόγω της ύπαρξης ενός άλλου, πιο δημοφιλούς, θα ήθελα πολύ να το γνωρίσω.
Ευχαριστώ εκ των προτέρων!
Άβαταρ μέλους
Κηπουρίδης
Δημοσιεύσεις: 397
Εγγραφή: Παρ Φεβ 05, 2010 5:05 pm

Re: Αρχάριος C++ προγραμματιστής : Αξίζει η C?

Δημοσίευση από Κηπουρίδης »

1) Είμαι στην πολύ ευχάριστη θέση να σου απαντήσω ότι η C είναι ό,τι βλέπεις μέχρι το κεφάλαιο 7! Εκεί ακριβώς που είσαι. Από το 8 και πέρα ξεκινάνε τα στοιχεία της C++ που δε μας χρειάζονται, οπότε μη συνεχίσεις να διαβάζεις από εκείνο το site! Όπως καταλαβαίνεις βέβαια, όλη η C είναι κομμάτι της C++. Αυτό ακριβώς το κομμάτι έχεις μάθει μέχρι στιγμής.
2) Θα σου πρότεινα τώρα να ξεκινήσεις να λύνεις από το hellenico.gr. Μπορεί να υπάρχουν κάποια λίγα πράγματα που δεν ξέρεις ( πχ να χειρίζεσαι αρχεία; ) αλλά μη σε νοιάζει, διάβαζέ τα από τυχαία tutorials όποτε σου προκύπτει κάποιο τέτοιο πρόβλημα.
3) Μην ανησυχείς καθόλου, όλοι άσχετοι ξεκινήσαμε, αν έχεις όρεξη θα προχωρήσεις πολύ!
4) Ό,τι θέλεις εδώ είμαστε. Επειδή πράγματι αυτό το forum είναι στο περίπου σαν να κάνεις instant messaging με εμένα, μπορείς να χρησιμοποιήσεις και το https://www.facebook.com/groups/infopdp
Έχει πολύ κίνηση και απαντάει πολύς κόσμος που ξέρει κιλά!

Καλή αρχή παλίκαρε!
Λύσεις θεμάτων ΠΔΠ: https://pdp-archive.github.io/
Μπούσουλας διαβάσματος ΠΔΠ: http://snf-800715.vm.okeanos.grnet.gr/PDP/
Tutorials: https://kallinikos.github.io/
Επίσημο forum ΠΔΠ: https://www.pdpforum.eu.org/forum/
George
Δημοσιεύσεις: 7
Εγγραφή: Παρ Οκτ 12, 2018 6:20 pm

Re: Αρχάριος C++ προγραμματιστής : Αξίζει η C?

Δημοσίευση από George »

Καλησπέρα σας. Ευχαριστώ που πήρατε το χρόνο να μου απαντήσετε! :) Οι ακόλουθες απορίες μου είναι ξεκάθαρα πάνω στη δομή των προβλημάτων του διαγωνισμού. Όλα τα προβλήματα που έχω δει είναι ιδιαίτερα συνεπή στη χρήση κάποιων statements (για παράδειγμα, "using namespace std;"). Εγώ αναρωτιέμαι αν η χρήση κάποιων συγκεκριμένων/τυπικών statements, σαν νόρμες, είναι υποχρεωτική αντί εναλλακτικών (π.χ. να χρησιμοποιώ κάθε φορά το όνομα του std library μαζί με τον scope resolution operator για να κάνω access τον εκάστοτε identifier, αντί να κάνω copy όλο το library στο αρχείο μου), ή αν απλά γίνεται επειδή έτσι έχει συνηθιστεί. Αυτό με οδηγεί και στο ευρύτερο ερώτημα του κατά πόσο είναι αποδεκτά ίχνη πρωτοτυπίας σε λύσεις σε προβλήματα, που ωστόσο πληρούν τις προυποθέσεις. Τέλος, όταν λέει "χρόνος : 1 sec", εννοεί compile-time?
Ευχαριστώ εκ των προτέρων!
Άβαταρ μέλους
Κηπουρίδης
Δημοσιεύσεις: 397
Εγγραφή: Παρ Φεβ 05, 2010 5:05 pm

Re: Αρχάριος C++ προγραμματιστής : Αξίζει η C?

Δημοσίευση από Κηπουρίδης »

George έγραψε:όταν λέει "χρόνος : 1 sec", εννοεί compile-time?
Εννοεί running time. Όσο χρόνο και να κάνει για το compile, δε μας ενδιαφέρει. Σκέψου ότι μία εταιρία θα τρέξει μία φορά το compile, και κατόπιν θα τρέξει άπειρες φορές το πρόγραμμα. Επομένως ο σημαντικός χρόνος είναι το running time.
Ένας εμπειρικός κανόνας διαγωνισμών είναι ότι ο υπολογιστής κάνει περίπου 100.000.000 πράξεις το δευτερόλεπτο. Περισσότερα για αυτό όταν αρχίζεις να μαθαίνεις για πολυπλοκότητα!
George έγραψε:Όλα τα προβλήματα που έχω δει είναι ιδιαίτερα συνεπή στη χρήση κάποιων statements (για παράδειγμα, "using namespace std;"). Εγώ αναρωτιέμαι αν η χρήση κάποιων συγκεκριμένων/τυπικών statements, σαν νόρμες, είναι υποχρεωτική αντί εναλλακτικών (π.χ. να χρησιμοποιώ κάθε φορά το όνομα του std library μαζί με τον scope resolution operator για να κάνω access τον εκάστοτε identifier, αντί να κάνω copy όλο το library στο αρχείο μου), ή αν απλά γίνεται επειδή έτσι έχει συνηθιστεί.
Με αναφορά στο compile/running time, τα δύο διαφορετικά πράγματα που αναφέρεις έχουν διαφορά μόνο στο compile time, ενώ το running time τους είναι ίδιο. Είναι και τα δύο πλήρως αποδεκτά, εννοείται. Απλώς επειδή ο κώδικας γίνεται πιο σύντομος βάζοντας το "using namespace std;", ο κόσμος το προτιμάει. Κάνε όμως ό,τι σε βολεύει περισσότερο, για τον διαγωνισμό είναι απολύτως ισοδύναμα.
George έγραψε:Αυτό με οδηγεί και στο ευρύτερο ερώτημα του κατά πόσο είναι αποδεκτά ίχνη πρωτοτυπίας σε λύσεις σε προβλήματα, που ωστόσο πληρούν τις προυποθέσεις.
Απόλυτα αποδεκτά, για την ακρίβεια αν δεν υπάρχουν αυτά τα ίχνη μάλλον δε θα πας πολύ καλά! Μόνο η πρωτοτυπία ενδιαφέρει αυτό το διαγωνισμό.
Η πρωτοτυπία στο πώς θα γράψεις τον κώδικα (πχ αν θα βάζεις μικρό/μεγάλο identation, μικρά/μεγάλα ονόματα μεταβλητών, ή το παράδειγμα με το std που πολύ εύστοχα έδωσες) είναι απόλυτα αποδεκτή, αρκεί να τρέξει το πρόγραμμα!
Απ την άλλη πλευρά η πρωτοτυπία της ίδιας της λύσης, του περιεχομένου του κώδικα δηλαδή, όχι της μορφής του, δεν είναι απλά αποδεκτή, αλλά είναι κι αυτό που ενδιαφέρει. Διότι αυτό είναι που θα κάνει το πρόγραμμα να είναι ταχύτερο ή βραδύτερο.

Ελπίζω να κατάλαβα καλά τις ερωτήσεις σου, για ό,τι καινούργιο ή για ό,τι δεν απάντησα, πες μου.
Λύσεις θεμάτων ΠΔΠ: https://pdp-archive.github.io/
Μπούσουλας διαβάσματος ΠΔΠ: http://snf-800715.vm.okeanos.grnet.gr/PDP/
Tutorials: https://kallinikos.github.io/
Επίσημο forum ΠΔΠ: https://www.pdpforum.eu.org/forum/
Απάντηση