Μήπως τελικά η Python δεν έχει εκπαιδευτικό χαρακτήρα;

Ξεκίνησε από Dimitris365, 14 Φεβ 2017, 10:52:16 ΜΜ

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

Dimitris365

Ουδέν σχόλιον.

pgrontas

Χωρίς να μπορώ να γνωρίζω με ποια κριτήρια έγινε η επιλογή της python για το μάθημα του προγραμματισμού νομίζω ότι είναι πολύ καλή επιλογή γιατί:

1. έχει πολύ απλη σύνταξη και λίγο θόρυβο (πάρα πολύ βοηθητικό στον εκπαιδευτικό  χαρακτήρα)
2. υποστηρίζει όλα τα υποδείγματα προγραμματισμού (procedural, functional, oo)
3. υπάρχουν πολλές βιβλιοθήκες με τις οποίες οι μαθητές μπορούν να πειραματιστούν

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

Τώρα τα μειονεκτήματα που αναφέρεις δεν μου φαίνονται και τόσο σημαντικά. Μάλιστα το script-ο-γλώσσα, αν εννοείς ότι υπάρχει περιβάλλον REPL μάλλον θετικό είναι για χρήση στην εκπαίδευση, γιατί ο μαθητής μπορεί να πειραματιστεί επιτόπου με τις εντολές χωρίς να χρειάζεται να γράψει όλοκληρο πρόγραμμα. Αυτό φαίνεται ότι έχει κριθεί θετικό και δεν είναι τυχαίο μάλιστα ότι ακόμα και γλώσσες όπως η C# αποκτούν και αυτές REPL mode.

Φυσικά κανείς δεν λέει ότι είναι τέλεια γλώσσα. Εμένα για παράδειγμα δεν μου αρέσει καθόλου το δυναμικό σύστημα τύπων, ειδικά όταν μιλάμε για μαθητές. Αλλά καμία γλώσσα δεν είναι τέλεια.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

itt

Παράθεση από: mimisss στις 14 Φεβ 2017, 10:52:16 ΜΜ
Όταν βλέπω μια script-ο-γλώσσα η οποία:


  • προσπαθεί από έκδοση σε έκδοση να αποφασίσει αν η print είναι συνάρτηση ή οχι
  • εισάγει τον ευφάνταστο τελεστή// επειδή δεν μπόρεσαν οι σχεδιαστές της να καθορίσουν σωστά το div και ως εκ τούτου μπήκε ακόμα ενα διδακτικό εμπόδιο στην εκμάθηση, ας πούμε της δυαδικής αναζήτησης (αλήθεια, ποιός μπορεί να πει ακριβώς τι κάνει αυτός ο τελεστής; )
  • επιτρέπει σε κώδικα όπως ο παρακάτω να λειτουργεί κανονικά (προσθέτοντας άλλο ένα ναι-μεν-αλλά στα τόσα και τόσα από τα οποία φαίνεται να διέπεται):
x=5

def f1():
    print x

f1()


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

Το αν είναι η print συνάρτηση ή όχι εξαρτάται από την έκδοση (sic). Άμα κάνουμε consolidate την έκδοση που χρησιμοποιούμε λοιπόν (όπως κάνει δηλαδή όλoς ο πλανήτης γη), problem solved.

O τελεστής // εκτελεί floor division, τώρα δεν κατάλαβα ακριβώς που διαφωνείς, ή γιατί τον χρησιμοποιείς αντί του / αλλά μπορείς να μας εξηγήσεις.

Ο κώδικας που παρέθεσες λειτουργεί κανονικά στις περισσότερες γλώσσες που υπάρχουν και έχουν παρόμοιους scoping κανόνες. Το ίδιο πράγμα θα κάνει στην C , στη C++, στη Java, στη C#, οπότε δεν βλέπω που είναι το πρόβλημα.

Τέλος, εσύ τι προτείνεις ως εναλλακτική στην python;


PS:

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

Dimitris365

Παράθεση από: itt στις 15 Φεβ 2017, 12:00:09 ΜΜ
Το αν είναι η print συνάρτηση ή όχι εξαρτάται από την έκδοση (sic). Άμα κάνουμε consolidate την έκδοση που χρησιμοποιούμε λοιπόν (όπως κάνει δηλαδή όλoς ο πλανήτης γη), problem solved.

Ακριβώς. Αυτό δεν θα έπρεπε να χρειάζεται. Είναι breaking change (και δεν είναι η μόνη) που δημιουργεί ασυμβατότητα από έκδοση σε έκδοση. Ή μαθαίνει κάποιος μια γλώσσα προγραμματισμού ή όχι. Το να λες οτι ξέρεις Python έκδοση x.y.z είναι αστείο και προβληματικό τόσο σε εκπαιδευτικό όσο και σε επαγγελματικό επίπεδο. Σε καμία άλλη γλώσσα δεν συμβαίνει αυτό και νομίζω οτι και αυτό περιμένει ο (προγραμματιστικός) πλανήτης και οχι αυτό που λες.

Παράθεση από: itt στις 15 Φεβ 2017, 12:00:09 ΜΜ
O τελεστής // εκτελεί floor division, τώρα δεν κατάλαβα ακριβώς που διαφωνείς, ή γιατί τον χρησιμοποιείς αντί του / αλλά μπορείς να μας εξηγήσεις.

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

Παράθεση από: itt στις 15 Φεβ 2017, 12:00:09 ΜΜ
Ο κώδικας που παρέθεσες λειτουργεί κανονικά στις περισσότερες γλώσσες που υπάρχουν και έχουν παρόμοιους scoping κανόνες. Το ίδιο πράγμα θα κάνει στην C , στη C++, στη Java, στη C#, οπότε δεν βλέπω που είναι το πρόβλημα.

Το πρόβλημα είναι οτι υπάρχουν δυο μέτρα και δυο σταθμά. Έτσι, έχεις πρόσβαση στη x αλλά αν θες να την αλλάξεις πρέπει να γράψεις μέσα στην f1:
global x


Απαράδεκτο. Σε καμία γλώσσα δεν συμβαίνει αυτό και σίγουρα οχι σε αυτές που αναφέρεις. Θα περίμενα να θεωρείται λάθος (μη δηλωμένης μεταβλητής) αν δεν υπάρχει η δήλωση global. Ειδικά στις αμιγώς αντικειμενοστρεφής java,c# είναι ιδιαίτερα δύσκολο να δωθεί ανάλογο παράδειγμα γιατί οι μεταβλητές είναι είτε class properties (static -> το οποίο βρίσκεται στη δήλωση της μεταβλητής) είτε object properties) αλλά έστω, στη c# ισχύει:
static void Main(string[] args)
{
    int x = 5;
    {
        Console.WriteLine(x);
    }
    Console.WriteLine(x);
}


ΑΛΛΑ ΚΑΙ:

static void Main(string[] args)
{
    int x = 5;
    {
        x++;
        Console.WriteLine(x);
    }
    Console.WriteLine(x);
}


απλούστερο, ευκολότερο, τιμιότερο.

Παράθεση από: itt στις 15 Φεβ 2017, 12:00:09 ΜΜ
Τέλος, εσύ τι προτείνεις ως εναλλακτική στην python;

Η Pascal είχε ασύγκριτα εκπαιδευτικά χαρακτηριστικά. Η java έχει το ασύγκριτο πλεονέκτημα οτι είναι αμιγώς αντικειμενοστρεφής και αμέσως θα έδινε ένα ΠΡΑΓΜΑΤΙΚΟ γνωστικό προσόν στους μαθητές (έναντι του να καθόμαστε και να ασχολούμαστε ακόμα με procedural προγραμματισμό).  Η "απλότητα" της Python εύκολα γυρίζει μπούμερανγκ, για παράδειγμα καλή τύχη στους διορθωτές γραπτών μεθαύριο όταν θα πρέπει να αποφασίσουν πως θα βαθμολογήσουν τα blocks κώδικα που θα έπρεπε οι μαθητές να γράψουν δεξιότερα στο τετράδιο για να ανήκουν σε κάποια δομή, ελλείψει σημείων στίξης.


