Εισαγωγή στον προγραμματισμό Μέρος 1 ο Ιστορική αναδρομή γλωσσών προγραμματισμού §§ 6.1 – 6.2.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Advertisements

Αρχές Γλωσσών Προγραμματισμού
ΣYMBOΛIKOΣ ΥΠΟΛΟΓΙΣΜΟΣ. ΣYMBOΛIKOΣ ΥΠΟΛΟΓΙΣΜΟΣ - Παράδειγμα %polynomial (Expression, Variable) polynomial (X, X). polynomial (Term, X) :- number (Term).
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 4: Δείκτες, συναρτήσεις και διαδικασίες Εαρινό εξάμηνο 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
PL/SQL.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 5: Επαναληπτικές και εξωτερικές συναρτήσεις και διαδικασίες Εαρινό εξάμηνο 2009.
Γεωργαλλίδης Δημήτρης Καθηγητής Πληροφορικής
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Εισαγωγή στον προγραμματισμό
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
ORACLE PL/SQL Εξαιρέσεις Exceptions. ΟΡΙΣΜΟΣ Μια εξαίρεση (exception) είναι ένας δείκτης που ενεργοποιείται κατά την εκτέλεση του προγράμματος.
Διαφάνειες παρουσίασης Πίνακες (συνέχεια) Αριθμητικοί υπολογισμοί Αναδρομή.
National Technical University of Athens (NTUA), GreeceInstitute of Structural Analysis & Seismic Research (ISASR) Προχωρημένες υπολογιστικές τεχνικές και.
Γλώσσες Προγραμματισμού
Κουλίνας Μιχαήλ Α.Μ.:774 Μπουρνάζης Χρήστος Α.Μ.:792 Ρογκάκος Γεώργιος Α.Μ.:817.
Μετατροπή Εκφράσεων σε C
Τεχνολογία ΛογισμικούSlide 1 Σχεδιασμός Λογισμικού ATM loop Print_input_message (” Welcome - Please enter your card”) ; exit when Card_input ; end loop.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
Οι εντολές επανάληψης Σε πολλά προβλήματα απαιτείται η επανάληψη ενός συνόλου ενεργειών προκειμένου να λυθεί το πρόβλημα. Θα αναφέρουμε δύο χαρακτηριστικά.
Υποπίνακες REAL A(10) A(1:9:2)=7 τότε θα έχουμε A(1)=A(3)=A(5)=A(7)=A(9)=7 A(3:)=7 τότε θα έχουμε A(3)=…=A(10)=7 A(:5)=7 τότε θα έχουμε A(1)=A(2)=A(3)=A(4)=A(5)=7.
Τεχνολογία ΛογισμικούSlide 1 Εκτέλεση σε Πραγματικό Χρόνο Τεχνολογία Λογισμικού Slide 25.
ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Κ.ΑΛΑΦΟΔΗΜΟΣ καθηγητής Δ.Παπαχρήστος μέλος ΕΔΙΠ ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΠΑΝΕΠΙΣΤΗΜΙΟ Α ΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java.
Κωδικός Θ: ΤΠ4003, Κωδικός Ε: ΤΠ4103 (ΜΕΥ/Υ) Ώρες (Θ - ΑΠ - Ε): Προαπαιτούμενα: ΤΠ2003,2103.
LOGO Προγραμματισμός Η/Υ β’ εξάμηνο – εργαστήριο ΚΑΛΟΓΙΑΝΝΗΣ ΓΡΗΓΟΡΙΟΣ Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών Α.Π.Θ. Msc Τηλεπικοινωνίες Πολυτεχνική.
Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού - Μέθοδοι ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014:
Copyright © 2005 Elsevier Κεφάλαιο 1 :: Εισαγωγή Πραγματολογία των Γλωσσών Προγραμματισμού Michael L. Scott.
Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού - Κλάσεις ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014:
Πληροφορική Ενότητα 3 (Μέρος Γ): Εφαρμογές. Δήμητρα Αβραμούλη, Καθηγήτρια Εφαρμογών, Τμήμα Σχεδιασμού και Τεχνολογίας Ξύλου και Επίπλου Τ.Ε., T.E.I. Θεσσαλίας.
Μαθαίνω με “υπότιτλους”
Τύποι μεταβλητών & σταθερών (1 από 2)
Εισαγωγή στον Προγ/μό Η/Υ
Κεφάλαιο 2 :: Σύνταξη των γλωσσών προγραμματισμού
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ (Α.Ε.Π.Π.)
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Η Γλώσσα Pascal Εντολή If
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Εισαγωγή στο Περιβάλλον της Visual Basic
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Παιδαγωγικό Τμήμα Νηπιαγωγών
Εισαγωγή στον Προγ/μό Υπολογιστών
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ Β΄ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ενισχυτική διδασκαλία
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Ενότητα 1 : Εισαγωγικά Στοιχεία της Pascal Αλέξανδρος Τζάλλας
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού
Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Πρότυπα Προγραμματισμού
ΓΛΩΣΣΕΣ & ΕΡΓΑΛΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
Διαφάνειες 1-8 και 18,19,22,23 από: eclass. sch. gr/modules/video/file
Οσμές στη Σχεδίαση του Λογισμικού
Διαφάνειες 1-8 και 18,19,22,23 από: eclass. sch. gr/modules/video/file
Διάλεξη 3 Αλγόριθμοι & Προγραμματισμός Εισαγωγή στις Εφαρμογές ΤΠΕ
JAVA Basics Εβδομάδα Νο. 1.
JAVA – Basic OOP Principles
Η έννοια του προβλήματος
Ορισμός της έννοιας αλγόριθμος, πρόγραμμα Σχεδιασμός απλών αλγορίθμων
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
Wrapper Classes, Abstract Classes and Interfaces
Μεταγράφημα παρουσίασης:

