Γλώσσες Προγραμματισμού...

30
Ιστορική αναδρομή Γλώσσες μηχανής Αρχικά για να μπορέσει ο υπολογιστής να εκτελέσει μία οποιαδήποτε λειτουρ- γία, έπρεπε να δοθούν κατευθείαν οι κατάλληλες ακολουθίες από 0 και 1, δηλαδή ε- ντολές σε μορφή κατανοητή από τον υπολογιστή αλλά πολύ δύσκολα κατανοητές από τον άνθρωπο. Ο τρόπος αυτός ήταν επίπονος και ελάχιστοι μπορούσαν να τον Εργασία στα πλαίσια του μαθήματος της Ερευνητική εργασίας B’ Λυκείου Β’ τετράμηνο Θέμα: Γλώσσες Προγραμματισμού Η/Υ

Transcript of Γλώσσες Προγραμματισμού...

Page 1: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

Ιστορική αναδρομή

Γλώσσες μηχανής

Αρχικά για να μπορέσει ο υπολογιστής να εκτελέσει μία οποιαδήποτε λειτουρ-

γία, έπρεπε να δοθούν κατευθείαν οι κατάλληλες ακολουθίες από 0 και 1, δηλαδή ε-

ντολές σε μορφή κατανοητή από τον υπολογιστή αλλά πολύ δύσκολα κατανοητές

από τον άνθρωπο. Ο τρόπος αυτός ήταν επίπονος και ελάχιστοι μπορούσαν να τον

Εργασία στα πλαίσια του μαθήματος της

Ερευνητική εργασίας

B’ Λυκείου

Β’ τετράμηνο

Θέμα: Γλώσσες Προγραμματισμού Η/Υ

Page 2: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

υλοποιήσουν, αφού απαιτούσε βαθιά γνώση του υλικού και της αρχιτεκτονικής του

υπολογιστή. Οι εντολές που δέχεται ένας υπολογιστής μετατρέπονται σε ακολουθίες

που αποτελούνται από 0 και 1, γίνονται δηλαδή εντολές σε γλώσσα μηχανής όπως

ονομάζονται, έτσι ώστε να γίνουν κατανοητές από τον υπολογιστή και στη συνέχεια

να μπορέσει να τις εκτελέσει.

υμβολικές γλώσσες ή γλώσσες χαμηλού επιπέδου

Από τα πρώτα χρόνια άρχισαν να γίνονται προσπάθειες για τη δημιουργία μι-

ας συμβολικής γλώσσας, η οποία ενώ θα έχει έννοια για τον άνθρωπο θα μετατρέπε-

ται εσωτερικά από τους υπολογιστές στις αντίστοιχες ακολουθίες από 0 και 1. Για πα-

ράδειγμα η λέξη ADD (πρόσθεσε) ακολουθούμενη από δυο αριθμούς, είναι κατανοη-

τή από τον άνθρωπο και απομνημονεύεται σχετικά εύκολα. Η εντολή αυτή θα μετα-

φραστεί από τον υπολογιστή σε μία ακολουθία δυαδικών ψηφίων και στη συνέχεια

μπορεί να εκτελεστεί. Σο έργο της μετάφρασης το αναλαμβάνει ένα ειδικό πρόγραμ-

μα, ο συμβολομεταφραστής (assembler).

Γλώσσες υψηλού επιπέδου

Οι ανεπάρκειες των συμβολικών γλωσσών και η προσπάθεια για καλύτερη ε-

πικοινωνία ανθρώπου μηχανής οδήγησαν στα τέλη της δεκαετίας του 50 στην εμφά-

νιση των πρώτων γλωσσών προγραμματισμού υψηλού επιπέδου. Σο 1957

η IBM ανάπτυξε την πρώτη γλώσσα υψηλού επιπέδου τη FORTRAN. Σο

όνομα FORTRAN προέρχεται από τις λέξεις FORmula TRANslationπου σημαίνουν με-

τάφραση τύπων. Η FORTRAN αναπτύχθηκε ως γλώσσα κατάλληλη για την επίλυση

μαθηματικών και επιστημονικών προβλημάτων.

Σο 1960 αναπτύχθηκε μία άλλη γλώσσα, σταθμός στον προγραμματισμό η

γλώσσα COBOL. Η COBOL όπως δηλώνει και το όνομα της (COmmonBusi-

ness Oriented Language-Κοινή γλώσσα προσανατολισμένη στις επιχειρήσεις) είναι κα-

τάλληλη για ανάπτυξη εμπορικών εφαρμογών, και γενικότερα διαχειριστικών εφαρ-

μογών, τομέας όπου η FORTRAN υστερούσε.

Μια από τις σημαντικότερες γλώσσα προγραμματισμού με ελάχιστη πρακτική

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

γλώσσες είναι η ALGOL (Algorithmic Language-Αλγοριθμική γλώσσα).

το χώρο της Σεχνητής Νοημοσύνης αναπτύχθηκαν δυο γλώσσες διαφορετικές

από τις άλλες. τα μέσα του 60 αναπτύχθηκε η LISP (LISt Processor- Επεξεργαστής

λίστας), γλώσσα η οποία προσανατολίζεται σε χειρισμό λιστών από τα σύμβολα και

η PROLOG (PROgramming LOGic- Λογικός Προγραμματισμός) στις αρχές του 70.

Δύο σημαντικότατες γλώσσες γενικού σκοπού, οι οποίες αναπτύχθηκαν τη δε-

καετία του 60 αλλά χρησιμοποιούνται πάρα πολύ στις ημέρες μας, είναι ηBASIC και

η PASCAL. Η γλώσσα προγραμματισμού BASIC (Beginner’s All Purpose Symbolic Code

- υμβολικός Κώδικας Εντολών Γενικής Φρήσης για Αρχάριους) αρχικά αναπτύχθηκε,

όπως δηλώνει και το όνομα της, ως γλώσσα για την εκπαίδευση αρχαρίων στον προ-

γραμματισμό. χεδιάστηκε για να γράφονται σύντομα προγράμματα, τα οποία εκτε-

λούνται με τη βοήθεια διερμηνευτή (interpreter). Η γλώσσα PASCAL έφερε μεγάλες

αλλαγές στον προγραμματισμό. Παρουσιάστηκε το 1970 και στηρίχθηκε πάνω

Page 3: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

στην ALGOL. Είναι μια γλώσσα γενικής χρήσης, η οποία είναι κατάλληλη τόσο για

την εκπαίδευση όσο και τη δημιουργία ισχυρών προγραμμάτων κάθε τύπου. Φαρα-

κτηριστικό της γλώσσας είναι η καταλληλότητα για τη δημιουργία δομημένων προ-

γραμμάτων.

Μία ακόμη γλώσσα που γνώρισε μεγάλη διάδοση είναι η γλώσσα C.

Η C χρησιμοποιήθηκε για την ανάπτυξη του λειτουργικού συστήματος Unix γλώσσα

με ισχυρά χαρακτηριστικά, μερικά από αυτά κοινά με την Pascal κατάλληλη για την

ανάπτυξη δομημένων εφαρμογών αλλά και με πολλές δυνατότητες γλώσσας χαμη-

λού επιπέδου. Η C εξελίχτηκε στη γλώσσα C++, που είναι αντικειμενοστραφής.

Σα τελευταία χρόνια χρησιμοποιείται ιδιαίτερα, ειδικά για προγραμματισμό

στο Διαδίκτυο (Internet), η JAVA. Η JAVA είναι μια αντικειμενοστραφής γλώσσα που

αναπτύχθηκε από την εταιρία SUN με σκοπό την ανάπτυξη εφαρμογών, που θα ε-

κτελούνται σε κατανεμημένα περιβάλλοντα, δηλαδή σε διαφορετικούς υπολογιστές οι

οποίοι είναι συνδεδεμένοι με το Διαδίκτυο.

Πλεονεκτήματα των γλωσσών υψηλού επιπέδου

τα πλεονεκτήματα των γλωσσών προγραμματισμού υψηλού επιπέδου σε

σχέση με τις συμβολικές μπορούν να αναφερθούν:

Ο φυσικότερος και πιο «ανθρώπινος» τρόπος έκφρασης των προβλημάτων. Σα

προγράμματα σε γλώσσα υψηλού επιπέδου είναι πιο κοντά στα προβλήματα που ε-

πιλύουν.

Η ανεξαρτησία από τον τύπο του υπολογιστή. Προγράμματα σε μία γλώσσα

υψηλού επιπέδου μπορούν να εκτελεστούν σε οποιονδήποτε υπολογιστή με ελάχιστες

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

ναι σημαντικό προσόν.

Η ευκολία της εκμάθησης και εκπαίδευσης ως απόρροια των προηγούμενων.

Page 4: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

Η διόρθωση λαθών και η συντήρηση προγραμμάτων σε γλώσσα υψηλού επιπέ-

δου είναι πολύ ευκολότερο έργο.

υνολικά οι γλώσσες υψηλού επιπέδου ελάττωσαν σημαντικά το χρόνο και το

κόστος παραγωγής νέων προγραμμάτων, αφού λιγότεροι προγραμματιστές μπορούν

σε μικρότερο χρόνο να αναπτύξουν προγράμματα που χρησιμοποιούνται σε περισσό-

τερους υπολογιστές.

Γλώσσες 4ης γενιάς

τις γλώσσες αυτές ο χρήστης ενός υπολογιστή έχει τη δυνατότητα σχετικά εύκολα

να υποβάλει ερωτήσεις στο σύστημα ή να αναπτύσσει εφαρμογές που ανακτούν πλη-

ροφορίες από βάσεις δεδομένων και να καθορίζει τον ακριβή τρόπο εμφάνισης αυτών

των πληροφοριών.

Προγραμματιστής Video Game Είναι ένα μοντέρνο επάγγελμα που αξιοποιεί τις πιο σύγχρονες ψηφιακές ε-

φαρμογές. Οι περισσότεροι από μας, σε ελεύθερο χρόνο, ασχολούνται με video-

παιχνίδια και τα internet cafe είναι γεμάτα από «νέους» όλων των ηλικιών. Ο Προ-

γραμματιστής παιχνιδιών και ψυχαγωγικών εφαρμογών (Video Games), ασχολείται

με τις σύγχρονες τεχνικές προγραμματισμού και σχεδίασης παιχνιδιών, και τη δημι-

ουργία αλληλεπιδραστικών εφαρμογών. Εξειδικεύεται στις interactive πλατφόρμες

που βρίσκουν εφαρμογή στους τομείς της ψυχαγωγίας και της εκπαίδευσης. υνδυά-

ζει τις γνώσεις του στον προγραμματισμό με την ικανότητα και την φαντασία να δη-

μιουργεί οπτικά και ηχητικά εφέ, τη δράση και την τεχνητή νοημοσύνη, δημιουργώ-

ντας έτσι μια συναρπαστική, δική του, πραγματικότητα. «ύμμαχοί του» στην δημι-

ουργία είναι το διαδίκτυο (online gaming), η κινητή τηλεφωνία (Java εφαρμογές) και οι

ευφυείς τεχνολογίες που όλο και αναπτύσσονται, δίνοντάς του αμέτρητες διεξόδους

έκφρασης και επικοινωνίας.

Σι κάνει ένας σχεδιαστής ;

Εάν θες να γίνεις σχεδιαστής παιχνιδιών, το πρώτο πράγμα που θα πρέπει να

ξέρουμε είναι τι κάνει ένας σχεδιαστής, αυτό είναι αρκετά απλό, συχνά όμως οι άν-

θρωποι περιπλέκουν στο μυαλό τους την δουλεία ενός σχεδιαστή παιχνιδιών. Ένας

σχεδιαστής παιχνιδιών είναι ένας επαγγελματίας ειδικός στην παράγωγη παιχνιδιών

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

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

τική, και αυτό που καθορίζει κάποιον ως εξαιρετικό σχεδιαστή είναι η δουλειά που

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

πρέπει να ξέρετε είναι πόσο πολύ αγαπάτε τα παιχνίδια, πρέπει να έχετε περάσει αρ-

κετή ώρα, ξέροντας μετά από λίγο τι κάνει ένα παιχνίδι καλό η κακό. Φρειάζονται (οι

εταιρείες) κάποιον που ξέρει καλό σχεδιασμό επιπέδων, και ο μόνος τρόπος να εξα-

σκήσεις αυτήν την ικανότητα είναι παίζοντας αρκετά παιχνίδια αρκετές ώρες και

πολλές φορές. Δεύτερον ψάχνουν για κάποιον που είναι καταπληκτικός στο να λύνει

προβλήματα καθώς υπάρχουν τόσα bugs και σφάλματα κατά την διάρκεια ενός παι-

Page 5: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

χνιδιού που καθιστούν αδύνατη την σχεδίαση του μετά από ένα συγκεκριμένο σημεί-

ο. Σέλος, θέλουν ένα άτομο που να είναι ευέλικτο με τις ικανότητες άλλα και υπομο-

νετικό ταυτόχρονα ώστε να πετυχαίνει το σωστό αποτέλεσμα.

Με μια παράγραφο, αυτό που κάνει ένας σχεδιαστής περιλαμβάνει πρότυπα σε

χαρτί και ψηφιακά, συνθέτει έγγραφα , αποφασίζει για το γενικό κλίμα του παιχνι-

διού, προσαρμόζει τα επίπεδα και τον χαρακτήρα των παικτών, και τρέχει το παιχνίδι

ξανά και ξανά ώστε να διορθώσει οτιδήποτε είναι λάθος.

