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

περιεργος καθηγητής;


Dinos_12345

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

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

Έχουμε ένα τύπο στη σχολή, που κοκορεύεται ότι έχει κάνει δύο διδακτορικά, και είναι σούπερ γαμάτος κλπ, και ΔΕΝ ΑΦΗΝΕΙ άλλον να μιλήσει στο μάθημα του. Είναι τόσο σπαστικός, με μόνιμο υφάκι τύπου "I'm awesome" και σήμερα με έκανε trigger με κάτι που είπε.

 

Αρχικά. Λέει ότι ξέρει Java, C++ αλλά από C δεν έχει μυρωδιά. Αμφιβάλω κατά πόσο θα ξέρει καλή C++.

 

Και είπε σήμερα το εξής:

for(int i=0; i<N && !found; i++){
  if(a[i] == element){
    found = TRUE;
  }
}
Είναι καλύτερο και πιο κατανοητό από
for(int i=0; i<N; i++){
  if(a[i] == element){
    found = TRUE;
    break;
  }
}
Και ότι το μάτι του tester θα πάει πιο εύκολα στο πάνω, ενώ στο κάτω θα ψάχνει μία ώρα να δει τι φταίει αν υπάρχει λάθος.

 

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

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

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

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

Κοίτα, ένα δίκιο το έχει, σε πολύπλοκο for loop εύκολα χάνεται το break. Το πάνω είναι πιο κατανοητό. Στο παράδειγμα επειδή είναι μικρό σε έκταση δεν φαίνεται.

 

Για το υφάκι δεν έχω άποψη δεν το έχω δει live.

 

 

Αλλά ότι είμαι awesome το ξέρω, και έχω δίκιο.

 

 

Troll+Face.jpg

 

 

 

 

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

Προσωπικά δεν κοιτάζω το loop πέρα από τα όρια του, αλλά προτιμήσεις είναι αυτές. Φαντάσου το for να έιναι τόσες γραμμές πάνω που να μην βλέπεις τη συνθήκη, ενώ ένα break το λύνει αμέσως. Είπε κιόλας ότι το break είναι πολύ βίαιο για έξοδο από loop, όπως και το return όπως και να βάζεις i = N + 1.

Εγώ για το return και το break ξέρω πως είναι καλές πρακτικές. Πρώτη φορά μου λένε αλλιώς.

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

  • Moderators

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

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

Υπάρχουν και χειρότερα πίστεψε με .....πολύ χειρότερα....

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

Οπότε βάζει μια εργασία που είχε μια άσκηση πολύ δύσκολη κατά εμέ....πάνω στο διαιρεε & βασίλευε ενός αρχικού συνόλου..........ΜΕ ΠΟΛΥ ΣΥΓΚΕΚΡΙΜΕΝΟΥΣ ΠΕΡΙΟΡΙΣΜΟΥΣ....

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

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

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

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

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

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

 

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

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

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

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

 

Στην πολυπλοκότητα αυτός που είχαμε είχε πολύ ειρωνικό ύφος, φάση άσε δεν ξέρεις σου λέω και έλεγε ατάκες τύπου "welcome to computer science" όταν έβαζε δύσκολο πρόβλημα. Είναι σπαστικό. Έχω καθηγητή που δεν βάζει το int μπροστά στη main στη c, και στο compile βγάζει 20 warnings για invalid casts σε pointers.

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

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

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

 

Επίσης, ο τύπος που λες είναι πιθανότατα καραγκιόζης όσον αφορά το τι ξέρει και σίγουρα άσχετος από C++ (με επαγγελματικά κριτήρια έτσι; στη σχολή στους τυφλούς βασιλεύει ο μονόφθαλμος) για τον πολύ απλό λόγο ότι αν αυτός που έκανε δύο διδακτορικά είναι γαμάτος, εκείνον που επί 8 χρόνια αντί για διδακτορικά έγραφε production κώδικα πώς πρέπει να τον πούμε;

 

Σόρι κιόλας αλλά στην Ελλάδα δεν έχω δει ποτέ ούτε έναν ακαδημαϊκό που να τον θεωρήσω παραπάνω από "άντε κάτι ξέρει" όσον αφορά τον προγραμματισμό. Πολύ απλά, δεν είναι η δουλειά τους και δεν έχουν εκπαιδευτεί να είναι καλοί προγραμματιστές. Δεν έχουν καν δουλέψει σαν προγραμματιστές. Πώς θα γίνουν grand masters, γράφοντας κώδικα μόνο για τον εαυτό τους που εφόσον τρέχει σωστά κανείς άλλος δε θα τον δει ποτέ;

 