Εισαγωγή στον προγραμματισμό Μέρος 1 ο Ιστορική αναδρομή γλωσσών προγραμματισμού §§ 6.1 – 6.2

Εισαγωγή στον προγραμματισμό Η έννοια του προγράμματος Η έννοια του προγράμματος Ιστορική αναδρομή Ιστορική αναδρομή

Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τη χρήση υπολογιστή περιλαμβάνει τρία στάδια Η επίλυση ενός προβλήματος με τη χρήση υπολογιστή περιλαμβάνει τρία στάδια 1. Τον ακριβή προσδιορισμό του προβλήματος 2. Την ανάπτυξη του αντίστοιχου αλγορίθμου 3. Τη διατύπωση του αλγορίθμου σε μορφή κατανοητή απ’ τον υπολογιστή

Η έννοια του προγράμματος Ο προγραμματισμός ασχολείται με τη διατύπωση του αλγορίθμου σε μορφή κατανοητή απ’ τον υπολογιστή Ο προγραμματισμός ασχολείται με τη διατύπωση του αλγορίθμου σε μορφή κατανοητή απ’ τον υπολογιστή Βασικά στοιχεία του προγράμματος είναι Βασικά στοιχεία του προγράμματος είναι τα δεδομένα και, τα δεδομένα και, οι δομές δεδομένων επί των οποίων ενεργεί οι δομές δεδομένων επί των οποίων ενεργεί Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα

Η έννοια του προγράμματος Ο προγραμματισμός δίνει την ψευδαίσθηση ότι οι υπολογιστές είναι έξυπνες μηχανές με την ικανότητα να επιλύουν πολύπλοκα προβλήματα Ο προγραμματισμός δίνει την ψευδαίσθηση ότι οι υπολογιστές είναι έξυπνες μηχανές με την ικανότητα να επιλύουν πολύπλοκα προβλήματα Οι υπολογιστές στην πραγματικότητα «καταλαβαίνουν» μόνο δύο καταστάσεις: αληθές και ψευδές, μηδέν και ένα, ανοιχτό και κλειστό Οι υπολογιστές στην πραγματικότητα «καταλαβαίνουν» μόνο δύο καταστάσεις: αληθές και ψευδές, μηδέν και ένα, ανοιχτό και κλειστό Ο υπολογιστής κάνει στοιχειώδεις ενέργειες σε ακολουθίες δυαδικών ψηφίων με πολύ μεγάλη ταχύτητα Ο υπολογιστής κάνει στοιχειώδεις ενέργειες σε ακολουθίες δυαδικών ψηφίων με πολύ μεγάλη ταχύτητα

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

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

Συμβολικές γλώσσες ή γλώσσες χαμηλού επιπέδου Οι εντολές σε συμβολική γλώσσα αποτελούνται από συμβολικά ονόματα που αντιστοιχούν σε εντολές της γλώσσας μηχανής Οι εντολές σε συμβολική γλώσσα αποτελούνται από συμβολικά ονόματα που αντιστοιχούν σε εντολές της γλώσσας μηχανής Οι συμβολικές γλώσσες είναι συνδεδεμένες με την αρχιτεκτονική κάθε υπολογιστή Οι συμβολικές γλώσσες είναι συνδεδεμένες με την αρχιτεκτονική κάθε υπολογιστή Ο συμβολομεταφραστής (assembler) κάνει τη μετατροπή από συμβολική γλώσσα σε γλώσσα μηχανής Ο συμβολομεταφραστής (assembler) κάνει τη μετατροπή από συμβολική γλώσσα σε γλώσσα μηχανής

