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

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

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

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