Ένας καλός σχεδιαστής θα πρέπει να γνωρίζει για τα τελευταία παιχνίδια και να εί-

ναι στα θέματα γενικής συζήτησης των σχεδιαστών.

Πρέπει να μάθω κώδικα;

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

σει δραματικά άπλα και μονό μαθαίνοντας βασικά στοιχεία προγραμματιστικής

γλώσσας.

Πρέπει να μάθω να ζωγραφίζω;

Υυσικά, αν και η δημιουργία γραφικών είναι ευθύνη των καλλιτεχνών, ένας

καλός σχεδιαστής θα πρέπει να μπορεί να σκιαγραφεί ή έστω να εμπλουτίζει οπτικά

τις ιδέες τους. Εάν ξέρεις να σκιαγραφείς θα μπορείς να δώσεις στα άτομα που δου-

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

ψηφιακή τέχνη λίγο καλύτερα θα είναι ευκολότερη η ανάπτυξη του παιχνιδιού από

όλα τα μέλη.

Πώς να ξεκινήσω με το πρώτο μου παιχνίδι;

Αρχικά σχεδιάζοντας στο σε χαρτί, ξεκινώντας με κάτι απλό δίχως πολύπλο-

κους μηχανισμούς και πολλά γραφικά. Υτιάχνοντας ένα puzzle game είναι ο καλύτε-

ρος τρόπος να ξεκινήσει κάποιος στον σχεδιασμό παιχνιδιών. Σώρα, αν τα 3D παιχνί-

δια είναι το πάθος σας, η 3D είναι μία καλή επιλογή. Είναι εύκολη και υπάρχει ο-

ποιαδήποτε στιγμή κάποιος να σας λύσει απορίες για αυτήν. Σέλος μείνετε σε κάτι

απλό ως πρώτο παιχνίδι, σκοπεύοντας να φτάσετε έως το τέλος του σχεδιασμού του.

VISUAL BASIC

Η Visual Basic (VB) είναι γλώσσα προγραμματισμού τρίτης γενιάς, οδηγούμε-

νη από συμβάντα (event driven) και έχει ολοκληρωμένο περιβάλλον ανάπτυξης (IDE)

από τη Microsoft για το μοντέλο προγραμματισμού COM. Η VB θεωρείται επίσης μία

σχετικά εύκολη γλώσσα προγραμματισμού στην εκμάθηση και τη χρησιμοποίηση,

λόγω των χαρακτηριστικών της, καθώς έχει Γραφικό Περιβάλλον Φρήστη και συγγέ-

νεια με την γλώσσα προγραμματισμού BASIC. Η Visual Basic προέρχεται από τη

BASIC και επιτρέπει την ταχεία ανάπτυξη εφαρμογών (RAD) με Γραφικό Περιβάλλον

Φρήστη (GUI), πρόσβαση σε βάσεις δεδομένων χρησιμοποιώντας αντικείμενα (Data

Access Objects, Remote Data Objects, ή ActiveX Data Objects), και τη δημιουργία στοι-

χείων ελέγχου ActiveX και αντικειμένων. Οι γλώσσες προγραμματισμού τύπου

"scripting", όπως η VBA και VBScript συντακτικά είναι παρόμοιες με τη Visual Basic,

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

Page 6: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

μια εφαρμογή χρησιμοποιώντας τα στοιχεία που παρέχονται με την Visual Basic.

Προγράμματα γραμμένα σε Visual Basic μπορούν, επίσης, να χρησιμοποιήσουν το

Windows API, αλλά κάτι τέτοιο απαιτεί δηλώσεις εξωτερικών συναρτήσεων.

ΧΑΡΑΚΣΗΡΙΣΙΚΑ

Η Visual Basic έχει τα εξής χαρακτηριστικά που διαφέρουν από τις γλώσσες που

προέρχονται από τη C:

Η πολλαπλή ανάθεση που διατίθεται στη C δεν είναι δυνατή. Σο A = B = C, δεν

σημαίνει ότι οι τιμές των Α, Β και C είναι ίδιες. Σο αποτέλεσμα της boolean "B = C;" α-

ποθηκεύεται στην μεταβλητή A. Σο αποτέλεσμα που αποθηκεύεται στην Α θα μπο-

ρούσε συνεπώς να είναι ψευδές (0) ή αληθές (-1).

Οι λογικοί και δυαδικοί τελεστές είναι ενοποιημένοι. Αυτό έρχεται σε αντίθεση

με ορισμένες γλώσσες προερχόμενες από τη C (όπως η γλώσσα Perl), οι οποίες έχουν

ξεχωριστούς λογικούς και δυαδικούς τελεστές. Αυτό είναι ένα παραδοσιακό χαρακτη-

ριστικό της γλώσσας BASIC.

ΣΟ ΑΛΦΑΒΗΣΟ ΣΗ VISUAL BASIC

Οι μόνοι χαρακτήρες που επιτρέπεται να χρησιμοποιηθούν είναι οι ακόλουθοι:

A B C D E F H I J K L M N O P Q R S T U V W X Y Z

a b c d e f g h I j k l m n o p q r s t u v w x y z

1 2 3 4 5 6 7 8 9 0 + - * / ( ) . , ‚ ^ % # < > ? : & _ ; = $

Και το κενό διάστημα

BASIC

ΟΡΙΜΟ

Η BASIC είναι μια γλώσσα προγραμματισμού υπολογιστών. Σο όνομά της

προέρχεται από τα αρχικά των λέξεων Beginner's All Purpose Symbolic Instruction

Code (υμβολικός Κώδικας Εντολών Κάθε Φρήσης για Αρχάριους).

ΙΣΟΡΙΑ

Η γλώσσα άρχισε να αναπτύσσεται στο Dartmouth το 1963 για εκπαιδευτικούς

σκοπούς. Σο συντακτικό της επηρεάστηκε από την FORTRAN, μια γλώσσα επιστημο-

νικών εφαρμογών.Τπάρχουν πάρα πολλές διάλεκτοι της BASIC. Η ευρεία διάδοση της

γλώσσας οφείλεται κατά κύριο λόγο στο ότι ήταν το μόνο διαθέσιμο λογισμικό για

συγγραφή προγραμμάτων μικροϋπολογιστών για πολύ μεγάλο χρονικό διάστημα (α-

πό τον πρώτο μικροϋπολογιστή του 1975, τον Altair 8800 μέχρι και τα μέσα της δεκαε-

τίας του 1980), και επίσης στην ευκολία σύνταξής της. Ο οικιακός προγραμματισμός

από ερασιτέχνες (τους λεγόμενους «σκαπανείς») άνθισε εξαιτίας αυτής της γλώσσας.

Page 7: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

Ακόμα και σήμερα η γλώσσα BASIC προτιμάται έναντι άλλων για την εισαγωγή στον

προγραμματισμό.Ένα πρόγραμμα γραμμένο στη γλώσσα BASIC πρέπει να μετατρα-

πεί σε γλώσσα μηχανής για να μπορέσει να εκτελεστεί από τον Η/Τ. Όπως συμβαίνει

και με τις άλλες γλώσσες προγραμματισμού, την εργασία αυτή την διεκπεραιώνει έ-

νας μεταγλωττιστής ή ένας διερμηνέας. Αρχικά οι διερμηνείς ήταν πολύ δημοφιλείς

για την γλώσσα BASIC, αφού ο χρήστης μπορούσε να διακόψει όποτε ήθελε την εκτέ-

λεση του προγράμματος του και να κάνει αλλαγές σε αυτό. Με την εισαγωγή όμως

την έννοιας του Δομημένου Προγραμματισμού, καθώς και αντικειμενοστραφών εκ-

δόσεων της γλώσσας, οι διερμηνείς αντικαταστάθηκαν από τους μεταγλωττι-

στές.την Ελλάδα, ένας διερμηνέας της διαλέκτου "SUPER BASIC" [1] κατασκευάσθηκε

στις αρχές της δεκαετίας του '80 από την εταιρεία Gigatronics για τους υπολογιστές

της.

JAVA

Η Java είναι μια αντικειμενοστρεφής γλώσσα προγραμματισμού που σχεδιάστηκε

από την εταιρεία πληροφορικής Sun Microsystems .

Ιστορία

τις αρχές του 1991, η Sun αναζητούσε το κατάλληλο εργαλείο για να αποτε-

λέσει την πλατφόρμα ανάπτυξης λογισμικού σε μικρο-συσκευές.Σα εργαλεία εκείνης

της εποχης ήταν η C++ και η C . Μετά από διάφορους πειραματισμούς προέκυψε το

συμπέρασμα ότι οι υπάρχουσες γλώσσες δεν μπορούσαν να καλύψουν τις ανάγκες

τους. Ο "πατέρας" της Java, James Gosling, που εργαζόταν εκείνη την εποχή για την

Sun, έκανε ήδη πειραματισμούς πάνω στη C++ και είχε παρουσιάσει κατά καιρούς κά-

