Κώστας Χατζηκοκολάκης
Ιστοσελίδα του μαθήματος: https://k08.chatzi.org/
Όλες οι πληροφορίες για βαθμολόγηση, εργαστήρια, εξετάσεις, βιβλιογραφία, συζητήσεις κλπ βρίσκονται εκεί.
Programming can be like composing poetry or music; […] it can give us both intellectual and emotional satisfaction, because it is a real achievement to master complexity and to establish a system of consistent rules.
Computer programming is an art, […] especially because it produces objects of beauty. […] A programmer who subconsciously views himself as an artist will enjoy what he does and will do it better.
Donald Knuth, CACM, 1974
The three virtues of a great programmer:
- Laziness: The quality that makes you go to great effort to reduce overall energy expenditure.
- Impatience: The anger you feel when the computer is being lazy.
- Hubris: Excessive pride; makes you write programs that other people won't want to say bad things about.
Larry Wall, Programming Perl
« Κανείς δε γράφει C πλέον, σε όλες τις δουλειές ζητάνε Javascript / Ruby / Python / R / Java / PHP / … »
« Η C είναι δύσκολη στην εκμάθηση »
Ας δούμε ένα παράδειγμα…
Πρόβλημα:
Ποιος είναι ο καλύτερος τρόπος να οργανώσουμε τα βιβλία μας;
Λύση 1 : Χάος
Απλή και εύκολη! (αρκεί να μην μας ενδιαφέρει το διάβασμα)
Λύση 2 : Array
Πλεονεκτήματα; Προβλήματα;
Λύση 3 : Sorted array
Πολύ καλύτερα! Τέλεια λύση; Προβλήματα;
Λύση 4 : B-tree
Πλεονεκτήματα;
ADTBookStore
insert(title)
title
remove(title)
title
find(title)
title
Ως χρήστες, δανειζόμαστε βιβλία χρησιμοποιώντας αυτή τη διεπαφή.
Δε μας απασχολεί πώς είναι αποθηκευμένα.
4 Δομές Δεδομένων υλοποιούν τον ίδιο ADTBookStore
Κάθε δομή έχει διαφορετικά πλεονεκτήματα & μειονεκτήματα.
Μπορούμε να αλλάξουμε υλοποίηση χωρίς να επηρεαστούν οι χρήστες.