dpa2006

Παράθεση από: itt στις 15 Φεβ 2017, 12:00:09 ΜΜ
Το αν είναι η print συνάρτηση ή όχι εξαρτάται από την έκδοση (sic). Άμα κάνουμε consolidate την έκδοση που χρησιμοποιούμε λοιπόν (όπως κάνει δηλαδή όλoς ο πλανήτης γη), problem solved.

O τελεστής // εκτελεί floor division, τώρα δεν κατάλαβα ακριβώς που διαφωνείς, ή γιατί τον χρησιμοποιείς αντί του / αλλά μπορείς να μας εξηγήσεις.

Ο κώδικας που παρέθεσες λειτουργεί κανονικά στις περισσότερες γλώσσες που υπάρχουν και έχουν παρόμοιους scoping κανόνες. Το ίδιο πράγμα θα κάνει στην C , στη C++, στη Java, στη C#, οπότε δεν βλέπω που είναι το πρόβλημα.

Τέλος, εσύ τι προτείνεις ως εναλλακτική στην python;


PS:

Η python είναι μια γλώσσα που μπορεί να χρησιμοποιήσει ο οποιοσδήποτε στον κλάδο του. Έχω φίλους αρχαιολόγους που σκριπτάρουν σε python για να κάνουν automate το cataloging ευρημάτων, δεν μπορώ εγώ προσωπικά να φανταστώ κάτι καλύτερο από python για διδασκαλία.
Η Python χρησιμοποιείται σε ένα πολύ ευρύ πεδίο επιστημών,από Θεωρητικούς ως θετικούς επιστήμονες και πιο ειδικά στο πεδίο της επιστήμης της Πληροφορικής,Ηλεκτρονικών,Τηλεπικοινωνίες,Φυσική 2,Χημεία,Γεωλογία κλπ.
Άρα μια χαρά επιλογή ήταν και είναι η Python.
Τα όποια προβλήματα με τις διαφορές στις εκδόσεις μπορούν να αντιμετωπιστούν.
Python in Education
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

itt

Παράθεση από: mimisss
Ακριβώς. Αυτό δεν θα έπρεπε να χρειάζεται. Είναι breaking change (και δεν είναι η μόνη) που δημιουργεί ασυμβατότητα από έκδοση σε έκδοση. Ή μαθαίνει κάποιος μια γλώσσα προγραμματισμού ή όχι. Το να λες οτι ξέρεις Python έκδοση x.y.z είναι αστείο και προβληματικό τόσο σε εκπαιδευτικό όσο και σε επαγγελματικό επίπεδο. Σε καμία άλλη γλώσσα δεν συμβαίνει αυτό και νομίζω οτι και αυτό περιμένει ο (προγραμματιστικός) πλανήτης και οχι αυτό που λες.

Όχι από έκδοση σε έκδοση, από major version σε major version. Ο πλανήτης είτε παίζει με 2.7.Χ είτε με την 3. Δεν θεωρώ και εγώ ότι είναι η καλύτερη σελίδα στην ιστορία της python, αλλά σιγά το πρόβλημα.


Παράθεση από: mimisss
Ο τελεστής // χρησιμοποιείται στον αλγόριθμο δυαδικής αναζήτησης του σχολικού βιβλίου, σελ. 75.

Οκ.

Παράθεση από: mimisss
Το πρόβλημα είναι οτι υπάρχουν δυο μέτρα και δυο σταθμά. Έτσι, έχεις πρόσβαση στη x αλλά αν θες να την αλλάξεις πρέπει να γράψεις μέσα στην f1:
global x


Απαράδεκτο. Σε καμία γλώσσα δεν συμβαίνει αυτό και σίγουρα οχι σε αυτές που αναφέρεις. Θα περίμενα να θεωρείται λάθος (μη δηλωμένης μεταβλητής) αν δεν υπάρχει η δήλωση global. Ειδικά στις αμιγώς αντικειμενοστρεφής java,c# είναι ιδιαίτερα δύσκολο να δωθεί ανάλογο παράδειγμα γιατί οι μεταβλητές είναι είτε class properties (static -> το οποίο βρίσκεται στη δήλωση της μεταβλητής) είτε object properties) αλλά έστω, στη c# ισχύει:
static void Main(string[] args)
{
    int x = 5;
    {
        Console.WriteLine(x);
    }
    Console.WriteLine(x);
}


ΑΛΛΑ ΚΑΙ:

static void Main(string[] args)
{
    int x = 5;
    {
        x++;
        Console.WriteLine(x);
    }
    Console.WriteLine(x);
}


απλούστερο, ευκολότερο, τιμιότερο.

Δεν έχεις πρόσβαση στο x, το x στο scope της συνάρτησης είναι διαφορετικό από το x στο εξωτερικό scope, για αυτό πρέπει να το δηλώσεις και ως global. Γιατί δεν είναι global. Πέρα βέβαια από το ότι δεν υπάρχει κανένας λόγος να κάνεις αυτό που έγραψες, στο αρχικό σου post δεν έγραφες καν αυτό που έγραψες τώρα.

Παράθεση από: mimisss
Η Pascal είχε ασύγκριτα εκπαιδευτικά χαρακτηριστικά.

Επειδή...;

Παράθεση από: mimisss
Η java έχει το ασύγκριτο πλεονέκτημα οτι είναι αμιγώς αντικειμενοστρεφής και αμέσως θα έδινε ένα ΠΡΑΓΜΑΤΙΚΟ γνωστικό προσόν στους μαθητές (έναντι του να καθόμαστε και να ασχολούμαστε ακόμα με procedural προγραμματισμό).

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

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

Απλά δεν θα ασχοληθούν;

ΚΑΛΟΓΙΑΝΝΗΣ ΝΕΣΤΟΡΑΣ

Η  PYTHON λόγω του ότι ειναι αντικειμενοστρεφείς γλώσσα για εκπαιδευτικό σκοπό δεν θα έπρεπε να διδάσκεται αν ήθελας ας έγραφαν ένα καλύτερο εγχειρίδιο για την PASCAL που είναι εκπαιδευτική γλώσσα και ας προσθεταν τις δομές δεδομένων και τους αλγόριθμους αναζήτησης και ταξινόμησης αλλά υλοποιημένους σε PASCAL . Μακάρι να αλλάξει στην επόμενη σχολική χρόνια . Φέτος κατά τη γνώμη μου οι υπεύθυνοι του υπουργείου για τα βιβλία του ΕΠΑΛ τομέα πληροφορικής απέτυχαν. Κακογραμμένα και ασύνδετες οι ενότητές τους. κρίμα!!!

itt

Παράθεση από: ΚΑΛΟΓΙΑΝΝΗΣ ΝΕΣΤΟΡΑΣ στις 15 Φεβ 2017, 10:50:05 ΜΜ
Η  PYTHON λόγω του ότι ειναι αντικειμενοστρεφείς γλώσσα για εκπαιδευτικό σκοπό δεν θα έπρεπε να διδάσκεται

H python είναι multi-paradigm, χωρίς να σε αναγκάσει να γράψεις σε κάποιο συγκεκριμένο. Αυτό που λες δεν στέκει.



