Προς το περιεχόμενο

Ξεκίνημα με Γλώσσα Προγραμματισμού


superboy

Προτεινόμενες αναρτήσεις

Δημοσ.

1)

Mην κάνεις ότι δεν καταλαβαίνεις τι εννοώ διότι υποτιμάς την νοημοσύνη σου.

Οι δυνατότητες μιας γλώσσας δεν εξηγούνται διαβάζοντας κώδικα - και μάλιστα ξερό όπως δείχνεις - αλλά εξηγώντας τις ιδέες που

μπορούν να υλοποιηθούν μέσω αυτής. (Αυτό σημαίνει η "μακροσκοπική ματιά").

Δεν θα του δείξεις λοιπόν το "std::vector<int>" αλλά θα του πεις ότι μπορεί να υλοποιήσει κάποια δομή δεδομένων ή συνάρτηση με

τρόπο που περιλαμβάνει μονομιάς πολλούς τύπους μεταβλητών και ότι αυτό είναι template.

 

Με τον ίδιο τρόπο μπορούν να εξηγηθούν άνετα και τα design patterns που περργράφονται στο "Modern C++ Design" :

να δοθούν περιφραστικές εξηγήσεις περί τίνος πρόκεται και ποιά είναι η σημασία τους.

Ένας έμπειρος προγραμματιστής θα καταλάβει αν πρέπει να τα προσθέσει στο γνωστικό του οπλοστάσιο.

Για την Lisp ισχύουν όμοια : δεν δείχνεις κώδικα αλλά περιγράφεις το βασικό χαρακτηριστικό της ίσως και σε αντιπαράθεση με κάποια

γνωστή έννοια. Όποιος έχει εμπειρία καταλαβαίνει αμέσως τι γίνεται και αποφασίζει αν πρέπει να στραφεί σ' αυτήν.

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

 

 

2) Το "δεν ξέρω" έχει πολλές διαβαθμίσεις ανάλογα με το ποιός το λέει και με τι έννοια.

Στο παραπάνω πλαίσιο λοιπόν έχω την ενημέρωση που χρειάζεται για να κάνω μια σύσταση.

Ωστόσο, πράγματι δεν ενέπνευσε εμπιστοσύνη η διατύπωσή μου.

 

 

3)

Το θέμα αυτό έχει συζητηθεί επανειλημμένως στο παρελθόν και, προσωπικά, έχω αναφέρει και τεκμηριώσει εμπεριστατωμένα την άποψή μου τότε.

Δεν χρειάζεται να επναλαμβάνουμε κάθε φορά τα ίδια.

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

Αλλά εδώ μιλάμε μόνον για μαθητές.

 

 

4)

Είμαι τελείως κατά της C γενικά για ερασιτέχνες και ακόμη περισσότερο για μαθητές.

Επίσης για μαθητές είμαι κατά και της C++ , εκτός αν πληρούνται συγκεκριμένες προϋποθέσεις, πράγμα που γενικά δεν συμβαίνει.

VB δεν ξέρω και δεν έχω άποψη αλλά απ' ότι έχω ακούσει, για τον συγκεκριμένο σκοπό (διδασκαλία στο σχολείο) την απορρίπτω.

Γλώσσες όπως η smallBasic ή η pascal είναι παντελώς άχρηστες διότι όπως είπα δεν έχουν εκπαιδευτική συνέχεια και

πρακτικό-βιομηχανικό ενδιαφέρον.

Είναι απαράδεκτο και βλακώδες να μαθαίνεις κάτι δαπανώντας χρόνο και κόπο για να το παρατήσεις τελείως μετά.

Για λόγους που παλαιότερα έχω αναφέρει λεπτομερώς θεωρώ ότι στα σχολικά πλαίσια η καταλληλότερη γλώσσα είναι η fortran 95.

 

 

4)

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

Κανείς δεν μπορεί να μάθει να παίζει σωστά από το κεφάλι του (τουλάχιστον μιλώντας για το πιάνο) - ούτε τα παιδιά θαύματα σαν τον Σγούρο.

Μπορεί να υπάρχει ισχυρή ακουστική ή/και ανατομική προδιάθεση αλλά έμφυτη εκμάθηση δίχως καθοδήγηση ΔΕΝ υπάρχει,