ποιες πειραματικές γλώσσες (C++ ++,που μετέπειτα ονομαστικέ C# ) ως πρότυπα για

το νέο εργαλείο που αναζητούσαν στην Sun. Σελικά μετά από λίγο καιρό κατέληξαν

με μια πρόταση για το επιτελείο της εταιρίας, η οποία ήταν η γλωσσα Oak. Σο όνομά

της το πήρε από το ομώνυμο δένδρο (βελανιδιά) το οποίο ο Gosling είχε έξω από το

γραφείο του και έβλεπε κάθε μέρα.

Σα χαρακτηριστικά της Java

Ένα από τα βασικά πλεονεκτήματα της Java έναντι των περισσότερων άλλων

γλωσσών είναι η ανεξαρτησία του λειτουργικού συστήματος και πλατφόρμας. Σα

προγράμματα που είναι γραμμένα σε Java τρέχουνε ακριβώς το ίδιο σε Windows ,

Linux , Unix και Macintosh χωρίς να χρειαστεί να ξαναγίνει μεταγλώττιση (compiling)

ή να αλλάξει ο πηγος κώδικας για κάθε διαφορετικό λειτουργικό σύστημα. Για να επι-

τευχθεί όμως αυτό χρειαζόταν κάποιος τρόπος έτσι ώστε τα προγράμματα γραμμένα

σε Java να μπορούν να είναι «κατανοητά» από κάθε υπολογιστή ανεξάρτητα του εί-

δους επεξεργαστή αλλά και λειτουργικού συστήματος (Windows, Unix, Linux, BSD,

MacOS). Ο λόγος είναι ότι κάθε κεντρική μονάδα επεξεργασίας κατανοεί διαφορετικό

Page 8: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

κώδικα μηχανής. Ο συμβολικός κώδικας (assembly) που μεταφράζεται και εκτελείται

σε Windows είναι διαφορετικός από αυτόν που μεταφράζεται και εκτελείται σε έναν

υπολογιστή Macintosh. Η λύση δόθηκε με την ανάπτυξη της Εικονικής Mηχανής.

Από την Oak στην Java

H Oak ήταν μία γλώσσα που διατηρούσε μεγάλη συγγένεια με την C++. Παρό-

λα αυτά είχε πολύ πιο έντονο αντικειμενοστρεφή (object oriented) χαρακτήρα σε σχέση

με την C++ και χαρακτηριζόταν για την απλότητα της. ύντομα οι υπεύθυνοι ανά-

πτυξης της νέας γλώσσας ανακάλυψαν ότι το όνομα Oak ήταν ήδη κατοχυρωμένο ο-

πότε κατά την διάρκεια μιας εκ των πολλών συναντήσεων σε κάποιο τοπικό καφέ

αποφάσισαν να μετονομάσουν το νέο τους δημιούργημα σε Java που εκτός των άλλων

ήταν το όνομα της αγαπημενης ποικιλιας καφέ για τους δημιουργούς της. Η επίσημη

εμφάνιση της Java αλλα και του HotJava (πλοηγός με υποστήριξη Java) στη βιομηχανία

της πληροφορικής έγινε το Μάρτιο του 1995 όταν η Sun την ανακοίνωσε στο συνέδριο

Sun World 1995. O πρώτος μεταγλωτιστής (compiler) της ήταν γραμμένος στη γλώσσα C

από τον James Gosling. Σο 1994, ο A.Van Hoff ξαναγράφει τον μεταγλωττιστή της

γλώσσας σε Java, ενώ το Δεκέμβριο του 1995 πρώτες οι IBM, Borland, Mitsubishi

Electronics, Sybase και Symantec ανακοινώνουν σχέδια να χρησιμοποιήσουν τη Java για

την δημιουργία λογισμικού. Από εκεί και πέρα η Java ακολουθεί μία ανοδική πορεία

και είναι πλέον μία από τις πιο δημοφιλείς γλώσσες στον χώρο της πληροφορικής

Page 9: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

Η εικονική μηχανή της Java

Αφού γραφεί κάποιο πρόγραμμα σε Java, στη συνέχεια μεταγλωτίζετται μέσω

του μεταγλωτιστή javac, ο οποίος παράγει έναν αριθμό από αρχεία .class (κώδικας

byte ή bytecode). Ο κώδικας byte είναι η μορφή που παίρνει ο πηγαίος κώδικας της

Java όταν μεταγλωττιστεί. Όταν πρόκειται να εκτελεστεί η εφαρμογή σε ένα μηχάνη-

μα, το Java Virtual Machine που πρέπει να είναι εγκατεστημένο σε αυτό θα αναλάβει

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

υποστηρίζεται από το λειτουργικό σύστημα και τον επεξεργαστή, έτσι ώστε να εκτε-

λεστεί (αυτό συμβαίνει με την παραδοσιακή Εικονική Μηχανή (Virtual Machine ). Πιο

σύγχρονες εφαρμογές της εικονικής Μηχανής μπορούν και μεταγλωττίζουν εκ των

προτέρων τμήματα bytecode απευθείας σε κώδικα μηχανής (εγγενή κώδικα ή native

code) με αποτέλεσμα να βελτιώνεται η ταχύτητα). Φωρίς αυτό δε θα ήταν δυνατή η

εκτέλεση λογισμικού γραμμένου σε Java. Η JVM είναι λογισμικό που εξαρτάται από

την πλατφόρμα, δηλαδή για κάθε είδος λειτουργικού συστήματος και αρχιτεκτονικής

επεξεργαστή υπάρχει διαφορετική έκδοση του. Έτσι υπάρχουν διαφορετικές JVM για

Windows, Linux, Unix, Macintosh, κινητά τηλέφωνα, παιχνιδομηχανές κλπ.

. Οτιδήποτε θέλει να κάνει ο προγραμματιστής (ή ο χρήστης) γίνεται μέσω της

εικονικής μηχανής. Αυτό βοηθάει στο να υπάρχει μεγαλύτερη ασφάλεια στο σύστημα

γιατί η εικονική μηχανή είναι υπεύθυνη για την επικοινωνία χρήστη - υπολογιστή. Ο

προγραμματιστής δεν μπορεί να γράψει κώδικα ο οποίος θα έχει καταστροφικά απο-

τελέσματα για τον υπολογιστή γιατί η εικονική μηχανή θα τον ανιχνεύσει και δε θα

επιτρέψει να εκτελεστεί. Από την άλλη μεριά ούτε ο χρήστης μπορεί να κατεβάσει

«κακό» κώδικα από το δίκτυο και να τον εκτελέσει. Αυτό είναι ιδιαίτερα χρήσιμο για

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

γραμμα συγχρόνως.

HTML

H HTML (HyperText Markup Language) είναι η κύρια γλώσσα μηχανής για τις

ιστοσελίδες , και τα στοιχεία της είναι τα βασικά δομικά στοιχεία των ιστοσελίδων.

Η HTML γράφεται υπό μορφή στοιχείων HTML τα οποία αποτελούνται από

ετικέτες (tags), οι οποίες περικλείονται μέσα σε σύμβολα «μεγαλύτερο από» και «μι-

κρότερο από» (για παράδειγμα <html>), μέσα στο περιεχόμενο της ιστοσελίδας. Οι ε-

τικέτες HTML συνήθως λειτουργούν ανά ζεύγη (για παράδειγμα <h1> και </h1>), με

την πρώτη να ονομάζεται ετικέτα έναρξης και τη δεύτερη ετικέτα λήξης (ή σε άλλες

περιπτώσεις ετικέτα ανοίγματος και ετικέτα κλεισίματος αντίστοιχα). Ανάμεσα στις

ετικέτες, οι σχεδιαστές ιστοσελίδων μπορούν να τοποθετήσουν κείμενο, πίνακες, ει-

κόνες κλπ.

Page 10: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

Ο σκοπός ενός web browser είναι να διαβάζει τα έγγραφα HTML και τα συνθέ-

τει σε σελίδες που μπορεί κανείς να διαβάσει ή να ακούσει. Ο browser δεν εμφανίζει

τις ετικέτες HTML, αλλά τις χρησιμοποιεί για να ερμηνεύσει το περιεχόμενο της σελί-

δας.

Σα στοιχεία της HTML χρησιμοποιούνται για να κτίσουν όλους του ιστότοπους.

Η HTML επιτρέπει την ενσωμάτωση εικόνων και άλλων αντικειμένων μέσα στη σελί-

δα, και μπορεί να χρησιμοποιηθεί για να εμφανίσει διαδραστικές φόρμες. Παρέχει τις

μεθόδους δημιουργίας δομημένων εγγράφων (δηλαδή εγγράφων που αποτελούνται

από το περιεχόμενο που μεταφέρουν και από τον κώδικα μορφοποίησης του περιεχο-

μένου) καθορίζοντας δομικά σημαντικά στοιχεία για το κείμενο, όπως κεφαλίδες, πα-

ραγράφους, λίστες, συνδέσμους, παραθέσεις και άλλα. Μπορούν επίσης να ενσωμα-

τώνονται σενάρια εντολών σε γλώσσες όπως η Javascript , τα οποία επηρεάζουν τη

συμπεριφορά των ιστοσελίδων HTML.

Oι Web browsers μπορούν επίσης να αναφέρονται σε στυλ μορφοποίησης CSS

για να ορίζουν την εμφάνιση και τη διάταξη του κειμένου και του υπόλοιπου υλικού.

Ο οργανισμός W3C, ο οποίος δημιουργεί και συντηρεί τα πρότυπα για την HTML και

τα CSS, ενθαρρύνει τη χρήση των CSS αντί διαφόρων στοιχείων της HTML για σκο-

πούς παρουσίασης του περιεχομένου.

ήμανση

Η σήμανση HTML αποτελείται από μερικά βασικά συστατικά, συμπεριλαμβα-

νομένων των στοιχείων (και των ιδιοτήτων τους), τους βασισμένους σε χαρακτήρες

τύπους δεδομένων, τις αναφορές χαρακτήρων και τις αναφορές οντοτήτων. Ένα ξεχω-

ριστό σημαντικό συστατικό είναι η δήλωση τύπου εγγράφου , η οποία ορίζει στον

browser τον τρόπο εμφάνισης της σελίδας.

την HTML, το πρόγραμμα Hello World, ένα συνηθισμένο πρόγραμμα υπολο-

γιστή που χρησιμεύει για τη σύγκριση γλωσσών προγραμματισμού , γλωσσών σενα-

ρίου και γλωσσών σήμανσης, φτιάχνεται με 9 γραμμές κώδικα, παρότι οι νέες γραμ-

μές είναι προαιρετικές στης HTML:

<!DOCTYPE html>

<html>

<head>

<title>Hello HTML</title>

</head>

<body>

<p>Hello world</p>

</body>

</html>

(Το κείμενο ανάμεσα στο <html> και το </html> περιγράφει την ιστοσελίδα, και το κείμενο

μεταξύ του <body> και του </body> είναι το ορατό μέρος της. Το σημασμένο κείμενο

Page 11: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

<title>Hello HTML</title> καθορίζει τον τίτλο που θα εμφανίζεται στην μπάρα τίτλου του

browser.)

Σο Document Type Declaration στον πιο πάνω κώδικα είναι για την HTML5. Αν

δεν συμπεριλαμβάνεται η δήλωση <!doctype html>, τότε μερικοί browser θα καταφύ-

γουν στην λειτουργία quirks για την εμφάνιση της σελίδας.

τοιχεία

Σα έγγραφα HTML αποτελούνται από στοιχεία HTML τα οποία στην πιο γενι-

κή μορφή τους έχουν τρία συστατικά: ένα ζεύγος από ετικέτες, την «ετικέτα εκκίνη-

σης» και την «ετικέτα τερματισμού», μερικές ιδιότητες μέσα στην ετικέτα εκκίνησης,

και τέλος το κείμενο ή το γραφικό περιεχόμενο μεταξύ των ετικετών, το οποίο μπορεί

να περιλαμβάνει και άλλα στοιχεία εμφωλευμένα μέσα του. Σο στοιχείο HTML μπο-

ρεί να είναι οτιδήποτε ανάμεσα στις ετικέτες εκκίνησης και τερματισμού. Σέλος, κάθε

ετικέτα περικλείεται σε σύμβολα «μεγαλύτερο από» και «μικρότερο από», δηλαδή <

και >.

Επομένως, η γενική μορφή ενός στοιχείου HTML είναι: <ετικέτα ιδιότη-

τα1="τιμή1" ιδιότητα2="τιμή2">περιεχόμενο</ετικέτα>. Μερικά στοιχεία HTML περι-

γράφονται ως άδεια στοιχεία, έχουν τη μορφή <ετικέτα ιδιότητα1="τιμή1" ιδιότη-

τα2="τιμή2">, και δεν έχουν καθόλου περιεχόμενο. Σο όνομα κάθε στοιχείου HTML

είναι το ίδιο όνομα που χρησιμοποιείται στις αντίστοιχες ετικέτες. Σο όνομα της ετικέ-

τας τερματισμού ξεκινά με μια κάθετο «/», η οποία παραλείπεται στα άδεια στοιχεία.

Σέλος, αν δεν αναφέρονται ρητά οι ιδιότητες ενός στοιχείου, τότε χρησιμοποιούνται οι

προεπιλογές σε κάθε περίπτωση.

Ιδιότητες

Οι περισσότερες ιδιότητες των στοιχείων είναι ζεύγη ονομάτων και τιμών, τα

οποία διαχωρίζονται με ένα «=» και γράφονται μέσα στην ετικέτα εκκίνησης ενός

στοιχείου, μετά το όνομα του στοιχείου. Η τιμή μπορεί να περικλείεται σε μονά ή δι-

πλά εισαγωγικά, παρότι τιμές που αποτελούνται από συγκεκριμένους χαρακτήρες

μπορούν να γράφονται χωρίς εισαγωγικά στην HTML, αλλά όχι στην XHTML.[45][46] Σο

να μένουν οι τιμές των ιδιοτήτων χωρίς εισαγωγικά θεωρείται ανασφαλές.[47] Εκτός

από τις ιδιότητες που γράφονται ως ζεύγη ονομάτων και τιμών, υπάρχουν και μερικές

οι οποίες επηρεάζουν το στοιχείο απλά με την παρουσία τους μέσα στην ετικέτα εκκί-

νησης,[5] όπως η ιδιότητα ismap του στοιχείου img.[48]

Τπάρχουν και μερικές κοινές ιδιότητες οι οποίες εμφανίζονται σε πολλά στοιχεία:

Η ιδιότητα id παρέχει ένα αναγνωριστικό για ένα στοιχείο το οποίο είναι μονα-

δικό σε ολόκληρο το έγγραφο. Φρησιμοποιείται για να ταυτοποιεί το στοιχείο ώστε τα

CSS να μπορούν να αλλάξουν τον τρόπο που αυτό εμφανίζεται, καθώς και τα σενάρια

μπορούν να αλλάξουν, να μετακινήσουν ή να διαγράψουν τα περιεχόμενα ή την εμ-

φάνισή του. Ακόμα, αν ένα id προστεθεί στο URL μιας σελίδας, παρέχει ένα μοναδικό

αναγνωριστικό για ένα τμήμα της σελίδας, για παράδειγμα:

http://el.wikipedia.org/wiki/HTML#Ιδιότητες

Η ιδιότητα class παρέχει τη δυνατότητα ταξινόμησης παρόμοιων αντικειμένων

στην ίδια κλάση. Μπορεί να χρησιμοποιηθεί για να να αποδώσει κάποια σημασία στο

Page 12: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

στοιχείο, ή για σκοπούς εμφάνισης. Για παράδειγμα, ένα έγγραφο HTML μπορεί να

χρησιμοποιεί την επισήμανση class="notation" σε μερικά στοιχεία για να ξεχωρίσει

από το υπόλοιπο κείμενο του εγγράφου. Κατά την εμφάνιση του εγγράφου, αυτά τα

στοιχεία μπορεί -για παράδειγμα- να εμφανίζονται όλα μαζί στο τέλος της σελίδας ως

υποσημειώσεις, άσχετα με την θέση που εμφανίζονται μέσα στον κώδικα. Επίσης οι

ιδιότητες class χρησιμοποιούνται σημασιολογικά στα microformat. Ένα στοιχείο μπο-

ρεί να έχει πολλαπλές κλάσεις, για παράδειγμα το class="notation important" βάζει το

στοιχείο τόσο στην κλάση «notation» όσο και στην «important».

Η ιδιότητα style εφαρμόζει στυλ εμφάνισης σε συγκεκριμένα στοιχεία. Θεωρεί-

ται καλύτερη τακτική να χρησιμοποιούνται οι ιδιότητες id ή class ώστε να επιλέγεται

το στοιχείο μέσα σε ένα CSS, αλλά μερικές φορές μπορεί να είναι πιο απλό να ανατε-

θούν style κατευθείαν στο στοιχείο.

Η ιδιότητα title προσθέτει μια εξήγηση στο στοιχείο στο οποίο εφαρμόζεται.

τους περισσότερους φυλλομετρητές αυτή η ιδιότητα εμφανίζεται ως αναδυόμενο

παράθυρο βοήθειας.

Η ιδιότητα lang ταυτοποιεί την φυσική γλώσσα των περιεχομένων του στοιχεί-

ου, η οποία μπορεί να είναι διαφορετική από το υπόλοιπο έγγραφο.

ημασιολογική

Η ημασιολογική HTML είναι ένας τρόπος γραφής της HTML με έμφαση στο

νόημα της σημασμένης πληροφορίας παρά στην εμφάνισή της. Η HTML συμπερι-

λαμβάνει σημασιολογικά στοιχεία από την σύλληψή της,[52] συμπεριλαμβάνει όμως

και στοιχεία αποκλειστικά εμφανισιακά, όπως τις ετικέτες <font>, <i> και <center>.

Τπάρχουν επίσης και τα σημασιολογικά ουδέτερα span και div. Από τα τέλη της δε-

καετίας του 1990, όταν τα CSS άρχισαν να δουλεύουν στους περισσότερους browser, οι

σχεδιαστές ιστοσελίδων ενθαρρύνονταν να αποφεύγουν τη χρήση των εμφανισιακών

ετικετών της HTML και να προτιμούν να διαχωρίζουν το περιεχόμενο από την πα-

ρουσίαση.[53]

ε μια συζήτηση για τον ημασιολογικό ιστό, ο Σιμ Μπέρνερς Λι και άλλοι έ-

δωσαν παραδείγματα τρόπων με τους οποίους έξυπνα λογισμικά πελάτη ιστού θα

μπορούν μια μέρα να περιηγούνται στον Ιστό και να βρίσκουν, να φιλτράρουν και να

συσχετίζουν τα προηγουμένως άσχετα και αδημοσίευτα δεδομένα, προς όφελος των

ανθρώπων χρηστών.[54] Δέκα χρόνια μετά, δεν είναι ακόμα κοινή η χρήση τέτοιων

προγραμμάτων, αλλά μερικές από τις ιδέες του Web 2.0, των mashups και των ιστοσε-

λίδων σύγκρισης τιμών προϊόντων μπορεί να πλησιάζουν στο σκεπτικό εκείνο. Η βα-

σική διαφορά μεταξύ αυτών των εφαρμογών και των έξυπνων λογισμικών του Μπέρ-

νερς Λι, είναι ότι η τρέχουσες μέθοδοι συγκέντρωσης πληροφοριών συνήθως σχεδιά-

ζεται από προγραμματιστές ιστού, οι οποίοι ήδη ξέρουν τις τοποθεσίες ιστού και τα

API των δεδομένων που θέλουν να συνενώσουν, να συγκρίνουν και να συνδυάσουν.

Ένας σημαντικός τύπος λογισμικοί που περιηγείται αυτόματα το διαδίκτυο και

διαβάζει ιστοσελίδες, χωρίς προηγούμενη γνώση του περιεχομένου τους, είναι και τα

προγράμματα των μηχανών αναζήτησης. Αυτά τα λογισμικά εξαρτούνται από την

σημασιολογική σαφήνεια των ιστοσελίδων που βρίσκουν, καθώς χρησιμοποιούν διά-

Page 13: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

φορες τεχνικές και αλγόριθμους για να διαβάζουν και να ταξινομούν εκατομμύρια

σελίδων καθημερινά, και να παρέχουν στους επισκέπτες τους τη δυνατότητα αναζή-

τησης, χωρίς την οποία ο Παγκόσμιος Ιστός θα είχε μόνο ένα μικρό κλάσμα της χρη-

σιμότητάς του.

Οι σημασιολογικές δομές που ήδη υπάρχουν στην HTML, είναι σημαντικό να

εφαρμόζονται καθολικά, για να βοηθούν το περιεχόμενο του δημοσιευμένου κειμένου

να γίνεται καλύτερα αντιληπτό. Με αυτό τον τρόπο, τα λογισμικά των μηχανών ανα-

ζήτησης, αλλά και άλλα λογισμικά που φτιάχνουν mashup ή άλλα υβρίδια από το πε-

ριεχόμενο των ιστότοπων θα μπορούν καλύτερα να εκτιμούν τη σημασία του κειμέ-

νου που βρίσκουν στα έγγραφα HTML.[55] Προς το σκοπό αυτό, οι ετικέτες της HTML

που εξυπηρετούσαν μόνο εμφανισιακό σκοπό θεωρούνται ξεπερασμένες στην

XHTML, και απαγορεύονται στην HTML5.

Σέλος, η σημασιολογικά γραμμένη HTML βελτιώνει την προσιτότητα των εγ-

γράφων στον ιστό. Για παράδειγμα, στους browser για χρήστες με προβλήματα όρα-

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

άλλο από τον οπτικό, όταν αυτό είναι σωστά σημασιολογικά σημασμένο.

Scratch

Σι είναι η Scratch

Σο Scratch είναι μια διερμηνευόμενη δυναμική οπτική γλώσσα προγραμματι-

σμού βασισμένη και υλοποιημένη σε Squeak. Όντας δυναμική, επιτρέπει σε αλλαγές

του κώδικα ακόμη και κατά τη διάρκεια της εκτέλεσης των προγραμμάτων. Έχει ως

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

επιτρέψει να δημιουργήσουν παιχνίδια, βίντεο και μουσική. Μπορεί να μεταφορτωθεί

δωρεάν και χρησιμοποιείται σε μια ευρεία ποικιλία δράσεων εντός και εκτός του σχο-

λείου ανά τον κόσμο.

Από που πήρε το όνομα της

Σο όνομα Scratch παραπέμπει στην τεχνική του scratching στα παλαιά πικάπ,

και αναφέρεται τόσο στη γλώσσα όσο και στην υλοποίηση της. Η ομοιότητα προς το

scratching στη μουσική είναι η εύκολη επαναχρησιμοποίηση κομματιών: στο Scratch

όλα τα αλληλεπιδραστικά αντικείμενα, γραφικά και ήχοι μπορούν εύκολα να εισα-

χθούν σε ένα νέο πρόγραμμα και να συνδυαστούν με νέους τρόπους. Έτσι οι αρχάριοι

μπορούν να λάβουν γρήγορα αποτελέσματα και αποκτούν κίνητρο να προσπαθήσουν

περαιτέρω. Ο ιστότοπος δείχνει ταχεία ανάπτυξη της κοινότητας του Scratch: από το

Μάρτιο 2007 ως τον Ιούνιο 2008, άνω των 119,000 λογαριασμών έχουν καταχωρηθεί, με

άνω των 148,000 έργων να έχουν φορτωθεί. Η ταχέως αυξανόμενη διεθνής κοινότητα

έχει μεταφράσει το Scratch σε διάφορες γλώσσες, με περισσότερες υπό εξέλιξη. Η δη-

μοτικότητα του Scratch στην εκπαίδευση οφείλεται στην ευκολία με την οποία μπο-

ρούν να δημιουργηθούν προγράμματα: οι εντολές και οι δομές δεδομένων είναι απλές

Page 14: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

και είναι τουλάχιστον μερικά γραμμένες στην καθομιλουμένη, και η δομή του προ-

γράμματος μπορεί να σχεδιαστεί όπως ένα πάζλ, με αποσπώμενα κομμάτια κώδικα

που μπορούν να μετακινηθούν και προσαρμοστούν μαζί.

Φρήση ως διδασκόμενη γλώσσα

Σο Scratch χρησιμοποιείται παγκοσμίως σε διάφορα σχολεία και εκπαιδευτικούς

οργανισμούς. Ο δικτυακός τόπος του Scratch έχει αναπτύξει μια κοινότητα από αρχό-

μενους προγραμματιστές, μαθητές, δασκάλους και ερασιτέχνες, που αλληλοπαρακι-

νούνται να αναπτύξουν την δημιουργικότητα τους και τις προγραμματιστικές δεξιό-

τητες τους. Ένα από τα φόρα στον ιστότοπο του Scratch είναι αφιερωμένο σε συζητή-

σεις μεταξύ εκπαιδευτικών. Σο σλόγκαν του Scratch είναι "Υαντάσου · Υτιάξε · Μοι-

ράσου". Η έμφαση στο μοίρασμα είναι σημαντικό μέρος της παιδαγωγικής για το

Scratch: τα προγράμματα δεν θεωρούνται μαύρα κουτιά, αλλά αντικείμενα που μπο-

ρούν να αναμιχθούν για τη δημιουργία νέων έργων. Ο μόνος τρόπος να γίνει ένα

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

Περιβάλλον αναπτύξεις, ιστότοπος και scratch Player

Σο περιβάλλον ανάπτυξης του Scratch μπορεί να μεταμορφωθεί δωρεάν και να

εγκατασταθεί σε οποιοδήποτε υπολογιστή μεWindowsή Mac OS X. Διάφορες εκδόσεις

του Linux μπορούν να τρέξουν το Scratch, συγκεκριμένα για τα Suse Linux (openSUSE

11 και άνω) και Ubuntu, οι εγκαταστάτες (RPM για το Suse και DEB για Ubuntu) είναι

διαθέσιμοι από τα επίσημα κοινοτικά αποθετήρια αυτών των εκδόσεων Linux. Ένας

πειραματικός εγκαταστάτης για το Ubuntu είναι διαθέσιμος από το MIT. Σο περιβάλ-

λον ανάπτυξης του Scratch έχει υλοποιηθεί σε γλώσσα προγραμματισμού Squeak, ένα

περιβάλλον ανάπτυξης για Smalltalk, που παρέχει ομοιόμορφη συμπεριφορά ανεξαρ-

τήτως πλατφόρμας. Σα προγράμματα Scratch μπορούν να φορτωθούν αυτόματα από

το περιβάλλον ανάπτυξης σε προσωπικές σελίδες στον ιστότοπο του Scratch, όπου

άλλα μέλη της κοινότητας του Scratch μπορούν να τα μεταφορτώσουν (συμπεριλαμ-

βανομένου του πλήρους πηγαίου κώδικα) για μάθηση ή ανάμιξη σε νέα έργα. Ο ιστό-

τοπος, που είναι υλοποιημένος πάνω στην πλατφόρμα ScratchR, παρέχει επίσης δυ-

νατότητα στα μέλη της κοινότητας να σχολιάσουν έργα, πέραν της παροχής γενικών

χώρων συζητήσεων και χώρων επίδειξης έργων. Προγράμματα που έχουν αναπτυ-

χθεί σε Scratch μπορούν να εκτελούνται είτε στο περιβάλλον ανάπτυξης ή μέσω μιας

μικροεφαρμογής Java γνωστής ως Scratch Player. Ο Scratch Player επιτρέπει σε προ-

γράμματα Scratch να εκτελεστούν από σχεδόν οποιαδήποτε εφαρμογή εμφάνισης ι-

στοσελίδων.

Αρχές εύρους και χρήσης της γλώσσας

Κατά το σχεδιασμό της γλώσσας, η κύρια προτεραιότητα ήταν να γίνει η γλώσ-

σα και το περιβάλλον αυτονόητο και να γίνεται εύκολη εκμάθηση τους από παιδιά

που δεν είχαν προηγούμενη προγραμματιστική εμπειρία. Τπάρχει μια ισχυρή αντίθε-

Page 15: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

ση μεταξύ των ισχυρών πολυμεσικών λειτουργιών και του πολυνηματικού προγραμ-

ματιστικού στυλ και του σχετικά περιορισμένου εύρους της γλώσσας προγραμματι-

σμού. Εμπειρικές μελέτες έχουν γίνει για διάφορες λειτουργίες — αυτές που παρε-

μπόδιζαν την φυσική εκμάθηση απορρίφθηκαν, ενώ αυτές που ενθάρρυναν τους αρ-

χάριους και έκαναν εύκολη τη διερεύνηση και την εκμάθηση, διατηρήθηκαν. Ορισμέ-

να από τα αποτελέσματα προκαλούν έκπληξη, κάνοντας το Scratch αρκετά διαφορε-

τικό από άλλες διδασκόμενες γλώσσες (όπως η BASIC, η Logo, ή η Alice). Για παρά-

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

για το Scratch, αλλά δεν έχει διαδικασίες ή Είσοδο/Έξοδο αρχείων (I/O) και υποστηρί-

ζει μόνο μονοδιάστατους πίνακες, γνωστούς ως Λίστες. Οι αριθμοί κινητής υποδια-

στολής και τα αλφαριθμητικά υποστηρίζονται από την έκδοση 1.3, αλλά με περιορι-

σμένη ικανότητα διαχείρισης αλφαριθμητικών. Ο κώδικας ομαδοποιείται σε διαφορε-

τικές φιγούρες, καθεμία από τις οποίες μπορεί να κινηθεί ανεξάρτητα και να έχει

πολλαπλές ενδυμασίες για δημιουργία κινούμενης εικόνας. Η γλώσσα μοιάζει περισ-

σότερο με γλώσσες κινούμενης εικόνας όπως η ActionScript παρά με τις παραδοσια-

κές γλώσσες προγραμματισμού. Η εστίαση ήταν πάντα στην παιγνιώδη μάθηση, ώ-

στε τα παιδιά του δημοτικού σχολείου να μπορούν να κάνουν απλά έργα και οι έφη-

βοι να μπορούν γρήγορα να έχουν εκπληκτικά αποτελέσματα. Τπάρχει επίσης ένας

αριθμός έμπειρων ενήλικων προγραμματιστών στην κοινότητα του Scratch, που γενι-

κά αναζητούν τρόπους να διδάξουν προγραμματισμό στα παιδιά τους. Οι ενήλικες

γενικά αντιδρούν ευνοϊκά στο γρήγορο και εύκολο προγραμματιστικό περιβάλλον,

παρά τους σχετικά ισχυρούς περιορισμούς της γλώσσας. Σο περιβάλλον χρήστη του

περιβάλλοντος ανάπτυξης του Scratch χωρίζει την οθόνη σε πολλαπλές περιοχές: στα

αριστερά είναι η παλέτα με τα τμήματα κώδικα, στο κέντρο είναι οι πληροφορίες για

την τρέχουσα φιγούρα και η περιοχή των σεναρίων (κώδικα), και στα δεξιά είναι η

σκηνή και η λίστα με τις φιγούρες. Η παλέτα των τμημάτων κώδικα έχει τμήματα κώ-

δικα (καλούνται "blocks") που μπορούν να συρθούν πάνω στην περιοχή των σεναρίων

για τη δημιουργία προγραμμάτων. Για να διατηρηθεί η παλέτα σε όχι πολύ μεγάλο

μέγεθος, οργανώνεται σε 8 ομάδες τμημάτων κώδικα: κίνηση, όψεις, ήχος, πένα, έ-

λεγχος, αισθητήρες, αριθμοί, και μεταβλητές.

Logo

Σι είναι η Logo

Η Logo είναι γλώσσα προγραμματισμού η οποία αναπτύχθηκε στις αρχές του

1970 από την ομάδα του Seymour Papert (με τη συμβολή της Cynthia Solomon και της

Wally Feuerzeig) ως μαθησιακό εργαλείο. Σο όνομά της προέρχεται από την ελληνική

λέξη ΛΟΓΟ. Η Logo αποτελεί διάλεκτο της Lisp, της γλώσσας της τεχνητής νοημο-

σύνης, και έχει αξιοποιηθεί στην εκπαίδευση περισσότερο από οποιαδήποτε άλλη

γλώσσα προγραμματισμού. Βάση της αποτελεί η φιλοσοφία του Κονστρουκτιβισμού

όπως αναπτύχθηκε από τον Piaget (1965). Επιπρόσθετα, η Logo συνδυάζει τις προσεγ-

γίσεις του Piaget και του Vygotsky.Παρόλο που συχνά αμφισβητείται η εκπαιδευτική

Page 16: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

της αποτελεσματικότητα, θεωρείται ιδανικό εργαλείο για να μαθαίνεις κάνοντας

(learning bydoing) και αναμφίβολα αποτελεί σημαντικό εργαλείο στα χέρια του εκ-

παιδευτικού για την ανάπτυξη δεξιοτήτων εξερεύνησης, δημιουργικότητας, επίλυσης

προβλημάτων, λογικής-αλγοριθμικής σκέψης. Όλες οι γλώσσες προγραμματισμού

αποτελούν εργαλεία για την ανάπτυξη μοντέλων. Η Logo είναι ιδιαίτερα κατάλληλη

για την ανάπτυξη μοντέλων από παιδιά. Απ’ όλες τις γλώσσες προγραμματισμού η

Logo σχεδιάστηκε για να δημιουργεί μοντέλα με πολύ εύκολο τρόπο. Με τηLogo ανα-

πτύσσουμε μοντέλα οραματιζόμενοι ένα «όλον», σπάζοντας το σε τμήματα εύκολα

διαχειρίσιμα τα οποία μπορούν να διδαχθούν στον υπολογιστή. Φρησιμοποιούμε τη

γλώσσα που γνωρίζει ο υπολογιστής για τον διδάξουμε νέες λέξεις. υχνά διδάσκου-

με τη χελώνα νέες λέξεις γράφοντας διαδικασίες, οι οποίες είναι μια σειρά εντολών

για να κάνει κάτι. Πειραματιζόμαστε με τις εντολές και αξιολογούμε το πρόγραμμά

μας για να δούμε αν τα έργα υλοποιήθηκαν όπως περιμέναμε. Ανταποκρινόμαστε

στις παρανοήσεις του υπολογιστή καθώς εκσφαλματώνουμε τις εντολές και τις διαδι-

κασίες και μερικές φορές αναδομούμε την προσέγγισή μας.

Από που κατάγεται

Η Logo κατάγεται από τη γλώσσα προγραμματισμού Lisp. Είναι επίσης γνωστή

για τα γραφικά που δημιουργεί με την χρήση του δρομέα που μοιάζει με χελώνα (χε-

λωνογραφικά / turtle graphics), αλλά και για το χειρισμό χελώνων ρομπότ που φέρουν

μαρκαδόρο, με δυο καταστάσεις αυτού: άνω (PenUp) και κάτω (PenDown). Σα χελω-

νογραφικά παρέχουν εντολές σχεδίασης σε σχετικές συντεταγμένες ως προς το δρο-

μέα, όπως ΕΜΠΡΟ <βήματα> (FORDWARD ή FD), ΠΙΩ <βήματα> (BACKWARD ή

BK), ΑΡΙΣΕΡΑ <μοίρες> (LEFT) και ΔΕΞΙΑ <μοίρες> (RIGHT). Τπάρχουν πολλές επε-

κτάσεις της Logo που μπορούν να χειρίζονται καταλόγους, αρχεία, λειτουργίες εισό-

δου-εξόδου, όπως και λειτουργίες που χρησιμοποιούν την τεχνική της αναδρομής. Δυ-

στυχώς δεν υπάρχει κάποιο κοινά αποδεκτό πρότυπο, ούτε προτυποποίηση της από

κάποιον διεθνή οργανισμό (όπως ο ISO ή η ECMA) όπως έχει γίνει με άλλες γλώσσες

προγραμματισμού.

Με τι θα ασχοληθεί το άτομο στο περιβάλλον της Logo

Σο άτομο στο περιβάλλον της Logo θα:

Πειραματιστεί με εντολές Logo για να τις καταλάβει και να νιώσει αυτοπεποί-

θηση με τη χρήση τους.

χεδιάζει τη δουλειά και την οργανώνει στις διάφορες συνιστώσες του.

Γράφει μια σειρά εντολών για να ολοκληρώσουν κάθε μικρό υποέργο.

Οικοδομεί ένα πρόγραμμα όπου ολοκληρώνει όλα τα υποέργα στη σωστή σει-

ρά.

Δοκιμάζει το πρόγραμμά και αξιολογεi τη δουλειά του.

Εκσπερματώνει το πρόγραμμά τους εντοπίζοντας και διορθώνοντας τα λάθη ή

αναδομούν την προσέγγισή τους.

Page 17: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

Σι πρέπει να γνωρίζω

Θα χρησιμοποιήσουμε τη γλώσσα προγραμματισμού Logo και θα προγραμμα-

τίσουμε χελώνες. Η χελώνα που "ζει" στην οθόνη του υπολογιστή ανταποκρίνεται σε

εντολές της Logo. Η Logo και ειδικότερα η γεωμετρία χελώνας είναι ένα ιδιαίτερα εν-

διαφέρον περιβάλλον για την εισαγωγή στον προγραμματισμό και την εκμάθηση βα-

σικών ιδεών στα μαθηματικά. Η χελώνα εμφανίζεται στην οθόνη ως εικονική αναπα-

ράσταση μιας χελώνας έτσι ώστε να φαίνονται καθαρά η θέση και η κατεύθυνσή της

(δηλαδή, προς τα πού είναι στραμμένη). Αυτά είναι τα βασικά στοιχεία της κατάστα-

σης μιας χελώνας. Οι πιο σημαντικές εντολές Logo που ελέγχουν τη χελώνα είναι αυ-

τές που αλλάζουν την κατάστασή της. Για παράδειγμα, οι εντολές μπροστά (ή, για

συντομία, μπ) και πίσω (ή πι) τη μετακινούν, ενώ οι εντολές αριστερά (ή αρ) και δεξιά

(ή δε) την περιστρέφουν. Η χελώνα επίσης μεταφέρει ένα στυλό. Αν τοποθετήσετε το

στυλό κάτω (τυλόΚάτω ή, για συντομία, τΚ), η χελώνα αφήνει ίχνη στο πέρασμά

της.

PYTHON

Η Python είναι μια υψηλού επιπέδου γλώσσα προγραμματισμού, η οποία δημι-

ουργήθηκε από τον Ολλανδό Γκβίντο βαν Ρόσσουμ (Guido van Rossum) το 1990. Ο κύ-

ριος στόχος της είναι η αναγνωσιμότητα του κώδικά της και η ευκολία χρήσης της και

το συντακτικό της επιτρέπει στους προγραμματιστές να εκφράσουν έννοιες σε λιγό-

τερες γραμμές κώδικα απ'

ότι θα ήταν δυνατόν σε

γλώσσες όπως η C++ ή η Java.

Διακρίνεται λόγω του ότι έ-

χει πολλές βιβλιοθήκες που

διευκολύνουν ιδιαίτερα αρ-

κετές συνηθισμένες εργασίες

και για την ταχύτητα εκμά-

θησης της.

Οι διερμηνευτές της

Python είναι διαθέσιμοι για

εγκατάσταση σε πολλά λει-

τουργικά συστήματα, επι-

τρέποντας στην Python την

εκτέλεση κώδικα σε ευρεία γκάμα συστημάτων. Φρησιμοποιώντας εργαλεία τρίτων,

όπως το Py2exe ή το Pyinstaller, ο κώδικας της Python μπορεί να πακεταριστεί σε αυ-

τόνομα εκτελέσιμα προγράμματα για μερικά από τα πιο δημοφιλή λειτουργικά συ-

στήματα, επιτρέποντας τη διανομή του βασισμένου σε Python λογισμικού για χρήση

Page 18: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

σε αυτά τα περιβάλλοντα χωρίς να απαιτείται εγκατάσταση του διερμηνευτή της

Python.

Η Python αναπτύσσεται ως ανοιχτό λογισμικό (open source) και η διαχείρισή

της γίνεται από τον μη κερδοσκοπικό οργανισμό Python Software Foundation. Ο κώδι-

κας διανέμεται με την άδεια Python Software Foundation License η οποία είναι συμβα-

τή με την GPL. Σο όνομα της γλώσσας προέρχεται από την ομάδα άγγλων κωμικών

Μόντυ Πάιθον.

Ιστορικό

Αρχικά, η Python ήταν γλώσσα σεναρίων που χρησιμοποιούνταν στο λειτουρ-

γικό σύστημα Amoeba, ικανή και για κλήσεις συστήματος.

Η Python 2.0 κυκλοφόρησε στις 16 Οκτωβρίου του 2000. τις 3 Δεκεμβρίου 2008

κυκλοφόρησε η έκδοση 3.0 (γνωστή και ως py3k ή python 3000). Πολλά από τα και-

νούργια χαρακτηριστικά αυτής της έκδοσης έχουν μεταφερθεί στις εκδόσεις 2.6 και 2.7

που είναι προς τα πίσω συμβατές.

Η python 3 είναι ιστορικά η πρώτη γλώσσα προγραμματισμού που σπάει την

προς τα πίσω συμβατότητα με προηγούμενες εκδόσεις ώστε να διορθωθούν κάποια

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

απλός τρόπος με τον οποίο μπορούν να γίνουν κάποια πράγματα.

Δομή και σύνταξη

Η γλώσσα χρησιμοποιεί μεταγλωττιστή (compiler) για την δημιουργία του ε-

κτελέσιμου κώδικα και σχετίζεται με τις γλώσσες προγραμματισμού Tcl, Perl, Scheme,

Java και Ruby, καθώς και με την ABC η οποία υπήρξε η αρχική πηγή έμπνευσης για τη

δημιουργία της.

Ένα από τα πιο απλά προγράμματα στην γλώσσα Python είναι η εμφάνιση ε-

νός γραπτού αποτελέσματος (π.χ. Γεια σου, κόσμε!):

>>> Εμφάνισε ‚Γεια σου, κόσμε

Γεια σου, κόσμε!

Ένα ιδιαίτερο χαρακτηριστικό της γλώσσας είναι η χρήση κενών διαστημάτων

(whitespace) για τον διαχωρισμό των συντακτικών δομών που προγράμματος, σε α-

ντίθεση με την πρακτική σε άλλες γλώσσες όπου για τον ίδιο σκοπό χρησιμοποιού-

νται ειδικά σύμβολα (πχ αγκύλες). Αυτό, σε συνδυασμό με το ότι χρησιμοποιεί πλή-

ρεις αγγλικές λέξεις στη θέση συμβόλων, καθιστούν τον κώδικα της Python ευανά-

γνωστο από όσους έχουν βασική γνώση των αγγλικών.

Ηλικία = 21

Αν Ηλικία >= 18:

Εμφάνισε ‚ You vote ‚

Αλλιώς

Εμφάνισε ‚ You don’t vote‛

Page 19: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

PASCAL

Η γλώσσα Pascal δημιουργήθηκε στο Πανεπιστήμιο της Γενεύης από τον Νι-

κλάους Βιρτ (Nicklaus Wirth). Πήρε το όνομά της προς τιμή του μαθηματικού και φι-

λοσόφου Μπλεζ Πασκάλ (Blaise Pascal). Είναι μία δομημένη γλώσσα με ιδιαίτερο χα-

ρακτηριστικό τη δυνατότητα ορισμού από τον προγραμματιστή δικών του δομών δε-

δομένων. Η Pascal έχει όλα τα στοιχεία για την ανάπτυξη δομημένου προγραμματι-

σμού. Φρησιμοποιήθηκε εκτεταμένα στα πανεπιστήμια ως εργαλείο για τα μαθήματα

προγραμματισμού, και για τα μαθήματα δομών δεδομένων.

Η Pascal μπορεί να θεωρηθεί ως γλώσσα γενικής χρήσης (όχι μόνο επιστημονι-

κών εφαρμογών, όχι μόνο εμπορικών εφαρμογών). Αρχικά δεν διέθετε εξελιγμένο

σύστημα χειρισμού αρχείων, (και γι΄ αυτό δεν εκτόπισε την COBOL στις εμπορικές

εφαρμογές), αλλά, όπως οι περισσότερες γλώσσες, πέρασε από πολλές εκδόσεις που

κάθε μια βελτίωνε την προηγούμενη. Διάφορες εκδόσεις της Pascal είναι σήμερα σε

χρήση.

Διάφορα λει-

τουργικά συστήματα,

(όπως το Macintosh της

Apple), είχαν μέρη τους

γραμμένα σε Pascal. Σο

τυπογραφικό λογισμικό

ΣΕΦ, που δημιούργησε ο

Ντόναλντ Κναθ (Donald

E. Knuth), γράφτηκε σε

μια διάλεκτο Pascal, την

WEB. Η εταιρεία Borland έχει εκδώσει μία σειρά από ταχύτατους μεταφραστές Pascal

με το όνομα Σurbo Pascal. Η τελευταία έκδοση της Pascal για τα Windows θεωρείται

μία από τις καλύτερες εκδόσεις της στον χώρο των μικροϋπολογιστών.

C ++

Ο Μπιάρνε τρούστρουπ, δημιουργός της γλώσσας C++.

Page 20: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

Η C++ (C Plus Plus, ελληνική προφ. ι Πλας Πλας, φωνητική *siː plʌs plʌs+) είναι

μια γενικού σκοπού γλώσσα προγραμματισμού Η/Τ. Θεωρείται μέσου επιπέδου

γλώσσα, καθώς περιλαμβάνει έναν συνδυασμό χαρακτηριστικών από γλώσσες υψη-

λού και χαμηλού επιπέδου. Είναι μια μεταγλωττιζόμενη γλώσσα πολλαπλών παρα-

δειγμάτων, με τύπους. Τποστηρίζει δομημένο, αντικειμενοστρεφή και γενικό προ-

γραμματισμό.

Η γλώσσα αναπτύχθηκε από τον Μπιάρνε τρούστρουπ το 1979 στα εργαστή-

ρια Bell της AT&T, ως βελτίωση της ήδη υπάρχουσας γλώσσας προγραμματισμού C,

και αρχικά ονομάστηκε "C with Classes", δηλαδή C με Κλάσεις. Μετονομάστηκε σε

C++ το 1983. Οι βελτιώσεις ξεκίνησαν με την προσθήκη κλάσεων, και ακολούθησαν,

μεταξύ άλλων, εικονικές συναρτήσεις, υπερφόρτωση τελεστών, πολλαπλή κληρονο-

μικότητα, πρότυπα κ.α.

Η γλώσσα ορίστηκε παγκοσμίως, το 1998, με το πρότυπο ISO/IEC 14882:1998. Η

τρέχουσα έκδοση αυτού του προτύπου είναι αυτή του 2003, η ISO/IEC 14882:2003. Μια

καινούρια έκδοση είναι υπό ανάπτυξη, γνωστή ανεπίσημα με την ονομασία C++0x.

Υιλοσοφία

το βιβλίο The Design and Evolution of C++ (1994), ο Μπιάρνε τρούστρουπ πε-

ριγράφει τα κριτήρια που χρησιμοποιεί για το σχεδιασμό της C++, εξηγώντας πως η

C++ είναι σχεδιασμένη:

ως μια γενικής χρήσης γλώσσα με στατικούς τύπους, που είναι όσο αποτελε-

σματική και φορητή, όσο η C

ωστε να υποστηρίζει άμεσα και σφαιρικά πολλά είδη προγραμματισμού

(δομημένος προγραμματισμός, αντικειμενοστρεφής προγραμματισμός, γενικός προ-

γραμματισμός)

ωστε να δίνει επιλογές στον προγραμματιστή, ακόμα κι αν του επιτρέπει να ε-

πιλέξει λανθασμένα

με σκοπό να είναι όσο το δυνατόν συμβατή με τη C, διευκολύνοντας έτσι τη με-

τάβαση από τη C στη C++

ώστε να μην δημιουργείται επιπλέον επεξεργαστικό κόστος για χαρακτηριστι-

κά της γλώσσας που δεν χρησιμοποιούνται

ώστε να λειτουργεί χωρίς κάποιο εξελιγμένο προγραμματιστικό περιβάλλον

Σο βιβλίο Inside the C++ Object Model (Lippman, 1996) περιγράφει πως οι μετα-

γλωττιστές μπορούν να μετατρέψουν εντολές ενός προγράμματος C++ σε μια διάταξη

στη μνήμη. Παρ' όλα αυτά, οι συγγραφείς μεταγλωττιστών είναι γενικά ελεύθεροι να

υλοποιήσουν το πρότυπο με δικό τους τρόπο.

Φαρακτηριστικά

Η C++ κληρονόμησε το μεγαλύτερο μέρος της σύνταξης της C και τον προεπε-

ξεργαστή της C. Σο παρακάτω είναι ένα πρόγραμμα hello world που χρησιμοποιεί την

λειτουργία stream της πρότυπης βιβλιοθήκης της C++ για να γράψει ένα μήνυμα στην

κύρια έξοδο. Σο παρακάτω πρόγραμμα χρησιμοποιεί την βιβλιοθήκη εισόδου/εξόδου.

Page 21: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

Σελεστές και υπερφόρτωση τελεστών

Η C++ παρέχει περισσότερους από 30 τελεστές, που καλύπτουν τη βασική α-

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

όλοι οι τελεστές μπορούν να υπερφορτωθούν για τύπους ορισμένους από το χρήστη,

με λίγες εξαιρέσεις όπως πρόσβαση μέλους (. και .*). Σο πλούσιο σύνολο από τελεστές

που μπορούν να υπερφορτωθούν είναι βασικό για τη χρήση της C++ ως γλώσσα ειδι-

κού πεδίου (domain specific language). Οι υπερφορτώσιμοι τελεστές είναι ακόμα βασι-

κό μέρος πολλών προχωρημένων τεχνικών προγραμματισμού της C++, όπως οι έξυ-

πνοι δείκτες. Η υπερφόρτωση ενός τελεστή δεν αλλάζει την προτεραιότητα των υπο-

λογισμών όπου χρησιμοποιείται, ούτε τον αριθμό των τελεστέων που χρησιμοποιεί ο

τελεστής (αν και οποιοσδήποτε τελεστέος μπορεί απλά να αγνοείται).

C# Η C# είναι κατά κύριο λόγο μια αντικειμενοστρεφής γλώσσα προγραμματι-

σμού που ενσωματώνει ωστόσο μερικά χαρακτηριστικά διαφόρων προγραμματιστι-

κών προτύπων. Αναπτύχθηκε στη Microsoft, από μια ομάδα κάτω από την ηγεσία του

Anders Hejlberg, σαν μέρος του .ΝΕΣ Framework.

ΛΙΓΑ ΛΟΓΙΑ ΓΙΑ ΣΗΝ .ΝΕΣ Framework

Σο .ΝΕΣ Framework είναι ένα πλαίσιο λογισμικού που προορίζεται για την

πλατφόρμα των Windows. Αποτελείται από μια μεγάλη βιβλιοθήκη κλάσεων και υ-

ποστηρίζει μια πλειάδα γλωσσών προγραμματισμού με τη δυνατότητα η μια να μπο-

ρείνα χρησιμοποιηθεί από την άλλη. Σα προγράμματα που γράφονται για το .ΝΕΣ

Framework εκτελούνται σε ένα περιβάλλον εκτέλεσης γνωστό ως Common Language

Runtime (CLR), ενός ειδικού λογισμικού, σχεδιασμένου να υποστηρίζει την εκτέλεση

προγραμμάτων και την απρόσκοπτη συνεργασία με το λειτουργικό σύστημα. Σο CLR

περιέχει μια εικονική μηχανή που διαχειρίζεται την εκτέλεση ενός προγράμματος και

παρέχει μια σειρά σημαντικών υπηρεσιών όπως ασφάλεια, διαχείριση μνήμης και δι-

αχείριση εξαιρέσεων.Σα προγράμματα που γράφονται για το .ΝΕΣ χρησιμοποιούν τη

βιβλιοθήκη κλάσεων του .ΝΕΣ, η οποία δίνει πρόσβαση στο περιβάλλον εκτέλεσής

του.

Η γλώσσα C# είναι μια από τις γλώσσες που υποστηρίζει το .NET.Ο μεταγλωτ-

τιστής της C# στοχεύει ειδικά στο .NET κάτι που σημαίνει ότι τα προγράμματα γραμ-

μένα σε C# θα τρέχουν πάντα στο .ΝΕΣ Framework. Αυτό έχει δυο σημαντικές συνέ-

πειες για τη γλώσσα:

Η αρχιτεκτονική της και οι μεθοδολογίες της αντικατοπτρίζουν τη δομή

του.NET.

ε πολλές περιπτώσεις, ειδικά χαρακτηριστικά της γλώσσας εξαρτώνται στην

πραγματικότητα από τα χαρακτηριστικά του .NET ή τις βασικές κλάσεις του .NET.

Αντικειμενοστρέφεια

Η C# από τα θεμέλια της σχεδιάστηκε να είναι αντικειμενοστρεφής. Ο αντικει-

μενοστρεφής προγραμματισμός επικράτησε σαν προγραμματιστικό πρότυπο την

Page 22: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

προηγούμενη δεκαετία και παραμένει στις πρώτες προτιμήσεις των προγραμματι-

στών. Οι ανάγκες για κατανεμημένα συστήματα πελάτη-εξυπηρέτη συμπίπτουν με

την ενθυλάκωση και την ανταλλαγή μηνυμάτων που είναι βασικά χαρακτηριστικά

του αντικειμενοστρεφούς προγραμματισμού. Κατά πολλούς ειδικούς στις γλώσσες

προγραμματισμού, η επιτυχής λειτουργία των προγραμματιστικών συστημάτων σε

δικτυακά περιβάλλοντα αυξανόμενης πολυπλοκότητας βασίζεται στην αντικειμενο-

στρέφεια. Η C# παρέχει μια ξεκάθαρη και αποδοτική αντικειμενοστρεφή πλατφόρμα

παρέχοντας στους προγραμματιστές μια συλλογή βιβλιοθηκών δοκιμασμένων αντι-

κειμένων που παρέχουν λειτουργικότητα που ποικίλει από απλούς τύπους δεδομέ-

νων, σε διεπαφές εισόδου/εξόδου ή δικτυακές και εργαλεία για τη δημιουργία παρα-

θυρικών εφαρμογών. Αυτές οι βιβλιοθήκες μπορούν να προσαρμοστούν στις ανάγκες

του προγραμματιστή.Επιπρόσθετα η C# υποστηρίζει και τον προγραμματισμό βασι-

σμένο σε components (component-based programming) ο οποίος επιτρέπει τον προσδι-

ορισμό αυτόνομων μονάδων λειτουργικότητας (components) που είναι απομονωμένα

και τεκμηριωμένα, παρουσιάζοντας ένα μοντέλο με ιδιότητες, μεθόδους, events και

μεταδεδομένα για το component. Η C# υποστηρίζει αυτά τα χαρακτηριστικά άμεσα

κάνοντας έτσι τη διαδικασία δημιουργίας και χρήσης των components πολύ εύκολη.

Φαρακτηριστικά της γλώσσας C#

Η C# είναι μια συνεχώς εξελισσόμενη γλώσσα και με κάθε νέα της έκδοση

προστίθενται νέα χαρακτηριστικά και συντακτικό, με μόνιμο στόχο να κάνει τα απλά

πράγματα εύκολα, τα δύσκολα πράγματα εφικτά και τα άσχημα πράγματα δύσκολα.

Ακολουθεί μια σύντομη επεξήγηση των χαρακτηριστικών της C#.

Απλότητα

Η C# είναι μια απλή γλώσσα που μπορεί να χρησιμοποιηθεί χωρίς εντατική εκ-

μάθηση, ενώ ταυτόχρονα είναι εναρμονισμένη με σύγχρονες προγραμματιστικές

πρακτικές. Οι θεμελιώδεις αρχές της γλώσσας μπορούν να κατανοηθούν γρήγορα

κάτι που σημαίνει ότι οι προγραμματιστές θα είναι παραγωγικοί σε σύντομο χρονικό

διάστημα. Η C# έχει σχεδιαστεί έτσι ώστε να μειώνεται η πιθανότητα πρόκλησης λα-

θών από την πολυπλοκότητα του κώδικα, αφού τη μειώνει σε μεγάλο βαθμό με το

απλουστευμένο συντακτικό της και την οργάνωση κώδικά της.

Οικειότητα

το ξεκίνημα της υλοποίησής της, οι δημιουργοί της τεχνολογίας C# απέρριψαν

την ολοκληρωτική χρήση της C++ σαν γλώσσα υλοποίησης. τη νέα γλώσσα ωστόσο,

κράτησαν αρκετά χαρακτηριστικά της C++ αλλά και της Java και αφαίρεσαν την ά-

χρηστη πολυπλοκότητα και των δύο. Έτσι έχοντας κρατήσει αρκετά από τα αντικει-

μενοστρεφή χαρακτηριστικά και τη γενική φιλοσοφία της C++ αλλά και τη γενική ευ-

κολία της Java βελτιώνοντας ορισμένα σημεία της, είναι σχετικά εύκολη τη «μετακό-

μιση» στη C# δεδομένου ότι η C η C++ αλλά και η Java διδάσκονται σε μαθήματα εισα-

γωγής στον προγραμματισμό στις περισσότερες σχολές Πληροφορικής.

.

Page 23: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

Ιστορικό εκδόσεων της C#

Από την πρώτη της έκδοση το 2000, η γλώσσα C# έχει εξελιχθεί αρκετά. Αυτή η

εξέλιξη οφείλεται εν μέρει στην προτίμηση που της δείχνουν η προγραμματιστές με-

ταξύ των γλωσσών στο .ΝΕΣ. Σα περισσότερα χαρακτηριστικά που προστίθενται α-

ντικατοπτρίζονται στο .NET Framework αφού, όπως προαναφέρθηκε, η γλώσσα C#

είναι αναπόσπαστο κομμάτι του.

C

Η C (προφέρεται "σι") είναι μια διαδικαστική γλώσσα προγραμματισμού γενι-

κής χρήσης, η οποία αναπτύχθηκε αρχικά, μεταξύ του 1969 και του 1973, από τον Ντέ-

νις Ρίτσι στα εργαστήρια AT&T Bell Labs για να χρησιμοποιηθεί για την ανάπτυξη του

λειτουργικού συστήματος UNIX. Όπως οι περισσότερες διαδικαστικές γλώσσες προ-

γραμματισμού που ακολουθούν την παράδοση της ALGOL, η C έχει δυνατότητες δο-

μημένου προγραμματισμού και επιτρέπει τη χρήση αναδρομής (αλλά όχι και εμφω-

λευμένων συναρτήσεων), ενώ, ο στατικός ορισμός του τύπου των μεταβλητών που ε-

πιβάλλει, προλαμβάνει πολλά σφάλματα κατά την χρήση τους. Ο σχεδιασμός της πε-

ριλαμβάνει δομές που μεταφράζονται αποδοτικά σε τυπικές εντολές μηχανής και εξ

αιτίας αυτού χρησιμοποιείται συχνά σε εφαρμογές που παλιότερα γράφονταν σε

συμβολική γλώσσα. Αυτό ακριβώς το χαρακτηριστικό της, που έχει σαν συνέπεια και

την αυξημένη ταχύτητα εκτέλεσης των εφαρμογών που γράφονται σε αυτή, καθώς

και το γεγονός ότι είναι διαθέσιμη στα περισσότερα σημερινά λειτουργικά συστήμα-

τα, συνέβαλε κατά πολύ στην καθιέρωση της και την χρήση της για ανάπτυξη λει-

τουργικών συστημάτων και λοιπών προγραμμάτων συστήματος , αλλά και απλών

εφαρμογών.

Η C συγκαταλέγεται πλέον στις πιο ευρέως χρησιμοποιούμενες γλώσσες προ-

γραμματισμού όλων των εποχών και πολλές νεώτερες γλώσσες έχουν επηρεαστεί

άμεσα ή έμμεσα από αυτήν, συμπεριλαμβανομένων των C++, C#, D, Go, Java,

JavaScript, Limbo, LPC, Perl, PHP, Python, καθώς και του κελύφους C (C shell) του Unix.

Κάποιες από αυτές τις γλώσσες έχουν επηρεαστεί κυρίως στη σύνταξη τους, με το σύ-

στημα τύπων, τα μοντέλα δεδομένων και το νόημα των εκφράσεων τους να διαφέ-

ρουν σημαντικά από την C. Η C++, ειδικά, ξεκίνησε σαν προεπεξεργαστής της C, αλλά

έχει εξελιχθεί πλέον σε μια αντικειμενοστραφή γλώσσα, που αποτελεί υπερσύνολο

της C.

Υιλοσοφία

Η C είναι μια σχετικά μινιμαλιστική γλώσσα προγραμματισμού. Ανάμεσα

στους σχεδιαστικούς στόχους που έπρεπε να καλύψει η γλώσσα περιλαμβανόταν το

ότι θα μπορούσε να μεταγλωττιστεί άμεσα με τη χρήση μεταγλωττιστή ενός περά-

σματος με άλλα λόγια, ότι θα απαιτούνταν μόνο ένας μικρός αριθμός από εντολές σε

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

χρόνο εκτέλεσης. Ως αποτέλεσμα, είναι δυνατό να γραφτεί κώδικας σε C σε χαμηλό

επίπεδο προγραμματισμού με ακρίβεια ανάλογη της συμβολικής γλώσσας, στην

Page 24: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

πραγματικότητα η C ορισμένες φορές αποκαλείται (και χωρίς να υπάρχει πάντα α-

ντιπαράθεση) «συμβολική γλώσσα υψηλού επιπέδου» ή «φορητή συμβολική γλώσ-

σα». Επίσης, γίνονται αναφορές στη C ως γλώσσα προγραμματισμού μεσαίου επιπέ-

δου.

Φαρακτηριστικά

τη C δεν επιβάλλεται κάποια συγκεκριμένη μορφή στον πηγαίο κώδικα (ό-

πως, για παράδειγμα, συνέβαινε στις αρχικές εκδόσεις της Fortran). Ο προγραμματι-

στής, χωρίς να αγνοεί φυσικά το συντακτικό της γλώσσας, είναι ελεύθερος να δώσει

όποια μορφή θέλει στον κώδικα που γράφει (free-format source). Σο ελληνικό ερωτη-

ματικό (;) χρησιμοποιείται ως τερματιστής εντολών (και όχι ως διαχωριστής, όπως

στην Pascal, παραδείγματος χάριν) και τα άγκιστρα (,}) χρησιμοποιούνται για την ο-