Συμβολικά ονόματα mov al, 061h mov al, 061h

Κατηγορίες εντολών assembly Εντολές μετακίνησης Εντολές μετακίνησης Καθορισμός τιμής καταχωρητή Καθορισμός τιμής καταχωρητή Μεταφορά δεδομένων από/προς τη μνήμη Μεταφορά δεδομένων από/προς τη μνήμη Ανάγνωση/εγγραφή δεδομένων από/σε εξωτερικές συσκευές Ανάγνωση/εγγραφή δεδομένων από/σε εξωτερικές συσκευές

Κατηγορίες εντολών assembly Εντολές υπολογισμού Εντολές υπολογισμού Πρόσθεση, αφαίρεση, πολλαπλασιασμός, διαίρεση δύο καταχωρητών και αποθήκευση του αποτελέσματος σ’ έναν τρίτο καταχωρητή Πρόσθεση, αφαίρεση, πολλαπλασιασμός, διαίρεση δύο καταχωρητών και αποθήκευση του αποτελέσματος σ’ έναν τρίτο καταχωρητή Λειτουργίες bit (and/or/not) Λειτουργίες bit (and/or/not) Σύγκριση τιμών Σύγκριση τιμών

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

Γλώσσες υψηλού επιπέδου Οι γλώσσες υψηλού επιπέδου Οι γλώσσες υψηλού επιπέδου χρησιμοποιούν ως εντολές απλές λέξεις της αγγλικής γλώσσας χρησιμοποιούν ως εντολές απλές λέξεις της αγγλικής γλώσσας ακολουθώντας αυστηρούς κανόνες σύνταξης, ακολουθώντας αυστηρούς κανόνες σύνταξης, οι οποίες μεταφράζονται από τον ίδιο τον υπολογιστή σε εντολές σε γλώσσα μηχανής οι οποίες μεταφράζονται από τον ίδιο τον υπολογιστή σε εντολές σε γλώσσα μηχανής

FORTRAN FORmula TRANslator FORmula TRANslator Εφευρέθηκε το από μια ομάδα της IBM υπό τον John W. Backus Εφευρέθηκε το από μια ομάδα της IBM υπό τον John W. Backus Χρησιμοποιείται ακόμα και σήμερα για αριθμητικές λειτουργίες Χρησιμοποιείται ακόμα και σήμερα για αριθμητικές λειτουργίες

FORTRAN (Hello world) CIt was the first programming language Cwith the comments support! WRITE (6,7) 7 FORMAT(15H Hello, world! ) 7 FORMAT(15H Hello, world! )STOPEND

FORTRAN (υπολογισμός εμβαδού κυλίνδρου) program cylinder !!! Calculate the area of a cylinder. implicit none ! Require all variables to be declared -- Fortran 90 feature. implicit none ! Require all variables to be declared -- Fortran 90 feature. integer :: ierr integer :: ierr character :: yn character :: yn real :: radius,height,area real :: radius,height,area real, parameter :: pi = real, parameter :: pi = interactive_loop: do interactive_loop: do ! Prompt the user for radius and ! Prompt the user for radius and ! height and read them. ! height and read them. write (*,*) 'Enter radius and height.' write (*,*) 'Enter radius and height.' read (*,*,iostat=ierr) radius,height read (*,*,iostat=ierr) radius,height ! If radius and height could not be read from input, then restart ! If radius and height could not be read from input, then restart ! the loop. ! the loop. if (ierr /= 0) then if (ierr /= 0) then write(*,*) 'Error, invalid input.' write(*,*) 'Error, invalid input.' cycle interactive_loop cycle interactive_loop end if end if ! Compute area. The ** means "raise to a power". ! Compute area. The ** means "raise to a power". area = 2*pi*(radius**2 + radius*height) area = 2*pi*(radius**2 + radius*height) ! Write the input variables (radius, height) and output (area) to the screen. ! Write the input variables (radius, height) and output (area) to the screen. write (*,'(1x,a7,f6.2,5x,a7,f6.2,5x,a5,f6.2)') & write (*,'(1x,a7,f6.2,5x,a7,f6.2,5x,a5,f6.2)') & 'radius=',radius,'height=',height,'area=',area 'radius=',radius,'height=',height,'area=',area yn = ' ' yn = ' ' yn_loop: do yn_loop: do write(*,*) 'Perform another calculation? y[n]' write(*,*) 'Perform another calculation? y[n]' read(*,'(a1)') yn read(*,'(a1)') yn if (yn=='y'.or. yn=='Y') exit yn_loop if (yn=='y'.or. yn=='Y') exit yn_loop if (yn=='n'.or. yn=='N'.or. yn==' ') exit interactive_loop if (yn=='n'.or. yn=='N'.or. yn==' ') exit interactive_loop end do yn_loop end do yn_loop end do interactive_loop end do interactive_loop end program cylinder