ούτε υπήρξε ποτέ σε κανέναν. Και όλοι μα όλοι οι μεγάλοι μουσουργοί ήταν άπαιχτοι στα θεωρητικά (αρμονία, αντίστιξη, φούγκα) και

τα μελέτησαν ταυτόχρονα με το πρακτικό μέρος. Μιλώντας για τους μεγάλους διδάσκαλους που ανέφερες αυτό είναι κανόνας δίχως εξαιρέσεις.

Οι δε ερμηνευτές μπορεί να μην ξέρουν τόσο πολλά θεωρητικά αλλά πάντως έχουν κάνει οπωσδήποτε την βασική αρμονία.

( Τώρα όσοι "αυτοδίδακτοι" παίζουν στα πανηγύρια είναι άλλη ιστορία - και επιπέδου βέβαια. )

Το μουσικό σου παράδειγμα λοιπόν είναι παντελώς άστοχο.

 

Πλην όμως, το να μάθει κάποιος μόνος του προγραμματισμό (ή μαθηματικά ή φυσική ή...) είναι απολύτως εφικτό διότι οι απαιτήσεις σ' αυτά

είναι τελείως διαφορετικές.

 

 

5)

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

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

που διδάσκονται - μόνον τότε έχουν μακροπρόθεσμο και σταθερό εκπαιδευτικό όφελος.

Έχω εξηγήσει τις αιτιάσεις μου στο παρελθόν.

Η ίδια πρακτική είναι επίσης πολύ επωφελής και για φοιτητές - κυρίως για όσους δεν φοιτούν σε σχολή πληροφορικής.

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

 

Τέλος, όντως, δεν λειτουργούμε όλοι με τον ίδιο τρόπο αλλά όταν δίδονται γενικές κατευθύνσεις πρέπει όσο το δυνατόν να

ανταποκρίνονται στις ανάγκες τις πλειοψηφίας, ακόμα κι' αν πρέπει να γίνουν συμβιβασμοί εις βάρος κάποιων πιο ταλαντούχων.

Εξάλλου για όσοιυς ενδιαφέρονται υπάρχουν οι διαγωνισμοί.

 

Αυτό που γενικά παρατηρώ πάντως είναι ότι σε τέτοια threads οι περισσότεροι απαντούν εμφορούμενοι από το τι

έχουν οι ίδιοι στο μυαλό τους (πολύ κακώς) και όχι με βάση τους στόχους/υπόβαθρο αυτού που ρωτάει.

Γι' αυτό και δεν υπάρχει και σύγκλιση στις απαντήσεις...

 

-

  • Απαντ. 37
  • Δημ.
  • Τελ. απάντηση
Δημοσ.

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

 

[snip]

4)

Είμαι τελείως κατά της C γενικά για ερασιτέχνες και ακόμη περισσότερο για μαθητές.

[snip]

Για λόγους που παλαιότερα έχω αναφέρει λεπτομερώς θεωρώ ότι στα σχολικά πλαίσια η καταλληλότερη γλώσσα είναι η fortran 95.

[snip]

Συγκριτικά με τη Fortran η C είναι απείρως πιο χρήσιμη και κυρίως απείρως πιο χρησιμοποιούμενη. Άρα αυτό που λες π.χ. για τις ψευδογλώσσες και την Pascal, το ότι δλδ μαθαίνεις κάτι που μετά αναγκαστικά το πετάς στο σκουπίδια, και με το οποίο συμφωνώ, αναγόμενο σε "Fortran ή C" ισχύει υπέρ της δεύτερης και με μεγάλη διαφορά.

Δημοσ.

vssmirnov Παιζει να ειναι το δευτερο +1 που σου εχω βαλει rolleyes.gif

 

mig Δεν πετα τιποτα, απο wiki ειδα οτι τηρει imperative και structured paradigm. Αν καποιος μαθει αυτες τις φιλοσοφιες, δεν θα δυσκολευτει και πολυ για να μαθει c/c++ c# java php κλπ κλπ. Αν δε με καταλαβαινεις, δες κανα tutorial για f# (που δεν εχει αυτες τις φιλοσοφιες) για να δεις ποσο πολυπλοκο θα σου φανει

Δημοσ.

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

 

Συγκριτικά με τη Fortran η C είναι απείρως πιο χρήσιμη και κυρίως απείρως πιο χρησιμοποιούμενη.

