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

2 Γλώσσες Προγραμματισμού την ίδια στιγμή


valkon

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

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

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

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

 

Επίσης το θέμα δεν είναι να πει κανείς ότι όλα καλά με τη C++ και βασικά ας το μάθαιναν και με MOS 6502 assembly γιατί εμένα μου φαίνεται βατό. Αλήθεια, εμένα προσωπικά μπορεί και με assembly να μου φαινόταν βατό. Αυτό θα έκανε όλους εσάς που θα λέγατε "εεεε τι είναι αυτά, κάντο με C ρε άνθρωπε" να έχετε περισσότερο δίκιο απ' ότι έχει τώρα αυτός που λέει να τα κάνουν με Python ή ψευδογλώσσα ή οτιδήποτε άλλο;

 

Anyway, το point μου είναι: στη διδασκαλία, κάθε ένα πράγμα που πρέπει να έχει ο μαθητής στο κεφάλι του ενώ δεν είναι άμεσα σχετικό με αυτό που διδάσκεται ή δεν το έχει ήδη διδαχθεί στο παρελθόν είναι fail. Το αγαπημένο μου παράδειγμα με τη C:

 

- Λοιπόν παιδιά με το if κάνουμε σύγκριση. Γράφουμε if (age == 18) κλπ κλπ.

- Χμμμ... βασικά έγραψα if (name == "mitsos") και δε δουλεύει... γιατί;

- Ναι λοιπόν κοίτα να δεις... ξέρεις υπάρχει η έννοια του "first class" type... και η σύγκριση δουλεύει σωστά μόνο με τέτοιους... αλλά αυτό που αντιλαμβάνεσαι εσύ σα string δεν είναι first class type όσον αφορά τη γλώσσα... θα μπορούσε δηλαδή αλλά δεν είναι επειδή το 1970 τα μηχανήματα δε θα άντεχαν τόση συγκίνηση... ναι ξέρω ότι έχουμε 2014 αλλά τι να γίνει... τέλος πάντων εσύ τώρα πας να συγκρίνεις την τιμή δύο pointers και επειδή ο ένας είναι pointer σε string literal ενώ ο άλλος σε μεταβλητή ποτέ δε θα μπορούν να είναι ίδιοι... επειδή... ξέρεις, αλλού το stack και αλλού το data segment στο address space της εφαρμογής...

 

FAIL.

 

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

 

Επίσης, όπως ήδη ειπώθηκε γλώσσες σαν τις C/C++ φτιάχτηκαν για να είναι γρήγορες όταν τις χρησιμοποιούν έμπειροι επαγγελματίες, όχι για να είναι κατανοητές όταν τις χρησιμοποιούν αρχάριοι. Αυτό που είπε ο Bjarne περι shooting yourself in the foot? Με δικά μου λόγια εγώ το λέω "αυτές οι γλώσσες κατουράνε στον τάφο του principle of least surprise". Άλλοι το λένε κομψότερα "η γλώσσα πρέπει να σε κάνει να πέφτεις στο pit of success". Η ουσία είναι η ίδια.

  • Like 4
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

 

Π.χ. όταν κάποιος μαθαίνει branching δεν υπάρχει απολύτως κανένας λόγος να το μάθει με strings... η ουσία του branching δεν είναι το data-type της σύγκρισης αλλά η εξοικείωση με τη λογική της διακλάδωσης. Αν το μάθημα γίνεται σε C κι ο μαθητής από μόνος του βάλει string και απορήσει γιατί δεν δουλεύει, τότε δεν του κάνεις ολόκληρη off-topic ανάλυση ειδικά για τα strings. Του λες πολύ απλά και ξεκάθαρα πως λόγω ιδιαιτερότητας της γλώσσας τα strings διαχειρίζονται διαφορετικά, και θα τα αναλύσουμε ξεχωριστά όταν έρθει η ώρα να μιλήσουμε για strings. Προς το παρόν μάθε τη λογική της διακλάδωσης χρησιμοποιώντας int, float, double και char.

 

Θα μπορούσα κι εγώ να πω πως αν το μάθημα γίνεται σε python και ο μαθητής βάλει από μόνος του να συγκρίνει 2 lists, πάλι ήττα θα φάει. Τι σημαίνει αυτό; Πως είναι fail γλώσσα η python για να μάθει κανείς τι είναι το branching?

 

Για τον topic starter, στη θέση σου εγώ θα εστίαζα πρώτα στο να μάθω όσο πιο καλά μπορώ μια γλώσσα. Μετά οι υπόλοιπες θα είναι πιο εύκολες.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

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

Σύνδεση

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

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

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