COBOL COmmon Business Oriented Language COmmon Business Oriented Language Σχεδιάστηκε από επιχειρήσεις και την κυβέρνηση με σκοπό την ανάπτυξη εμπορικών, λογιστικών και διαχειριστικών εφαρμογών Σχεδιάστηκε από επιχειρήσεις και την κυβέρνηση με σκοπό την ανάπτυξη εμπορικών, λογιστικών και διαχειριστικών εφαρμογών Εφευρέθηκε το 1959 Εφευρέθηκε το 1959

COBOL Αρχικά συμμετείχαν έξι εταιρείες Αρχικά συμμετείχαν έξι εταιρείες Burroughs Corporation Burroughs Corporation IBM IBM Minneapolis-Honeywell (Honeywell Labs) Minneapolis-Honeywell (Honeywell Labs) RCA RCA Sperry Rand Sperry Rand Sylvania Electric Products Sylvania Electric Products

COBOL και τρεις κυβερνητικές υπηρεσίες και τρεις κυβερνητικές υπηρεσίες US Air Force US Air Force David Taylor Model Basin David Taylor Model Basin National Bureau of Standards (NIST) National Bureau of Standards (NIST) Αναπτύχθηκε μέσα σε έξι μήνες, αλλά χρησιμοποιείται ακόμα και σήμερα Αναπτύχθηκε μέσα σε έξι μήνες, αλλά χρησιμοποιείται ακόμα και σήμερα

COBOL (Hello world) IDENTIFICATION DIVISION. IDENTIFICATION DIVISION. Program-Id. Hello-World. Program-Id. Hello-World. * ENVIRONMENT DIVISION. ENVIRONMENT DIVISION. * DATA DIVISION. DATA DIVISION. * PROCEDURE DIVISION. PROCEDURE DIVISION. Para1. Para1. DISPLAY "Hello, world.". DISPLAY "Hello, world.". * Stop Run. Stop Run.

ALGOL ALGOrithmic Language ALGOrithmic Language Αρχικά σχεδιάστηκε για ν’ αντιμετωπίσει προβλήματα που εμφανίστηκαν στο σχεδιασμό της FORTRAN Αρχικά σχεδιάστηκε για ν’ αντιμετωπίσει προβλήματα που εμφανίστηκαν στο σχεδιασμό της FORTRAN Αναπτύχθηκε από μια επιτροπή Ευρωπαίων και Αμερικανών επιστημόνων Αναπτύχθηκε από μια επιτροπή Ευρωπαίων και Αμερικανών επιστημόνων Ενέπνευσε τη δημιουργία πολλών άλλων γλωσσών, όπως η Pascal Ενέπνευσε τη δημιουργία πολλών άλλων γλωσσών, όπως η Pascal

PL/1 Programming Language One Programming Language One Σχεδιάστηκε από την IBM για επιστημονικές, μηχανολογικές και εμπορικές εφαρμογές Σχεδιάστηκε από την IBM για επιστημονικές, μηχανολογικές και εμπορικές εφαρμογές Κύριο πεδίο εφαρμογής της η επεξεργασία δεδομένων Κύριο πεδίο εφαρμογής της η επεξεργασία δεδομένων Hello2: proc options(main); put list ('Hello, world!'); put list ('Hello, world!'); end Hello2;

LISP LISt Processing LISt Processing Εφευρέθηκε το 1958 απ’ τον John McCarthy Εφευρέθηκε το 1958 απ’ τον John McCarthy Αρχικά φτιάχτηκε ως μια πρακτική μαθηματική γραφή για υπολογιστές Αρχικά φτιάχτηκε ως μια πρακτική μαθηματική γραφή για υπολογιστές Χρησιμοποιήθηκε ευρέως στην Τεχνητή Νοημοσύνη Χρησιμοποιήθηκε ευρέως στην Τεχνητή Νοημοσύνη Όλες οι εκφράσεις τις γλώσσας γράφονται ως λίστες Όλες οι εκφράσεις τις γλώσσας γράφονται ως λίστες (defun factorial (n) (if (<= n 1) (if (<= n 1) 1 (* n (factorial (- n 1))))) (* n (factorial (- n 1)))))