Άρα αυτό που λες π.χ. για τις ψευδογλώσσες και την Pascal, το ότι δλδ μαθαίνεις κάτι που μετά αναγκαστικά το πετάς στο σκουπίδια,

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

 

 

Λάθος είσαι !

Και σίγουρα είσαι απόφοιτος πληροφορικής και μάλιστα ανενημέρωτος στα χαρακτηριστικά και την εξέλιξη των f90, f95, f2003, f2008 αλλιώς δεν θα είχες αυτή την άποψη !

Για το θέμα αυτό έχει γίνει εκτεταμένη συζήτηση στο παρελθόν σε τουλάχιστον δυο threads και εκεί έχω εξηγήσει τους λόγους λεπτομερώς.

 

Και εν πάση περιπτώση εδώ μιλάμε αποκλειστικά για μαθητές όπου η C είναι ΤΕΛΕΙΩΣ ακατάλληλη.

Η fortran έχει ΟΛΕΣ τις προϋποθέσεις :

απλότητα στην σύνταξη, κλιμακούμενη δυσκολία, εκπαιδευτική συνέχεια και διαχειρίσιμη στα σχολικά χρονικά πλαίσια, μεγάλη εκφραστική δύναμη.

Έναν σου λέω μόνον, η "ψευδογλώσσα" μπορεί να μεταγραφεί σχεδόν αυτούσια σε f95 με ελάχιστες διαφορές στην σύνταξη, πράγμα που δεν γίνεται με την C.

Δείξε σε έναν μαθητή ένα πρόγραμμα στην fortran που προσθέτει δυο πίνακες ή λύνει σύστημα δυο ή τριών ή n αγνώστων (σχολική ύλη από 3η γυμνασίου έως 3η λυκείου).

Στην fortran η μαθηματική λύση υλοποιείται με απλή σύνταξη, ακολουθεί διαισθητικά τα μαθηματικά και είναι σύντομη (μια σελίδα έκταση ή λιγότερο).

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

αναπτύσσοντας αμφότερα και τον προγραμματισμό (σε ρεαλιστικό πρόβλημα προσαρμοσμένο στις υπόλοιπες γνώσεις του) και τα μαθηματικά.

Η συνάφεια με άλλα μαθήματα (φυσική ή χημεία) μπορεί να είναι εξίσου ισχυρή.

Στην C/C++ είναι αδύνατον, διότι γενικά πρέπει να εισαχθούν ή χρησιμοποιηθούν πολλές δύσκολες έννοιες ακόμη και για απλά πράγματα (δείκτες κλπ),

η σύνταξη είναι πιο πολύπλοκη και ιδιότροπη, η χρήση αριθμητικών πινάκων είναι μπελάς κ.α. Ο σχολικός χρόνος είναι λίγος και νοητική ωριμότητα

των μαθητών μικρή ή ανεπαρκής για την εμπεδωση τέτοιων εννοιών. Η fortran θέτει πολύ λιγότερους τέτοιους περιορισμούς.

Η F95, ζει και βασιλεύει στον τομέα της και συνεχίζει να αναπτύσσεται και να υποστηρίζεται.

Δεν είναι pascal ή cobol που έχουν πεθάνει προ πολλού, ούτε prolog ή Lisp που έχουν εξειδικευμένο χαρακτήρα και εφαρμογές.

Τα έχω πει πολλάκις στο παρελθόν, να μην επαναλαμβάνω κάθε φορά τα ίδια...

Η C δεν κάνει για την β' βάθμια εκπαίδευση με κανένα τρόπο, η fortran είναι σχεδόν ιδανική.

Η μόνη που βλέπω ως εναλλακτική της είναι η Python (η οποία αλλού της υπερτερεί, αλλού της υπολείπεται).

 

 

@παπι

 

Ευχαριστώ για την φιλοφρόνηση.

Και παρεμπιπτόντως, το μέγιστο που έχω πιάσει είναι 9. :mrgreen:

 

-

Δημοσ.

Λάθος είσαι !

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

 

Πάραυτα θα κάνω μια τελευταία αναφορά, μόνο και μόνο επειδή το φόρουμ το διαβάζει πολύς κόσμος και είναι κρίμα να παραπληροφορείται.

 

