Python στην Γ λυκείου

Ξεκίνησε από nokotsos, 25 Μαΐου 2022, 04:59:58 ΜΜ

« προηγούμενο - επόμενο »

nokotsos

Καλησπέρα , άκουσα απο τα παιδιά ότι από του χρόνου θα τους μαθαίνουν Python στο γενικό λύκειο.. κατα πόσο ισχυεί αυτό?(δεν βρίσκω κάτι που να το επιβεβαιώνει) και αν ισχύει δεν θα διδάσκετε η ΓΛΩΣΣΑ?

tdrivas

Thanassis Drivas
BSc in Computer Science
MSc in Space Science Applications and Technologies
https://github.com/tdrivas

tsabatman

Λογικά το πρόγραμμα σπουδών θα ξεκινήσει να εφαρμόζεται σε πρότυπα από την Α λυκείου (από του χρόνου;) και ίσως να ξεκινήσει να εφαρμόζεται σε όλα τα γενικά Λύκεια από την περίοδο 2023-2024. Του χρόνου η Γ λυκείου θα κάνει ΓΛΩΣΣΑ. Εκτός αν κάποιος συνάδελφος έχει διαφορετική ενημέρωση. 

evry

Η αναφορά ενός περιβάλλοντος ή μιας βιβλιοθήκης της Python σε μια ενδεικτική δραστηριότητα για όσους γνωρίζουν τον τρόπο σύνταξης των προγραμμάτων σπουδών δεν σημαίνει απολύτως τίποτα. Δεν υπάρχει καμία αναφορά σε δομές της Python πουθενά στο πρόγραμμα σπουδών σε αντίθεση για παράδειγμα με το πρόγραμμα σπουδών του αντίστοιχου μαθήματος στα ΕΠΑΛ.
Για παράδειγμα στην Α' Λύκειου έχει δραστηριότητα με το geogebra. Με το geogebra!!! Λες και δεν υπάρχουν γλώσσες προγραμματισμού. 
Αφήστε το λοιπόν, Πάλι στην ΓΛΩΣΣΑ θα καταλήξουμε.
Τουλάχιστον θα κάνουν Python στο Γυμνάσιο γιατί αναφέρεται ρητά στον οδηγό εκπαιδευτικού, πάλι καλά.
Το Λύκειο θα γλιτώσει για άλλη μια φορά (όπως το 2015) από αυτή την .... ενοχλητική γλώσσα.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

George Eco

Του χρόνου πάλι ΓΛΩΣΣΑ το βλέπω. Ωστόσο θέλω να είμαι αισιόδοξος, γιατί αν έχει δίκιο ο evry, από τη μία είναι βολικό για τους εκπαιδευτικούς με τόση πείρα, από την αλλή είναι τραγικό, όταν όλος ο Κόσμος διδάσκει πάνω σε πραγματικές γλώσσες και καταλήγουμε εμείς να έχουμε μαθητές που γίνονται φοιτητές δίχως τις στοιχειώδεις προδιαγραφές ως προγραμματιστές γιατί πολύ απλά η ΓΛΩΣΣΑ δεν είναι εργαλείο της προκοπής.
Δεν είναι αντικειμενοστραφής.
Από το αλφάβητο λείπουν πράγματα που χρησιμοποιεί.
Είναι κάκιστα δηλωμένη.
Είναι θεωρητική.
Δεν έχει σχεδόν καμία σχέση με τη πραγματικότητα.

andreas_p


alkisg

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

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

Αντίθετα το "χτυπάω κλικ κάπου στον browser, τι γίνεται από πίσω;" θα έπρεπε να είναι μέρος της γενικής παιδείας. Όμως ακόμα και οι παλιότεροι Πληροφορικοί δεν έχουμε εμπειρία με ασύγχρονο προγραμματισμό και δεν μπορούμε να καταλάβουμε εύκολα τις έννοιες των callbacks, promises κλπ που υλοποιούν πλέον την πλειονότητα των GUIs.

Π.χ. στο γεγονός onsubmit μιας φόρμας, σύλλεξε τα δεδομένα, στείλ' τα στον απομακρυσμένο server, και όρισε μια callback.
Αν αργότερα κληθεί η callback, συνέχισε με την επόμενη εργασία - ενώ είσαι ήδη σε function, εδώ είναι το περίεργο, δεν μπορείς ξαφνικά να επιστρέψεις στη main.
Αν δεν υπάρξει απάντηση εκτέλεσε άλλον κώδικα που ειδοποιεί τον χρήστη για το πρόβλημα κλπ.

Όταν οι μαθητές βαράνε πολλές φορές κλικ σε ένα κουμπί για να ...φορτώσει πιο γρήγορα η σελίδα, και δημιουργούν πιθανώς πληθώρα από requests και callbacks, δεν είναι εμφανής η έλλειψη των παραπάνω γνώσεων;
Την έλλειψη της γνώσης του αντικειμενοστραφούς προγραμματισμού πού την βλέπουμε στην καθημερινή μας ζωή;

