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

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

Δημοσ.

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

 

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

 

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

 

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

 

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

 

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

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

  • Like 1
  • Απαντ. 36
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσ.

Παρατηρώ συχνά επίδοξους μαθητές όπως ο t.s. που ρωτάνε αν πρέπει να ασχοληθούν με τον προγραμματισμό

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

στην γυμνασιακή/λυκειακή εκπαίδευση - χωράει αρκετή συζήτηση.
Εκείνα που έχω να πω συνοπτικά είναι τα εξής.

 

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

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

μπορούν να κάνουν ή να μάθουν τίποτε το σοβαρό. Ρωτήστε κάποιον που λέει ότι προγραμμάτιζε ή ασχολούνταν

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

μια μπούρδα ανάξια λόγου.

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

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

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

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

python είναι οι καταλληλότερες.

 

Μια δεύτερη επιλογή είναι να ασχοληθεί με προβλήματα που προάγουν την αλγοριθμική σκέψη και

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

http://www.insomnia.gr/topic/344194-θέλω-πιο-γρήγορο-κώδικα-c/?st=0

Μαθητής το είχε ασχοληθεί, ας το δει ο t.s. να πάρει μιαν ιδέα για το είδος/στάθμη των προβλημάτων.

(Η ιδέα της λύσης δίνεται στην σελ. 5 από τον parsifal. Μια δική μου εκδοχή, πολύ περιφραστικά γραμμένη, δίνειται στην 6, είναι το ίδιο με του parsifal αλλά από άλλη σκοπιά. Δεν έχει σημασία ο κώδικας, μόνον οι ιδέες).

 

Γενικά η ενασχόληση ενός μαθητή με τον προγραμματισμό μπορεί πραγματικά να ωφελήσει τον μαθητή μόνον

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

όχι πρόωρα.

 

-

  • Like 1
Δημοσ.

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

 

Οι μαθητές - και κυρίως του γυμνασίου - έχουν γενικές θετικές γνώσεις σχεδόν ανύπαρκτες.

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

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

μπορούν να κάνουν ή να μάθουν τίποτε το σοβαρό. Ρωτήστε κάποιον που λέει ότι προγραμμάτιζε ή ασχολούνταν

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

μια μπούρδα ανάξια λόγου.

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

 

I beg to differ. Ίσως να είναι έτσι για κάποια κατηγορία επίδοξων προγραμματιστών, ειλικρινά δεν έχω ιδέα και δε μπορώ να μιλήσω για λογαριασμό άλλων. Αλλά αισθάνομαι αναγκασμένος να φέρω αντίρρηση για δύο λόγους: πρώτον, επειδή (παρόλο που λες "οι περισσότεροι" -- αλήθεια, από που προκύπτει αυτό το στατιστικό?) τοποθετείσαι λέγοντας ότι το ώφελος από το "παιχνίδι" είναι μηδενικό και δεύτερον επειδή σχεδόν εξισώνεις την αλγοριθμική σκέψη με βασική θετική εκπαίδευση (και πάλι, πώς προκύπτει αυτό?).

 

Απαντώντας λοιπόν στο "challenge" σου, έχουμε και λέμε.

 

Ηλικία ~7:

 

 