ΚΑΛΟΓΙΑΝΝΗΣ ΝΕΣΤΟΡΑΣ

 Κοιτά το παραδέχομαι έκανα λάθος αλλά η ουσία είναι μία μπορεί ένας μαθητής ΕΠΑΛ να εξεταστεί σε μια τέτοια γλώσσα , και μάλιστα στο χαρτί (εννοώ) γραπτώς, τηρώντας όλους τους κανόνες κενών και αλλαγής γραμμών για τα όρια κάθε εντολής??
Τελείωσε η σχολική χρονιά και τώρα το υπουργείο αποφάσισε να εκδόσει τετράδιο μαθητή !!!
Ή πιστεύεται ότι όλα βαίνουν καλώς??
Εδώ να φανταστείτε ότι στα αντίστοιχα τμήματα ΤΕΙ ΠΛΗΡΟΦΟΡΙΚΗΣ πανελλαδικώς δεν έχει εισαχθεί η PYTHON και εκεί που έχει εισαχθεί τα πολύ βασικά και Απαιτούν από μαθητές να αφομοιώσουν μια τέτοια γλώσσα χωρίς μάλιστα να υπάρχει κατάλληλο υλικό ??
Γιατί και οι λύσεις των δραστηριοτήτων και οι δραστηριότητες του σχολικού βιβλίου είναι εντελώς  ακατάλληλες !!!
Θα έβαζαν τη C++  ή την C ΑΛΛΆ ΤΗΝ PYTHON ??

evry

Σχετικά με την παρουσία της Python στην εκπαίδευση για να μην δημιουργούνται ψευδείς εντυπώσεις:
Python is Now the Most Popular Introductory Teaching Language at Top U.S. Universities



Επίσης: Ελληνικά πανεπιστημιακά τμήματα στα οποία διδάσκεται Python

Ηλεκτρολόγοι Μηχανικοί και Τεχνολογίας Υπολογιστών, Πάτρα
Μηχανικοί Η/Υ και πληροφορικής
Ηλεκτρονικοί Μηχανικοί και Μηχανικοί Υπολογιστών, Χανιά
Μηχανικών και Η/Υ και Πληροφορικής, Ιωάννινα
Μαθηματικό Αθήνας
Μαθηματικό Πάτρας
Μαθηματικό Ιωαννίνων

και σίγουρα υπάρχουν και άλλα..
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Λάμπρος Μπουκουβάλας

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

Η Python είναι ΜΙΑ από τις καλές γλώσσες προγραμματισμού τόσο με γενική έννοια όσο ΚΑΙ για εκπαιδευτικούς σκοπούς και και χρησιμοποιείται από πολλά ιδρύματα, και ΤΕΙ Πληροφορικής και Πανεπιστήμια και Πολυτεχνεία. Υπάρχουν κι άλλες κατάλληλες, δεν είναι η μόνη. Η συγγραφική ομάδα την επέλεξε και καλά έκανε. Αν υπήρχε άλλη συγγραφική ομάδα, ενδεχομένως να επέλεγε άλλη γλώσσα και το ίδιο καλά θα έκανε κι αυτή. Και δεν είναι καθόλου σίγουρο ότι ένα άλλο βιβλίο με άλλη γλώσσα θα ήταν πιο καλογραμμένο. Μπορεί να ήταν, μπορεί και όχι.

Πολύ χρήσιμες οι απόψεις και οι εμπειρίες όλων, και χαίρομαι όταν τις μοιραζόμαστε με καλή διάθεση. Είμαι βέβαιος ότι αυτό είναι το κίνητρο όσων συμμετέχουν. Ας μην κάνουμε όμως την επιλογή της python πραγματικό μας πρόβλημα. Δεν είναι.
Λάμπρος Μπουκουβάλας
MSc - MRes

http://blogs.sch.gr/lambrosbouk

Ο Θουκυδίδης  (που τον διαβάζουν οι ξένοι, αλλά όχι εμείς)  έγραφε: «Αταλαίπωρος τοις πολλοίς η ζήτησις της αληθείας, και επί τα ετοίμα μάλλον τρέπονται» (Ι, 20, 3). Οι περισσότεροι δηλαδή αναζητούν αβασάνιστα την αλήθεια και στρέφονται σε ό,τι βρίσκουν έτοιμο. Δεν προβληματίζονται...

evry

Παράθεση από: Λάμπρος Μπουκουβάλας στις 16 Φεβ 2017, 02:18:02 ΜΜ
Πολύ χρήσιμες οι απόψεις και οι εμπειρίες όλων, και χαίρομαι όταν τις μοιραζόμαστε με καλή διάθεση. Είμαι βέβαιος ότι αυτό είναι το κίνητρο όσων συμμετέχουν.
Εγώ πάλι δεν είμαι καθόλου βέβαιος

Παράθεση από: Λάμπρος Μπουκουβάλας στις 16 Φεβ 2017, 02:18:02 ΜΜ
Ας μην κάνουμε όμως την επιλογή της python πραγματικό μας πρόβλημα. Δεν είναι.
Και όμως φίλε μου αυτό είναι το πραγματικό πρόβλημα!!!
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

dimitrios67

Παράθεση από: evry στις 16 Φεβ 2017, 01:24:12 ΜΜ
Σχετικά με την παρουσία της Python στην εκπαίδευση για να μην δημιουργούνται ψευδείς εντυπώσεις:
Python is Now the Most Popular Introductory Teaching Language at Top U.S. Universities

Επίσης: Ελληνικά πανεπιστημιακά τμήματα στα οποία διδάσκεται Python

Ηλεκτρολόγοι Μηχανικοί και Τεχνολογίας Υπολογιστών, Πάτρα
Μηχανικοί Η/Υ και πληροφορικής
Ηλεκτρονικοί Μηχανικοί και Μηχανικοί Υπολογιστών, Χανιά
Μηχανικών και Η/Υ και Πληροφορικής, Ιωάννινα
Μαθηματικό Αθήνας
Μαθηματικό Πάτρας
Μαθηματικό Ιωαννίνων

και σίγουρα υπάρχουν και άλλα..

Ευριπίδη,
μπορουμε να θεωρησουμε "δυνατο" επειχειρημα υπερ της Python το οτι πολλα Πανεπιστήμια διδασκουν Python για εισαγωγη στον Προγραμματισμό?.
Οι μαθητες στην Ελλαδα, εχουν μαθει την "κονσερβα" του σχολικού βιβλίου και μεχρι να προσαρμοσθούν
στην "ακαδημαϊκή" λογική του textbook και των διαφανειών, περναει πολυς καιρός.

Αυτο με τη διορθωση των γραπτων στο "χαρτί" θα ειναι ενα πολυ μεγαλο προβλημα....
το οποίο σημαινει οτι η Python ΔΕΝ ειναι για το χαρτι, αλλα μονον για τον υπολογιστη.

Προσφατα διαβαζα κατι αλγοριθμους γραμμενους σε ψευδοκώδικα  Python-like και πραγματικά μπερδευτηκα παρα πολύ....
Αν εχεις εναν βροχο που να περιεχει καποιες εντολες και εναν αλλον βροχο, ο οποιος περιεχει και εντολες αλλα και δομή επιλογης κλπ,
τοτε ο κωδικας γινεται εξαιρετικά δυσαναγνωστος...

Λεει ο συναδελφος (και πολυμαθης οντως...(respect)) itt, οτι φιλοι του αρχαιολογοι κλπ χρησιμοποιουν την Python.
Ειναι ομως "επαρκες" κριτηριο για την καταλληλοτητα μιας γλώσσας προγραμματισμού προς διδασκαλία εισαγωγης στον προγραμματισμό,
το οτι τη χρησιμοποιουν και αλλοι "εκτος" κλαδου Πληροφορικής?