Εσύ λοιπόν που είσαι (και καλά) σωστός κι ενημερωμένος, αυτό το διάβασες;

Συγκριτικά με τη Fortran η C είναι απείρως πιο χρήσιμη και κυρίως απείρως πιο χρησιμοποιούμενη.

Άρα αυτό που λες π.χ. για τις ψευδογλώσσες και την Pascal, το ότι δλδ μαθαίνεις κάτι που μετά αναγκαστικά το πετάς στο σκουπίδια,

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

Γιατί υποτίθεται πως σε αυτό απάντησες. Με τη διαφορά πως αρχίζεις την "κασέτα" για μισή σελίδα αλλά για την "ταμπακιέρα" μου γράφεις μια και μόνο γραμμή, αυτήν εδώ:

Η F95, ζει και βασιλεύει στον τομέα της και συνεχίζει να αναπτύσσεται και να υποστηρίζεται.

Ενημερώσου λοιπόν συγκρίνοντας τον τομέα της Fortran με τους τομείς που χρησιμοποιείται η C (καλά για C++ δεν το συζητάω καν) ενημερώσου και για την τρέχουσα αγορά, ξαναδιάβασε τι ακριβώς σου έγραψα αρχικά και τι απάντησες εσύ, και ίσως τα ξαναπούμε.

Δημοσ.

1)

Mην κάνεις ότι δεν καταλαβαίνεις τι εννοώ διότι υποτιμάς την νοημοσύνη σου.

Οι δυνατότητες μιας γλώσσας δεν εξηγούνται διαβάζοντας κώδικα - και μάλιστα ξερό όπως δείχνεις - αλλά εξηγώντας τις ιδέες που μπορούν να υλοποιηθούν μέσω αυτής. (Αυτό σημαίνει η "μακροσκοπική ματιά").

Δεν θα του δείξεις λοιπόν το "std::vector<int>" αλλά θα του πεις ότι μπορεί να υλοποιήσει κάποια δομή δεδομένων ή συνάρτηση με τρόπο που περιλαμβάνει μονομιάς πολλούς τύπους μεταβλητών και ότι αυτό είναι template.

 

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

 

Δεν καταλαβαίνω πως το εννοείς το "ιδέες που μπορούν να υλοποιηθούν μέσω αυτής". Όλες οι γλώσσες που χρησιμοποιούμε είναι Turing-complete, επομένως όλες μπορούν να υλοποιήσουν τα πάντα. Το θέμα είναι πώς. Όσο για τα templates, δεν επεκτάθηκα γιατί δεν υπάρχει λόγος -- εξήγησέ τα όπως σου αρέσει. Αυτό που είπα είναι απλά "έστω κάποιος που του τα έχεις εξηγήσει".

 

Με τον ίδιο τρόπο μπορούν να εξηγηθούν άνετα και τα design patterns που περργράφονται στο "Modern C++ Design" :

να δοθούν περιφραστικές εξηγήσεις περί τίνος πρόκεται και ποιά είναι η σημασία τους.

Ένας έμπειρος προγραμματιστής θα καταλάβει αν πρέπει να τα προσθέσει στο γνωστικό του οπλοστάσιο.

 

Το "Modern C++ Design" δεν έχει design patterns μέσα (ο τίτλος είναι λίγο παραπλανητικός). Είσαι σίγουρος ότι ξέρεις τι πραγματεύεται;

 

Αν θέλεις την προσωπική μου άποψη, ένας έμπειρος προγραμματιστής όταν το διαβάσει θα μείνει... κάγκελο :) και μετά θα το ξαναδιαβάσει όσο χρειαστεί για να το χωνέψει.

 

Για την Lisp ισχύουν όμοια : δεν δείχνεις κώδικα αλλά περιγράφεις το βασικό χαρακτηριστικό της ίσως και σε αντιπαράθεση με κάποια γνωστή έννοια. Όποιος έχει εμπειρία καταλαβαίνει αμέσως τι γίνεται και αποφασίζει αν πρέπει να στραφεί σ' αυτήν. Eiδικά για την Lisp μού έχει τύχει στην πράξη ακριβώς αυτό και δεν υπήρχε δυσκολία.

 