Ξεκίνησα να ασχολούμαι μαθαίνοντας basic από το manual ενός ZX Spectrum 48K. Θυμάμαι χαρακτηριστικά ότι την πρώτη φορά που βρέθηκα αντιμέτωπος με τον booted υπολογιστή δεν ήξερα απολύτως τίποτα ΤΙΠΟΤΑ για τη λειτουργία του, οπότε δοκίμασα να κάνω το μόνο πράγμα που έβγαζε κάποιο νόημα: να πληκτρολογήσω μια παραγραφο κείμενο με τα λίγα αγγλικά που ήξερα. Αρχικά βρήκα εμπόδιο το ότι (θυμίζω είμαστε σε περιβάλλον basic) στο πρώτο keypress θέλοντας και μη ήμουν σε keywords mode (δεν ήξερα βέβαια τι είναι keywords mode, απλά trial and error έβγαλα το συμπέρασμα ότι στο πρώτο keypress κάτι λειτουργεί διαφορετικά), οπότε δεν μπορούσα να ξεκινήσω να γράφω παρα μόνο με μια από τις στάνταρ εντολές σε κεφαλαία. Με τα πολλά βλέποντας τις επιλογές αποφάσισα λοιπόν να ξεκινήσω με LIST, το οποίο μου επέτρεψε να γράψω "LIST EN. BLAH BLAH BLAH". Ι figured ότι το αναγκαστικό space μετά το LIST και τα αναγκαστικά κεφαλαία για consistency δε μετρούσαν σαν αποτυχία του σχεδίου. Έγραψα ο,τι έγραψα, πάτησα ENTER, έφαγα ερωτηματικό στη μούρη (syntax error), έσβησα το computer και το ξανάβαλα στο κουτί. Εξάλλου η μάνα μου ήθελε να δει τηλεόραση.

 

 

 

Ηλικία ~8:

 

 

Με τη βίβλο (seriously, χαζέψτε το λίγο, είναι απερίγραπτα καλό, σου δίνει πάτημα να μάθεις τα πάντα όλα) έχω μάθει πλέον να γράφω hello world, what is your name, hello Mitsos, what is your birthday, you are now 8 years old, κλπ. Μπούρδα ανάξια λόγου; Για μένα και για σένα ναι. Αλλά πες το αυτό στους συμφοιτητές μου στο πολυτεχνείο που έβλεπαν το hello world σε C και το μάθαιναν παπαγαλία.

 

Διαβάζω listings από περιοδικά και βιβλία της εποχής (αν ποτέ γνωρίσω τον Γιώργο Αράπογλου θα πρέπει να του φιλήσω το χέρι). Κάποια στιγμή αποφασίζω να πληκτρολογήσω ένα mid-size game (4-5 σελίδες κώδικα) και να το σώσω. Συνδέω το κασετόφωνο, είμαι πολύ μικρός για να ξέρω ότι αν δεν πατήσεις rec μαζί με το play δε γράφεις τίποτα. Την άλλη μέρα η κασέτα είναι άδεια. Rats.

 

 

 

Ηλικία ~9:

 

 

Μαθαίνω αρκετά από τα listings και τα περιοδικά. Η μεγαλύτερη χοντράδα που έχω στο βιβλίο του Αράπογλου είναι ένα ~20 σελίδες υποτυπώδες turn-based rpg, το οποίο πληκτρολογώ eventually. Πάω να παίξω αλλά κάποια στιγμή χτυπάει γιατί κάτι έχω πληκτρολογήσει λάθος -- δε θυμάμαι τι, αλλά θυμάμαι ότι ήταν κάτι αστείο τυπογραφικό. Διαβάζω το μήνυμα, ψάχνω να βρω τι πήγε στραβά, cross-checking με το βιβλίο, το βρίσκω και το διορθώνω. Έχω μόλις κάνει το πρώτο μου debugging. Μπούρδα ανάξια λόγου; Πες το στους συμφοιτητές μου στο master που δεν είχαν κάνει ποτέ τους.

 

Έχοντας περάσει αυτό το στάδιο, δε μπορώ βέβαια να φανταστώ να γράφω ακόμα και ένα τόσο υποτυπώδες CRPG μόνος μου από το μηδέν. Αλλά βλέπω τι έχει κάνει ο Αράπογλου και αισθάνομαι ότι καταλαβαίνω ποιά είναι τα κομμάτια και πως δένουν μεταξύ τους. Μπούρδα; Μάλλον όχι.

 