Μηπως τελικά με την Python ενας φοιτητης θα "ψιλοασχοληθει" με τον προγραμματισμό, θα "ψιλομαθει" να γραφει προγραμματα κλπ,
αλλα δεν θα μαθει "στιβαρό" προγραμματισμό οπως με τη C, ή "πραγματικό" προγραμματισμό, όπως π.χ. με τη Java?

Προσωπικά θα ημουν υπερ μιας Pascal-οειδους γλώσσας, (οπως και η ΓΛΩΣΣΑ, κανω ενα course "from ΓΛΩΣΣΑ to C", και δουλευει μια χαρα,
μπορω να συννενοηθώ τελεια ....).

Οπωσδηποτε το θεμα δεν εξαντλειται σε ενα φορουμ.
Διοτι αλλο το εισαγωγικό μαθημα προγραμματισμού στο 1ο ετος (ας θυμηθουμε τι ειχε γινει με τη Java σε "γνωστο" τμημα της Αθηνας)
και αλλο η γλώσσα προγραμματισμού για τη Β,Γ Λυκείου ειτε ΕΠΑΛ είτε ΓΕΛ.

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

ευχαριστώ






Λάμπρος Μπουκουβάλας

Πάντως η python είναι σαφώς-σαφέστατα πιο εύκολη για τα παιδιά στις δομές επιλογής και επανάληψης (εκ του αποτελέσματος στην τάξη - το βλέπω και στο μάθημα γενικής, που έχω όοολη τη γ' λυκείου, τόσο φέτος όσο και πέρισυ). Με την pascal, πέραν των απλών περιπτώσεων, ενδεικτικά αναφέρω ότι "έχαναν την μπάλα" με τα συνεχή begin-end, ενώ στην python ασχολούνται μόνο με for & while αντί να έχουν και την repeat της pascal. Επίσης, οι δικοί μου παλαιοί μαθητές ποτέ δεν μπόρεσαν να καταλάβουν τα περί procedure & function της Pascal. Φέτος έχω ένα μεγάλο τμήμα πληροφορικής, με ποσοστό αδιάφορων μαθητών >95%. Κι όμως, καταλαβαίνουν μια χαρά την def και τις συναρτήσεις... Στο τμήμα αυτό έχω 2 μαθητές έξυπνους μεν, όχι όμως εργατικούς, που τους είχα και πέρισυ. Πιο πολύ τους αρέσει η python.

Δεν υποστηρίζω τον Ευριπίδη, ούτε τη συγγραφική ομάδα. Δεν είχα διδαχθεί ποτέ την python στο βασικό μου πτυχίο (όταν σπούδαζα την ήξερε μόνο ο δημιουργός της). Έστρωσα κάτω τον ποπάϋ μου και διαβάζοντας διαπίστωσα ότι η python είναι καλή και εφαρμόζεται άνετα στην τάξη. Άλλωστε δεν απευθυνόμαστε σε προγραμματιστές φοιτητές, κι ας έχει το βιβλίο επεκταθεί σε πολλά θέματα.
Λάμπρος Μπουκουβάλας
MSc - MRes

http://blogs.sch.gr/lambrosbouk

Ο Θουκυδίδης  (που τον διαβάζουν οι ξένοι, αλλά όχι εμείς)  έγραφε: «Αταλαίπωρος τοις πολλοίς η ζήτησις της αληθείας, και επί τα ετοίμα μάλλον τρέπονται» (Ι, 20, 3). Οι περισσότεροι δηλαδή αναζητούν αβασάνιστα την αλήθεια και στρέφονται σε ό,τι βρίσκουν έτοιμο. Δεν προβληματίζονται...

itt

#14
Παράθεση από: dimitrios67Λεει ο συναδελφος (και πολυμαθης οντως...(respect)) itt, οτι φιλοι του αρχαιολογοι κλπ χρησιμοποιουν την Python.
Ειναι ομως "επαρκες" κριτηριο για την καταλληλοτητα μιας γλώσσας προγραμματισμού προς διδασκαλία εισαγωγης στον προγραμματισμό,
το οτι τη χρησιμοποιουν και αλλοι "εκτος" κλαδου Πληροφορικής?

Ναι ήταν ένα anecdotal που απλά έχω δει. Το point είναι, πώς δεν απευθυνόμαστε σε προγραμματιστές, ούτε καν οι φοιτητές σε σχολές πληροφορικής δεν σημαίνει ότι θα γίνουν προγραμματιστές, οπότε μια γλώσσα που μπορεί να χρησιμοποιηθεί σε άπειρα επιστημονικά πεδία και να κάνεις σοβαρή δουλειά (*), για μένα είναι ένα μεγάλο prequisite. Και αυτή η γλώσσα προφανώς και δεν είναι ούτε η Pascal (έλεος), ούτε η Java.

* Υπό την έννοια ότι δεν κάνεις μόνο automation, αλλά και τρέχεις αλγόριθμους για στατιστική, αριθμητική ανάλυση etc.

Παράθεση
Μηπως τελικά με την Python ενας φοιτητης θα "ψιλοασχοληθει" με τον προγραμματισμό, θα "ψιλομαθει" να γραφει προγραμματα κλπ,
αλλα δεν θα μαθει "στιβαρό" προγραμματισμό οπως με τη C, ή "πραγματικό" προγραμματισμό, όπως π.χ. με τη Java?

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

evry

#15
@dimitrios67

Μα δεν πρέπει να λάβουμε υπόψη μας ότι σε όλον τον κόσμο αυτή τη στιγμή η Python θεωρείται η νούμερο 1 εισαγωγική γλώσσα προγραμματισμού? Δε σημαίνει κάτι? Δηλαδή όλοι αυτοί κάνουν λάθος και εμείς την Pascal ξέρουμε την Pascal εμπιστευόμαστε?

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

Αυτό που λες για το βιβλίο "κονσέρβα" τι εννοείς?  Κάθε χρόνο οι μαθητές στη Γ θα είχαν ένα νέο βιβλίο ούτως ή άλλως. Είτε Pascal είτε Python πάλι νέο μάθημα δεν είναι για αυτούς? Εκτός αν αναφέρεσαι στους καθηγητές.

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

Τέλος παραθέτω ένα τμήμα κώδικα στην Python για τον αλγόριθμο ταξινόμησης ευθείας ανταλλαγής για να δείξω τι σημαίνει αλγοριθμική :
Κώδικας: python
def bubbleSort( A ):
    N = len( A )
    for i in range( N ):
        for j in range(N-1, i, -1):
            if A[j] < A[j-1] :
                A[j], A[j-1] = A[j-1], A[j]


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

Οι ανησυχίες που εκφράζεις είναι λογικές γιατί η γλώσσα αυτή εμφανίζεται πρώτη φορά στην ελληνική εκπαίδευση. Η επιλογή της όμως έγινε μετά από ενδελεχή μελέτη των προγραμμάτων σπουδών πολλών χωρών. Πίστεψέ με αυτή τη στιγμή η Python είναι μονόδρομος για ένα εισαγωγικό μάθημα προγραμματισμού είτε στο σχολείο είτε στο πανεπιστήμιο. Μόνο μια άλλη script γλώσσα (Javascript, Ruby) θα μπορούσε να γίνει το αντίπαλο δέος, όμως αυτές οι γλώσσες δεν έχουν τόσο μεγάλη εκπαιδευτική κοινότητα όπως η Python, κάτι το οποίο είναι πολύ σημαντικό, ώστε να κάνουμε δοκιμασμένα πράγματα και να μην κάνουμε πειράματα με τους μαθητές μας.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

dimitrios67

Ευριπίδη, είναι πολύ σημαντικά αυτά που λες, και οπωσδήποτε πηγάζουν από τη γνώση και την εμπειρία που έχεις.
Θεωρώ όμως ότι το επίπεδο των μαθητών στα ελληνικά σχολεία, Γ Λυκείου ή ΕΠΑΛ, είναι χαμηλό,
ιδίως αυτών των παιδιών που θα εξεταστούν στον προγραμματισμό,
οπότε, δεν θα μπορέσουν να μάθουν τα βασικά του προγραμματισμού.
Τα αμερικανικά πανεπιστήμια έχουν φοιτητές πολύ υψηλότερου επιπέδου απ ότι τα Ελληνικά,
ποσό μάλλον από την "κατηγορία" των μαθητών που θα δώσουν Πανελλαδικές,
ήτοι ΕΠΑΛ και Γ ΓΕΛ, Οικονομίας και Πληροφορικής.
Στις σχολές Πληροφορικής και στα Πολυτεχνεία, όταν κάποιος έχει μπει με 17000 μόρια,
τότε στο Α έτος θα μπορέσει να μάθει Python (αν και δεν είμαι εντελώς σίγουρος), έχει το "potential".
Οι μαθητές της Οικονομίας Πληροφορικής όμως που είναι πολύ χαμηλότερου επιπέδου;
Θα μπορέσουν να καταλάβουν τις αναφορές σε αντικείμενα κλπ;
Θεωρώ πως όχι, από την πείρα που έχω και στην Γ Τεχνολογική και Οικονομία Πληροφορική,
άλλα και σε Α έτος ΤΕΙ και ΑΕΙ.

Πιθανώς βέβαια, προσωπικά, επειδή έμαθα C, Java κλπ, να μην μπορώ τόσο εύκολα να συνηθίσω το συντακτικό της Python,
τον "χύμα" κώδικα.
Μπορεί να συμβαίνει κι αυτό, δεν μπορεί όλοι εσείς να έχετε άδικο κι εγώ δίκιο....
Αλλά θα μπορούσε να γίνει
1. μια ευρεία συζήτηση μεταξύ των καθηγητών Πληροφορικής για τo θέμα αυτό και
2. να δούμε τα "αποτελέσματα" της διδασκαλίας της Python στους μαθητές.

Πιστεύω ότι το εξής πείραμα θα μπορούσε να δώσει ενδιαφέροντα αποτελέσματα:
παίρνουμε έναν αριθμό μαθητών και τους χωρίζουμε σε κάποιες ομάδες.
Οι μαθητές να είναι "παρόμοιας" επίδοσης σε Μαθηματικά-Φυσική.
Στη μια ομάδα διδάσκουμε Python, στην άλλη Pascal, στην άλλη ψευδογλώσσα-ΓΛΩΣΣΑ κλπ.
Για ένα χρονικό διάστημα, π.χ. 3 μήνες.

Μετά τους αξιολογούμε με ίδια θέματα, αλλά να υλοποιηθούν στην κάθε μια γλώσσα από την αντίστοιχη ομάδα μαθητών
Τα αποτελέσματα ενός τέτοιου πειράματος, πιστεύω ότι θα μας δώσει απαντήσεις σε πολλά ερωτήματα,
σχετικά με την καταλληλότερη γλώσσα για εκμάθηση Αλγοριθμικής-Προγραμματισμού στη Γ Λυκείου, όχι στην 1η πανεπιστημίου, και στην Ελλάδα,
όχι σε κάποια άλλη χώρα, με το πρόγραμμα σπουδών της Ελληνικής Γ Λυκείου κλπ.

Αλλά και πάλι πρέπει να προσέξουμε το εξής:
Άλλο να λύσω ένα πρόβλημα σε ψευδογλώσσα ή ΓΛΩΣΣΑ,
και άλλο να γράψω κώδικα μιας "πραγματικής" γλώσσας.
Στην πραγματική γλώσσα τα πράγματα είναι δυσκολότερα, διότι το συντακτικό είναι πιο "αυστηρό".
Στο λύκειο, λοιπόν, διδάσκουμε γλώσσα Προγραμματισμού ή αλγοριθμική;
και ποια η καλύτερη "γλώσσα" για τους αλγορίθμους;
Προλαβαίνουν οι μαθητές μέσα σε ένα σχολικό έτος, με τα τόσα προβλήματα του Ελληνικού σχολείου
να αφομοιώσουν τις έννοιες μια γλώσσας προγραμματισμού,
ή μήπως είναι καλύτερα να επιμείνουμε σε κάτι πιο "απλό", και να δώσουμε μεγαλύτερη σημασία στο "αλγοριθμικό" κομμάτι;

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

aprekates

#17
Το ερώτημα  'ποιά είναι η καλή γλώσσα προγραμματισμού για την εκπαίδευση ' απο ποιούς παράγοντες θα κριθεί;

  • Μπορεί να απαντηθεί για όλο τον μαθητικό πληθυσμό το ίδιο ; 
  • Μπορεί να απαντηθεί το ίδιο και για τους μαθητές και για τους καθηγητές ;
  • Μπορεί να απαντηθεί το ίδιο από όλους του καθηγητές πληροφορικής ; (μια ομάδα καθολου ομοιογενής που περιλαμβάνει και άλλες ειδικότητες με διαφορετική οπτική του τι συνιστά ενδιαφέρον πρόβλημα προς αλγοριθμοποίηση)
  • Ή το ίδιο θα απαντήσει κάθε χώρα ;
  • Το ίδιο θα απαντήσει μια χώρα που τα smartphone έχουν πχ 80% διεύσδυση και το ίδιο σε μια χωρα που έχουν 10% ;
  • To ίδιο θα απαντήσει μια χώρα που έχει επενδύσει στο ανοιχτό λογισμικό γιατί συνιστά απόφαση μιας ευρύτερης πολιτικής μεταφοράς τεχνογνωσίας και
    το ίδιο μια χώρα που δεν έχει ξεκάθαρη πολιτική σε σχετικά ζητήματα και έχει επενδύσει σε ιδιόκτητο λογισμικο όπου οι επιλογές σου περιορίζονται ;
Υπάρχει απόλυτο μέτρο σύγκρισής και εύρεσης της παιδωγικης καταλληλότητας ή υπεισέρχονται και μη-άμμεσα ορατοί παράγοντες όπως κουλτούρα, μόδα, προυπάρχουσα εμπειρία και  κλίση των προσώπων που δίνουν το γενικό στίγμα , οικονομική δομή μιας χώρας κτλ κτλ. 

Αν πχ υπάρχει τάση στην οικονομία για μεγάλη ζητηση σε web developers γιατι πχ ο τουρισμός το χρειάζεται πως
θα επηρεάσει το τελικό problem-set στο οποιο θα καταλήξει ένας νεος εργαζομενος την εκτίμηση της 'καταλληλότητας'
των γλωσσων που διδάχτηκε ;

Αν μια χώρα δεν ξέρει που βαδίζει με ποιό κριτήριο θα επιλέξει ; Την ποιό γενική γλωσσα ; Ποιά είναι αυτή; Η python είναι ποιό γενική από την pascal
ή την logo ή την basic ;
Υπάρχει άραγε 'γενική' γλώσσα που να αποτελέσει καλό εφαλτήριο για όποιο μονοπάτι ακολουθήσει ο νεος προγραμματιστής και για όποια
problem-space καταλήξει να ζει; Ή αυτό δεν υπάρχει αφού άλλο ο καθολικός ´υπολογιστής' του turing και άλλο πράγμα μια ανώτερη γλωσσα
προγραμματισμού που ακολουθεί 'υποδείγματα' τα οποία υποδείγματα προφανώς ετεροκαθορίζονται από εξω-ακαδημαικούς παράγοντες.
Να θυμίσω πχ την C,C++ που προέκυψαν από τηλεπικοινωνιακούς τομείς της αμερικανικής οικονομίας ;


Υπάρχει ένα υπόδειγμα ποιό κατάλληλο από παιδαγωγικής άποψης ; Είναι αυτό του δομημένου-διαδικαστικού
προγραμματισμού; Γιατί ;

Ενας μέσος μαθητής με 'κόλλημα' με το κινητό του μήπως θα προτιμούσε να μάθει 'να προγραμματίζει' - την αγαπημένη του συσκευή ;
Είναι μια πραγματικότητα ότι η πλειοψηφία των μαθητών μου έχει υπολογιστικά ποιό ισχυρά κινητά από τους ΗΥ του εργαστηρίου που διδάσκω.
Πρέπει να συνεκτιμήσουμε αυτή την πραγματικότητα στα κριτήρια 'καταλληλότητας' μιας γλώσσας προγραμματισμού-ψευδογλώσσας.

Την δεκαετία του 80 υπήρχε μεγάλη διάδοση του home computer που σου πρόσφερε ένα διερμηνευτή της basic στα χέρια σου και το mental barrier
για να ξεκινήσεις να 'προγραμματίζεις' τη μηχανή ήταν εντελώς διαφορετικής φύσης από σήμερα.

Καταρχάς μιλάμε για 'εισαγωγική' γλώσσα ή για μια γλώσσα στο επόμενο στάδιο ; 
Θέλουμε μια γλώσσα που να επιτρέπει να αξιοποιήσεις όλους τους πόρους ενός ΗΥ ή όχι (επιτάχυνση γραφικών, επεξεργασία ηχου , βάσεις, δικτύωση , πολυπύρηνες ΚΜΕ  κτλ)
και άρα να είναι ποιό εντυπωσιακή ή μια στεγνή αλλά ποιό συνεπή γλώσσα ;
Θέλουμε να διδαχτούμε γλώσσες με μεγάλο brainshare (της μοδάς ας το πούμε ή όχι)
Θέλουμε με διερμηνευτή ή με μεταγλωττιστή ;
Θέλουμε να έχει μεταφέρσιμη ευκολα σε πολλά περιβάλλοντα ;
Ποιων προβλημάτων μας ενδιαφάρει η αλγοριθμική τους προσέγγιση ; Ποιες κατηγορίες τους ; Καθε γλώσσα ειναι το ίδιο βολική για την μεταφορά του αλγορίθμου
σε κώδικα ;  Πχ προβλήματα ταξινόμησης ; Μοντελοποίησης ; Αναζήτησης ;  Κωδικοποίησης ; Ρομποτικής και ΤΝ ;  Επεξεργασίας λόγου ;
Κάθε κοινωνία δεν έχει κάποια problem-set-spaces που πρέπει να αντιμετωπίσει και στα οποία πρέπει να κινηθεί ;

Θεωρητικά στον γυμνάσιο μαθαίνεις logo αλλά είναι στην διακριτική ευχαιρεια του π.σ να μάθεις και scratch(λ-snap κτλ).
Επίσης στο γενικής παιδείας υπάρχει το ΕΑΕΗΥ (που κινείται στο γενικό πνεύμα της προώθησης της αλγοριθμικής - υπολογιστικής σκέψης).
Και στον τομέα πληροφορικής του ΕΠΑΛ  (στη Β τάξη οπου εκεί μόνο ουσιαστικά υπάρχει επαγγελματική εκπαίδευση) μπορείς να αφιερώσεις
χρόνο να μάθεις μια γλώσσα προγραμματισμούς (pascal παλιά , python τώρα).

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

itt

Παράθεση από: aprekates στις 23 Μαρ 2017, 01:48:35 ΠΜ
Το παραπάνω πλαίσιο εμένα με ικανοποιεί μεχρι να αρχισουμε μια ποιο ενδεχελή μελέτη των παραγόντων που ανάφερα.

Με το "παραπάνω πλάισιο" αναφέρεσαι στην προ-τελευταία σου παράγραφο;

dimitrios67

@aprekates
πολύ σωστός ο προβληματισμός σου, αλλά σε όλα αυτά μήπως να προσθέταμε ότι
στη συνέντευξη για τις Google, Amazon κλπ,
οι ερωτήσεις είναι "αλγοριθμικές", και όχι τόσο "υλοποίησης";

Βέβαια, λαβε υπ' όψιν σου ότι πολλές από τις παρατηρήσεις που κάνω,
προέρχονται όχι από «θεωρητική» ανάλυση,
αλλά μέσα από τη διδακτική πράξη με μαθητές και φοιτητές (όχι πολύ υψηλού επιπέδου, είπαμε...)
Το σίγουρο είναι ότι κάποια στιγμή θα ήταν καλό να ξεκινήσει κάποια συζήτηση
στην εκπαιδευτική κοινότητα γι' αυτό το πολύ σημαντικό θέμα.

evry

#20
Αδυνατώ να καταλάβω γιατί όταν κάποιος προγραμματίζει σε μια γλώσσα προγραμματισμού δεν κάνει αλγοριθμική. Τι είναι αλγοριθμική? Εμείς κάνουμε αλγοριθμική? Κάνουμε ανάλυση και σχεδίαση αλγορίθμων, άπληστη μέθοδο και δυναμικό προγραμματισμό, ή μήπως κάνουμε απλά προγραμματιστικά τεχνάσματα και τα έχουμε βαφτίσει "Αλγοριθμική"? ή μήπως έχουμε βαφτίσει Αλγοριθμική τον προγραμματισμό στα ελληνικά για να φαίνεται ότι κάνουμε κάτι σπουδαίο?
Πως είναι δυνατόν να θεωρούμε ότι με την Python δεν κάνουμε Αλγοριθμική ενώ με την ΓΛΩΣΣΑ/ψευδογλώσσα κάνουμε από τη στιγμή που η σύνταξη της Python είναι πιο απλή και από αυτή της ΓΛΩΣΣΑΣ αλλά και από αυτή της ψευδογλώσσας?
Δίνω ένα παράδειγμα για να δείξω τι εννοώ:
Κώδικας: Python
def search(List, key):
    found = False
    for item in List:
        if item == key:
            found = True
    return found

Μπορεί να γραφτεί το παραπάνω πιο σύντομα, με λιγότερο συντακτικό θόρυβο και πιο επεξηγηματικά στη ΓΛΩΣΣΑ της ΑΕΠΠ? Μόνο τις δηλώσεις των μεταβλητών να βάλετε ήδη θα τρομάξουν οι μαθητές, να μην πω για την απουσία του μετρητή της επανάληψης. Πέρα από το γεγονός ότι πρέπει να ορίσεις άλλη σειριακή αναζήτηση για κάθε τύπο και μέγεθος πίνακα!!! ενώ στην Python έχουμε τον διαχωρισμό λειτουργιών και δεδομένων, δηλαδή την γενικευμένη περιγραφή αλγορίθμων ανεξάρτητα από τον τύπο των δεδομένων. Αυτό δεν είναι ένα από τα ζητούμενα της ... "Αλγοριθμικής"?

Σχετικά με την Python τώρα έχουν γίνει αρκετές έρευνες σε σύγκριση με άλλες γλώσσες και η πλειονότητα δείχνει ότι οι φοιτητές γενικά πηγαίνουν καλύτερα εκτός από ελάχιστες εξαιρέσεις στις οποίες η διδασκαλία δεν πήγε καλά διότι την σαμπόταραν οι ίδιοι οι καθηγητές που είχαν μάθει αλλιώς . Μια αναζήτηση στο google scholar θα σας πείσει. Παραθέτω κάποιες δημοσιεύσεις προς αυτή την κατεύθυνση για όποιον ενδιαφέρεται.
Υπάρχουν επίσης αρκετές εργασίες σε ελληνικά συνέδρια από συναδέλφους που χρησιμοποιούν Python στην τάξη και όχι στην θεωρία.

Ένα άλλο θέμα που με έχει ενοχλήσει και στεναχωρήσει πολύ είναι η πεποίθηση που προσπαθεί να δημιουργηθεί ότι εδώ στο Ελλάντα εμείς έχουμε χαμηλού επίπεδου ΑΕΙ και φοιτητές οι οποίοι δεν καταλαβαίνουν Python αλλά μόνο ψευδογλώσσα ή Pascal. Το επιχείρημα αυτό εκτός του ότι είναι εξαιρετικά υποτιμητικό για όλους μας δεν ισχύει αφού όλοι όσοι έχουμε πάει στο εξωτερικό έχουμε δει πόσο ανώτερα όσον αφορά το επίπεδο και τη δυσκολία τους είναι τα δικά μας πανεπιστήμια (όχι όλα αλλά νομίζω τα περισσότερα).

Αν τώρα κάποιος φοιτητής στο 1ο, 2ο έτος δεν μπορεί να προγραμματίσει σε μια γλώσσα όπως η Python ή δεν μπορεί να καταλάβει τη διαφορά αντικειμένου και της αναφοράς σε αυτό μήπως δεν θα μπορέσει να ανταπεξέλθει σε αυτή τη σχολή? Μήπως θα έπρεπε να σπουδάσει κάτι άλλο και ταλαιπωρείται μάταια?

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

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

Στη Google που αναφέρθηκε, σε ποια γλώσσα διεξάγονται οι συνεντεύξεις? Σε ψευδογλώσσα ή σε πραγματική γλώσσα προγραμματισμού? Από όσο ξέρω ρωτούν αρκετά σε C++ , Java και Python και σε αρκετές περιπτώσεις σου θέτουν ένα πρόβλημα και σου λένε κάντο σε όποια γλώσσα θέλεις. Σίγουρα όχι όμως σε ψευδογλώσσα.

Τέλος να σημειωθεί ότι αυτή τη στιγμή η Python είναι στο ΕΠΑΛ. Φαντάζομαι ότι δεν υπάρχει κάποιος που να πιστεύει ότι οι μαθητές του Επαγγελματικού Λυκείου θα έπρεπε να κάνουν ψευδογλώσσα ή Pascal το 2017.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

dimitrios67

#21
Ευριπίδη, πολύ σωστα αυτα που λες.
Θα γραψω μια πιο εκτενη απαντηση μολις μπορεσω.

aprekates

Παράθεση από: itt στις 23 Μαρ 2017, 05:18:29 ΜΜ
Με το "παραπάνω πλάισιο" αναφέρεσαι στην προ-τελευταία σου παράγραφο;

Ναι , αναφέρωμαι στο υπαρκτό γενικο πλαίσιο από πλευράς προγράμματος σπουδών το οποίο φαίνεται για μένα τουλάχιστον ότι έχει μια ´σειρά' και μια λογική και αρκετές επιλογές να κινηθείς.
'Ομως η οπτική μου είναι επαλ-ο-κεντρική 
Δηλαδή ένας μαθητής ξεκινώντας από το γυμνάσιο (που έχω διδάξει) μέχρι και το επάλ (που έχω διδάξει σχεδόν όλα τα μαθήματα) .
Δεν αναφέρωμαι τόσο στο Λύκειο που αν κατάλαβα καλά δίνεται βαρύτητα σε ψευδογλωσσα.
Για τα δημοτικά δεν ξέρω.

dpa2006

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


Παράθεση1)
Python is Now the Most Popular Introductory Teaching Language at Top U.S. Universities
By Philip Guo
July 7, 2014
http://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-u-s-universities/fulltext