Foto

Το πρόγραμμα σπουδών για το μάθημα της πληροφορικής στο Λύκειο είναι πολύ φιλόδοξο. Θα ήθελα να δω τα νέα βιβλία για αυτό το πρόγραμμα!
Κάπου λέει για Arduino στη Β Λυκείου. Εκεί κατά κόρο χρησιμοποιείται η C++ και τα εξαρτήματα δουλεύονται με αντικείμενα (εισαγόμενες βιβλιοθήκες), εκτός από απλά όπως τα LED.. Υπάρχει και η microPython για Arduino  Η ασύγχρονη λειτουργία γίνεται με διακοπές (interrupts). Για να γίνει το μάθημα θα πρέπει να δοθούν πλακέτες (μην περιμένουμε να κάνουν τα παιδιά και τη καλωδίωση). Το πολύ να βάλουν κάποιο LED ή και ποτενσιόμετρο. Όλα αυτά θα  τα αγοράζει ο μαθητής;
Σα ψέματα μου φαίνονται!

pgrontas

Άλκη συμφωνώ και διαφωνώ ταυτόχρονα.

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

Τώρα σε ότι αφορά τα callbacks, αυτά βασίζονται ουσιαστικά στον συναρτησιακό προγραμματισμό όπου μπορείς να έχεις μια συνάρτηση ως παράμετρο, μεταβλητή κτλ. (first class object). Μήπως θα ήταν καλύτερο να διδάξουμε αυτό (ως βασική αρχή δηλαδή και όχι κατ' ανάγκη ως εφαρμογή);

Κατά σύμπτωση η Python η Javascript και άλλες πραγματικές γλώσσες έχουν και τα δύο. Όχι όμως η ψευδογλώσσα, ούτε η ΓΛΩΣΣΑ!

Επίσης συμφωνώ με το σκεπτικό σου ότι οι μαθητές θα πρέπει να γνωρίζουν κάποιες τεχνικές λεπτομέρειες για τις εφαρμογές που χρησιμοποιούν (το αγαπημένο μου παράδειγμα είναι το SSL/TLS μιας και οι μαθητές ρωτούν συχνά για το https). Όμως δεν θεωρώ ότι αυτά πρέπει αναγκαία να περάσουν μέσω του κώδικα, αλλά μπορεί να εισαχθούν μέσω θεωρίας εμπλουτίζοντας ταυτόχρονα το μάθημα και με άλλα πεδία της πληροφορικής.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

alkisg

#9
Σε περιβάλλοντα που βασίζονται σε τερματικό (π.χ. σκέτη python) είναι λίγο δύσκολο να βρεις παραδείγματα για ασύγχρονο προγραμματισμό και main event loops αν δεν προσθέσεις GUI ή networking.

Π.χ. το "Example #1" στο https://www.educba.com/python-event-loop/ είναι μόνο 10 γραμμές, αλλά δεν μπορούν εύκολα να το αντιστοιχίσουν οι μαθητές σε έννοιες του πραγματικού κόσμου... νομίζω ότι παιδαγωγικά ο ασύγχρονος θα παρουσιαστεί πολύ πιο εύκολα με το "κάνω κλικ σε κουμπί".

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

dpa2006

#10
Καλησπέρα,
θα συμφωνήσω με τον Άλκη,
Ο προγραμματισμός βάση γεγονότων είναι σημαντικός και βοηθάει τον εκπαιδευόμενο να κατανοήσει πως λειτουργεί το πρόγραμμα του.
Η άποψη του Alan Kay για την εξέλιξη και την πορεία του OOP νομίζω πως είνα βαρύνουσα

https://suzdalnitski.medium.com/oop-will-make-you-suffer-846d072b4dce

A Conversation with Alan Kay

https://medium.com/javascript-scene/the-forgotten-history-of-oop-88d71b9b2d9f

Επίσης όλοι όσοι "φωνάζουν" για τον OOP δεν νομίζω να φωνάζουν άδικα...
https://medium.com/@konradmusial/why-oop-is-bad-and-possibly-disastrous-e0844fa96c1f

Οι εφαρμογές μη OOP παραδειγμάτων προγραμματισμού σε άλλα πεδία (π.χ. ML)  πληθαίνουν...
https://beapython.dev/2020/10/30/is-functional-programming-the-futures-best-coding-paradigm/

Εϋχομαι να δούμε μια Γλώσσα προγραμματισμού στο ΕΛ(Ενιαίο Λύκειο) αλλά αυτό πιστεύω δυστυχώς θα αργήσει.
Computer science (abbreviated CS or CompSci) is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical processes (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded in bits and bytes in a computer memory or transcribed engines and protein structures in a human cell.source:http://en.wikipedia.org/wiki/Computer_science

akalest0s

Πρώτη φορά που σκέφτηκα ότι ίσως δεν είναι και όλα τόσο ρόδινα με τον OOP, ήταν όταν έπεσα πάνω σε αυτό το βίντεο:
https://www.youtube.com/watch?v=QM1iUe6IofM
Πολύ ενδιαφέρουσες οι παραπάνω παραπομπές, dpa.

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

Με αυτά τα δύο, είτε πάμε σε πραγματική γλώσσα (που το θέλω) είτε όχι, μικρή αξία έχει για μένα. Αν, πχ, πάμε σε Python και η κατάσταση είναι όπως η σημερινή ΕΠΙΛΕΞΕ, καλύτερα να μείνουμε εδώ που είμαστε.
Ε, ρε μπαρμπα Bob που μας χρειάζεται! (ειδικά εκεί στο υπουργείο..)
"Abstraction is not the first stage, but the last stage, in a mathematical development." MK
"I don't want to write about a high level thing, unless I fully understand about a low level thing" DK

alkisg

Παράθεση από: akalest0s στις 04 Ιουν 2022, 04:48:20 ΜΜβ) Επιτέλους το μάθημα να είναι "καλώς ορισμένο". Όχι αυτές οι φαιδρότητες που ζούμε 20 χρόνια τώρα.

Με αυτά τα δύο, είτε πάμε σε πραγματική γλώσσα (που το θέλω) είτε όχι, μικρή αξία έχει για μένα. Αν, πχ, πάμε σε Python και η κατάσταση είναι όπως η σημερινή ΕΠΙΛΕΞΕ, καλύτερα να μείνουμε εδώ που είμαστε.

Το Υπουργείο μπορεί πανεύκολα να λύσει όλες τις ασάφειες της ΓΛΩΣΣΑΣ με μια φράση:
"δεχόμαστε την τρέχουσα υλοποίηση του Διερμηνευτή ως σωστή· ό,τι διατυπώνεται διαφορετικά στο βιβλίο, να εντοπιστεί και να διορθωθεί στην επόμενη επανατύπωση" (και τους είχαμε στείλει τη σχετική λίστα εδώ και 15 χρόνια).

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

==> κι εγώ δεν βλέπω να γίνεται σοβαρή αναβάθμιση με την Python, αφού κατά πάσα πιθανότητα θα μείνουμε στην ύλη της ΑΕΠΠ με άλλη γλώσσα. Ούτε βιβλιοθήκες A.I. θα χρησιμοποιήσουμε (που τους κάνουν διαφήμιση, εγώ δεν τις θεωρώ σημαντικές για Β/θμια), ούτε καν GUI (αφού η Python δεν έχει), οπότε το συνολικό όφελος αντιστοιχεί στην παραπάνω φράση που έγραψα, ενώ ενέχει και κινδύνους.

akalest0s

Παράθεση από: alkisg στις 04 Ιουν 2022, 05:09:35 ΜΜΑσάφειες υλοποίησης η Python δεν πολυέχει.
Θα βρεθούν όμως ασάφειες διδασκαλίας, π.χ. πώς να περιορίζουμε τους μαθητές ώστε να μην λύνουν τις ασκήσεις με προχωρημένα χαρακτηριστικά της Python. 
Ακριβώς, σε αυτό αναφέρομαι.
"Abstraction is not the first stage, but the last stage, in a mathematical development." MK
"I don't want to write about a high level thing, unless I fully understand about a low level thing" DK

dpa2006

#14
Παράθεση από: Foto στις 31 Μαΐου 2022, 01:09:06 ΠΜΤο πρόγραμμα σπουδών για το μάθημα της πληροφορικής στο Λύκειο είναι πολύ φιλόδοξο. Θα ήθελα να δω τα νέα βιβλία για αυτό το πρόγραμμα!
Κάπου λέει για Arduino στη Β Λυκείου. Εκεί κατά κόρο χρησιμοποιείται η C++ και τα εξαρτήματα δουλεύονται με αντικείμενα (εισαγόμενες βιβλιοθήκες), εκτός από απλά όπως τα LED.. Υπάρχει και η microPython για Arduino  Η ασύγχρονη λειτουργία γίνεται με διακοπές (interrupts). Για να γίνει το μάθημα θα πρέπει να δοθούν πλακέτες (μην περιμένουμε να κάνουν τα παιδιά και τη καλωδίωση). Το πολύ να βάλουν κάποιο LED ή και ποτενσιόμετρο. Όλα αυτά θα  τα αγοράζει ο μαθητής;
Σα ψέματα μου φαίνονται!

Καλημέρα σε όλους,
Δεν χρειάζεται κατ' ανάγκη C/C++ στο Arduino...(για αρχή τουλάχιστον)
Έχουμε και άλλες δυνατότητες.
Scratch
http://s4a.cat/

Python
https://create.arduino.cc/projecthub/smart-tech/programming-arduino-using-python-f3d2c0

mBlock
https://mblock.makeblock.com/en-us/
Computer science (abbreviated CS or CompSci) is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical processes (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded in bits and bytes in a computer memory or transcribed engines and protein structures in a human cell.source:http://en.wikipedia.org/wiki/Computer_science