PROLOG Programmation en logique Programmation en logique Εφευρέθηκε απ’ τους Alain Colmerauer and Robert Kowalski γύρω 1972 ως αντίβαρο στη LISP Εφευρέθηκε απ’ τους Alain Colmerauer and Robert Kowalski γύρω 1972 ως αντίβαρο στη LISP Χρησιμοποιείται ευρέως στην Τεχνητή Νοημοσύνη Χρησιμοποιείται ευρέως στην Τεχνητή Νοημοσύνη

PROLOG (Πύργοι του Ανόι) hanoi(N) :- move(N, left, centre, right). move(0, _, _, _) :- !. move(N, A, B, C) :- M is N-1, M is N-1, move(M, A, C, B), inform(A, B), move(M, C, B, A). move(M, A, C, B), inform(A, B), move(M, C, B, A). inform(X, Y) :- write([move, a, disc, from, the, X, pole, to, the, Y, pole]), write([move, a, disc, from, the, X, pole, to, the, Y, pole]), nl. nl.

BASIC Beginner’s All-purpose Symbolic Instruction Code Beginner’s All-purpose Symbolic Instruction Code Εφευρέθηκε απ’ τους John George Kemeny και Thomas Eugene Kurtz το 1964 στο Dartmouth College Εφευρέθηκε απ’ τους John George Kemeny και Thomas Eugene Kurtz το 1964 στο Dartmouth College Οι οκτώ βασικές σχεδιαστικές αρχές της BASIC ήταν: Οι οκτώ βασικές σχεδιαστικές αρχές της BASIC ήταν: Να είναι εύκολη για τους αρχάριους Να είναι εύκολη για τους αρχάριους Να είναι μια γλώσσα γενικής χρήσης Να είναι μια γλώσσα γενικής χρήσης Να επιτρέπει την προσθήκη εξελιγμένων χαρακτηριστικών για τους ειδικούς, παραμένοντας απλή για τους αρχάριους Να επιτρέπει την προσθήκη εξελιγμένων χαρακτηριστικών για τους ειδικούς, παραμένοντας απλή για τους αρχάριους Να είναι διαδραστική Να είναι διαδραστική Να παρέχει ξεκάθαρα και φιλικά μηνύματα λάθους Να παρέχει ξεκάθαρα και φιλικά μηνύματα λάθους Να είναι γρήγορη για μικρά προγράμματα Να είναι γρήγορη για μικρά προγράμματα Να μη χρειάζεται ο προγραμματιστής να έχει γνώσεις του υλικού του υπολογιστή Να μη χρειάζεται ο προγραμματιστής να έχει γνώσεις του υλικού του υπολογιστή Να κρύβει το λειτουργικό σύστημα απ’ τον προγραμματιστή Να κρύβει το λειτουργικό σύστημα απ’ τον προγραμματιστή

BASIC 10 INPUT "What is your name: "; U$ 10 INPUT "What is your name: "; U$ 20 PRINT "Hello "; U$ 20 PRINT "Hello "; U$ 30 REM 30 REM 40 INPUT "How many stars do you want: "; N 40 INPUT "How many stars do you want: "; N 50 S$ = "" 50 S$ = "" 60 FOR I = 1 TO N 60 FOR I = 1 TO N 70 S$ = S$ + "*" 70 S$ = S$ + "*" 80 NEXT I 80 NEXT I 90 PRINT S$ 90 PRINT S$ 100 REM 100 REM 110 INPUT "Do you want more stars? "; A$ 110 INPUT "Do you want more stars? "; A$ 120 IF LEN(A$) = 0 THEN GOTO IF LEN(A$) = 0 THEN GOTO A$ = LEFT$(A$, 1) 130 A$ = LEFT$(A$, 1) 140 IF (A$ = "Y") OR (A$ = "y") THEN GOTO IF (A$ = "Y") OR (A$ = "y") THEN GOTO PRINT "Goodbye "; 150 PRINT "Goodbye "; 160 FOR I = 1 TO FOR I = 1 TO PRINT U$; " "; 170 PRINT U$; " "; 180 NEXT I 180 NEXT I 190 PRINT 190 PRINT

PASCAL Εφευρέθηκε το 1970 απ’ τον Niklaus Wirth Εφευρέθηκε το 1970 απ’ τον Niklaus Wirth Στηρίχτηκε στην ALGOL Στηρίχτηκε στην ALGOL Ονομάστηκε προς τιμήν του φιλοσόφου Blaise Pascal Ονομάστηκε προς τιμήν του φιλοσόφου Blaise Pascal Αρχικά σχεδιάστηκε για να διδάξει στους φοιτητές το Δομημένο Προγραμματισμό Αρχικά σχεδιάστηκε για να διδάξει στους φοιτητές το Δομημένο Προγραμματισμό