2)

https://www.python.org/about/success/usa/


Python Success Stories

This article was previously published on Builder.com
Introduction

Software engineers have long told their bosses and clients that they can have software "fast, cheap, or right," as long as they pick any two of those factors. Getting all three? Forget about it!

But United Space Alliance (USA), NASA's main shuttle support contractor, had a mandate to provide software that meets all three criteria. Their experience with Python told them NASA's demands were within reach. Less than a year later, USA is nearing deployment of a Workflow Automation System (WAS) that meets or exceeds all of NASA's specifications.

"Python allows us to tackle the complexity of programs like the WAS without getting bogged down in the language," says Robin Friedrich, USA's Senior Project Engineer. Friedrich conceived of the WAS project in response to a significant gap in the way shuttle mission planning was handling data management. "Historically," Friedrich says, "this data has been communicated using paper and, more recently, data file exchange. But both of these approaches are error-prone. Catching and fixing errors as well as responding to frequent change requests can bog such a system down." Complicating the issue was the challenge of finding money to improve the flight design process in an era of declining budgets for space activities.
"Just in time" provides a solution--and more problems

USA decided they needed a way to "minimize data changes and the resulting rework." The shortest route to that goal would be to shift the design work to the end of the process so that flight characteristics would have a good chance of already being finalized. In other words, as Friedrich says, "We decided we needed to do this data management work 'just in time'."