μαδοποίηση εντολών (όπως τα begin/end στην Pascal).

Ακόμα, στη C όλος ο εκτελέσιμος κώδικας περιέχεται σε υπορουτίνες οι οποίες

ονομάζονται «συναρτήσεις» (όχι με την αυστηρή έννοια του συναρτησιακού προ-

γραμματισμού). Οι παράμετροι περνιούνται στις συναρτήσεις πάντα με τιμή (pass-by-

value). Σο πέρασμα με αναφορά (pass-by-reference) γίνεται έμμεσα στην ουσία, περ-

νώντας, ως παραμέτρους των συναρτήσεων, δείκτες στις μεταβλητές των οποίων θέ-

λουμε να αλλάζουμε τις τιμές μέσα από τις συναρτήσεις.

Η C έχει ακόμα τα εξής χαρακτηριστικά:

Έχει ένα πολύ μικρό σταθερό πλήθος λέξεων κλειδιών , το οποίο περιλαμβάνει

ένα πλήρες σύνολο δομών/εντολών ελέγχου ροής: for, if/else, while, switch, και

do/while, goto.

Τπάρχει μόνο ένας χώρος ονομάτων (namespace) και τα ονόματα (μεταβλητών,

συναρτήσεων, κ.τ.λ.) που ορίζονται από το χρήστη δεν διακρίνονται με κάποιο τρόπο