PASCAL (Hello world) program HelloWorld(output); begin writeln('Hello, World!') writeln('Hello, World!')end.

C Εφευρέθηκε στις αρχές τις δεκαετίας του ’70 απ’ τον Dennis Ritchie Εφευρέθηκε στις αρχές τις δεκαετίας του ’70 απ’ τον Dennis Ritchie Χαρακτηριστικά Χαρακτηριστικά Απλός πυρήνας εντολών Απλός πυρήνας εντολών Διαδικασιακή γλώσσα με δομημένο τρόπο Διαδικασιακή γλώσσα με δομημένο τρόπο Σύστημα τύπων που δεν επιτρέπει πολλές λειτουργίες που δεν έχουν νόημα Σύστημα τύπων που δεν επιτρέπει πολλές λειτουργίες που δεν έχουν νόημα Ενσωματωμένος προεπεξεργαστής Ενσωματωμένος προεπεξεργαστής Πρόσβαση χαμηλού επιπέδου στη μνήμη μέσω δεικτών Πρόσβαση χαμηλού επιπέδου στη μνήμη μέσω δεικτών Περιορισμένο σύνολο δεσμευμένων λέξεων Περιορισμένο σύνολο δεσμευμένων λέξεων Οι παράμετροι περνούν ως τιμές. Για να περάσουν ως αναφορά χρησιμοποιούνται δείκτες Οι παράμετροι περνούν ως τιμές. Για να περάσουν ως αναφορά χρησιμοποιούνται δείκτες Χρησιμοποιεί Εγγραφές για την ομαδοποίηση δεδομένων Χρησιμοποιεί Εγγραφές για την ομαδοποίηση δεδομένων

C (Hello world) #include #include int main(void) { printf("hello, world\n"); printf("hello, world\n"); return 0; return 0;}

C++ Αναπτύχθηκε το 1983 απ’ τον Bjarne Stroustrup των Bell Labs Αναπτύχθηκε το 1983 απ’ τον Bjarne Stroustrup των Bell Labs Επεκτείνει τη C δίνοντάς της χαρακτηριστικά αντικειμενοστραφούς προγραμματισμού Επεκτείνει τη C δίνοντάς της χαρακτηριστικά αντικειμενοστραφούς προγραμματισμού Σήμερα είναι μια απ’ τις πιο διαδεδομένες γλώσσες προγραμματισμού Σήμερα είναι μια απ’ τις πιο διαδεδομένες γλώσσες προγραμματισμού

Java Εφευρέθηκε απ’ τον James Gosling και τους συναδέλφους του στη Sun Microsystems στις αρχές της δεκαετίας του ’90 Εφευρέθηκε απ’ τον James Gosling και τους συναδέλφους του στη Sun Microsystems στις αρχές της δεκαετίας του ’90 Σχεδιάστηκε να είναι ανεξάρτητη απ’ τον υπολογιστή που θα εκτελεστεί το πρόγραμμα Σχεδιάστηκε να είναι ανεξάρτητη απ’ τον υπολογιστή που θα εκτελεστεί το πρόγραμμα Είχε πέντε βασικούς στόχους: Είχε πέντε βασικούς στόχους: Θα πρέπει να είναι αντικειμενοστραφής Θα πρέπει να είναι αντικειμενοστραφής Θα πρέπει το ίδιο πρόγραμμα να μπορεί να εκτελεστεί σε πολλά λειτουργικά συστήματα Θα πρέπει το ίδιο πρόγραμμα να μπορεί να εκτελεστεί σε πολλά λειτουργικά συστήματα Θα πρέπει να έχει ενσωματωμένη υποστήριξη για δίκτυα υπολογιστών Θα πρέπει να έχει ενσωματωμένη υποστήριξη για δίκτυα υπολογιστών Θα πρέπει να μπορεί να εκτελεστεί κώδικας εκ του μακρόθεν με ασφάλεια Θα πρέπει να μπορεί να εκτελεστεί κώδικας εκ του μακρόθεν με ασφάλεια Θα πρέπει να είναι εύκολη στη χρήση και θα πρέπει να εκμεταλλεύεται τα «καλά» σημεία παλαιοτέρων αντικειμενοστραφών γλωσσών όπως η C++ Θα πρέπει να είναι εύκολη στη χρήση και θα πρέπει να εκμεταλλεύεται τα «καλά» σημεία παλαιοτέρων αντικειμενοστραφών γλωσσών όπως η C++

Java (Hello program) // Hello.java public class Hello { public static void main(String[] args) { public static void main(String[] args) { System.out.println("Hello, world!"); System.out.println("Hello, world!"); }}