A just-in-time solution, however, generally puts more stress on both people and systems to get things right the first time because postponing these activities to the end of the process means a loss of scheduling elasticity.

"The obvious answer," according to Friedrich, "was to create a central database repository to help guarantee consistency and to provide historical tracking of data changes." An Oracle database was designed to store the information, but a graphical front end to manage the process of workflow automation was clearly an essential component of an effective solution. "We knew from experience--we do a good bit of Java coding in our group--that using C++ or Java would have added to the problem, not the solution," Friedrich maintains.
Python a mainstay since 1994

Enter Python. "We'd been using Python since 1994," says Friedrich, "when I literally stumbled across Python as I was searching the pre-Web Gopher FTP space for some help with a C++ project we were doing." Being an inveterate systems engineer, Friedrich "just had to investigate it." He was stunned by what he discovered.

"Twenty minutes after my first encounter with Python, I had downloaded it, compiled it, and installed it on my SPARCstation. It actually worked out of the box!"

As if that weren't enough, further investigation revealed that Python has a number of strengths, not the least of which is the fact that "things just work the first time. No other language exhibits that trait like Python," says Friedrich.

He attributes this characteristic to three primary language features:

        Dynamic typing
        Pseudocode-like syntax
        The Python interpreter

The result? "We achieve immediate functioning code so much faster in Python than in any other language that it's staggering," says Friedrich. "Java and C++, for example, have much more baggage you have to understand just to get a functioning piece of software.