από τις λέξεις-κλειδιά της γλώσσας.

Τπάρχει ένα μεγάλο πλήθος αριθμητικών και λογικών τελεστών, όπως οι: +, +=,

++, -, -=, --, *, *=, /, /=, ==, &, &&, |, ||, ~, κ.ά.

ε μία εντολή μπορεί να γίνουν παραπάνω από μια εκχωρήσεις τιμών.

Ο ορισμός των τύπων των μεταβλητών είναι στατικός και απαραίτητος, αλλά

γίνονται έμμεσες μετατροπές από τη γλώσσα. Για παράδειγμα, παραστάσεις με τύπο

χαρακτήρα μπορούν να χρησιμοποιηθούν σε σημεία που απαιτείται ακέραιος.

Είναι δυνατή η άμεση προσπέλαση χαμηλού επιπέδου στη μνήμη του υπολογι-

στή με τη χρήση δεικτών.

Οι δείκτες σε συναρτήσεις και δεδομένα επιτρέπουν την υλοποίηση πολυμορ-

φισμού στην πράξη.

Ο προεπεξεργαστής της γλώσσας επιτρέπει τον ορισμό μακροεντολών, την

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

Οι πολύπλοκες λειτουργίες, όπως οι λειτουργίες εισόδου/εξόδου, ο χειρισμός