Νέες μεθοδολογίες Προγραμματισμός οδηγούμενος απ’ το γεγονός (event driven programming) Προγραμματισμός οδηγούμενος απ’ το γεγονός (event driven programming) Ο έλεγχος της ροής του προγράμματος εξαρτάται από εξωτερικά γεγονότα Ο έλεγχος της ροής του προγράμματος εξαρτάται από εξωτερικά γεγονότα Οπτικός προγραμματισμός (visual programming) Οπτικός προγραμματισμός (visual programming) Οπτικός σχεδιασμός του προγράμματος Οπτικός σχεδιασμός του προγράμματος

Πλεονεκτήματα των γλωσσών υψηλού επιπέδου Φυσικότερος και πιο «ανθρώπινος» τρόπος έκφρασης Φυσικότερος και πιο «ανθρώπινος» τρόπος έκφρασης Ανεξαρτησία από τον τύπο του υπολογιστή (μεταφερσιμότητα-portability) Ανεξαρτησία από τον τύπο του υπολογιστή (μεταφερσιμότητα-portability) Ευκολία εκμάθησης και εκπαίδευσης Ευκολία εκμάθησης και εκπαίδευσης Πιο εύκολη διόρθωση λαθών και συντήρηση προγραμμάτων Πιο εύκολη διόρθωση λαθών και συντήρηση προγραμμάτων Ελάττωση του χρόνου και του κόστους παραγωγής νέων προγραμμάτων Ελάττωση του χρόνου και του κόστους παραγωγής νέων προγραμμάτων

Γλώσσες τέταρτης γενιάς Οι γλώσσες υψηλού επιπέδου (τρίτης γενιάς) γνώρισαν μεγάλη επιτυχία Οι γλώσσες υψηλού επιπέδου (τρίτης γενιάς) γνώρισαν μεγάλη επιτυχία Απευθύνονταν όμως, μόνο σε προγραμματιστές Απευθύνονταν όμως, μόνο σε προγραμματιστές Ο χρήστης δεν είχε τη δυνατότητα να κάνει αλλαγές για να ικανοποιήσει νέες ανάγκες Ο χρήστης δεν είχε τη δυνατότητα να κάνει αλλαγές για να ικανοποιήσει νέες ανάγκες Πολλές γλώσσες εφοδιάστηκαν με εργαλεία που αποκρύπτουν πολλές απ’ τις λεπτομέρειες υλοποίησης Πολλές γλώσσες εφοδιάστηκαν με εργαλεία που αποκρύπτουν πολλές απ’ τις λεπτομέρειες υλοποίησης Αυτό οδήγησε στις γλώσσες 4 ης γενιάς, όπου ο χρήστης μπορεί να υποβάλλει ερωτήματα στο σύστημα και να καθορίζει πώς θα εμφανιστούν τα αποτελέσματα Αυτό οδήγησε στις γλώσσες 4 ης γενιάς, όπου ο χρήστης μπορεί να υποβάλλει ερωτήματα στο σύστημα και να καθορίζει πώς θα εμφανιστούν τα αποτελέσματα