"Python also shines when it comes to code maintenance," according to Friedrich. "Without a lot of documentation, it is hard to grasp what is going on in Java and C++ programs and even with a lot of documentation, Perl is just hard to read and maintain." Before adopting Python, Friedrich's team was doing a good bit of Perl scripting and C++ coding. "Python's ease of maintenance is a huge deal for any company that has any significant amount of staff turnover at all," says Friedrich.

The team had already developed a moderately large number of C++ libraries. Because of Python's easy interface to the outside world, USA was able to retain these libraries. "We wrote a grammar-based tool that automatically interfaced all of our C++ libraries," says Friedrich.

Another aspect of Python that Friedrich found eminently significant is its shallow learning curve. "We are always under the gun on software projects, like everyone else," he says. "But for any programmer, picking up Python is a one-week deal because things just behave as you expect them to, so there's less chasing your tail and far more productivity." He contrasts that with C++ and Java, which he says takes a good programmer weeks to grasp and months to become proficient.

Friedrich says that even the non-programming engineers at USA learned to do Python coding quickly. "We wanted to draft the coding energy of the engineering staff, but we didn't want them to have to learn C++. Python made the perfect 4GL programming layer for the existing C++ classes."
One coder and 17,000 lines of code later

The WAS project, which has required somewhat less than a man-year of effort, has been coded by a single Senior Software Engineer, Charlie Fly, who has cranked out some 17,000 source lines of code (SLOC). Python plays the central role, managing data interactions and the task network, as shown in Figure A.
Figure A: Python plays a central role in data interaction