των αλφαριθμητικών, καθώς και οι μαθηματικές συναρτήσεις, έχουν ανατεθεί, με

συνεπή τρόπο, στις αντίστοιχες βιβλιοθήκες.

Η C δεν διαθέτει κάποιες από τις δυνατότητες νεώτερων γλωσσών, όπως τον προσα-

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

Page 25: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

LISP – PROLOG

ΕΙΑΓΩΓΗ LISP

Lisp ονομάζεται μια οικογένεια γλωσσών προγραμματισμού υπολογιστών με

μεγάλη ιστορία και χαρακτηριστική σύνταξη με πλήρεις παρενθέσεις. Αρχικά προσ-

διορίστηκε το 1958, και είναι η δεύτερη σε ηλικία γλώσσα προγραμματισμού υψηλού

επιπέδου, νεότερη μόνο από τη Fortran. Όπως και η Fortran, η Lisp έχει αλλάξει πολύ

σε σχέση με την πρώτη της εμφάνιση, με αρκετές διαλέκτους της να υπάρχουν ανά

την ιστορία της. ήμερα, οι διάλεκτοι της Lisp με την περισσότερη χρήση και διάδοση

είναι η Common Lisp και η Scheme.

Η Lisp δημιουργήθηκε αρχικά ως μια πρακτική μαθηματική σημειολογία για