Γλώσσες τέταρτης γενιάς Οι γλώσσες τέταρτης γενιάς σχεδιάστηκαν για συγκεκριμένο σκοπό, όπως η ανάπτυξη εμπορικού λογισμικού. Οι γλώσσες τέταρτης γενιάς σχεδιάστηκαν για συγκεκριμένο σκοπό, όπως η ανάπτυξη εμπορικού λογισμικού. Αναπτύχθηκαν μετά τη διάδοση των γλωσσών τρίτης γενιάς που είχαν βελτιώσει τη διαδικασία ανάπτυξης λογισμικού Αναπτύχθηκαν μετά τη διάδοση των γλωσσών τρίτης γενιάς που είχαν βελτιώσει τη διαδικασία ανάπτυξης λογισμικού Παρά τις βελτιώσεις, ο προγραμματισμός παρέμενε μια κουραστική, αργή και επιρρεπής στα λάθη διαδικασία Παρά τις βελτιώσεις, ο προγραμματισμός παρέμενε μια κουραστική, αργή και επιρρεπής στα λάθη διαδικασία Πολύ γρήγορα ο χρόνος που χρειαζόταν για την κατασκευή του λογισμικού ξεπέρασε το διαθέσιμο χρόνο που είχαν οι προγραμματιστές Πολύ γρήγορα ο χρόνος που χρειαζόταν για την κατασκευή του λογισμικού ξεπέρασε το διαθέσιμο χρόνο που είχαν οι προγραμματιστές Βάσει της συσσωρευμένης εμπειρίας, φάνηκε ότι κάποιες εφαρμογές μπορούσαν να γίνουν πιο γενικές με το να ενσωματωθούν γλώσσες προγραμματισμού Βάσει της συσσωρευμένης εμπειρίας, φάνηκε ότι κάποιες εφαρμογές μπορούσαν να γίνουν πιο γενικές με το να ενσωματωθούν γλώσσες προγραμματισμού Όλες οι γλώσσες τέταρτης γενιάς σχεδιάστηκαν για να ελαττώσουν την προσπάθεια προγραμματισμού, το χρόνο ανάπτυξης του λογισμικού και το κόστος της ανάπτυξης του λογισμικού Όλες οι γλώσσες τέταρτης γενιάς σχεδιάστηκαν για να ελαττώσουν την προσπάθεια προγραμματισμού, το χρόνο ανάπτυξης του λογισμικού και το κόστος της ανάπτυξης του λογισμικού Δεν επιτυγχάνουν πάντα το στόχο τους καθώς πολλές φορές παράγουν άκομψο κώδικα και κώδικα που είναι δύσκολο να συντηρηθεί Δεν επιτυγχάνουν πάντα το στόχο τους καθώς πολλές φορές παράγουν άκομψο κώδικα και κώδικα που είναι δύσκολο να συντηρηθεί Ανάλογα με το πρόβλημα, η χρήση τους μπορεί να είναι πολύ επιτυχημένη Ανάλογα με το πρόβλημα, η χρήση τους μπορεί να είναι πολύ επιτυχημένη

SQL Σήμερα είναι η πιο διαδεδομένη γλώσσα για να δημιουργούμε, τροποποιούμε και ανακτούμε δεδομένα από Σχεσιακά Συστήματα Διαχείρισης Βάσεων Δεδομένων Σήμερα είναι η πιο διαδεδομένη γλώσσα για να δημιουργούμε, τροποποιούμε και ανακτούμε δεδομένα από Σχεσιακά Συστήματα Διαχείρισης Βάσεων Δεδομένων SELECT ENAME, JOB, SAL FROM EMPLOYES WHERE DEPTNO=20 AND SAL > 1500; SELECT ENAME, JOB, SAL FROM EMPLOYES WHERE DEPTNO=20 AND SAL > 1500;

Ταξινόμηση γλωσσών προγραμματισμού Διαδικασιακές (procedural) Διαδικασιακές (procedural) C, Pascal C, Pascal Συναρτησιακές (functional) Συναρτησιακές (functional) LISP LISP Μη διαδικασιακές (non procedural) Μη διαδικασιακές (non procedural) PROLOG PROLOG Αντικειμενοστραφείς (object-oriented) Αντικειμενοστραφείς (object-oriented) C++, Java C++, Java Ερωτημάτων (query) Ερωτημάτων (query) SQL SQL

Ταξινόμηση γλωσσών προγραμματισμού Γλώσσες γενικής χρήσης Γλώσσες γενικής χρήσης Basic, Pascal, C, C++, Java Basic, Pascal, C, C++, Java Γλώσσες επιστημονικής κατεύθυνσης Γλώσσες επιστημονικής κατεύθυνσης FORTRAN FORTRAN Γλώσσες εμπορικής κατεύθυνσης Γλώσσες εμπορικής κατεύθυνσης COBOL COBOL Γλώσσες προγραμματισμού συστημάτων Γλώσσες προγραμματισμού συστημάτων C, C++ C, C++ Γλώσσες τεχνητής νοημοσύνης Γλώσσες τεχνητής νοημοσύνης LISP, PROLOG LISP, PROLOG Γλώσσες ειδικής χρήσης Γλώσσες ειδικής χρήσης

Ποια είναι η καλύτερη γλώσσα προγραμματισμού; Μία γλώσσα προγραμματισμού που να είναι αντικειμενικά καλύτερη από τις άλλες δεν υπάρχει, ούτε πρόκειται να υπάρξει! Μία γλώσσα προγραμματισμού που να είναι αντικειμενικά καλύτερη από τις άλλες δεν υπάρχει, ούτε πρόκειται να υπάρξει! Η επιλογή της γλώσσας εξαρτάται από Η επιλογή της γλώσσας εξαρτάται από το είδος της εφαρμογής το είδος της εφαρμογής το υπολογιστικό περιβάλλον το υπολογιστικό περιβάλλον τα διαθέσιμα προγραμματιστικά περιβάλλοντα τα διαθέσιμα προγραμματιστικά περιβάλλοντα τις γνώσεις του προγραμματιστή τις γνώσεις του προγραμματιστή