Δεν υπήρχε δυσκολία να γίνει τι; Να αποφασίσεις ότι δεν πρέπει να στραφείς σ' αυτήν;

 

Δεν ξέρω αν περνάω καλά το νόημα εδώ. Η θέση μου είναι ότι αν π.χ. κάποιος που δεν ξέρει Python κάτσει να γράψει ένα μικρό πρόγραμμα, θα τα κάνει όλα μέσω Ιταλίας σε σχέση με κάποιον που ξέρει. Δεν είναι ότι το πρόγραμμα που θα γράψει δε θα δουλέψει. Αλλά ο ίδιος θα παιδευτεί πολύ και το αποτέλεσμα θα φωνάζει "αυτή η γλώσσα δεν είναι για να χρησιμοποιείται έτσι". Άσχετα που όπως είπα παραπάνω, επειδή είναι Turing complete κάπως θα μπορέσει να γραφτεί το πρόγραμμα.

 

Επειδή τυγχάνει να είμαι και ερασιτέχνης πιανίστας σου λέω ότι τα περί μουσικών που "ξεκίνησαν με το μάτι" είναι μύθος για τους αδαείς. Κανείς δεν μπορεί να μάθει να παίζει σωστά από το κεφάλι του (τουλάχιστον μιλώντας για το πιάνο) - ούτε τα παιδιά θαύματα σαν τον Σγούρο. Μπορεί να υπάρχει ισχυρή ακουστική ή/και ανατομική προδιάθεση αλλά έμφυτη εκμάθηση δίχως καθοδήγηση ΔΕΝ υπάρχει, ούτε υπήρξε ποτέ σε κανέναν. Και όλοι μα όλοι οι μεγάλοι μουσουργοί ήταν άπαιχτοι στα θεωρητικά (αρμονία, αντίστιξη, φούγκα) και

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

 

Πλην όμως, το να μάθει κάποιος μόνος του προγραμματισμό (ή μαθηματικά ή φυσική ή...) είναι απολύτως εφικτό διότι οι απαιτήσεις σ' αυτά είναι τελείως διαφορετικές.

 

Παρερμηνεύεις τα λεγόμενά μου. Δεν είπα ότι θα φτάσεις να είσαι κορυφαίος χωρίς μελέτη ( == δουλειά ), αυτό δεν ισχύει σε καμία περίπτωση. Αλλά μπορείς να αφήνεις τον κόσμο με το στόμα ανοιχτό και να καταλαβαίνει κάποιος έμπειρος από την απόδοσή σου ότι είσαι "ακατέργαστο διαμάντι", το οποίο αν δουλευτεί σωστά (με μελέτη και σύστημα) θα φτάσει στην κορυφή. Με άλλα λόγια, μπορεί κανείς να έχει ταλέντο.

 

Τέλος, αυτό το περί να μάθει "μόνος του" προγραμματισμό κράτα το στο μυαλό σου σε παρακαλώ ταυτόχρονα με την προηγούμενη παράγραφο που έγραψες. Πώς είναι δυνατόν να μάθει κανείς "μόνος του"; Εγώ ο ίδιος έμαθα μόνος μου από το manual, αλλά αυτό που έμαθα έτσι δεν ήταν προγραμματισμός. Ήταν το πώς να γράψεις κανένα text based παιχνίδι για να περνάει η ώρα, το οποίο είναι μάλλον το αντίστοιχο στον προγραμματισμό του πανηγυρτζή απέναντι στο Σγούρο. Αν δεν έρθεις σε επαφή με δασκάλους, συναδέλφους κλπ δεν πρόκειται ποτέ να "μάθεις προγραμματισμό". Απλώς στην προκειμένη αυτό είναι πλέον πολύ εύκολο για όλους γιατί υπάρχει το internet.

 

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

Δημοσ.

Δεν καταλαβαίνω πως το εννοείς το "ιδέες που μπορούν να υλοποιηθούν μέσω αυτής".

Όλες οι γλώσσες που χρησιμοποιούμε είναι Turing-complete, επομένως όλες μπορούν να υλοποιήσουν τα πάντα. Το θέμα είναι πώς.

Όσο για τα templates, δεν επεκτάθηκα γιατί δεν υπάρχει λόγος -- εξήγησέ τα όπως σου αρέσει.

Αυτό που είπα είναι απλά "έστω κάποιος που του τα έχεις εξηγήσει".