Σε ένα πρόγραμμα σχεδίασης που είχα σε basic -- πραγματικά μπούρδα αυτή τη φορά πρόγραμμα σχεδίασης, διάλεγες λειτουργία (point/line/triangle/square/circle), έδινες συντεταγμένες, σου το ζωγράφιζε -- αποφασίζω να βάλω crosshair λειτουργία γιατί μόνο με συντεταγμένες ήταν πολύ κουραστικό, και βέβαια με τα τρίγωνα και τους κύκλους ήταν trial and error να συνεχίσεις γιατί δεν ξέρεις ακόμα τριγωνομετρία για να υπολογίσεις συντεταγμένες. Να το πω διαφορετικά: ακριβώς επειδή δεν ήξερα ούτε καν τι είναι η τριγωνομετρία, σκέφτηκα να υλοποιήσω ένα εναλλακτικό feature σαν workaround.

 

To crosshair το σχεδίαζα θυμάμαι με δύο κάθετες από άκρη σε άκρη της οθόνης, με XOR. Με την ευκαιρία μιας και είπα XOR, έχω μάθει ήδη AND, OR, NOT, XOR. Μπούρδα; 3ο έτος οι άλλοι τα άκουγαν πρώτη φορά.

 

Το XOR μου επέτρεπε όχι μόνο να διακρίνονται οι γραμμές άσχετα από το τι έχεις ήδη ζωγραφίσει, αλλά επίσης και να τις "μετακινώ": πατάς ένα XOR πάνω στο προηγούμενο και voila, παίρνεις πίσω τα αρχικά σου δεδομένα. Μετά κάνεις άλλο ένα XOR ένα pixel πιο πάνω και voila, ξέρω έναν τρόπο για να φτιάξω κάτι που κινείται πάνω σε background. Μπούρδα; Δε θα συνεχίσω να κουράζω με ρητορικές ερωτήσεις.

 

 

 

Ηλικία ~10:

 

 

Υπάρχουν κάποια πράγματα επάνω στο πληκτρολόγιο που ακόμα δεν καταλαβαίνω ακριβώς τι κάνουν. SIN, COS, δεν έχω ιδέα τι πάει να πει, αλλά βλέπω π.χ. σε listings ότι μπορείς να υλοποιήσεις (πολύ πιο αργά) την έτοιμη CIRCLE σε basic με FOR χρησιμοποιώντας τα. Τo manual δεν είναι αρκετά επεξηγηματικό, βάζω τα μεγάλα μέσα, μπαμπάς καλείται να βοηθήσει και μου μαθαίνει τα σχετικά (τριγωνομετρικός κύκλος, ημ/συν, γωνίες, π). Οι συμμαθητές μου ακόμα παλεύουν τις πράξεις.

 

Η κίνηση του crosshair στο σχεδιαστικό ήταν πολύ αργή σε basic με τη CPU στα 3.5MHz, οπότε μόνη λύση να περάσω στα ενδότερα και να μάθω Z80 assembly. Δεν ξέρω ακόμα τι πάει να πει assembler, οπότε ανατρέχω στο manual με το instruction set και κάνω assemble με μολύβι και χαρτί μια routine σε machine code που την καλείς και θα πρέπει να μετακινεί το crosshair 1 pixel κάτω. Την περνάω στο πρόγραμμα. Με την ψυχολογία που μόνο ένας 10χρονος μπορεί να έχει, δεν κάνω save και την τρέχω στεγνά. Έχω κάνει κάπου λάθος, κολλάει το σύστημα, αναγκαστικό hard reset. Επανέρχομαι δριμύτερος (με save αυτή τη φορά), με τα πολλά το καταφέρνω. Αποφασίζω ότι δε γίνεται δουλειά με τέτοιους ρυθμούς χελώνας (assemble στο χαρτί), πρέπει να βρω καλύτερη μέθοδο. Σαν αποτέλεσμα, μαθαίνω τι είναι (dis)assembler.

 

 

 

Ηλικία ~11:

 

 

