** This thread discusses the content article:
Συνέντευξη από Γιώργο Κεραμίδα **
Ο Γιώργος συνδιάζει τις απίστευτες γνώσεις σε εξαιρετικά δύσκολα σημεία του αντικείμενου των υπολογιστών με μια φιλική και πρόσχαρη άνθρωπος προσωπικότητα, πάντα και διαθέσιμος να βοηθήσει τους υπόλοιπους. Έχει έντονη δράση στον χώρο του ανοικτού λογισμικού ενώ αποτελεί core contributor του FreeBSD. Αποτελεί έναν από τους "διάσημους" που είχαμε την τύχη να κάνουν παρουσίαση, και σύμφωνα με μετριοπαθείς υπολογισμούς έκαναν 1023 ανθρώπους που ενδιαφέρονται να μάθουν κάτι παραπάνω μέσα από την παρουσίαση για Unit testing της οποίας το βίντεο μπορείτε να βρείτε εδώ. Αν δεν το έχετε δει ακόμα, μη περιμένετε άλλο, ευκαιρία να στρογγυλοποιήσετε τον παραπάνω αριθμό!
Ποιός είσαι;
Με λένε Γιώργο Κεραμίδα. Ήμουν για κάποιο καιρό φοιτητής στο CEID. Στο CEID γνώρισα το ανοικτό λογισμικό και την Python. Εκεί, επίσης, ήρθα σε επαφή με άλλους προγραμματιστές open & free software.
Τα τελευταία 10 χρόνια είμαι μέλος της ομάδας ανάπτυξης του FreeBSD έχω γνωρίσει τεχνικές και έχω μάθει πράγματα τα οποία με έχουν ευχαριστήσει & βελτιώσει ως άνθρωπο και ως προγραμματιστή. Η συμμετοχή μου στην ομάδα του FreeBSD είναι ένα από τα πράγματα που με κάνουν περήφανο, ιδιαίτερα επειδή έχω προσφέρει με το δικό μου τρόπο τόσο στην ανάπτυξη όσο και την προώθησή του.
Εργάζομαι ως senior software developer σε εταιρείες λογισμικού σε Ελλάδα και εξωτερικό. Η ειδίκευσή μου είναι κυρίως σε θέματα δικτυακών εφαρμογών, release & configuration management, testing και quality assurance.
Τι παρουσίασες;
Παρουσίασα το unit testing, χρησιμοποιώντας παραδείγματα γραμμένα σε σχετικά απλή ANSI C. Οι ίδιες ακριβώς ιδέες εφαρμόζονται και σε Python, C++ ή οποιαδήποτε άλλη γλώσσα.
Έκανα την παρουσίαση με κυριότερο σκοπό τη διάδοση του unit testing ως ιδέα στον κόσμο που ξεκινά τώρα να ασχολείται με τον προγραμματισμό. Είναι ένας από τους λίγους τρόπους να εξασφαλίσουμε την ποιότητα του λογισμικού το οποίο γράφουμε. Τέτοιου είδους τεχνικές και γνώση είναι ακριβώς αυτό που πιστεύω ότι αξίζει να διαδίδεται μέσα από ομάδες όπως η TasPython.
Χρησιμοποιείς την Python για...
Χρησιμοποιώ την Python σχεδόν παντού. Οπουδήποτε χρειάζεται κάτι πιο περίπλοκο από απλό string processing ή απλά shell pipe-lines. Για όλα τα πράγματα που χρειάζονται ωραίες και ευανάγνωστες δομές δεδομένων
Η κλασική αντιμετώπιση που έχω σε οποιοδήποτε μέρος της καθημερινής μου δουλειάς έχει σχέση με αυτοματοποίηση είναι: «Αν είναι πάνω από 100 γραμμές ή χρειάζεται οτιδήποτε πιο περίπλοκο από μια απλή λίστα από γραμμές κειμένου, είναι ήδη ώρα να το γράψεις σε Perl ή Python.»
Τι σου αρέσει στην Python;
Προσωπικά μου αρέσουν πολλά χαρακτηριστικά της Python. Είμαι από παλιά φίλος των dynamically typed γλωσσών. Η γλώσσα την οποία προτιμώ για τις εντελώς δικές μου εργασίες είναι π.χ. η Common Lisp, μια κατεξοχήν δυναμική & επεκτάσιμη γλώσσα. Η Python μου αρέσει επειδή:
- Είναι dynamically typed. Δε χρειάζεται σε κάθε μικρό σημείο να γράφει κανείς τον τύπο μιας μεταβλητής ή μπορεί η ίδια συνάρτηση να εφαρμοστεί σε διάφορους τύπους δεδομένων. Το duck-typing της Python δεν είναι ακριβώς τόσο επεκτάσιμο ή τόσο δυναμικό όσο το fully dynamic typing της Lisp, αλλά είναι μια πάρα πολύ καλή προσέγγιση από το ίδιο επίπεδο λειτουργικότητας και ελευθερίας.
- Η Python έχει ενσωματωμένο garbage collection. Πριν από 20 χρόνια η χρήση garbage collection φάνταζε «εξωτική» και υπερβολική. Σήμερα πλέον δεν υπάρχει λόγος να ασχολούμαστε με τόσο trivial και low level λεπτομέρειες παρά μόνο σε πολύ εξειδικευμένα περιβάλλοντα, όπως σε embedded πλατφόρμες με πολύ περιορισμένη φυσική μνήμη.
- Ο κώδικας της Python, ακριβώς όπως και η Common Lisp, μπορεί να διαβαστεί με ένα μοναδικό και σαφή τρόπο. Όσοι πρωτοβλέπουν κώδικα γραμμένο σε Python ανησυχούν για τη χρήση whitespace ως μέρος του συντακτικού της γλώσσας. Αυτό έχει όμως παρόμοια αποτελέσματα με τη χρήση των symbolic expressions σε Lisp: υπάρχει ένας, μοναδικός και σαφής, καθόλου αμφίσημος τρόπος να διαβαστεί ένα block κώδικα. Αυτό είναι μεγάλο πλεονέκτημα όταν βλέπει κανείς κώδικα που δεν τον έχει γράψει ο ίδιος ή τον έχει γράψει μήνες πριν. Η αναγνωσιμότητα του κώδικα είναι ο πιο σημαντικός μας στόχος ως προγραμματιστές. Ακριβώς όπως έχει πει κι ο Donald Knuth: «Programs should be written so that people, not just computers, can understand them».
- Υπάρχει μεγάλη διαθεσιμότητα βιβλιοθηκών Python. Οι βιβλιοθήκες τις οποίες μπορεί να βρει κανείς δεν έχουν πάντα το ίδιο επίπεδο ποιότητας, αλλά τα παραδείγματα βιβλιοθηκών όπως οι NumPy και SciPy είναι ιδιαίτερως ενθαρρυντικά. Με τέτοιες βιβλιοθήκες ποιοτικού και ελεύθερα διαθέσιμου κώδικα μπορεί ο προγραμματιστής της Python να κάνει πάρα πολλά πράγματα με ενιαίο, εύκολο, επεκτάσιμο και πολύ γρήγορο τρόπο.
Τι δεν σου αρέσει;
Οι επιλογές του Guido van Rossum δε με βρίσκουν πάντα σύμφωνο. Π.χ. οι απόψεις του περί lambda function support, macro support και οι αλλαγές που κάνει στην Python στις εκδόσεις 3.0 και τις νεώτερες είναι πολύ σημαντικές, επηρεάζουν ιδιαίτερα το συντακτικό της γλώσσας, αλλά και έτσι ακόμα δεν είναι αρκετές για να φτάσουμε και στην Python την πλήρη αυτονομία του συντατικού από το σημειολογικό επίπεδο του πηγαίου κώδικα ενός προγράμματος --- κάτι που υπάρχει ήδη σε άλλες γλώσσες.
Τι εξελίξεις προβλέπεις;
Οι υπολογιστές παίζουν ήδη σημαντικό ρόλο στη ζωή μας. Έχουμε κάνει τεράστια βήματα μέσα στα τελευταία 50 χρόνια. Από τους υπολογιστές οι οποίοι χρειαζόντουσαν ένα μέτριο κτίριο ο καθένας έχουμε φτάσει σε τέτοιο επίπεδο που ο καθένας από εμάς κυκλοφορεί στο δρόμο με πολλαπλούς μικρούς υπολογιστές πάνω του (τηλέφωνα, bluetooth-enabled devices, PDA, ακόμη και φορητούς μίνι-υπολογιστές γενικής χρήσης). Η πρόοδος της τεχνολογίας είναι εντυπωσιακή και συνεχίζει με ακάθεκτο ρυθμό. Τέτοια είναι η φύση της προόδου: όταν ξεκινήσει προς μιας κατεύθυνση δε μπορεί εύκολα να πισωγυρίσει, τουλάχιστον χωρίς δραματικές και απότομες αλλαγές καταστροφικής φύσης.
Είναι πολλές οι πλευρές της καθημερινής μας ζωής, της δουλειάς μας, της διασκέδασης, της επικοινωνίας, της κοινωνικής και προσωπικής έκφρασης του καθενός από εμάς οι οποίες επηρεάζονται ή βελτιώνονται από τη χρήση της τεχνολογίας. Οι θετικές επιδράσεις της τεχνολογίας είναι σίγουρα χρήσιμες, αλλά χρειάζεται να αναπτύξουμε και το κατάλληλο ηθικό υπόβαθρο για να μπορέσουμε ως ανθρωπότητα να χειριστούμε αποδοτικά, με ασφάλεια και σύνεση τις επιδράσεις αυτής ακριβώς της προόδου. Οι υπολογιστές και η τεχνολογία γενικότερα θα συνεχίσουν στο δρόμο που έχουν ήδη πάρει. Η πρόκληση για όλους μας θα είναι, τόσο ατομικά όσο και ως ανθρωπότητα, στο σύνολο του πληθυσμού:
- Να κατανοήσουμε πόσες, ποιές και πότε είναι οι επιδράσεις της προόδου. Το πρώτο βήμα για τη σωστή χρήση τηε τεχνολογίας είναι πάντοτε η κατανόησή της.
- Να κατευθύνουμε την εξέλιξη της τεχνολογίας προς θετικές κατευθύνσεις. Αφού καταλάβουμε πως λειτουργεί η σημερινή τεχνολογία, πρέπει να φτιάξουμε την τεχνολογία του μέλλοντος.
- Να διαδώσουμε την τεχνογνωσία την οποία έχουμε σε όσο το δυνατόν μεγαλύτερο μέρος της ανθρωπότητας. Οι διαφορές σε ηλικία, θρησκεία, φυλή, καταγωγή, σε εκπαιδευτικό επίπεδο, οικονομική κατάσταση, κι οποιαδήποτε άλλη διαφορά μπορεί να έχουν κάποιοι συνάνθρωποί μας δεν πρέπει να αποτελεί εμπόδιο στη χρήση της τεχνολογίας ή στο να έχουν μερίδιο στα ωφέλη τα οποία προκύπτουν απ' αυτή.
Πιο συγκεκριμένα, για τον προγραμματισμό και τη γλώσσα Python, θα ήθελα να δω μεγαλύτερη διάδοση μαθημάτων για τη γλώσσα Python σε πρωτοετείς φοιτητές σχολών. Είναι μια πολύ ωραία γλώσσα για εισαγωγικά μαθήματα στον προγραμματισμό -- εύκολη στην εκμάθηση, χωρίς να της λείπει κάτι από άλλες γλώσσες, είναι διαθέσιμη σχεδόν παντού και η χρήση της δεν περιορίζεται στον ακαδημαϊκό χώρο ή μόνο στα στενά όρια ενός και μόνο μαθήματος.
Θα θελα π.χ. να δω σε μαθήματα γλωσσών προγραμματισμού να μαθαίνουν οι νέοι προγραμματιστές τόσο Python όσο και άλλες γλώσσες προγραμματισμού. Ένα πλήρες σετ από γλώσσες, που καλύπτει τόσο στατικές compiled γλώσσες, όσο και δυναμικές ή εξωτικές γλώσσες. Ένας προγραμματιστής πρέπει να έχει επαφή τόσο με statically typed, non-GCed γλώσσες όπως η C/C++ όσο και με δυναμικές γλώσσες όπως η Perl, Python και η Scheme ή η Lisp. Κάτι τέτοιο ας πούμε θα ήθελα να είναι μέσα στα μελλοντικά σχέδια των Πανεπιστημιακών τμημάτων τα οποία έχουν σχέση με τεχνολογία: η έμφαση στη χρήση multi-paradigm γλωσσών ή πολλαπλών γλωσσών με διαφορετικό στυλ προγραμματισμού. Και η Python είναι σίγουρα μέσα στις γλώσσες που θέλω να βλέπει κάθε νέος προγραμματιστής όταν ξεκινά να μαθαίνει τα βασικά στοιχεία του προγραμματισμού.
Εντυπώσεις από την κοινότητα;
Οι παρουσιάσεις της TasPython είναι ωραία ιδέα. Δε μπόρεσα να έρθω σε πολλές, αλλά είμαι κατα-ενθουσιασμένος από τον κόσμο που είδα σε όσες συναντήσεις ήρθα. Κατ' αρχήν να πω ότι πρέπει να τις συνεχίσετε. Με τέτοιες προσπάθειες δημιουργούνται οι τοπικές ομάδες από hackers και με τέτοιο ακριβώς πνεύμα ανταλλαγής ιδέων είναι που προωθείται η ιδέα ότι είναι ενδιαφέρον, χρήσιμο, και πάνω από όλα πολύ διασκεδαστικό να βλέπουμε ο ένας τι κάνει ο άλλος. Συγχαρητήρια σε όλους τους TasPython!