Στο θέμα μας τώρα....

for(int i=0; i<N && !found; i++) {
    if(a[i] == element) {
        found = TRUE;
    }
}
  1. Τι πάει να πει "το μάτι του tester θα πάει πιο εύκολα"; Καταρχήν ο tester δε θα δει ποτέ source code, είναι σίγουρος ο τύπος ότι έχει γνωρίσει κανέναν tester στη ζωή του;
  2. Προσωπικά εμένα αυτό το loop μου ανεβάζει το cognitive load πριν καν μπω στο body του. Γιατί; Επειδή ο εγκέφαλός μου επεξεργάζεται τα for με την εξής στρατηγική. Πρώτον, στον αλγόριθμο κατανόησης κώδικα που τρέχω υπάρχει το fast path "απλό loop 1...N" και το slow path "όλα τα υπόλοιπα". Με το που θα δει το μάτι κάτι διαφορετικό από i < N, αμέσως έχω παρατήσει το fast path και μπαίνω σε λογική "ώπα κάτσε εδώ γίνεται κάτι ασυνήθιστο, slow down και προσοχή".
  3. Δεν είναι προφανές διαβάζοντας ότι found = TRUE πώς εκεί θα τερματίσει το loop. Είσαι αναγκασμένος να θυμάσαι ότι υπάρχει ένα !found στη συνθήκη τερματισμού. Θα μου πεις εντάξει μωρέ, 3 γραμμές loop δύσκολο είναι; Όχι δεν είναι δύσκολο, αλλά πες μου ξανά για ποιό λόγο είναι καλύτερο από το break? Επίσης πρέπει να είσαι σίγουρος πως δεν αλλάζει η τιμή του found κάπου αλλού. Με το break δεν έχεις τέτοιο θέμα, διαβάζεις break πάει να πει break.
  4. Μην ακούσω τίποτα πίπες ότι "δεν είναι ξεκάθαρο τι θα γίνει στην έκδοση με το break". Άμα δεν είναι ξεκάθαρο τι θα γίνει, δεν είσαι προγραμματιστής και τζάμπα μιλάμε.
  5. Τι θα συμβεί αν στο μέλλον κάποιος προσθέσει λίγο ακόμα κώδικα μετά το if?
  6. Αν λίγο πριν βρεις την απάντηση για το #5 χαμογέλασες συγκαταβατικά επειδή στην περίπτωση αυτή "δε φταίει ο κώδικας παραπάνω αλλά ο επόμενος που έβαλε το bug", έχω να πω πολλά αλλά θα περιοριστώ σε ένα: έχει σημασία ποιός φταίει, ή πόσο χρόνο θα φάμε να φτιάξουμε το πρόβλημα; Ο επαγγελματικός προγραμματισμός είναι ομαδικό παιχνίδι. Ένας κούκος μόνος του δε μπορεί να φέρει την άνοιξη. Οπότε αν έχεις ένα κούκο που σπέρνει μεν αν τον εξετάσεις σε κενό αλλά στα πλαίσια της ομάδας "ενθαρρύνει" τους υπόλοιπους σε λάθη για οποιοδήποτε λόγο, easy decision ο κούκος παίρνει πούλο.
Επεξ/σία από defacer
  • Like 12
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

void στη main στη C;

 

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

Int sorry. Πω δεν την παλεύω σήμερα. Κοίταξε, τον έχω πετύχει λίγο στις καλές του, συνήθως μιλούσε ειρωνικά σε εμένα.

Παρ όλα αυτά, το μάθημα που έκανε μου άρεσε τόσο που το διάβασα εις βάθος και έμαθα πολλά.

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

Επεκτείνοντας λίγο αυτό που είπε ο defacer, αυτοί οι δύο κώδικες μπορεί να σου δώσουν διαφορετικές εντυπώσεις για το τι κάνουν. Το πρώτο απλά σου λέει ότι χρησιμοποιείς το found για να βγεις απ' τη for, ενώ το δεύτερο είναι 100% σίγουρο ότι κάπου αλλού χρειάζεσαι το found.

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

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

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

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

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

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

Σύνδεση

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

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

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