Figure A: Python plays a central role in data interaction.

In the system, user tasks communicate with a Python data server, which in turn connects to an Oracle server via DCOracle. Using Oracle's built-in trigger mechanism to send a message to WAS as data records are updated, the WAS calculates which tasks are now data-ready and notifies the appropriate user.

At the core of the design is the Task object, which stores all information relevant to a single task in the workflow network. The end user can view the network in a PERT-style chart layout (Figure B), where color coding reveals at a glance which tasks are finished, which are in process, and which have not yet been started.
Figure B: PERT-style layout

Figure B: PERT-style layout

Two other graphical interface windows allow the user to manage the dependencies among data items in the network (Figure C) and to view and edit individual task details (Figure D).
Figure C: Interface 1

Figure C: Interface 1
Figure D: Interface 2

Figure D: Interface 2

All of the code for the UIs was also done in Python, using the popular Tkinter library along with an open source package of supporting modules. Tkinter is included in all standard Python installations.

"USA is pleasantly surprised by how much quality software we can deliver," Friedrich says. "And each time we demonstrate success with Python, we add a few more believers to my growing list!"
About the Author

Dan Shafer is a freelance author and sometime Python coder who hangs out on California's central coast. He is a member of the PythonCard Open Source development team creating a GUI-building framework for Python applications. He makes his living as a writer and a product development consultant. A founder and former editorial director of Builder.com, Shafer has been part of the Web development community almost from its inception.


Python Success Stories

This article was previously published on Builder.com
Introduction

Software engineers have long told their bosses and clients that they can have software "fast, cheap, or right," as long as they pick any two of those factors. Getting all three? Forget about it!

But United Space Alliance (USA), NASA's main shuttle support contractor, had a mandate to provide software that meets all three criteria. Their experience with Python told them NASA's demands were within reach. Less than a year later, USA is nearing deployment of a Workflow Automation System (WAS) that meets or exceeds all of NASA's specifications.

"Python allows us to tackle the complexity of programs like the WAS without getting bogged down in the language," says Robin Friedrich, USA's Senior Project Engineer. Friedrich conceived of the WAS project in response to a significant gap in the way shuttle mission planning was handling data management. "Historically," Friedrich says, "this data has been communicated using paper and, more recently, data file exchange. But both of these approaches are error-prone. Catching and fixing errors as well as responding to frequent change requests can bog such a system down." Complicating the issue was the challenge of finding money to improve the flight design process in an era of declining budgets for space activities.
"Just in time" provides a solution--and more problems

USA decided they needed a way to "minimize data changes and the resulting rework." The shortest route to that goal would be to shift the design work to the end of the process so that flight characteristics would have a good chance of already being finalized. In other words, as Friedrich says, "We decided we needed to do this data management work 'just in time'."

A just-in-time solution, however, generally puts more stress on both people and systems to get things right the first time because postponing these activities to the end of the process means a loss of scheduling elasticity.

"The obvious answer," according to Friedrich, "was to create a central database repository to help guarantee consistency and to provide historical tracking of data changes." An Oracle database was designed to store the information, but a graphical front end to manage the process of workflow automation was clearly an essential component of an effective solution. "We knew from experience--we do a good bit of Java coding in our group--that using C++ or Java would have added to the problem, not the solution," Friedrich maintains.
Python a mainstay since 1994

Enter Python. "We'd been using Python since 1994," says Friedrich, "when I literally stumbled across Python as I was searching the pre-Web Gopher FTP space for some help with a C++ project we were doing." Being an inveterate systems engineer, Friedrich "just had to investigate it." He was stunned by what he discovered.

"Twenty minutes after my first encounter with Python, I had downloaded it, compiled it, and installed it on my SPARCstation. It actually worked out of the box!"

As if that weren't enough, further investigation revealed that Python has a number of strengths, not the least of which is the fact that "things just work the first time. No other language exhibits that trait like Python," says Friedrich.

He attributes this characteristic to three primary language features:

        Dynamic typing
        Pseudocode-like syntax
        The Python interpreter

The result? "We achieve immediate functioning code so much faster in Python than in any other language that it's staggering," says Friedrich. "Java and C++, for example, have much more baggage you have to understand just to get a functioning piece of software.

"Python also shines when it comes to code maintenance," according to Friedrich. "Without a lot of documentation, it is hard to grasp what is going on in Java and C++ programs and even with a lot of documentation, Perl is just hard to read and maintain." Before adopting Python, Friedrich's team was doing a good bit of Perl scripting and C++ coding. "Python's ease of maintenance is a huge deal for any company that has any significant amount of staff turnover at all," says Friedrich.

The team had already developed a moderately large number of C++ libraries. Because of Python's easy interface to the outside world, USA was able to retain these libraries. "We wrote a grammar-based tool that automatically interfaced all of our C++ libraries," says Friedrich.

Another aspect of Python that Friedrich found eminently significant is its shallow learning curve. "We are always under the gun on software projects, like everyone else," he says. "But for any programmer, picking up Python is a one-week deal because things just behave as you expect them to, so there's less chasing your tail and far more productivity." He contrasts that with C++ and Java, which he says takes a good programmer weeks to grasp and months to become proficient.

Friedrich says that even the non-programming engineers at USA learned to do Python coding quickly. "We wanted to draft the coding energy of the engineering staff, but we didn't want them to have to learn C++. Python made the perfect 4GL programming layer for the existing C++ classes."
One coder and 17,000 lines of code later

The WAS project, which has required somewhat less than a man-year of effort, has been coded by a single Senior Software Engineer, Charlie Fly, who has cranked out some 17,000 source lines of code (SLOC). Python plays the central role, managing data interactions and the task network, as shown in Figure A.
Figure A: Python plays a central role in data interaction

Figure A: Python plays a central role in data interaction.

In the system, user tasks communicate with a Python data server, which in turn connects to an Oracle server via DCOracle. Using Oracle's built-in trigger mechanism to send a message to WAS as data records are updated, the WAS calculates which tasks are now data-ready and notifies the appropriate user.

At the core of the design is the Task object, which stores all information relevant to a single task in the workflow network. The end user can view the network in a PERT-style chart layout (Figure B), where color coding reveals at a glance which tasks are finished, which are in process, and which have not yet been started.
Figure B: PERT-style layout

Figure B: PERT-style layout

Two other graphical interface windows allow the user to manage the dependencies among data items in the network (Figure C) and to view and edit individual task details (Figure D).
Figure C: Interface 1

Figure C: Interface 1
Figure D: Interface 2

Figure D: Interface 2

All of the code for the UIs was also done in Python, using the popular Tkinter library along with an open source package of supporting modules. Tkinter is included in all standard Python installations.

"USA is pleasantly surprised by how much quality software we can deliver," Friedrich says. "And each time we demonstrate success with Python, we add a few more believers to my growing list!"
About the Author

Dan Shafer is a freelance author and sometime Python coder who hangs out on California's central coast. He is a member of the PythonCard Open Source development team creating a GUI-building framework for Python applications. He makes his living as a writer and a product development consultant. A founder and former editorial director of Builder.com, Shafer has been part of the Web development community almost from its inception.

Ήδη υπάρχουν και ανοικτά εισαγωγικά μαθήματα από το Mathesis
Εισαγωγή στην Python

Python Tutorial - MIT OpenCourseWare
A Gentle Introduction to Programming Using Python - MIT
Introduction to Computer Science and Programming in Python - MIT
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