προγράμματα υπολογιστών, βασισμένη στο λογισμό λάμδα του Alonzo Church. Γρή-

γορα εξελίχθηκε στην γλώσσα προτίμησης για έρευνα σε τεχνητή νοημοσύνη. Ως μια

από τις πρώτες γλώσσες προγραμματισμού, η Lisp πρωτοπόρησε στην εισαγωγή

πολλών ιδεών στην επιστήμη υπολογιστών, όπως οι δομές δένδρων, η αυτόματη δια-

χείριση αποθήκευσης δεδομένων, οι δυναμικοί τύποι, ο αντικειμενοστρεφής προ-

γραμματισμός, και ο μεταγλωττιστής που μεταγλωττίζει τον εαυτό του.

Σο όνομα Lisp προέρχεται από τη φράση "List Processing". Οι συνδεδεμένες λί-

στες είναι μία από τις σημαντικότερες δομές δεδομένων στη Lisp, και ο πηγαίος κώδι-

κας των προγραμμάτων Lisp αποτελείται ο ίδιος από λίστες. Ως αποτέλεσμα, τα προ-

γράμματα σε Lisp μπορούν να διαχειρίζονται και να επεξεργάζονται πηγαίο κώδικα

Lisp ως άλλη μια δομή δεδομένων. Αυτό ανέδειξε τα συστήματα μακροεντολών που

επιτρέπουν στους προγραμματιστές να δημιουργήσουν νέα σύνταξη ή ακόμα και νέες

"μικρές γλώσσες" που περιέχονται στη Lisp.

Σο γεγονός ότι ο κώδικας είναι απαράλλακτος από τα δεδομένα, δίνει στη Lisp

μια χαρακτηριστική σύνταξη που αναγνωρίζεται εύκολα. Όλος ο κώδικας του προ-

γράμματος γράφεται ως λίστες μέσα σε παρενθέσεις. Η κλήση μιας συνάρτησης γρά-

φεται ως μια λίστα όπου το όνομα της συνάρτησης είναι πρώτο, και ακολουθούν τα

ορίσματα. Για παράδειγμα, μια συνάρτηση f που παίρνει τρία ορίσματα μπορεί να

καλεστεί με (f x y z) .

Η ΔΗΜΙΟΤΡΓΙΑ ΣΗ LISP

Η Lisp εφευρέθηκε από τον Σζον Μακάρθι το 1958 ενώ ήταν στο MIT ( Σεχνο-

λογικό Ινστιτούτο Μουσσαχουσέτης ). Ο Μακάρθι δημοσίευσε τη σχεδίαση της Lisp σε

ένα άρθρο στο Communications of the ACM το 1960, με τίτλο Αναδρομικές υναρτή-

σεις υμβολικών Εκφράσεων και ο Τπολογισμός τους με Μηχανή, Μέρος I,