Τα σχεδιαστικά προγράμματα των άλλων έχουν πολύ "εξελιγμένες" λειτουργίες, κάνουν flood fill (αργότερα θα μάθω ότι αυτό που έβλεπα είναι 4-way flood fill με stack). Και μάλιστα πάει σφαίρα, γιατί είναι σε assembly. Έχω βρει όμως σε περιοδικό και υλοποίηση σε basic, οπότε μαθαίνω (αλμπάνικα) πως δουλεύει ο αλγόριθμος. Μπορεί να μην είχα ιδέα τι είναι stack, αλλά δε θέλει καντάρια μυαλό να κατανοήσεις την έννοια του LIFO. Και ο μπαμπάς που με βοήθησε πάλι δεν είχε ιδέα από προγραμματισμό και stack, αλλά ήξερε τι είναι FIFO και LIFO και τώρα το ξέρω και γω. Μετά από πολύ κόπο (γιατί ΟΚ, σε κείνο το επίπεδο κάνεις 2 βδομάδες να καταλάβεις αυτό που τώρα θα έπαιρνε 10 λεπτά) καταλαβαίνω επιτέλους πώς λειτουργεί ο αλγόριθμος του flood fill. Οι περισσότεροι συμφοιτητές μου αργότερα θα γίνουν απόφοιτοι πολυτεχνείου χωρίς να έχουν φτάσει ποτέ σ' αυτό το επίπεδο αλγοριθμικής ανάλυσης, παρόλο που αναγκάστηκαν να μάθουν τι είναι stack και τι queue στα προκαταρκτικά.

 

Κάποια μέρα θέλαμε να παίξουμε με τον αδερφό μου ένα παιχνίδι που χρειαζόταν ζάρι. Αλλά δεν είχαμε ζάρι στο χωριό. Οποιοσδήποτε άλλος (και μάλλον πρακτικά εξυπνότερος απο μένα) θα πήγαινε στο καφενείο και το πρόβλημα θα λυνόταν ευθύς αμέσως, αλλά I have my computer hammer, so everything looks like a computer nail. Μπορώ trivially να γράψω ένα πρόγραμμα που θα κάνει RAND και θα μας δίνει το αποτέλεσμα μέσα σε 2 λεπτά. Όμως υπάρχει πρόβλημα: δε γίνεται να το εμφανίζει, γιατί οι μεγάλοι βλέπουν τηλεόραση και δεν δέχονται να τους διώξω για να ρίχνω ζάρι. ΟΚ, no problem: μπορώ να κάνω 1 ως 6 μπιπ και να παίρνω το αποτέλεσμα ηχητικά. Να φύγουν έστω μέχρι να γράψω το πρόγραμμα; Όχι, το μπούλο μικρέ. OK, no problem: μπορώ να το γράψω στα τυφλά, είναι πολύ μικρό πρόγραμμα, θα πάω αργά και προσεκτικά και θα παίρνω feedback από το ανεπαίσθητο μπιπ που κάνει ο Spectrum όταν περάσει ένα keypress. Αλλά ανεπαίσθητο beep... κάνουν και φασαρία οι μεγάλοι. OK, no problem: ξέρω απέξω ότι πρέπει απλά πρώτα να πληκτρολογήσω POKE 23609,255, και για 10 keypresses μπορώ να το κάνω σωστά και χωρίς καθόλου feedback. Το κάνω. Παίζουμε για λίγο μέχρι να βαρεθούμε. Μπορεί σ' αυτή τη σκηνή να μην έμαθα τίποτα, αλλά την έβαλα για να φανταστεί κανείς το πώς σχηματίζει την ψυχολογία ενός εφήβου το σενάριο "Τι; Δε με αφήνετε να γράψω ένα πρόγραμμα για να κάνω το κέφι μου; Θα το γράψω έτσι κι αλλιώς... στα τυφλά. Γιατί μπορώ".

 

 

 