Ο χαρακτήρας κάθε γλώσσας προσανατολίζεται σε συγκεκριμένους στόχους, γι' αυτό υπάρχουν τόσο πολλές.

Εξάλλου το απαντάς ο ιδιος : "Το θέμα είναι πώς".

Ευκολα μπορείς να εξηγήσεις σε κάποιον γιατί μια γλώσσα είναι καταλληλότερη από μια άλλη για κάποιο συγκεκριμένο πρόβλημα

ή να αποφανθεί μόνος του - ειδικά αν δεν είναι αρχάριος και ξέρει να αυτοεκπαιδεύεται.

 

 

Το "Modern C++ Design" δεν έχει design patterns μέσα (ο τίτλος είναι λίγο παραπλανητικός). Είσαι σίγουρος ότι ξέρεις τι πραγματεύεται;

Αν θέλεις την προσωπική μου άποψη, ένας έμπειρος προγραμματιστής όταν το διαβάσει θα μείνει... κάγκελο :)

και μετά θα το ξαναδιαβάσει όσο χρειαστεί για να το χωνέψει.

Η παρα-ανάγνωση, το ξεφύλλισμα, οι κριτικές και ενημέρωση επί των ιδεών αρκούν για να κατατοπιστεί κάποιος έμπειρος και να αποφασίσει τι να επιλέξει.

Η μελέτη είναι άλλο πράγμα, δεν μιλάμε γι αυτή.

 

Μιλώ για το βιβλίο "Modern C++ Design : Generic Programming and Design Patterns Applied", Addison-Wesley Professional, 2001 του Α. Alexandrescu.

Ξέρω καλά τι πραγματεύεται. Κάνει μια προχωρημένη προσέγγιση στην σχεδίαση λογισμικού μέσω design patterns, generic programming, και C++

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

(Εκ παραδρομής εστίασα στα design patterns - ήταν και προχωρημένη η ώρα).

Δεν είναι βιβλίο για αρχάριους (το υπαινίσσεται και η έκδοση : Professional).

 

 

Δεν υπήρχε δυσκολία να γίνει τι; Να αποφασίσεις ότι δεν πρέπει να στραφείς σ' αυτήν;

 

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

θα τα κάνει όλα μέσω Ιταλίας σε σχέση με κάποιον που ξέρει. Δεν είναι ότι το πρόγραμμα που θα γράψει δε θα δουλέψει.

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

Άσχετα που όπως είπα παραπάνω, επειδή είναι Turing complete κάπως θα μπορέσει να γραφτεί το πρόγραμμα.

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

Δίνονταν επεξηγήσεις βέβαια. Η Lisp είναι γνωστό που απευθύνεται. (Και εν προκειμένω επρόκειτο για ένα σύστημα συμβολικής άλγεβρας (CAS) ).

Όσο για το άλλο, τα είπαμε ο έμπειρος θα βρει τον δρόμο μόνος του και σχετικά γρήγορα,

ο δε αρχάριος, αν δεν του δοθούν επαρκείς οδηγίες, πιθανόν θα πελαγοδρομήσει ή θα δοκιμάσει με ακατάλληλο τρόπο.

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

Π.χ. ο αρχάριος θα δυσκολευτεί πολύ με τους αριθμητικούς πίνακες στην C++ ενώ στη fortran η χρήση τους είναι προφανέστατη.

 

 

Τέλος, αυτό το περί να μάθει "μόνος του" προγραμματισμό κράτα το στο μυαλό σου σε παρακαλώ ταυτόχρονα με την προηγούμενη παράγραφο που έγραψες.

Πώς είναι δυνατόν να μάθει κανείς "μόνος του"; Εγώ ο ίδιος έμαθα μόνος μου από το manual, αλλά αυτό που έμαθα έτσι δεν ήταν προγραμματισμός.

Ήταν το πώς να γράψεις κανένα text based παιχνίδι για να περνάει η ώρα, το οποίο είναι μάλλον το αντίστοιχο στον προγραμματισμό του πανηγυρτζή απέναντι στο Σγούρο.

Αν δεν έρθεις σε επαφή με δασκάλους, συναδέλφους κλπ δεν πρόκειται ποτέ να "μάθεις προγραμματισμό".