("Recursive Functions of Symbolic Expressions and Their Computation By Machine, Part

Page 26: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

I"). Σο δεύτερο μέρος δεν δημοσιεύθηκε ποτέ. Έδειξε ότι με μερικούς απλούς τελεστές

και ένα συμβολισμό για συναρτήσεις, μπορεί να δημιουργηθεί μια Turing-

πλήρης γλώσσα για αλγορίθμους.

Η Lisp υλοποιήθηκε για πρώτη φορά από τον Steve Russell σε ένα IBM

704 υπολογιστή. Ο Russell είχε διαβάσει το άρθρο του McCarthy και συνειδητοποίησε

(προς έκπληξη του McCarthy) ότι η eval συνάρτηση μπορούσε να υλοποιηθεί ως έ-

νας ερμηνευτής για τη Lisp.

Ο πρώτος πλήρης μεταγλωττιστής για Lisp, γραμμένος σε Lisp, υλοποιήθηκε

το 1962 από τον Tim Hart και τον Mike Levin στο ΜΙΣ. Ο μεταγλωττιστής αυτός εισή-

γαγε το μοντέλο σταδιακής μεταγλώττισης της Lisp, στο οποίο μεταγλωττισμένες και

ερμηνευόμενες συναρτήσεις μπορούν να αναμειχθούν ελεύθερα. Η γλώσσα που χρη-

σιμοποιούν οι Hart και Levin είναι πολύ πιο κοντά στο σημερινό στυλ Lisp σε σχέση με

τον προηγούμενο κώδικα του McCarthy.

Η LISP ΗΜΕΡΑ

Έχοντας παρακμάσει στη δεκαετία 1990, η Lisp συναντά αναζωογόνηση του

ενδιαφέροντος από το 2000. Σο μεγαλύτερο κομμάτι της νέας δραστηριότητας συγκε-

ντρώνεται γύρω από υλοποιήσεις της Common Lisp από το Ανοικτό λογισμικό, και

συμπεριλαμβάνει την ανάπτυξη νέων φορητών βιβλιοθηκών και εφαρμογών.

Πολλοί νέοι προγραμματιστές Lisp έχουν πεισθεί από συγγραφείς όπως ο Paul

Graham και ο Eric S. Raymond να ασχοληθούν με μια γλώσσα που άλλοι θεωρούν α-

παρχαιωμένη. Οι νέοι αυτοί προγραμματιστές Lisp συχνά περιγράφουν τη γλώσσα ως

διαφωτιστική εμπειρία και ισχυρίζονται ότι είναι αρκετά πιο παραγωγικοί από ότι σε

άλλες γλώσσες.[5] Ο Graham αναπτύσσει μια νέα διάλεκτο Lisp που λέγεται Arc.

Σο Practical Common Lisp του Peter Seibel, ένα εκπαιδευτικό βιβλίο που δημο-

σιεύτηκε το 2004, ήταν για λίγο το δεύτερο δημοφιλέστερο βιβλίο προγραμματισμού

στο amazon.com.

Κύριες σύγχρονοι διάλεκτοι

Οι δύο κύριες διάλεκτοι της Lisp που χρησιμοποιούνται σήμερα για γενικής

χρήσης προγραμματισμό είναι η Common Lisp και η Scheme. Αυτές οι γλώσσες αντι-

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

Η Common Lisp, προερχόμενη κυρίως από τις MacLisp, Interlisp και Lisp

Machine Lisp, είναι ένα εκτεταμένο υπερσύνολο παλιότερων διαλέκτων Lisp, με ένα

ογκώδες πρότυπο γλώσσας που περιλαμβάνει πολλούς ενσωματωμένους τύπους δε-

δομένων και συντακτικές μορφές, καθώς και ένα σύστημα αντικειμένων. Η Scheme

έχει ένα μινιμαλιστικότερο σχεδιασμό, με πολύ μικρότερο σύνολο λειτουργιών αλλά

με κάποια επιπλέον στοιχεία υλοποίησης, όπως η βελτίωση της αναδρομής ουράς και

η πλήρης υποστήριξης συνεχειών (continuations), που δεν υπάρχουν στην Common

Lisp. Επίσης, η Common Lisp έχει δανειστεί κάποια στοιχεία από τη Scheme, όπως

lexical scoping και lexical closures.

Page 27: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

Επιπλέον, οι διάλεκτοι Lisp χρησιμοποιούνται ως scripting γλώσσες σε αρκετές

εφαρμογές, η πιο γνωστή εκ των οποίων είναι η Emacs Lisp στο διορθωτή κειμέ-

νου Emacs και η Autolisp στο AutoCAD.

ΕΙΑΓΩΓΗ - ΔΗΜΙΟΤΡΓΙΑ ΣΗ PROLOG

Η Prolog είναι μια γλώσσα λογικού προγραμματισμού γενικής χρήσης που κυ-

ρίως χρησιμοποιείται στον τομέα της τεχνητής νοημοσύνης. Δημιουργήθηκε στις αρ-

χές του 1970 από τους Ρόμπερτ Κοβάλσκι και Alain Colmeraue. Σο όνομα Prolog το έ-

βγαλε ο συνεργάτης του Kowalski, Philippe Roussel και είναι συντομογραφία

του γαλλικού «PROgramation en LOGique» («Προγραμματισμός και Λογική») .

Η Prolog εμφανίστηκε αργότερα, τη δεκαετία του 1970 ως μία εναλλακτική λύ-

ση για τον προγραμματισμό συστημάτων συμβολικού υπολογισμού και αρχικά προέ-

κυψε από την επιτυχημένη προσπάθεια ανάπτυξης συστημάτων αυτόματης απόδει-

ξης θεωρημάτων (automatic theorem proving). Ο προγραμματισμός στην Prolog συνί-

σταται στον ορισμό γεγονότων που ορίζουν τη σχέση ανάμεσα σε δεδομέ-

να/αντικείμενα και κανόνων μέσω των οποίων επάγονται νέες σχέσεις ανάμεσα σε

δεδομένα/αντικείμενα με τη βοήθεια άλλων σχέσεων που έχουν ήδη οριστεί. Ένα

πρόγραμμα στην Prolog είναι μία συλλογή από φράσεις (γεγονότα και κανόνες) που

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

να υπολογιστεί το αποτέλεσμα που προκύπτει από τη λύση του προβλήματος. Οι

φράσεις του προγράμματος της Prolog μπορεί να θεωρηθεί ότι ορίζουν μία Βάση Γνώ-

σης (Knowledge Base) από την οποία μπορεί να συνεπάγεται η εξαγωγή νέας γνώσης,

μέσω ενός περιβάλλοντος εκτέλεσης (συνήθως ενός διερμηνέα), το οποίο είναι ανε-

ξάρτητο του προβλήματος. Με τη βοήθεια ερωτήσεων που υποβάλει ο χρήστης, διαπι-

στώνεται εάν κάποιες σχέσεις ισχύουν ανάμεσα σε κάποιες οντότητες.

Η Prolog χρησιμοποιήθηκε με επιτυχία για την ανάπτυξη ευφυών συστημάτων

σε πεδία της ΣΝ όπως είναι η επεξεργασία φυσικής γλώσσας, τα έμπειρα συστήματα

και τα συστήματα γνώσης, όπως και σε άλλους τομείς όπως τα συστήματα σχεσιακών

βάσεων δεδομένων και η εκπαίδευση.

ΤΛΟΠΟΙΗΕΙ ΣΗ PROLOG

Από την εισαγωγή της γλώσσας Prolog στις αρχές της δεκαετίας του ‘70 μέχρι

σήμερα, καταγράφεται ένα τεράστιο πλήθος υλοποιήσεων της, καθώς και περιβαλλό-

ντων ανάπτυξης που την υποστηρίζουν. Αναφέρουμε ενδεικτικά μερικές χαρακτηρι-

στικές από αυτές τις υλοποιήσεις (με τον κίνδυνο να αδικήσουμε πολλές άλλες):

H SWI-Prolog (http://www.swi-prolog.org), αποτελεί μια ελεύθερη έκδοση της

γλώσσας, υλοποιεί το ISO/IEC standard υποσύνολο της και αποτελεί ένα από τα πλέον

χρησιμοποιούμενα περιβάλλοντα της Prolog από την ερευνητική και εκπαιδευτική

κοινότητα. Έχει επίσης χρησιμοποιηθεί ευρύτατα για ανάπτυξη σημαντικών εμπορι-

κών εφαρμογών. Διαθέτει βιβλιοθήκες που υποστηρίζουν, μεταξύ άλλων, προγραμ-

ματισμό με περιορισμούς, ανάπτυξη εφαρμογών επεξεργασίας φυσικής γλώσσας,

εφαρμογών του διαδικτύου και σημασιολογικού ιστού. Διαθέτει επίσης μηχανισμούς

διασύνδεσης με 6 τη γλώσσα προγραμματισμού Java και ODBC για σύνδεση με βάσεις

Page 28: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

δεδομένων. Η πρώτη υλοποίηση της γλώσσας ξεκίνησε το 1987 στο πανεπιστήμιο του

Άμστερνταμ και από τότε έχουν καταγραφεί πάνω από ένα εκατομμύριο χρήστες που

την έχουν εγκαταστήσει και χρησιμοποιήσει.

Η ECLiPSe ( http:// eclipseclp. org /), αποτελεί ένα υπερσύνολο της γλώσσας

Prolog που περιλαμβάνει χαρακτηριστικά που την καθιστούν ιδιαίτερα κατάλληλη

για ανάπτυξη εφαρμογών που βασίζονται στον λογικό προγραμματισμό με περιορι-

σμούς. Είναι επίσης κατάλληλη για την αντιμετώπιση προβλημάτων μεγάλης συνδυ-

αστικής πολυπλοκότητας και γενικότερα αποτελεί ένα ισχυρό εργαλείο μοντελοποί-

ησης συστημάτων. Επίσης διαθέτει υποσυστήματα διασύνδεσης με άλλα περιβάλλο-

ντα προγραμματισμού (C++ και Java). την ανάπτυξη της ECLiPSe συμμετείχαν ιδιαί-

τερα σημαντικά κέντρα έρευνας και ανάπτυξης της επιστήμης των υπολογιστών, ό-

πως το ECRC (European Computer Industry Research Centre) του Μονάχου και το IC-

Par - cat (Centre for Planning and Resource Control) του Imperial College του Λονδίνου.

ήμερα αποτελεί σύστημα λογισμικού ανοικτού κώδικα που προσφέρεται με άδεια

MPL (Mozilla Public License).

Η YAP (Yet Another Prolog) ( http:// www. dcc . fc . up . pt /~ vsc / Yap/), είναι μία

υλοποίηση της standard Prolog που διαθέτει έναν μεταγλωττιστή υψηλής αποδοτικό-

τητας, ο οποίος βασίζεται στην εξέλιξη της αρχιτεκτονικής WAM. υμπληρώνει 30

χρόνια ζωής και η συνεχής ανάπτυξή της υποστηρίζεται από το Εργαστήριο Σεχνητής

Νοημοσύνης και Επιστήμης Τπολογιστών του πανεπιστημίου του Πόρτο και του Ιν-

στιτούτου Μηχανικής των υστημάτων και Τπολογιστών του πανεπιστημίου του Rio

de Janeiro της Βραζιλίας. Διατίθεται ως ελεύθερο λογισμικό με άδεια GPL (General

Public License).

Η B-Prolog ( http:// www. picat- lang. org / bprolog/), είναι επίσης μία υψηλής

αποδοτικότητας υλοποίηση της standard Prolog που διατίθεται ελεύθερα για μη εμπο-

ρικές εφαρμογές. Περιλαμβάνει

επεκτάσεις, όπως η δυνατότητα

χρήσης πινάκων (arrays), πινάκων

κατακερματισμού (hash tables), δη-

λωτικών δομών επανάληψης, ο ο-

ρισμός κανόνων ενεργειών (action

rules) για το χειρισμό συμβάντων

και η επίλυση προβλημάτων περι-

ορισμών (finite-domain constraint

solving).

Η SICStus Prolog ( https://

sicstus. sics. se), αποτελεί μια κορυ-

φαία εμπορική υλοποίηση της

γλώσσας, με πολύ ισχυρά χαρακτηριστικά, όπως πολύ αποδοτική υποστήριξη περιο-

ρισμών, σύγχρονο περιβάλλον ανάπτυξης, και μια ιστορία εξέλιξης πάνω από 20 χρό-

νια. Αναπτύσσεται και υποστηρίζεται από το ουηδικό Ινστιτούτο Επιστήμης Τπολο-

γιστών (Swedish Institute of Computer Science), από όπου και το όνομά της.

Πρέπει να αναφέρουμε ότι η Prolog και ο λογικός προγραμματισμός γενικότε-

ρα, στην πλέον των 30 ετών ιστορία τους, έχει κατά καιρούς δημιουργήσει μεγάλες

Page 29: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

προσδοκίες ως μία εναλλακτική σχολή ανάπτυξης λογισμικού. Ο μεγάλος αριθμός

υλοποιήσεων της Prolog και τα σημαντικά κέντρα στα οποία αυτή αναπτύσσεται απο-

τελούν μια από τις αποδείξεις της σημαντικότητας της γλώσσας και του λόγου για

τον οποίο περιβάλλοντα προγραμματισμού που βασίζονται στην Prolog εξελίσσονται

συνεχώς.

Πηγές - Βιβλιογραφία https://forums.opensuse.org/showthread.php

https://el.wikipedia.org/wiki/Visual_Basic

https://el.wikipedia.org/wiki/BASIC

http://pdplab.it.uom.gr/project/algprog2002/kefalaio5/istoriki_anadromi5.htm

https://el.wikipedia.org/wiki/C%2B%2B

http://www.dga.gr/web/publications/files/csharp.pdf

https://el.wikipedia.org/wiki/C_(%CE%B3%CE%BB%CF%8E%CF%83%CF%83%CE%B1_

%CF%80%CF%81%CE%BF%CE%B3%CF%81%CE%B1%CE%BC%CE%BC%CE%B1%CF%

84%CE%B9%CF%83%CE%BC%CE%BF%CF%8D)

http://www.eclass.teipel.gr/eclass2/

https://repository.kallipos.gr/bitstream/11419/778/1/lpTechniques_Chapter1.pdf

https://www.google.gr/imghp?hl=el&ei=pP7gWKrAA4PtUvTijPgG&ved=0EKouCAIoAQ

http://www.hongkiat.com/blog/programming-myth/

https://el.wikipedia.org/wiki/Prolog

https://el.wikipedia.org/wiki/Lisp

https://www.dmst.aueb.gr/dds/c3/lisp/lisp.htm

https://www.slideshare.net/AikateriniDaoultzogl/lisp-51973037

http://cgi.di.uoa.gr/~std06249/pliroforiki&ekpaideusi/lisp.html

http://scratch.mit.edu/

Page 30: Γλώσσες Προγραμματισμού Η/Υ2lyk-spart.lak.sch.gr/ergasies/2016_2017/hy.pdf · στην algol. Είναι μια γλώσσα γενικής χρήσης, η

http://users.sch.gr/glezou/yliko/logo2004.htm

http://users.sch.gr/glezou/microworldspro/mwprotut3.htm

http://ebooks.edu.gr/modules/ebook/show.php/DSB102/71/573,2023/