I could go on...

 

 

 

  • έμαθα (αναγκαστικά) τις δυνάμεις του 2 πριν τα άλλα παιδιά μάθουν τι είναι δύναμη
  • έμαθα να κάνω μετατροπές ανάμεσα σε αριθμητικά συστήματα (hex) πριν οι άλλοι μάθουν τι είναι αριθμητικό σύστημα
  • μου δημιουργήθηκε η σκέψη "κάτσε, εδώ μέσα στο save game δεν πρέπει κάπου να λέει τα stats των χαρακτήρων?" οπότε έκανα εντελώς μόνος μου από το μηδέν με trial and error reverse engineer τα save game formats του Eye of the Beholder, (μερικώς) του Might and Magic III και ειδικά του μπάσταρδου Reunion (αυτό ήταν δύσκολο και παίζοντας κανονικά έπαιρνα πάντα πούλο οπότε έπρεπε να του δείξω κάπως ποιός είναι το αφεντικό) και μετά έγραψα save game editor γι' αυτά -- του Reunion μάλιστα του έσκισα τα πέταλα κάνοντας reverse engineer τα πάντα όλα γιατί είπαμε, σκληρά challenges σηκώνουν σκληρές απαντήσεις (έχω ακόμα τα sources)
  • έκανα reverse engineer με trial and error κοιτώντας με hex editor ένα compiled library για mouse support σε Clipper (ήταν γελοίο τo library, μπορεί να μην ήξερα τι είναι virtual machine ή object file και να μην υπήρχε internet, αλλά ήξερα ότι μπαίνοντας με το hex editor είδα κάπου να λέει InitMouse και GetMouseX και τα υπόλοιπα τι κάνει νιάου νιάου στα κεραμίδια)
  • έγραψα για Clipper ένα reusable widget library που έκανε μαιμού copy όλα τα κλασικά widgets της Turbo Vision εκείνη την εποχή -- μου πήρε πάρα πολλούς μήνες ενασχόλησης over several years και 3 complete rewrites όταν καταλάβαινα κάθε φορά ότι έβαλα τον εαυτό μου σε unmaintainable "αδιέξοδο" για να κανω nail down τα multiple configurable on-the-fly menu bars, και στο τελικό αποτέλεσμα πάλι ήταν οριακά επαρκές το design, αλλά εδώ μιλάμε για practical API design και implementation... ας μη βάλουμε τα γέλια συγκρίνοντας με τη μηδενική εμπειρία των περισσότερων αποφοίτων πληροφορικής
  • έκανα και πολλά ακόμα που βαριέμαι και γω ο ίδιος να τα γράψω πόσο μάλλον εσείς να τα διαβάζετε

Όλα αυτά πριν βγάλω το λύκειο. Το πρώτο μου βιβλίο για αλγόριθμους και data structures (Algorithms in C 2nd ed του Sedgewick) το διάβασα στη βιβλιοθήκη του πανεπιστημίου.

 

 

 

 

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

 

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

 

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

 

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

 

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

 

Ίσως ακόμα θα μπορούσε να πει κανείς ότι πολλά από αυτά που έγραψα δεν είναι καθαρός "προγραμματισμός". Αλλά έχει σημασία πώς θα τα πούμε τώρα εμείς; Το βιβλίο από το οποίο ξεκίνησαν όλα στο εξώφυλλο έλεγε αυτό:

 

Manual%2048K%20%2B%20Intro.jpg

 

Και by the way, κάπως έτσι γίνεται και μερικά παιδιά από 10 χρονών έχουν ήδη αποφασίσει τι θα κάνουν στη ζωή τους.

  • Like 3
Δημοσ. (επεξεργασμένο)