Απλώς στην προκειμένη αυτό είναι πλέον πολύ εύκολο για όλους γιατί υπάρχει το internet.

Απόλυτα συμφωνώ σ' αυτό και πρέπει να το καταλάβουν πολλοί επιδοξοι.

Για να γίνεις επαγγελματίας πρέπει απαραιτήτως να έχεις τελειώσει σχολή πληροφορικής.

Ό κύριος λόγος είναι ότι αποκτάς εικόνα, γνώσεις και τρόπο σκέψης επί του συνόλου της πληροφορικής κι' όχι σε επιμέρους τμήματα.

Δάσκαλοι δεν χρειάζονται παρά, μόνον εκεί που δεν μπορείς να βρεις δρόμο μόνος σου (ομοίως και σε κλάδους όπως μαθηματικά, φυσική κλπ)

 

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

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

Στον προγραμματισμό όμως υπάρχει η ιδιομορφία ότι μπορείς να απασχοληθείς (ενίοτε και βιοποριστικά/επαγγελματικά) δίχως πτυχίο.

Αμέτρητος κόσμος το κάνει. Π.χ. ηλεκτρολόγοι ή μαθηματικοί συχνά εργάζονται ως προγραμματιστές. Απλώς μαθαίνουν και ασκούν αυτό που τους χρειάζεται.

Και αρκετοί μαθαίνουν πολύ περισσότερα, είναι εφικτό.

Ξέρω άτομα που έγιναν game programmers μόνοι τους. Μελέτησαν 2-3 βιβλία των 100αδων σελίδων (σε διάστημα πάνω από έτος),

κάλυψαν όλα τα σχετικά πεδία, απόκτησαν την ολική εικόνα και μπορούν - ερασιτεχνικά τουλάχιστον - να δουλέψουν επί του θέματος.

Το να δηλώνουν όμως "προγραμματιστής" είναι λάθος διότι άλλο γενικότερο υπόβαθρο λείπει.

Ο αληθινός προγραμματιστής είναι επιστήμονας κι' αυτό δεν καλύπτεται εύκολα.

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

Σε ότι αφορά το ιντερνετ, μόνον επικουρικά πρέπει να χρησιμοποιείται.

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

 

 

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

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

ένα συγκεκριμένο παιδί, όχι το σύνολο του μαθητικού πληθυσμού.

 

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

Η αφορμή μού δόθηκε επειδή το παιδί είνια μαθητής και αρχάριος.

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

 

Για μένα το θέμα έληξε και δεν θα συνεχίσω περαιτέρω.

 

-

Δημοσ.

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

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

Στον προγραμματισμό όμως υπάρχει η επαγγελματική ιδιομορφία ότι μπορείς να απασχοληθείς (ενίοτε και βιοποριστικά/επαγγελματικά) δίχως πτυχίο.

Αμέτρητος κόσμος το κάνει. Απλώς μαθαίνει και ασκεί αυτό που του χρειάζεται.

 

Συμφωνώ ότι το φαινόμενο είναι πολύ διαδεδομένο, αλλά και πάλι: ας μην τα ισοπεδώνουμε όλα. Και γω ο ίδιος και ο μοναδικός άλλος προγραμματιστής που ταυτόχρονα α) γνωρίζω προσωπικά και β) θεωρώ ότι είμαστε στο ίδιο επίπεδο, δεν είμαστε απόφοιτοι πληροφορικής (ΗΜΜΥ και οι 2).

 

Ένα άλλο παράδειγμα: πήγαινε στο site της Blizzard και δες τα job openings. Θα παρατηρήσεις ότι από όλα τα openings για προγραμματιστές, μόνο τα πιο hardcore ζητάνε σαν τυπικό προσόν "Bachelor's or Master's degree in Computer Science, Mathematics, or equivalent experience". Δηλαδή όχι απλά δε χρειάζεται να έχεις πτυχίο συγκεκριμένα πληροφορικής αλλά (όπως το καταλαβαίνω εγώ) ίσως δε χρειάζεται να έχεις πτυχίο στα χερια σου καν.

 

If they are good enough for Blizzard, they should be good enough for you. ;)

 

Για μένα το θέμα έληξε και δεν θα συνεχίσω περαιτέρω.

 

Σύμφωνοι και σ' αυτό. :)

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...