Ενότητα1& - ocw.aoc.ntua.gr · PDF file τά...

Click here to load reader

  • date post

    24-Feb-2020
  • Category

    Documents

  • view

    0
  • download

    0

Embed Size (px)

Transcript of Ενότητα1& - ocw.aoc.ntua.gr · PDF file τά...

  • Σχολή  Εφαρμοσμένων   Μαθηματικών  και  Φυσικών   Επιστημών   Εθνικό  Μετσόβιο   Πολυτεχνείο  

    Προγραμματισμός  με  Εφαρμογές  στην   Επιστήμη  του  Μηχανικού  

    Ενότητα  1  

    Αναγνωστόπουλος  Κωνσταντίνος  

  • Το  παρόν  εκπαιδευτικό  υλικό   υπόκειτα  σε  άδειες  χρήσης   Crea%ve  Commons.  Για   εκπαιδευτικό  υλικό,  όπως  εικόνες,   που  υπόκειται  σε  άδεια  χρήσης   άλλου  τύπου,  αυτή  πρέπει  να   αναγράφεται  ρητώς.  

    Άδεια  Χρήσης  

  • Κεφάλαιο 1

    Ο Υπολογιστής

    Σκοπός του κεφαλαίου αυτού είναι να θέσει τα θεμέλια για την ανάπτυξη δε- ξιοτήτων χρήσης των υπολογιστικών εργαλείων που θα χρησιμοποιήσουμε στη μελέτη των υπολογιστικών προβλημάτων που παρουσιάζονται στα επόμενα κε- φάλαια. Δεν έχει σκοπό να κάνει πλήρη και εις βάθος παρουσίαση, είναι μάλλον πρακτική εκμάθηση μέσω παραδειγμάτων. Άλλωστε υπάρχουν πολλές πλήρης και παιδαγωγικές παρουσιάσεις του υλικού που θα παρουσιάσουμε σε πολλά βιβλία ελεύθερα διαθέσιμα στο διαδίκτυο ή/και σε βιβλία τα οποία ... έχουν κάποιο τίμημα. Παρακολουθήστε τη βιβλιογραφία και την ιστοσελίδα του μα- θήματος1. ΄Οπως σε κάθε περιβάλλον εργασίας ενός υπολογιστικού προγράμματος, εί-

    ναι ανάγκη να γίνουν επιλογές. Αυτές εξαρτώνται από τις συγκεκριμένες α- νάγκες του προγράμματος: Απαιτήσεις αριθμητικής αποτελεσματικότητας, μι- κρή/μεγάλη ομάδα εργασίας, πολυπλοκότητα κώδικα, ανάγκες για αναβαθμίσεις ... αναμνήσεις από το μέλλον. Εμείς εδώ θα διαλέξουμε να πάρουμε ένα άρωμα από τις ανάγκες ενός προ-

    γράμματος με κατεύθυνση επιστημονική/υπολογιστική. Ενός προγράμματος με μεγάλες ανάγκες σε εκμετάλλευση των υπολογιστικών πόρων για γρήγορους αριθμητικούς υπολογισμούς και για ευέλικτη ανάλυση (...πολλών) δεδομένων. ΄Ενα τέτοιο περιβάλλον που προσφέρει ευελιξία, αξιοπιστία, απλότητα2, δυνα- τά εργαλεία για ανάλυση δεδομένων και μεταγλώττιση προγραμμάτων και που να προσφέρει στο χρήστη να κάνει αποδοτικότερη χρήση των υπολογιστικών πόρων του συστήματός του είναι η ομάδα λειτουργικών συστημάτων Unix. Η

    1http://mycourses.ntua.gr/courses/SEMFE1079/ 2Ο συγγραφέας ποτέ δεν μπόρεσε να κατανοήσει γιατί άλλα δημοφιλή λειτουργικά συστή-

    ματα θεωρούνται...απλούστερα.

    1

  • 2 ΚΕΦΑΛΑΙΟ 1. Ο ΥΠΟΛΟΓΙΣΤΗΣ

    σύγχρονη, δημοφιλής και ελεύθερα διαθέσιμη έκδοση τέτοιου συστήματος εί- ναι το GNU/Linux3, μια προσπάθεια η οποία πραγματοποιήθηκε χάρη στην εθελοντική δουλειά εκατομμυρίων προγραμματιστών παγκοσμίως και που βασί- στηκε στην ιδέα του Ελεύθερου Λογισμικού (όχι με την έννοια ‘τσάμπα’ αλλά με την έννοια της ελεύθερης διακίνησης ιδεών στο λογισμικό) που θεμελίωσε ο Richard Stallman4.

    Η γλώσσα προγραμματισμού που θα διαλέξουμε είναι η Fortran 77. Μερικοί λόγοι για την επιλογή είναι ότι η γλώσσα (ή οι εξελίξεις αυτής Fortran 90, 95, ...) αυτή είναι προσανατολισμένη σε αριθμητικές εφαρμογές και χρησιμοποιείται ευρέως σε επιστημονικές και μηχανικές συνεργασίες. Είναι απλή και οι μετα- γλωττιστές κάνουν βελτιστοποίηση, παραλληλοποίηση και διανυσματοποίηση αποτελεσματικότερα. Υπάρχουν πολλές, καλές και δοκιμασμένες βιβλιοθήκες με μαθηματικό λογισμικό από τις οποίες μερικές είναι ελεύθερα διαθέσιμες. Φυσικά η γλώσσα αυτή δεν προσφέρεται για πολύπλοκες διεργασίες που έχουν σχέση με το λειτουργικό σύστημα (διαχείριση αρχείων, επεξεργασία δεδομένων κλπ) και επεξεργασία κειμένου αλλά το κενό καλύπτεται εύκολα με το συν- δυασμό χρήσης των εργαλείων του συστήματος. Επίσης είναι απλή στη δομή της, οπότε ο αναγνώστης δε θα δυσκολευτεί να κάνει απλούς υπολογισμούς ακόμα και αν δεν έχει προηγούμενη εμπειρία προγραμματισμού. Τέλος είναι μα- θηματικά προσανατολισμένη: ΄Εχει απλή, κτισμένη μέσα της, χρήση μιγαδικών αριθμών και μαθηματικών συναρτήσεων, βιβλιοθήκες διαθέσιμες για υπολογι- σμούς διαφορετικής ακρίβειας και αποτελεσματικότερη διαχείριση της μνήμης του υπολογιστή. Μπορεί κανείς εύκολα να διαχειριστεί αριθμητικά δεδομένα σε ψηφιακή μορφή (unformatted) που είναι γρηγορότερο και διατηρεί την ακρίβεια των πραγματικών αριθμών. Η απλότητά της και η ... ηλικία της κάνει τους αντίστοιχους μεταγλωττιστές να κάνουν την καλύτερη διαθέσιμη βελτιστοποί- ηση και παραλληλοποίηση του κώδικα σε σύγκριση με όλες τις άλλες γλώσσες. ΄Εχει το μειονέκτημα ότι η μνήμη καθορίζεται στατικά και δε διαθέτει pointers, κάτι όμως που δεν αποτελεί συνήθως σοβαρό εμπόδιο σε αριθμητικούς υπο- λογισμούς. Είναι γλώσσα δομημένου (procedural) και όχι αντικειμενοστρα- φούς (object oriented) προγραμματισμού, κάτι όμως που δεν είναι μειονέκτη- μα σε αριθμητικούς υπολογισμούς καθώς ο πολύπλοκος αντικειμενοστραφής προγραμματισμός μπορεί να οδηγήσει εύκολα σε προγραμματιστικά λάθη ως προς τη βελτιστοποίηση εκτέλεσης του προγράμματος από τον προγραμματι- στή ή/και τον μεταγλωττιστή (compiler). Γλώσσες αντικειμενοστραφείς όπως

    3www.gnu.org 4www.stallman.org

  • 1.1. ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ 3

    οι C++/Java θα προτιμηθούν σε προγράμματα που ο χρόνος/μνήμη δεν είναι σημαντικοί περιορισμοί αλλά όπου ο χρόνος προγραμματισμού λόγω μεγέθους του προγράμματος ή/και της ομάδας προγραμματισμού ή λόγω φορητότητας (portability) σε διαφορετικές πλατφόρμες είναι σημαντικότερος. Η Fortran77 όπως και οι Fortran90, C, C++, Java είναι γλώσσες που

    μεταγλωττίζονται από ένα μεταγλωττιστή. Μια άλλη κατηγορία γλωσσών προ- γραμματισμού είναι οι ερμηνευόμενες (interpreted) όπως είναι οι perl, Basic, awk, shell programming, Macsyma, Mathematica, Matlab, Octave, Maple, .... Οι ερμηνευτές των γλωσσών αυτών ερμηνεύουν το πρόγραμμα γραμμή- γραμμή κάτι που δεν επιτρέπει την ανάλυση του προγράμματος που κά