Οι περισσότεροι που ασχολούνταν με home υπολογιστές την δεκαετία του '80 είχαν απλώς ένα ευχάριστο χόμπυ,
τίποτε περισσότερο. Κάποιοι πιο ανήσυχοι πήραν το ερέθισμα και την έμπνευση για σπουδές πάνω στο αντικείμενο,
αυτό ήταν το πραγματικό τους όφελος, που ενδεχομένως επηρέασε σημαντικά και τη ζωή τους, οι υπόλοιποι
- πολλοί περισσότεροι - απλώς περνούσαν την ώρα τους και έχουν κάποιες ευχάριστες αναμνήσεις.
Ακόμη δε χειρότερα, πολλοί εξ αυτών, αποκτούσαν στρεβλή ή ελλιπή εικόνα της πληροφορικής από τα τότε
περιοδικά - αλλά εν μέρη και σήμερα. Π.χ., είναι συχνό φαινόμενο ένας μαθητής να θέλει να ασχοληθεί με το
game programming - προφανώς επειδή μέχρι εκεί φτάνει η γνωστική οπτική του και η πληροφόρησή του.
Ενώ θα μπορούσε να ασχοληθεί π.χ. με scientific computing.  Aλλά ως μαθητής έχει μακάρια άγνοια πώς
εμπλέκεται ο προγραμματισμός με άλλους τομείς της επιστήμης και ποιά είναι η σημασία του σε αυτούς, 
π.χ. τι είναι τα πεπερασμένα ή τα συνοριακά στοιχεία και τι προγραμματισμό μπορεί να κάνει εκεί.
Ως αποτέλεσμα "επιλέγει" το προγραμματιστικό πεδίο των ενδιαφερόντων του πολύ κοντόφθαλμα, λόγω άγνοιας.
Και γενικά, παιδί 10 ετών σπάνια μπορεί να διαλέξει με ασφάλεια και επιτυχία τι θα κάνει στη ζωή του διότι έχει
ελλιπή εικόνα.
 
Η ουσία της άποψής μου στο post #32 συνοψίζεται κύρια στην τελευταία μου πρόταση.
'Όλα σωστά και στην ώρα τους".
Στην συντριπτική πλειοψηφία των περιπτώσεων δεν υπάρχει κάποιο ισχυρό πλεονέκτημα της πρόωρης
ενασχόλησης, αυτό έχω συνάγει από διακεκριμένους συναδέλφους μηχανικούς στον τομέα τους.
Υπάρχει ίσως το πλεονέκτημα ότι αρχικά μπορείς να προχωρήσεις ταχύτερα αλλά μέχρι εκεί.
Το έδαφος καλύπτεται γρήγορα αν ασχοληθείς επιμελώς. Αν δεν ήταν έτσι, τότε θα διακρίνονταν επαγγελματικά
και επιστημονικά μόνον οι χαρισματικοί που εκδηλώνουν πρώιμο ενδιαφέρον κι επιδόσεις, κάτι που δεν συμβαίνει.
 
Η μόνη αξιόλογη περίπτωση πρόωρης ενασχόλησης είναι όσοι διακρίνονται σε διαγωνισμούς πληροφορικής.
Αλλά αυτοί ακολουθούν γενικά ένα συστηματικό, αυστηρό πρόγραμμα μελέτης, αποβλέπουν σε συγκεκριμένες
επιδόσεις και έχουν αναμφισβήτητο τυπικό όφελος (ισχυρό προσόν για την εξέλιξή τους) - και δικαίως μπορούν
να θεωρούνται πιο χαρισματικοί ή έξυπνοι έναντι των άλλων.
Για μένα, οι υπόλοιποι που λένε ότι έμαθαν προγραμματισμό σε παιδική ηλικία (και εμού περιλαμβανομένου),
και ενδεχομένως έγραψαν και κάποια προγράμματα ως έφηβοι, απλώς βαυκαλίζονται και τονώνουν ανούσια
τον εγωισμό και την ματαιοδοξία τους. Όποιος μαθητής έχει πραγματικές ικανότητες και μυαλό, τα δοκιμάζει και

τα αποδεικνύει σε διαγωνισμούς, τέλος. Τα υπόλοιπα του στυλ "μικρός έφτιαξα αυτό, ήξερα εκείνο, έκανα το

αλλο..." έχουν ελάχιστη ουσιαστική αξία. Το ίδιο και στα μαθηματικά, στη φυσική και στη μουσική.
 
Το ότι έμαθες κάποια πράγματα πρόωρα δεν σε κάνει ικανότερο προγραμματιστή από άλλους που τα έμαθαν
αργότερα. Έχω συναδέλφους που σε συγκεκριμένους προγραμματιστικούς τομείς, π.χ. στην παραλληλία,
έφτασαν να κάνουν δημοσιεύσεις, αλλά έμαθαν ότι και όπως έπρεπε στην ώρα του και στο phD τους και
δεν ασχολούνταν με προγραμματισμό απ' το σχολείο. Και προφανώς μια δημοσίευση στο IEEE ή ισοδύναμο
έντυπο έχει ασύγκριτα μεγαλύτερο κύρος και αξία από οποιοδήποτε εφηβικό ή φοιτητικό προγραμματιστικό
κατόρθωμα. 
 
 
Το σπουδαιότερο για έναν μαθητή είναι να προσέχει τα μαθήματά του, κυρίως την βασική του εκπαίδευση.
Αν θέλει να ασχοληθεί, για να έχει κάποιο όφελος μπορεί να το κάνει στα πλαίσια που περιέγραψα στο post #32. 
Αλλιώς θα χάσει τον χρόνο του και θα κινδυνεύσει να μείνει να "κολλά πλακέτες".
Αυτή είναι η άποψή μου, βγαλμένη από την ρεαλιστική εμπειρία μου, την δική μου και αρκετών άλλων και
αυτό συστήνω πάντα στον κάθε επίδοξο μαθητή.
 
Θα μπορούσα να υποστηρίξω το αντίθετο, θα με "συνέφερε" καθώς κι εγώ ασχολήθηκα από μικρός,
όμως βλέπω ότι ουσιαστικά και ρεαλιστικά δεν κέρδισα και πολλά. Αν μελετούσα περισσότερο μαθηματικά
και φυσική το όφελός μου ως μαθητής και αργότερα επιστήμονας θα ήταν μεγαλύτερο. Αρκεί και μόνον το
γεγονός πως ότι μάθεις εκεί, ακόμη κι έναν τύπο ή θεώρημα, δεν απαξιώνεται γνωστικά ποτέ κι άρα ποτέ
δεν θα χάσεις τον χρόνο σου - σε αντίθεση με το να μάθεις apis, προγραμματιστικά περιβάλλοντα και πακέτα
λογισμικού που αλλάζουν κάθε τρεις και λίγο...
 
 
 
 
 
 

 

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

 

 

Δεν τις εξισώσω. Γράφω ότι σχετίζονται στενά - και προφανώς η δεύτερη βοηθά σημαντικά την πρώτη.

 

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

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

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

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

Όμως αυτές οι εμπειρίες, για πολλά προβλήματα είναι από μόνες τους ελλιπείς, ακατάλληλες ή
αποπροσανατολιστικές και ως εκ τούτου η σκέψη τους για την λύση του προβλήματος εύκολα
οδηγείται λανθασμένα. Ως ένα πολύ απλοϊκό παράδειγμα έστω τα προβλήματα :
 
(Α) Ο Πέτρος έχει 3 μήλα. Η Άννα έχει 7 μήλα. Πόσα μήλα εχουν κι οι δυο μαζί;
(Β) Ο Πέτρος έχει μερικά μήλα. Έδωσε 3 μήλα στην Άννα. Τώρα ο Πέτρος έχει 7 μήλα.
Πόσα μήλα είχε ο Πέτρος στην αρχή;
 
Πολλά παιδιά θα λύσουν το πρόβλημα (Β) λάθος. Αυτό έχει εξήγηση :
Η διατύπωση του (Β) τείνει να ενεργοποιήσει το μοντέλο τους για την αφαίρεση
με αποτέλεσμα να προσπαθούν να λύσουν το πρόβλημα με την πράξη της αφαίρεσης.
Το συνηθισμένο μοντέλο για την αφαίρεση είναι το "παίρνω από ένα σύνολο" που λανθασμένα φαίνεται
να ταιριάζει στο (Β).
Αντίθετα, το συνηθισμένο μοντέλο της πρόσθεσης είναι το μοντέλο σύνθεσης ή συνένωσης συνόλων που

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

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

Η λανθασμένη αναπαράσταση ή/και τα περιορισμένα λανθάνοντα αλγοριθμικά μοντέλα οδηγούν

σε λανθασμένο τρόπο σκέψης.
Η θετική εκπαίδευση (μαθηματικά και φυσική) εμπλουτίζει τα λανθάνοντα αλγοριθμικά μοντέλα και τις

δυνατές αναπαραστάσεις και δίνει πολύ μεγαλύτερο εύρος σωστών επιλογών.
Αυτά έχουν αποδειχθεί με μελέτες των De Corte και Verschaffel - αν θυμάμαι καλά.

 

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

που δεν είναι του παρόντος, ούτε ειδικότητά μου...
 
-

Επεξ/σία από V.I.Smirnov
Δημοσ.

Defacer...

 

 

Από το ίδιο manual είχα αντιγράψει την κρεμάλα για τον CPC6128 μου!!!

 

 

Πες μου ότι έπαιζες και Green Beret!!!!


Επί του θέματος, έχω την προσωπική άποψη ότι το challenge του σύγχρονου προγραμματισμού είναι η μοντελοποίηση των πραγμάτων και όχι ό,τι ήταν το 80, το 90 και το 2000. 

 

 

Από ένα απλό Java App μέχρι distributed services για warehouse management και παρακολούθηση του stock μεταξύ διαφορετικών vendors. 

 

 

Επίσης, το κοντά στο 90 (i.e. 1985 - 1989), ένα παιδί ασχολιόταν με τον Η/Υ του αλλά δεν είχε να ασχοληθεί με όλα τα άλλα που υπάρχουν σήμερα. Καλά-καλά δεν υπήρχε ιδιωτική TV. Αυτό σημαίνει αυτόματα περισσότερος χρόνος για ταχύ και τραχύ personal development. Είτε μέσω διάδρασης με τους συνομήλικους στις πλατείες είτε μέσω πιο πνευματικών ενασχολήσεων (βιβλία, σκάκι κτλ). 

 

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

 

 

Επίσης, τότε το να γράψεις ένα μικρό πρόγραμμα ήταν υπόθεση. Έβαζες μία νέα γραμμή και αυτομάτως έπρεπε να κάνεις lines-inserting_line διορθώσεις, όπου lines ήταν οι συνολικές γραμμές του προγράμματος και inserting_ling η νέα γραμμή που έβαζες. Π.χ., απλά και μόνο να αλλάξεις τους αριθμούς των γραμμών. Υπήρχε πάντα το κόλπο με την αρίθμηση σε δεκάδες για να έχεις άλλες 9 να βάλεις αναμεταξύ τους αλλά πολλές φορές δεν ήταν αρκετό. Έτσι, και μόνο να ξέρεις την γλώσσα σου έδινε skill. Την οποία για να την μάθεις έπρεπε να το κάνεις από βιβλία και όχι ψάχνοντας στο google για την τάδε lib. 

 

Πλέον, ούτε αυτό ισχύει. 

 

Επίσης, λίγο πιο μετά (χρονολογικά), η διαφορά από short int σε int μπορούσε να κάνει το πρόγραμμά σου πολλές φορές πιο γρήγορο. Δεν υπήρχαν resources. Ούτε αυτό ισχύει πλέον (εν γένει). 

 

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

 

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

  • 3 εβδομάδες αργότερα...
Δημοσ.

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

  • 3 εβδομάδες αργότερα...

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

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