`Πανεπιστήμιο Πατρών Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής Μεταπτυχιακό Πρόγραμμα Σπουδών «Επιστήμη & Τεχνολογία Υπολογιστών»

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "`Πανεπιστήμιο Πατρών Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής Μεταπτυχιακό Πρόγραμμα Σπουδών «Επιστήμη & Τεχνολογία Υπολογιστών»"

Transcript

1 `Πανεπιστήμιο Πατρών Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής Μεταπτυχιακό Πρόγραμμα Σπουδών «Επιστήμη & Τεχνολογία Υπολογιστών» Διπλωματική Εργασία Μελέτη των διερμηνευτών (scripting languages) που χρησιμοποιούνται στο Παγκόσμιο Ιστό, το Διαδίκτυο, την Εικονική πραγματικότητα και σε σχετικές τεχνολογίες και ανάπτυξη πιλοτικού συστήματος δικτυοκεντρικού διερμηνευτή. ΨΙΣΤΑΚΗΣ Ε. ΙΩΣΗΦ Α.Μ. 448 Eπιβλέπων Καθηγητής: Ε. Πολυχρονόπουλος Πάτρα, Ιανουάριος 2009

2 ΕΚΔΟΣΗ

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

4 4

5 Ευχαριστίες Θα ήθελα να ευχαριστήσω θερμά όλους όσους συνέβαλλαν και υποστήριξαν με τον τρόπο τους τη συγγραφή της παρούσας διπλωματικής εργασίας. Πιο συγκεκριμένα, θα ήθελα να ευχαριστήσω τους καθηγητές μου, κ. Θεόδωρο Παπαθεοδώρου και κ. Ελευθέριο Πολυχρονόπουλο για τη πολύτιμη και πολυεπίπεδη συνεισφορά τους στη συγγραφή της παρούσας εργασίας: οι συμβουλές τους, οι έγκυρες παρατηρήσεις τους και η υπεύθυνη καθοδήγησή τους ως προς την ιδέα, την υλοποίηση και την παρουσίαση της εργασίας υπήρξαν πραγματικά πολύτιμες και δίχως εκείνες, η παρούσα εργασία δε θα ήταν ολοκληρωμένη. Ευχαριστίες αρμόζουν και στον καθηγητή κ. Λυκοθανάση Σπυρίδων για τη κριτική και τα σχόλια του, που οδήγησαν σε μια τυπικά και επιστημονικά αρτιότερη εργασία. Τέλος θα ήθελα να εκφράσω τις θερμές ευχαριστίες μου στο συνεργάτη μου Νίκο Βασιλείου, για τη συνεισφορά του στη παρούσα εργασία: εκτός της τεχνικής καθοδήγησης που μου παρείχε, το υπο έρευνα σύστημα χρησιμοποιεί μια ευέλικτη, μινιμαλιστική βιβλιοθήκη για λίστες και αλφαριθμητικά που ο ίδιος ανέπτυξε. Δίχως τη βιβλιοθήκη αυτή, η έρευνά μου θα ήταν σημαντικά πιο επίπονη. Επίσης, γίνεται χρήση και της open-source βιβλιοθήκης sckt, του Ivan Gagis. Τον ευχαριστώ και τον συγχαίρω για τη συνεισφορά του στη διεθνή προγραμματιστική κοινότητα. Ψιστάκης Ιωσήφ 5

6 Περιεχόμενα 1 ΕΙΣΑΓΩΓΗ Η ΑΛΛΗΛΕΠΙΔΡΑΣΗ ΤΟΥ ΧΡΗΣΤΗ ΜΕ ΤΟ ΔΙΑΔΙΚΤΥΟ ΟΙ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΣΗΜΕΡΑ ΟΙ ΚΥΡΙΕΣ ΤΕΧΝΟΛΟΓΙΕΣ ΑΝΑΠΤΥΞΗΣ ΙΣΤΟΣΕΛΙΔΩΝ ΤΟ ΥΠΑΡΧΟΝ ΚΑΤΑΚΕΡΜΑΤΙΣΜΕΝΟ ΜΟΝΤΕΛΟ ΑΝΑΠΤΥΞΗΣ ΣΤΟΧΟΣ ΤΗΣ ΕΡΓΑΣΙΑΣ ΜΕΛΕΤΗ ΤΗΣ ΥΠΑΡΧΟΥΣΑΣ ΤΕΧΝΟΛΟΓΙΑΣ SERVER SIDE INTERPRETERS: PHP Σχεδιαστική Φιλοσοφία Σύνταξη και χαρακτηριστικά Παραδείγματα κώδικα JAVA & JAVA SERVER PAGES Σχεδιαστική Φιλοσοφία Σύνταξη και χαρακτηριστικά Java Server Pages Παράδειγμα κώδικα ASP & ASP.NET Σχεδιαστική Φιλοσοφία και Συντακτικό Το.Net framework και η καινοτομική αρχιτεκτονική της asp.net Asp.Net: αρχιτεκτονική και συντακτικό JAVASCRIPT Σχεδιαστική φιλοσοφία Σύνταξη και χαρακτηριστικά FLASH & FLEX Γραφικές και πολυμεσικές δυνατότητες Ο προγραμματισμός στο flash Actionscript: Σύνταξη & παραδείγματα H ΤΕΧΝΟΛΟΓΙΑ AJAX Περιορισμοί του http πρωτόκολλου Ασύγχρονη διαδικασία GAME SCRIPTING & VIRTUAL REALITY ΣΥΜΠΕΡΑΣΜΑΤΑ ΠΡΟΤΕΙΝΟΜΕΝΟ ΜΟΝΤΕΛΟ ΑΝΑΠΤΥΞΗΣ ΣΤΟΧΟΙ ΚΑΙ ΛΕΙΤΟΥΡΓΙΚΟΤΗΤΑ ΠΡΟΤΕΙΝΟΜΕΝΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗ Μια network-aware γλώσσα προγραμματισμού Φιλοσοφία Ειδικά αρχιτεκτονικά στοιχεία ΣΤΟΙΧΕΙΑ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ ΑΝΑΛΥΤΙΚΑ Σχεδιαστική φιλοσοφία του μετακώδικα

7 3.3.2 Στοιχεία του μετακώδικα Network scoping Μεταγλωττιστής Μηχανή εκτέλεσης Διακομιστής μετακώδικα & Διαχείριση συνόδου Συγχρονισμός δεδομένων ΣΥΝΤΑΚΤΙΚΟ Γενικά Βασικά συντακτικά στοιχεία Ορισμοί τύπων και αντικειμένων ΠΙΛΟΤΙΚΗ ΥΛΟΠΟΙΗΣΗ ΣΤΟΧΟΙ ΤΗΣ ΠΙΛΟΤΙΚΗΣ ΥΛΟΠΟΙΗΣΗΣ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΜΕΤΑΚΩΔΙΚΑΣ: ΔΟΜΗ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΜΕΤΑΤΡΟΠΗ ΣΕ ΜΕΤΑΚΩΔΙΚΑ: CELL-BASED PARSING Διαδικασία Αφαίρεση δεδομένων: συντακτικά κελιά Μεταγλώττιση και κελιά μετακώδικα ΥΛΟΠΟΙΗΣΗ ΔΥΝΑΜΙΚΟΥ ΠΙΝΑΚΑ ΣΤΟΙΒΑΣ ΤΟ ΣΥΣΤΗΜΑ ΕΚΤΕΛΕΣΗΣ ΛΕΠΤΟΜΕΡΕΙΕΣ ΤΗΣ ΜΕΤΑΓΛΩΤΤΙΣΗΣ Προτεραιότητα τελεστών Μετατροπή συντακτικών κελιών σε κελιά μετακώδικα Έλεγχος παραμέτρων (εισόδων / εξόδων) κατά τη μεταγλώττιση Μπλοκ κώδικα Κώδικας μεταγλωττιστή και χρήση του συστήματος Παράδειγμα εκτέλεσης ΒΙΒΛΙΟΓΡΑΦΙΑ

8 1 Εισαγωγή 1.1 Η αλληλεπίδραση του χρήστη με το Διαδίκτυο Ο παγκόσμιος ιστός (world wide web) είναι ίσως ο τομέας του διαδικτύου που παρουσιάζει τις εντυπωσιακότερες αλλαγές. Πράγματι, ξεκινώντας από απλές σελίδες υπερ-κειμένου, είναι πλέον σε θέση να υποστηρίζει πολύπλοκες πολυμεσικές, πολυχρηστικές εφαρμογές όπως το facebook και το youtube. Συγκρίνοντας παρόν με παρελθόν, παρατηρούμε ότι οι υπολογιστικές αρχιτεκτονικές έχουν αλλάξει εντυπωσιακά, τα μοντέλα αλληλεπίδρασης με το χρήστη έχουν επαναπροσδιοριστεί, εντούτοις η βάση του παγκόσμιου ιστού παραμένει σταθερή: Για να υποστηρίξει την εκρηκτική εξάπλωση της τεχνολογίας, η βάση αυτή επεκτάθηκε προς πάσα κατεύθυνση με ετερόκλητα, άναρχα στοιχεία και ανταγωνιστικές τεχνολογίες. Με κριτήριο το μοντέλο αλληλεπίδρασης με το χρήστη και τις υποστηριζόμενες τεχνολογίες, μπορούμε να εντοπίσουμε τρία διακριτά στάδια στην ανάπτυξη του Παγκόσμιου Ιστού (1): 1. Αρχικά ο παγκόσμιος ιστός αποτελείται από στατικές σελίδες, οι οποίες κατά κύριο λόγο περιέχουν υπερκείμενο και διανθίζονται σταδιακά από απλά γραφικά, κινούμενες εικόνες και ήχους. Με την έλευση του Macromedia flash, οι σελίδες αποκτούν και κινούμενα γραφικά. 2. Ακολούθως ένα μεγάλο μέρος του παγκόσμιου ιστού γίνεται δυναμικό, δηλαδή το περιεχόμενο που προβάλλεται στο χρήστη παράγεται από κάποιο πρόγραμμα στον εξυπηρετητή ανάλογα με τις δράσεις του χρήστη. Γλώσσες όπως η php επιτρέπουν στους προγραμματιστές να αναπτύσσουν ολόκληρα προγράμματα που παράγουν δυναμικό περιεχόμενο, χωρίς να γνωρίζουν την υπολογιστική αρχιτεκτονική του εξυπηρετητή. Νέες εφαρμογές όπως τα blogs και τα forums κάνουν την εμφάνισή τους. 8

9 3. Η εξέλιξη αυτή φέρνει τα web applications και web services. Η αλληλεπίδραση της ιστοσελίδας με το χρήστη αλλάζει σημαντικά ώστε να προσομοιώνει παραθυρική εφαρμογή. Αυτό γίνεται εφικτό με τη χρήση κώδικα που τρέχει στον υπολογιστή του χρήστη, που επιτρέπει τη δυναμική ανταλλαγή πληροφοριών από τον εξυπηρετητή. Ιστορικά λοιπόν, ο Παγκόσμιος Ιστός ξεκίνησε ως σύνολο στατικών σελίδων υπερκειμένου. Επεκτάθηκε με την εισαγωγή ενός επιπέδου προγραμματισμού στον εξυπηρετητή ώστε οι σελίδες να παράγονται δυναμικά, ενώ πρόσφατα εισήχθη (ή ακριβέστερα, συστηματοποιήθηκε) ένα ακόμα επίπεδο προγραμματισμού στον υπολογιστήπελάτη, ώστε πλέον να μιλάμε για διαδικτυακές εφαρμογές αντί για ιστοσελίδες. Κάθε μια από τις παραπάνω φάσεις συνιστά και μια επανάσταση στο τρόπο που οι ιστοσελίδες αλληλεπιδρούν με τους χρήστες τους. Επίσης,, κάθε μια από τις παραπάνω φάσεις ανάπτυξης πραγματώθηκε με την ωρίμανση και συστηματοποίηση ενός συνόλου τεχνολογιών και γλωσσών προγραμματισμού. Έτσι από την HTML περάσαμε στις server-side γλώσσες και την XHTML ενώ πρόσφατα με το AJAX συστηματοποιείται και η χρήση javascript(2)(3) ενώ προτείνονται ειδικές γλώσσες (πχ OWL) για την ανταλλαγή δεδομένων μεταξύ ιστοτόπων. Αφού η εξέλιξη του διαδικτύου είναι συνδεδεμένη με τις γλώσσες προγραμματισμού, σκόπιμο κρίνεται να εξετάσουμε τις σχετικές τεχνολογίες. 1.2 Οι γλώσσες προγραμματισμού σήμερα Οι γλώσσες προγραμματισμού θα μπορούσαν να χωριστούν σε τρείς κύριες κατηγορίες: 1. Γλώσσες με μεταφραστή (compilers). Κύριο χαρακτηριστικό τους είναι η off-line μετάφραση του πηγαίου κώδικα σε κώδικα άμεσα εκτελέσιμο από μια υπολογιστική μηχανή. Παράγεται δηλαδή κατά τη μετάφραση ένα εκτελέσιμο αρχείο από τη μηχανή, που αποτελεί και το πρόγραμμα. Αντιπρόσωποι αυτών των γλωσσών είναι η C, η Pascal αλλά και η Java (4). 2. Γλώσσες σήμανσης (markup languages), όπως η XML και η HTML, οι οποίες περιγράφουν σε μια καλώς ορισμένη δομή χαρακτηριστικά ή ιδιότητες ενός αντικειμένου. 3. Γλώσσες με διερμηνευτή (interpreter) που έχουν επικρατήσει να καλούνται και scripting-γλώσσες. Σε αυτές τις γλώσσες ο πηγαίος κώδικας διερμηνεύεται σε πραγματικό χρόνο από τον διερμηνευτή, ή μεταφράζεται σε αντικειμενικό κώδικα διαφανώς προς το χρήστη, δηλαδή δεν παράγεται κάποιο εκτελέσιμο αρχείο από τη διαδικασία. Ας σημειωθεί εδώ ότι σε πολλές περιπτώσεις παρέχεται η δυνατότητα αποθήκευσης του αντικειμενικού κώδικα σε ένα εκτελέσιμο αρχείο (για παράδειγμα στην Lightwave Scripting Language) (5), γεγονός που κάνει δυσδιάκριτα τα όρια μεταφραστή και διερμηνευτή. Στο εξής θα αναφερόμαστε στις γλώσσες με διερμηνευτή ως scripting languages και στα προγράμματα μιας τέτοιας γλώσσας ως scripts. Ο κόσμος των διερμηνευτών θα μπορούσε να χαρακτηριστεί στάσιμος μέχρι την έλευση του Διαδικτύου και των σχετικών εφαρμογών(1). Πράγματι, παραλλαγές γλωσσών με μεταγλωττιστή όπως οι C και Pascal χρησιμοποιούνταν κατά κόρον για την ανάπτυξη εφαρμογών σε εταιρικά και παραθυρικά περιβάλλοντα. Διερμηνευτές (interpreters) χρησιμοποιούνταν κυρίως για βοηθητικές εργασίες (shell scripts, automation scripts). Η βελτιωμένη απόδοση του μεταγλωττισμένου κώδικα αλλά και η σχετική αντοχή του σε τεχνικές reverse engineering είναι πιθανότατα οι κύριοι λόγοι για τη κυριαρχία των μεταγλωττιστών. Η επέκταση του διαδικτύου ωστόσο έφερε αλλαγές στα μοντέλα ανάπτυξης. Ένα σημαντικό μερίδιο εφαρμογών πλέον εκτελείται σε ετερογενή περιβάλλοντα αγνώστου αρχιτεκτονικής, ενώ η πλειοψηφία των (δυναμικών) δικτυακών ιστοσελίδων φιλοξενούνται σε κάποιον εξυπηρετητή μιας εταιρίας παροχής υπηρεσιών διαδικτύου. Συνεπώς τόσο οι δυναμικές ιστοσελίδες όσο και οι διαδικτυακές εφαρμογές, είναι απαραίτητο να είναι ανεξάρτητες αρχιτεκτονικής και ευέλικτες στην ανάπτυξη. Νέες γλώσσες προγραμματισμού, βασισμένες στο μοντέλο του 9

10 διερμηνευτή σχεδιάζονται με στόχο να υποστηρίξουν την ανάπτυξη τέτοιων εφαρμογών. Δεδομένου ότι η υπολογιστική ισχύς επιτρέπει πλέον τη δημιουργία διερμηνευτών υψηλής πολυπλοκότητας, γλώσσες όπως η Php και η Asp γίνονται δημοφιλείς. Στους περισσότερους διερμηνευτές σήμερα, ο πηγαίος κώδικας μετατρέπεται (μεταγλωττίζεται) αυτόματα σε ενδιάμεσο κώδικα (byte-code), ο οποίος εκτελείται από μια ιδεατή μηχανή. Η Ιδεατή μηχανή μεταφέρεται σε κάθε υποστηριζόμενη αρχιτεκτονική, επιτρέποντας στον ενδιάμεσο κώδικα να είναι ανεξάρτητος αρχιτεκτονικής. Γλώσσες όπως η Php, η Java αλλά και η Visual Basic παλαιότερα, ακολουθούν αυτό το παράδειγμα(4). Λόγω της ανάγκης για ανεξαρτησία από την υπολογιστική αρχιτεκτονική αλλά και την αυξημένη απόδοση, προτιμάται η χρήση byte-code από τη δημιουργία εγγενούς κώδικα. Ας σημειωθεί εδώ ότι εκτός από το διαδίκτυο οι διερμηνευτές βρίσκουν εφαρμογή και σε άλλες περιπτώσεις: Οι περισσότερες σύγχρονες εφαρμογές διαθέτουν ένα σύστημα αυτοματοποίησης (scripting system) το οποίο επιτρέπει σε προχωρημένους χρήστες να επεκτείνουν τις λειτουργίες τους γράφοντας μικρά προγράμματα (scripts). Η φιλοσοφία αυτή βρίσκει εφαρμογή και στη ψηφιακή διασκέδαση, αφού τα περισσότερα βιντεοπαιχνίδια χρησιμοποιούν διερμηνευτές (πχ unreal script και Lua) για να περιγράψουν δυναμικά τόσο τα σενάρια παιχνιδιού όσο και στοιχεία λογικής (6)(7). 1.3 Οι κύριες τεχνολογίες ανάπτυξης ιστοσελίδων Η ανάπτυξη του παγκόσμιου ιστού έφερε και ένα σύνολο νέων τεχνολογιών ανάπτυξης εφαρμογών, το οποίο χαρακτηρίζεται από έντονη ετερογένεια. Για παράδειγμα, μια μέση διαδικτυακή εφαρμογή απαιτεί τη γνώση τουλάχιστον τριών γλωσσών για τη συγγραφή της (8)(9)(10): Php, Asp, Jsp ή παρόμοια server-side γλώσσα για τη δημιουργία δυναμικού περιεχομένου από τη μεριά του εξυπηρετητή, HTML (XML, CSS) για τη περιγραφή του περιεχομένου που θα δείξει ο φυλλομετρητής (web browser) Javascript για τη δυναμική παρουσίαση και διαχείριση του περιεχομένου από τη μεριά του πελάτη. Ας σημειωθεί εδώ ότι κάθε browser φέρει τι δική του ιδιαίτερη υλοποίηση της γλώσσας, με αποτέλεσμα να απαιτείται σημαντική αφαίρεση (abstraction) κατά τον προγραμματισμό, ώστε να υποστηριχθούν όλοι οι γνωστοί web browsers. Σε πραγματικές διαδικτυακές εφαρμογές χρησιμοποιούνται περισσότερες τεχνολογίες και γλώσσες, όπως για παράδειγμα οι Flash/actionscript για δυναμικά γραφικά και video και η SQL για διασύνδεση με βάσεις δεδομένων. Εκτενής αναφορά στις ιδιαιτερότητες κάθε γλώσσας γίνεται στα επόμενα κεφάλαια. 1.4 Το υπάρχον κατακερματισμένο μοντέλο ανάπτυξης Παρατηρούμε ότι η συντριπτική πλειοψηφία των παραπάνω τεχνολογιών χρησιμοποιείται για την υλοποίηση clientserver εφαρμογών και τη μεταφορά δεδομένων μέσω δικτύου. Ειδικά στη περίπτωση των διαδικτυακών εφαρμογών, παρατηρείται μια πολύπλοκη και ετερογενής συμμετοχή διαφορετικών τεχνολογιών κατά τη συγγραφή της εφαρμογής (8)(1). Πράγματι, στη συνήθη περίπτωση, ο προγραμματιστής καλείται να χρησιμοποιήσει μια server-side scripting language (php, jsp, asp), η οποία με χρήση αλφαριθμητικών θα παράγει σε μορφή κειμένου τον πηγαίο κώδικα μιας άλλης γλώσσας (Html, Javascript). Ουσιαστικά, ο πηγαίος κώδικας της εφαρμογής στον υπολογιστή-πελάτη βρίσκεται 10

11 εμφωλευμένος μέσα στις διάφορες ρουτίνες του κώδικα της εφαρμογής στον server. Το μοντέλο αυτό, παρόλο που χαρακτηρίζεται από ευελιξία, όπως θα δειχθεί παρακάτω, πάσχει από σοβαρά προβλήματα αναγνωσιμότητας, απόδοσης, συντήρησης του κώδικα αλλά και επεκτασιμότητας. Ας σημειωθεί εδώ ότι οι περισσότερες server-side γλώσσες δίνουν την δυνατότητα να ενσωματωθούν μέσα σε αρχεία.html ή xml, τα οποία «φιλτράρονται» αυτόματα από το διερμηνευτή πριν προβληθούν στο χρήστη (8). Παρ ότι βολική, αυτή η δυνατότητα επιτρέπει στους προγραμματιστές να κρύβουν κομμάτια κώδικα σε περισσότερα αρχεία, δυσχεραίνοντας περισσότερο τη διαχείρισή του. Το κύριο ζήτημα που ανακύπτει στο υπάρχον μοντέλο ανάπτυξης διαδικτυακών εφαρμογών είναι ότι χρησιμοποιείται ένα ετερογενές σύνολο από γενικές, δίκτυο-αγνωστικές γλώσσες για να υλοποιηθούν καθαρά δικτυακές εφαρμογές (client-server). Μάλιστα, για να διατηρηθεί η προς τα πίσω συμβατότητα με το πρωτόκολλο http, οι περισσότερες server-side γλώσσες επικεντρώνονται στη διαχείριση αλφαριθμητικών ώστε να παράγουν τον κώδικα (html, javascript κλπ) που θα παρουσιαστεί στο πελάτη. Ένα παράδειγμα των προβλημάτων που αυτή η αντιμετώπιση φέρει, είναι η υλοποίηση των συνόδων (sessions) στις server-side γλώσσες (11)(8). Ως γνωστόν, το πρωτόκολλο http είναι stateless, δηλαδή δεν ενδιαφέρεται για το ιστορικό των συνδέσεων ενός πελάτη με τον εξυπηρετητή. Εντούτοις οι περισσότερες εφαρμογές απαιτούν ο χρήστης να περιηγηθεί από πολλές html σελίδες και ο εξυπηρετητής να διατηρεί στοιχεία τόσο για το χρήστη όσο και για τις σελίδες που εκείνος επισκέφτηκε. Για να αντιμετωπιστεί το πρόβλημα και να διατηρηθεί η προς τα πίσω συμβατότητα, αναπτύχθηκε η έννοια της «συνόδου» (browsing session) ως το σύνολο των σελίδων που διαβάζει ένας χρήστης κατά την επίσκεψη του στον ιστοτόπο. Οι browsers εισήγαγαν τα cookies ως μονάδες τοπικής αποθήκευσης δεδομένων που αντιστοιχούν σε μια σύνοδο. Στην έκδοση 2, η γλώσσα PHP δεν διέθετε κάποιο μηχανισμό για υποστήριξη συνόδου πέρα από κάποιες ρουτίνες για διαχείριση cookies (11),(1). Αυτό έκανε δυσχερή και άκομψη τη συγγραφή διαδικτυακών εφαρμογών αφού επαφιόταν στο προγραμματιστή να διαχειριστεί τα cookies μιας συνόδου. Με την υλοποίηση ρουτινών για την υποστήριξη συνόδων, η ανάπτυξη τέτοιον εφαρμογών έγινε ευκολότερη, καθώς ένα επίπεδο αφαίρεσης αναλάμβανε την αυτόματη διαχείριση (θέση και ανάγνωση) όλων των σχετικών cookies ώστε να υπάρχει συνοχή από σελίδα σε σελίδα σε μια σύνοδο. Παρ όλα αυτά, το γεγονός ότι κάθε σελίδα θεωρείται αυτόνομη και όχι μέρος μιας συνόδου, τόσο από το http όσο και από τη php, αναγκάζει το προγραμματιστή να συμπεριλάβει ειδικό κώδικα στις σελίδες που αναπτύσσει. Άλλες γλώσσες επιτρέπουν γρηγορότερη ανάπτυξη διαδικτυακών εφαρμογών ακριβώς λόγω του καλύτερου συστήματος αφαίρεσης που διαθέτουν. Αν λάβουμε υπ όψη την εκτενή χρήση javascript και τα ασύγχρονα μοντέλα που χρησιμοποιούν οι τρέχουσες διαδικτυακές εφαρμογές γίνεται προφανής η ανάγκη για ένα απλούστερο, περισσότερο φιλικό στο προγραμματιστή περιβάλλον ανάπτυξης εφαρμογών. Συνοψίζοντας, τα κύρια μειονεκτήματα που εντοπίζονται στο υπάρχον μοντέλο ανάπτυξης είναι τα ακόλουθα Έντονα ετερογενές περιβάλλον: Εμφώλευση κώδικα μιας γλώσσας στο πηγαίο κώδικα μιας άλλης. Αυτή η τεχνική δυσχεραίνει την αναγνωσιμότητα και διαχείριση του κώδικα αλλά και τον εντοπισμό λαθών. Δυσκολία προτυποποίησης και συστηματοποίησης της συγγραφής κώδικα: Χάριν της προς τα πίσω συμβατότητας και λόγω ασυμβατοτήτων μεταξύ τεχνολογιών, ο προγραμματιστής αφιερώνει το σημαντικότερο ποσοστό του χρόνου του για να διαχειριστεί ασυμβατότητες μεταξύ λογισμικού ή να υποστηρίξει παλαιές τεχνολογίες (πχ ανάγκη χρήσης διαφορετικού javascript κώδικα για κάθε τύπο browser) Μη-ειδικευμένα εργαλεία: Η χρήση γλωσσών γενικής χρήσεως που δεν έχουν σχεδιαστεί για το client-server μοντέλο, δυσχεραίνει την ανάπτυξη σχετικών εφαρμογών. Κατακερματισμός τεχνολογιών: Το μεγαλύτερο μέρος της προσπάθειας του προγραμματιστή δεν είναι η ανάπτυξη αυτής καθαυτής της εφαρμογής, αλλά η υποστήριξη όλων των ετερογενών προτύπων και 11

12 τεχνολογιών στο κώδικά του. Αναγκάζεται να εντοπίζει και να επιλύει προβλήματα που δημιουργεί όχι ο κώδικας του, αλλά οι ασυμβατότητες των ετερογενών τεχνολογιών και η ελλιπής υποστήριξη τους από τους φυλλομετρητές (πχ διαφορετική σημειογραφία μεταξύ εκδόσεων της javascript ή διαφορετική συμπεριφορά συγκεκριμένων stylesheet tags). 1.5 Στόχος της εργασίας Έχοντας υπ όψη τη παραπάνω ανάλυση, η παρούσα εργασία αναλύει τις εγκαθιδρυμένες τεχνολογίες και μεθοδολογίες που χρησιμοποιούνται σήμερα στον προγραμματισμό διαδικτυακών εφαρμογών. Στην ανάλυση αυτή εξετάζονται οι δημοφιλέστερες γλώσσες προγραμματισμού και αναλύονται οι ιδιαιτερότητες της κάθε μίας. Ακολούθως, ερευνάται ένα εναλλακτικό μοντέλο ανάπτυξης διαδικτυακών εφαρμογών, σε μια προσπάθεια να ομογενοποιηθεί το περιβάλλον προγραμματισμού. Προτείνονται σχετικές μεθοδολογίες και δομές. Παράλληλα ερευνώνται τα χαρακτηριστικά Τέλος, περιγράφεται τα χαρακτηριστικά και οι απαιτήσεις μιας γλώσσας που θα μπορούσε να υποστηρίξει το προτεινόμενο ομογενοποιημένο μοντέλο ανάπτυξης. Ο πυρήνας της γλώσσας αυτής παρουσιάζεται αναλυτικά ενώ αναπτύσσεται ένα πρωτότυπο. 12

13 2 Μελέτη της υπάρχουσας τεχνολογίας Στο παρόν κεφάλαιο παρουσιάζονται οι κυριότερες τεχνολογίες και μέθοδοι για την ανάπτυξη διαδικτυακών εφαρμογών. Αναλύεται η φιλοσοφία κάθε 2.1 Server side interpreters: Php Οι Php είναι μια από τις πιο διαδεδομένες γλώσσες προγραμματισμού δυναμικών ιστοσελίδων. Πρόκειται για διερμηνευτές υψηλής απόδοσης που συνήθως διασυνδέονται με το λογισμικό web server ως αρθρώματα, αλλά μπορούν να εκτελεστούν και ανεξάρτητα Σχεδιαστική Φιλοσοφία Η Php ξεκίνησε ως ένα σετ εργαλείων CGI (common gateway interface) με στόχο τη συγγραφή προσωπικών ιστοσελίδων (αρχικά το όνομα php σήμαινε Personal Home Page Tool). (1)(11)Την πρώτη της έκδοση ανέπτυξε ως βοηθητικό εργαλείο ο Rasmus Ledorf. Αργότερα την διένειμε ως ανοιχτό κώδικα, ενώ παράλληλα άλλαξε το όνομα σε Php Hypertext Preprocessor Ο γλωσσικός αναλυτής (parser) υπέστη σημαντικές αλλαγές από τους Zeev Suraski και Andi Gutmans, οι οποίοι, στην έκδοση 3, άλλαξαν την αρχιτεκτονική ώστε ο κώδικας να μετατρέπεται on-the-fly σε byte-code και να εκτελείται από μια ιδεατή μηχανή (virtual machine), τη Zend Engine. Αργότερα οι Suraski και Gutmans ίδρυσαν την Zend Technologies, η οποία εκμεταλλεύεται και εμπορικά τη Zend engine ( Παράλληλα, η Php αναπτύσσεται στα πλαίσια λογισμικού ανοιχτού κώδικα από το Php group. 13

14 Η Php μπορεί να συνδεθεί ως άρθρωμα με τους περισσότερους web server, να διασυνδεθεί Μέσω Cgi (Common Gateway Interface) ή και να κληθεί από τη γραμμή εντολών για να εκτελέσει αυτόνομα και τοπικά ένα Php πρόγραμμα. Για τη χρήση σε περιβάλλον web server, η διασύνδεση μέσω cgi θεωρείται ασφαλέστερη. Όπως στις περισσότερες server side γλώσσες, η php μπορεί να εντεθεί σε κώδικα html. Ο λεκτικός αναλυτής αναγνωρίζει ως πηγαίο κώδικα μόνο το κείμενο που βρίσκεται εντός των αναγνωριστικών <?php και?> (ή συντομογραφικά <? και?>). Εναλλακτικά μπορούν να χρησιμοποιηθούν και τα html tags <script language="php"> και </script>. Το κείμενο εκτός των php tags δεν αναγνωρίζεται από τον αναλυτή και αντιγράφεται αυτούσιο στην έξοδο (standard output). Αυτό επιτρέπει την εμφώλευση κώδικα php σε αρχεία html ή οποιαδήποτε αρχείο κειμένου Σύνταξη και χαρακτηριστικά Το συντακτικό της php θυμίζει τη γλώσσα C (η οποία και χρησιμοποιήθηκε για την ανάπτυξη της php). Όπως με τους περισσότερους διερμηνευτές, οι συντακτικοί κανόνες είναι πιο χαλαροί από τους αντίστοιχους ενός μεταφραστή, έτσι (11): Οι εκφράσεις (clauses) μπορούν να λήγουν με ελληνικό ερωτηματικό (;) χωρίς αυτό να είναι υποχρεωτικό Οι μεταβλητές δεν είναι ανάγκη να δηλώνονται αυστηρά Τα ονόματα συναρτήσεων και τάξεων δεν είναι case sensitive. Αντίθετα όμως, τα ονόματα μεταβλητών είναι case sensitive Για ορισμένες συναρτήσεις, επιτρέπεται η κλήση με τον τύπο «συνάρτηση<κενό>έντελο» αντί για «συνάρτηση(έντελο)» Το σύστημα τύπων είναι σημαντικά χαλαρότερο από αυτό της C, δηλαδή γίνονται μετατροπές τύπων (type casting) αυτόματα. Υπάρχει αυτοματοποιημένη διαχείριση αλφαριθμητικών και μεταβλητών Κατά τον ορισμό μιας μεταβλητής δεν είναι απαραίτητο να οριστεί και ο τύπος της, αφού η php μπορεί να τον συμπεράνει από τα συμφραζόμενα. Επίσης, είναι απαραίτητο τα ονόματα μεταβλητών να αρχίζουν με το σύμβολο του δολαρίου ($). Οι αριθμητικές μεταβλητές αποθηκεύονται χρησιμοποιώντας εγγενείς για την εκάστοτε αρχιτεκτονική τύπους (float, integer formats) ενώ υπάρχει εκτενής υποστήριξη δυναμικών αλφαριθμητικών. Η χρήση εγγενών τύπων επιταχύνει σημαντικά την εκτέλεση των php scripts, όμως συνεπάγεται ότι ο ίδιος κώδικας μπορεί να παράγει διαφορετική έξοδο σε διαφορετικές αρχιτεκτονικές. Η έκδοση 3 της γλώσσας εισήγαγε αντικειμενοστραφή στοιχεία (11), όμως η υλοποίηση ήταν προβληματική μέχρι την έκδοση 5 (1), οπότε και το object oriented μοντέλο επανασχεδιάστηκε και υλοποιήθηκε στον πυρήνα (πέρασμα αντικειμένων με αναφορά και όχι με αντιγραφή) Ένα σημαντικό χαρακτηριστικό της php, παρόμοιο με το reflection της java είναι ότι ένα οποιοδήποτε αλφαριθμητικό μπορεί να θεωρηθεί ως όνομα μεταβλητής και να χρησιμοποιηθεί για πρόσβαση στην ομώνυμη μεταβλητή. Αυτό επιτρέπει τον ορισμό σσυσχετιστικών πινάκων, δηλαδή πινάκων που οι θέσεις τους δε περιγράφονται από αυστηρά αριθμητικούς δείκτες. Η σύνταξη $πίνακας[ στοιχείο ] είναι έγκυρη (8). Ένα σύστημα κανόνων για τα αλφαριθμητικά επιτρέπει αυτόματη διαχείριση και επεξεργασία: Για παράδειγμα, έστω ο παρακάτω php κώδικας: 14

15 <?php $var = 3; //ορισμός της μεταβλητής var $str = value=$var ; echo $str;?> Ο κώδικας αυτός θα εκτυπώσει «value=3». Κατά τον ορισμό του αλφαριθμητικού $str, η php θα αντικαταστήσει το υπο-αλφαριθμητικό $var με τη τιμή της αντίστοιχης μεταβλητής. Αν αντίθετα είχαμε ορίσει το $str χρησιμοποιώντας single quotes: <?php $var = 3; //ορισμός της μεταβλητής var $str = value=$var ; echo $str;?> Το πρόγραμμα μας θα τύπωνε «value=$var»! Αλφαρηθμιτικά μπορούν να οριστούν είτε με single quotes είτε με double quotes, ανάλογα αν ο προγραμματιστής επιθυμεί αυτόματη διαχείριση του περιεχομένου τους ή όχι. Η σύνταξη των if, switch, while και for blocks, θυμίζει αυτή της C, ενώ υπάρχουν ιδιώματα για ευκολότερη πρόσβαση σε πίνακες, όπως το foreach block. Για παράδειγμα: <?php $arr = array("one", "two", "three"); //ορισμός μεταβλητής $arr foreach ($arr as $value) { echo "Value: $value<br />\n";?> Όντας πολύ δημοφιλής, η γλώσσα χαρακτηρίζεται από εκτενέστατη και αναλυτική τεκμηρίωση ενώ ένα πλήρες σετ συναρτήσεων υλοποιεί περιφερειακές διεργασίες όπως η σύνδεση με βάσεις δεδομένων, διαχείριση cookies και browsing sessions, ανταλλαγή δεδομένων μέσω πρωτοκόλλου http ή ακόμα και ανάγνωση, αποθήκευση και δημιουργία πολυμεσικών δεδομένων (εικόνες, ήχοι κλπ). Εντούτοις οι δικτυακές επεκτάσεις δεν ενσωματώνονται στις γλωσσικές δομές, αλλά παρέχονται ως συναρτήσεις και καθολικές (global) μεταβλητές Παραδείγματα κώδικα Οι λειτουργίες διαχείρισης μεταβλητών, αλφαριθμητικών και συναρτήσεων είναι απλοποιημένες στη php. Αυτό φαίνεται στο παρακάτω παράδειγμα όπου ορίζονται δύο μεταβλητές (αριθμός και αλφαριθμητικό) και τυπώνονται στην έξοδο μέσω μιας ορισμένης από το χρήστη συνάρτησης: Function.php <?php function prn($arg, $str){ echo 'Example function:\n'; echo ("$str=$arg"); return $arg; $s = "Name"; prn($s,5);?> output: Example function: Name=5 Στο παρακάτω παράδειγμα, η php χρησιμοποιείται για τη δυναμική δημιουργία κώδικα html. Παρατίθενται τo αρχείο hello.php και η έξοδος που εμφανίζεται 15

16 Hello.php <html> <head> <title>php Test</title> </head> <body> <?php echo '<p>hello World</p>';?> </body> </html> output <html> <head> <title>php Test</title> </head> <body> <p>hello World</p> </body> </html> Στο παρακάτω παράδειγμα, χρησιμοποιείται η ένθεση html και κάποιες καθολικές μεταβλητές ώστε να ελεγχθεί αν ο φυλλομετρητής του χρήστη είναι ο Microsoft Internet Explorer. Παρατίθεται η έξοδος του κώδικα όταν αυτός καλείται μέσω internet explorer Html.php <?php if (strpos($_server['http_user_agent'], 'MSIE')!== FALSE) {?> <h3>strpos() must have returned non-false</h3> <p>you are using Internet Explorer</p> <?php else {?> <h3>strpos() must have returned false</h3> <p>you are not using Internet Explorer</p> <?php?> Έξοδος: <h3>strpos() must have returned non-false</h3> <p>you are using Internet Explorer</p> Παρατηρούμε ότι ο αναλυτής διαχειρίζεται σωστά τα κομμάτια κειμένου εκτός του php block, στέλνοντας στην έξοδο το κατάλληλο κομμάτι html κώδικα. 2.2 Java & Java Server Pages Η Java είναι μια πλήρως αντικειμενοστραφής γλώσσα προγραμματισμού με μεταφραστή, που αναπτύχθηκε από τη Sun Microsystems Inc και χρησιμοποιείται ευρέως χάρις στα cross-platform χαρακτηριστικά που διαθέτει. Η τεχνολογία Java Server Pages επιτρέπει τη χρήση της Java για τη συγγραφή δυναμικών σελίδων αλλά και ολοκληρωμένων εφαρμογών εξυπηρετητή, ομογενοποιημένων με τον παγκόσμιο ιστό (4)(12) Σχεδιαστική Φιλοσοφία Ο κώδικας java μεταφράζεται όχι για κάποια συγκεκριμένη αρχιτεκτονική υλικού, αλλά για την αρχιτεκτονική μιας ιδεατής μηχανής (Java Virtual Machine), η οποία έχει ένα σαφώς ορισμένο σύνολο χαρακτηριστικών(4). Η ιδεατή αυτή μηχανή υλοποιείται σε κάθε υποστηριζόμενη πλατφόρμα υλικού, ακολουθώντας αυστηρές συμβάσεις ως προς τους τύπους δεδομένων και τις δυνατότητες που υποστηρίζονται. Αυτό επιτρέπει στα προγράμματα που γράφονται σε java, να εκτελούνται όμοια και να βγάζουν ίδια αποτελέσματα ανεξάρτητα από την υφιστάμενη αρχιτεκτονική υλικού. 16

17 Όπως αναφέρθηκε παραπάνω, υπάρχουν και άλλες γλώσσες που αξιοποιούν τη φιλοσοφία της ιδεατής μηχανής. H java είναι η πρώτη γλώσσα ισχυρών τύπων με καθαρά αντικειμενοστραφή φιλοσοφία, στην οποία οι βασικοί τύποι (ακέραιοι, δεκαδικοί, πίνακες κλπ) αποθηκεύονται με σαφώς ορισμένο τρόπο ανεξαρτήτως της αρχιτεκτονικής υλικού. Για παράδειγμα, ενώ κάποιες αρχιτεκτονικές υλικού θεωρούν τον τύπο char ως 8-bit signed integer, κάποιες άλλες υλοποιούν τον ίδιο τύπο ως 8-bit unsigned integer. Η java Virtual Machine υλοποιεί τον τύπο char με ενιαίο και ομογενή τρόπο σε όλες τις πλατφόρμες. Έτσι, ο μεταγλωττισμένος κώδικας java μπορεί να εκτελεστεί σε οποιαδήποτε πλατφόρμα υποστηρίζεται από τη java virtual machine. Δυστυχώς η ενιαία αυτή αντιμετώπιση φέρει προβλήματα αποδοτικότητας, καθώς σε περίπτωση που κάποια αρχιτεκτονική δεν υποστηρίζει εγγενώς ένα τύπο δεδομένων, όλες οι προσβάσεις στον τύπο αυτό γίνονται μέσω λογισμικού. Η σημαντικά μειωμένη ταχύτητα του κώδικα java αποτέλεσε και τη κυριότερη τροχοπέδη στη διάδοσή της. Παρ όλα αυτά, ένα σετ τεχνολογιών όπως οι Just In Time Compilers επιτρέπουν βελτιστοποίηση της απόδοσης ενός προγράμματος java. Σε αντίθεση με τη φιλοσοφία της Java, άλλες γλώσσες υλοποιούν Virtual Machines που χρησιμοποιούν τους εκάστοτε εγγενείς τύπους της αρχιτεκτονικής. Δηλαδή ένας τύπος char μπορεί να σημαίνει είτε ένα 8 bit unsigned integer, είτε ένα 8 bit signed integer στο μεταγλωττισμένο κώδικα, ανάλογα με την υφιστάμενη αρχιτεκτονική. Η φιλοσοφία αυτή συνεπάγεται ότι ο ίδιος πηγαίος κώδικας μπορεί να μεταφραστεί σε διαφορετικές πλατφόρμες, όμως δεν υπάρχουν εγγυήσεις ότι θα εκτελεστεί με τον ίδιο τρόπο.(8) Πάντως ένα μεγάλο μέρος του κώδικα θα έχει κοινή συμπεριφορά σε ανεξάρτητες πλατφόρμες. Προφανώς, επειδή γίνεται χρήση εγγενών τύπων, η απόδοση της ιδεατής μηχανής είναι βελτιωμένη Σύνταξη και χαρακτηριστικά Η σύνταξη της java μοιάζει με αυτή της C, εντούτοις κάποια αναγνωριστικά έχουν διαφορετική ερμηνεία (πχ o τελεστής >> ή ο τύπος boolean). Όντας πλήρως αντικειμενοστραφής, η java δεν επιτρέπει τον ορισμό αυτόνομων συναρτήσεων, παρά μόνο μεθόδων ορισμένων στα πλαίσια μιας τάξης. Κάθε java-πρόγραμμα αντιστοιχεί και σε μια τάξη. Παραμένει μια γλώσσα ισχυρών τύπων (strong typing), όπου κάθε μεταβλητή πρέπει να δηλωθεί πριν τη χρήση της. Εδώ, ο όρος «μεταβλητή» υπονοεί τα αντικείμενα κάποιας τάξης (class). Οι βασικές μονάδες αποθήκευσης δεδομένων int, float, double, char, boolean, short, long και byte υποστηρίζονται εγγενώς και μπορούν να αντιμετωπιστούν ως τάξεις μέσω των Wrapper Classes με αντίστοιχο όνομα: για παράδειγμα, αντικείμενα της τάξης Float (κεφαλαίο F) μπορούν να εμφωλεύσουν αντικείμενα του τύπου float (πεζό f). Ας σημειωθεί εδώ ότι η Java δεν υποστηρίζει operator overloading. Στη Java, δε γίνεται χρήση δεικτών (pointer), δηλαδή δεν υπάρχει η έννοια της «διεύθυνσης» μιας μεταβλητής. Τα περάσματα μεταβλητών σε συναρτήσεις γίνονται εξ ορισμού με αναφορά. Ένα σύστημα garbage collection γνωρίζει, μέσω ενός μετρητή (reference counter) τον αριθμό των χρήσεων κάθε αντικειμένου και ανά τακτά διαστήματα, διαγράφει αντικείμενα που δε χρησιμοποιούνται. Αυτό απλοποιεί σημαντικά το προγραμματισμό καθώς ελαχιστοποιείται η πιθανότητα για memory leaks, ωστόσο εισάγει περιόδους χαμηλής απόδοσης κατά την εκτέλεση, όταν γίνεται το garbage collection παρ ότι αυτό γίνεται με επιμερισμένο (amortized) τρόπο. Μέσω των τάξεων Class και Method, παρέχεται πρόσβαση σε αντικείμενα οποιασδήποτε τάξης στο χρόνο εκτέλεσης, δηλαδή σε αντικείμενα αδιάφορου κατά το προγραμματισμό τάξεων. Η δυνατότητα αυτή της Java καλείται Reflection και ευθύνεται για τη σαφώς ανώτερη υλοποίηση του αντικειμενοστραφούς προγραμματισμού σε σχέση με άλλες γλώσσες. Πράγματι, επιτρέπει στο προγραμματιστή να κατασκευάσει interfaces που δρουν σε άγνωστου λειτουργικότητας τάξεις και αλληλεπιδρούν με λογικό τρόπο με αυτές, χωρίς να καταφύγει σε πολύπλοκες δομές ή περιοριστικές συμβάσεις. Στο παρακάτω παράδειγμα φαίνεται η χρήση του Reflection: 17

18 // Without reflection Foo foo = new Foo(); foo.dosomething(1); // With reflection Class cls = Class.forName("Foo"); Object foo = cls.newinstance(); Method method = cls.getmethod("dosomething", Integer.Type); method.invoke(foo, 1); Γλώσσες με μεταγλωττιστή όπως η C++ δε διαθέτουν αντίστοιχους μηχανισμούς, εντούτοις οι περισσότεροι διερμηνευτές παρέχουν αντίστοιχα εργαλεία (για παράδειγμα στη php ένα αλφαριθμητικό μπορεί να μετατραπεί σε μεταβλητή και να χρησιμοποιηθεί για την πρόσβαση στο ομώνυμο αντικειμένου κατά το χρόνο εκτέλεσης του προγράμματος). Δεδομένου ότι η πολλαπλή κληρονομικότητα αποδείχτηκε δύσχρηστη, στη Java επιτρέπεται απλή κληρονομικότητα. Εντούτοις, μέσω του keyword implements κάθε τάξη δηλώνει τα interfaces τα οποία υλοποιεί και να υλοποιήσει τις σχετικές μεθόδους των πλήρως ιδεατών τάξεων-interfaces. Κάθε μεταγλωττισμένος κώδικας java αποθηκεύεται σε ένα αρχείο. Σύνολα αρχείων μπορούν να αποθηκευτούν σε βιβλιοθήκες. Υπάρχει η δυνατότητα να δηλωθούν βιβλιοθήκες που εδρεύουν σε απομακρυσμένους εξυπηρετητές, οι οποίες και εγκαθίστανται δυναμικά από την ιδεατή μηχανή. Στα λοιπά χαρακτηριστικά της γλώσσας περιλαμβάνεται ένα εκτενές σύνολο βιβλιοθηκών για διασύνδεση με βάσεις δεδομένων, δημιουργία cross-platform user interfaces (swing), εξειδικευμένες εκδόσεις για κινητές συσκευές (J2ME) και για εξυπηρετητές (J2EE) και δυνατότητα ανάπτυξης web services. Η Java είναι διαδεδομένη στην ακαδημαϊκή κοινότητα λόγω του ανοιχτού (cross platform) χαρακτήρα της, ενώ, ως προϊόν της sun Microsystems, θεωρείται ένα καλώς δομημένο περιβάλλον για ανάπτυξη επεκτάσιμων εφαρμογών στο παγκόσμιο ιστό. Σε αυτό φυσικά συνεισφέρει και η JSP, η οποία αναλύεται ακολούθως Java Server Pages Λόγω της ανεξαρτησίας της από το υλικό, η Java αποτελεί ιδανική επιλογή για ανάπτυξη επεκτάσιμων εφαρμογών. Εντούτοις σε περιβάλλον παγκόσμιου ιστού η Java αυτή καθ αυτή πάσχει από δύο προβλήματα: Η σύνταξή της δεν είναι ευέλικτη, συνεπώς δε συνίσταται για απλές εργασίες. Προφανώς δεν είναι εφικτή η εμφώλευση κώδικα HTML σε καθαρό κώδικα java στα πρότυπα της php Για τη εκτέλεση του κώδικα απαιτείται πρώτα η μετάφραση του και αργότερα η εκτέλεση του μέσω της ιδεατής μηχανής. Δεδομένου ότι η ανάπτυξη κώδικα για τον Παγκόσμιο ιστό γίνεται συνήθως σε κάποιο απομακρυσμένο σταθμό εργασίας και ο κώδικας πρέπει να μεταφερθεί και εκτελεστεί στον εξυπηρετητή, μια κομψότερη λύση όπως αυτή της php είναι απαραίτητη. Για την επίλυση των παραπάνω προβλημάτων, η Sun επέκτεινε το σύνολο δυνατοτήτων της Java και ανέπτυξε μια βοηθητική γλώσσα, την JSP (13)(1). Η JSP επιτρέπει στο προγραμματιστή να εμφωλεύσει κώδικα java σε κώδικα HTML με τη χρήση μια σύνταξης ανάλογης με αυτών της php και asp. Επίσης χρησιμοποιεί ένα σύνολο XML tags για να ορίσει συγκεκριμένες λειτουργίες. Τα tags αυτά μπορούν να διασυνδεθούν με τάξεις java οι οποίες εκτελούνται σε χαμηλότερα στρώματα του εξυπηρετητή (bacend process, δηλαδή πίσω από τον web server). Παράλληλα, η JSP δίνει ένα σύνολο μηχανισμών για τη διασύνδεση του java τμήματος ενός server με το web τμήμα του, κάποιοι από τους οποίους αναλύονται παρακάτω. Σε αντίθεση με τη php, η jsp χρησιμοποιεί μια πληθώρα από διαφορετικά jsp tags, ενώ επιτρέπει στο χρήστη να δηλώσει και νέες τάξεις tags αν αυτό είναι αναγκαίο. Τα παρακάτω παραδείγματα tags είναι χαρακτηριστικά: 18

19 Τύπος tag Παράδειγμα Declaration tag <%! int serverinstancevariable = 1; %> Declaration tag with method <%! /* Converts the Object into a string */ public String tostringorblank( Object obj ){ if(obj!= null){return obj.tostring(); return ""; %> Expression tag <%= "expanded inline data " + 1 %> Scriptlet tag <% int localstackbasedvariable = 1; out.println(localstackbasedvariable); %> Comment <%-- give your comments here --%> Πρόσθετα tags (<jsp: tags) υλοποιούν άλλες λειτουργίες web server, όπως η ενσωμάτωση αντικειμένων και η εκτέλεση ειδικού κώδικα. Για παράδειγμα, το <jsp:include> tag εκτελεί μια άλλη jsp σελίδα δυναμικά, με τρόπο παρόμοιο της κλήσης συνάρτησης. <html> <head></head> <body> <jsp:include page="mycommon.jsp" > <jsp:param name="extraparam" value="myvalue" /> </jsp:include> name:<%=request.getparameter("extraparam")%> </body> </html> Αντίστοιχα με το include, το forward tag μεταφέρει το χειρισμό της σελίδας σε μια άλλη jsp σελίδα (ο έλεγχος δεν επιστρέφει στην αρχική: <jsp:forward page="subpage.jsp" > <jsp:param name="forwardedfrom" value="this.jsp" /> </jsp:forward> Τέλο, ενδιαφέρον είναι το plugin tag, το οποίο χρησιμοποιείται για να ενσωματώσει αντικείμενα (applets) σε μια σελίδα, υλοποιώντας κατ ουσία τη λειτουργικότητα του <object> tag της html, αλλά με σύνταξη κατάλληλη για το φυλλομετρητή του τρέχοντος χρήστη (τον οποίο γνωρίζει ο εξυπηρετητής): 19

20 <jsp:plugin type=applet height="100%" width="100%" archive="myjarfile.jar,myotherjar.jar" codebase="/applets" code="com.foo.myapplet" > <jsp:params> <jsp:param name="enabledebug" value="true" /> </jsp:params> <jsp:fallback> Your browser does not support applets. </jsp:fallback> </jsp:plugin> Τέλος, μέσω των JSP tag libraries, οι προγραμματιστές μπορούν να ορίσουν εξειδικευμένα tags και να τα ενθέσουν σε HTML κώδικα. Με τον τρόπο αυτό μπορούν εύκολα να διασυνδέσουν το τμήμα αλληλεπίδρασης με το χρήστη της εφαρμογής με το εσωτερικό σύστημα που παρέχει πρόσβαση και επεξεργασία στα εσωτερικά δεδομένα του εξυπηρετητή. Τα tags αυτά μπορούν να υλοποιηθούν σε καθαρή java με κώδικα όπως ο παρακάτω: public class MyActionTag extends TagSupport { //Releases all instance variables. public void release() {... public MyActionTag() {... //called for the start tag public int dostarttag() {... //called at the end tag public int doendtag(){... Ο κώδικας java που περιέχεται σε μια jsp σελίδα μεταγλωττίζεται αυτόματα από ένα ειδικό άρθρωμα του εξυπηρετητή (το οποίο στην ουσία επεκτείνει τις δυνατότητες του java compiler) και αυτόματα αποθηκεύεται προς άμεση εκτέλεση. Σε περίπτωση που ο πηγαίος jsp κώδικας υποστεί αλλαγές, θα μεταγλωττιστεί αυτόματα από τον εξυπηρετητή. Με αυτό το τρόπο επιτρέπεται η εύκολη συγγραφή δυναμικών ιστοσελίδων, οι οποίες έχουν τη δυνατότητα να συνεργαστούν με το υπόλοιπο σύνολο λειτουργικότητας που παρέχει ένας εξυπηρετητής. Η προαναφερθείσα δυνατότητα δίνει ένα σημαντικό πλεονέκτημα στο πρότυπο ανάπτυξης της JSP, καθώς κάνει εφικτό το διαχωρισμού της εφαρμογής σε δύο μεγάλα τμήματα: αυτό της παρουσίασης στο χρήστη (web front end) και σε αυτό της λογικής επεξεργασίας των δεδομένων (back end). Το backend μπορεί να διαχωριστεί περεταίρω σε μοντέλο δεδομένων (model) και λογικής (controller). Έτσι οδηγούμαστε στο μοντέλο ανάπτυξης model-viewcontroller, το οποίο διαχωρίζει την εφαρμογή σε τρία τμήματα: 1. Model: Το μοντέλο δεδομένων της εφαρμογής. Η Τα μη-εφήμερα δεδομένα αποθηκεύονται σύμφωνα με τις απαιτήσεις και τις δομές που ορίζει το μοντέλο δεδομένων 2. Controller: Το τμήμα διαχείρισης και επεξεργασίας δεδομένων της εφαρμογής. Η επεξεργασία γίνεται με java servlets ή με ένα σύνολο από JSP σελίδες. 3. View: Το τμήμα αλληλεπίδρασης με το χρήστη. Συγκεκριμένες σελίδες (JSP) χρησιμοποιούν τα JSP tags είτε για να τυπώσουν δεδομένα στην οθόνη είτε για να καλέσουν μεθόδους που θα αλλάξουν ή επεξεργαστούν τα δεδομένα αυτά. Με το διαχωρισμό αυτό ο κώδικας γίνεται ευκολότερα διαχειρίσιμος και επεκτάσιμος. Επίσης, ισχυροποιείται η ασφάλεια του κώδικα αφού είναι δυνατόν να ελεγχθεί η πρόσβαση στα εσωτερικά δεδομένα Παράδειγμα κώδικα Το παρακάτω παράδειγμα δείχνει τη χρήση JSP και τον τρόπο που αυτό μεταφράζεται εσωτερικά σε κώδικα java (1): 20

21 JSP κώδικας page errorpage="myerror.jsp" %> page import="com.foo.bar" %> <html> <head> <%! int serverinstancevariable = 1;%> <% int localstackbasedvariable = 1; %> <table><tr><td> <%= tostringorblank( "expanded inline data " + 1 ) %> </td></tr> Παραγόμενος κώδικας Java package jsp_servlet; import java.util.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import com.foo.bar; //imported as a result of <%@ page import="com.foo.bar" %> import... class _myservlet implements javax.servlet.servlet, javax.servlet.jsp.httpjsppage { //inserted as a //result of <%! int serverinstancevariable = 1;%> int serverinstancevariable = 1;... public void _jspservice( javax.servlet.http.httpservletrequest request, javax.servlet.http.httpservletresponse response ) throws javax.servlet.servletexception, java.io.ioexception { javax.servlet.servletconfig config =...;//get the servlet config Object page = this; PageContext pagecontext =...;//get the page context for this request javax.servlet.jsp.jspwriter out = pagecontext.getout(); HttpSession session = request.getsession( true ); try { out.print( "<html>\r\n" ); out.print( "<head>\r\n" );... //from <% int localstackbasedvariable = 1; %> int localstackbasedvariable = 1;... out.print( "<table>\r\n" ); out.print( " <tr><td>" ); //from <%= tostringorblank( "expanded inline data " + 1 ) %> out.print( tostringorblank( "expanded inline data " + 1 ) ); out.print( " </td></tr>\r\n" );... catch ( Exception _exception ) { //clean up and redirect to error page in <%@ page errorpage="myerror.jsp" %> 2.3 Asp & Asp.net Η γλώσσα Asp είναι μια μηχανή συγγραφής δυναμικών ιστοσελίδων και εφαρμογών ιστού. ASP σημαίνει Active Server Pages (8). Αναπτύσσεται από τη Microsoft, ενώ η πρώτη έκδοση της ονομαζόταν dbweb και είχε αναπτυχθεί από την Aspect Software Engineering(1). Το κύριο χαρακτηριστικό της Asp είναι η στενή του συνεργασία με το λογισμικό web server της Microsoft, IIS (Internet Information Services). H Asp μπορεί να αναγνωρίσει κώδικα σε οποιαδήποτε γλώσσα είναι συμβατή με το «Microsoft Active Scripting» στάνταρ. Συνηθέστερα χρησιμοποιούμενη είναι η VBScript. Η επιλογή της γλώσσας που χρησιμοποιείται για την ερμηνεία του κώδικα γίνεται μέσω της εντολής 21

22 @language ή μέσω του tag <script language= language runat= server >. Άλλες συμβατές γλώσσες περιλαμβάνουν τη Jscript (μια υλοποίηση ECMAscript από τη Microsoft) και την PerlScript. Ας τονιστεί εδώ ότι εκτός της Asp, η Microsoft αναπτύσσει και τη γλώσσα asp.net, η οποία έχει ουσιαστικές διαφορές με την asp: βασίζεται στο.net framework της εταιρίας και χρησιμοποιεί just-in-time compilation τεχνικές. Αρχεία κώδικα της απλής Asp έχουν κατάληξη.asp, ενώ αρχεία asp.net έχουν συνήθως κατάληξη aspx Σχεδιαστική Φιλοσοφία και Συντακτικό Η δυναμική δημιουργία περιεχομένου στη ASP γίνεται με τη χρήση αντικειμένων τα οποία υλοποιούν συγκεκριμένες λειτουργίες. Στην έκδοση 2, η ASP διαθέτει 6 τέτοια αντικείμενα: Application, ASPError, Request, Response, Server και Session. Κάθε αντικείμενο υλοποιεί κάποια βασική web-server λειτουργικότητα. Για παράδειγμα, το αντικείμενο Session αποθηκεύει δεδομένα από σελίδα σε σελίδα με τη χρήση των Browser Cookies. Όμοια με τη php, στη κλασική asp επιτρέπεται η εμφώλευση html κώδικα με τη χρήση των αναγνωριστικών <% και %>. Το αναγνωριστικό <%= χρησιμοποιείται αντί του <% για να καταδείξει μια «έκφραση» (expression). Επίσης, όμοια με την php, μέθοδοι μπορούν να κληθούν και χωρίς τη χρήση παρενθέσεων. Παρακάτω παρουσιάζονται δυο διαφορετικοί τρόποι για να δημιουργηθεί μια απλή hello world σελίδα σε ASP, χρησιμοποιώντας εμφωλευμένη σημειογραφία (η βασική γλώσσα εδώ είναι η vbscript): <html> <body> <% Response.Write "Hello World!" %> </body> </html> <html> <body> <%= "Hello World!" %> </body> </html> Το παρακάτω παράδειγμα αναλαμβάνει τη σύνδεση με μια βάση Microsoft access: <% %> Set oconn = Server.CreateObject("ADODB.Connection") oconn.open "DRIVER={Microsoft Access Driver (*.mdb); DBQ=" & Server.MapPath("DB.mdb") Set rsusers = Server.CreateObject("ADODB.Recordset") rsusers.open "SELECT * FROM Users", oconn Συναρτήσεις ορίζονται στα πρότυπα της εκάστοτε ενεργής γλώσσας, στη περίπτωση της VBScript με τα αναγνωριστικά function και end function, ενώ για σχολιασμό χρησιμοποιείται ο χαρακτήρας ' : 'Returns array containing addressok, PhoneOK, ok function validate(address,city,phone, ,avkey,pekey,evkey) dim ret(3) ret(0)=addressok(address,city,avkey) ret(1)=phoneok(phone,pekey) ret(2)= ok( ,evkey) validate=ret end function Ένα σημαντικό μέρος της Asp λειτουργικότητας περιλαμβάνεται σε βιβλιοθήκες αντικειμένων, οι οποίες απλοποιούν επαναληπτικές διαδικασίες, όπως για παράδειγμα η παρουσίαση λίστας στοιχείων από μια βάση δεδομένων Το.Net framework και η καινοτομική αρχιτεκτονική της asp.net Με την έλευση του.net framework, η Microsoft προσπάθησε να υποστηρίξει την ανάπτυξη πολύπλοκων webεφαρμογών μέσα από μια ολοκληρωμένη πλατφόρμα. Έτσι ξανασχεδίασε τις τεχνολογίες τις για τη δημιουργία δυναμικών ιστοσελίδων, με στόχο τη καλύτερη διασύνδεση με το.net framework, τη καλύτερη κλιμάκωση και την 22

23 ευκολότερη συντήρηση. Έτσι παρουσιάστηκε η asp.net (14). Όπως και με τη απλή asp, η asp.net μπορεί να διασυνδέσει κώδικα οποιασδήποτε γλώσσας με HTML στοιχεία, όμως συνίσταται η χρήση της γλώσσας C# για ανάπτυξη web-εφαρμογών. Το πέρασμα στη νέα πλατφόρμα.net, σηματοδοτεί και μια καινοτομική φιλοσοφία στην ανάπτυξη σελίδων. Σε αντίθεση με παλαιότερες πρακτικές, η asp.net προσπαθεί να εξομοιώσει τον τρόπο λειτουργίας και προγραμματισμό του γραφικού περιβάλλοντος των windows στη συγγραφή σελίδων. Παρέχει μια πλήρη σειρά από γραφικά αντικείμενα (κουμπιά, λίστες, πίνακες, data views κλπ) με τα οποία ο προγραμματιστής μπορεί να αναπτύξει σελίδες, με τρόπο που ομοιάζει περισσότερο με ανάπτυξη εφαρμογής παρά σελίδας. Ενώ όμως σε μια παραθυρική εφαρμογή τα διάφορα γραφικά στοιχεία σχεδιάζονται χρησιμοποιώντας κλήσεις γραφικών, στην asp.net τα εκάστοτε στοιχεία σχεδιάζονται παράγοντας HTML και javascript κώδικα. Ένα σύστημα Μηνυμάτων και Γεγονότων (messages & events) χρησιμοποιείται για τη διασύνδεση των στοιχείων αυτών με κώδικα asp.net. Ουσιαστικά γίνεται προσπάθεια να δημιουργηθεί ένα περιβάλλον ανταλλαγής μηνυμάτων μέσα από το (stateless) html πρωτόκολλο. Με τον τρόπο αυτό απλοποιείται σημαντικά η δημιουργία πολύπλοκων web-εφαρμογών (1). Μια σημαντική διαφορά της Asp.net σε σχέση με τη απλή asp είναι η χρήση μεταγλωττισμένου κώδικα. Για να διατηρηθεί η ευχρηστία ανάπτυξης κώδικα, ο εξυπηρετητής (Microsoft IIS) μεταφράζει αυτόματα (just in time) τον κώδικα ενός συνόλου σελίδων asp.net (οι οποίες έχουν συνήθως κατάληξη.aspx) και παράγει ένα.net module το οποίο τρέχει εγγενώς στην αρχιτεκτονική (windows server) (8)(14). Αυτό συνεπάγεται μια σημαντική καθυστέρηση κατά τη μεταγλώττιση της σελίδας, όταν υπάρχουν αλλαγές. Καθώς όμως ο κώδικας που παράγεται είναι εγγενής για την αρχιτεκτονική, οι μετέπειτα επισκέψεις στην ίδια σελίδα επιταχύνονται εντυπωσιακά. Ο εξυπηρετητής γνωρίζει αν ο χρήστης έκανε αλλαγές σε κάποιο αρχείο κώδικα και το μεταγλωττίζει αυτόματα. Έτσι η επεξεργασία κώδικα πάνω στο server απλοποιείται σημαντικά. Ένα πρόβλημα που δημιουργείται λόγω της δημιουργίας εγγενούς κώδικα είναι η ασυμβατότητα με non-microsoft αρχιτεκτονικές εξυπηρετητή Asp.Net: αρχιτεκτονική και συντακτικό Η σύνταξη της C#, της προτεινόμενης γλώσσας για asp.net, είναι όμοια με αυτή της C++ (14). Για την ακρίβεια, επιτρέπεται στο προγραμματιστή να αναπτύξει κώδικα παρόμοιας λειτουργικότητας και απόδοσης με αυτόν της C. Εντούτοις η C# επιτρέπει επίσης τη δημιουργία αυτό-διαχειριζόμενων αντικειμένων, όμοια με αυτά της Java, αλλά και δυναμικών αλφαριθμητικών. Αυτό επιτρέπει στο προγραμματιστή να προγραμματίζει ευέλικτα, αναπτύσσοντας με προσοχή τα κρίσιμα τμήματα κώδικα (bottlenecks, critical segments) και αφήνοντας στο αυτόματο σύστημα διαχείρισης (managed code) τα τμήματα κώδικα ήσσονος σημασίας. Το asp.net μοντέλο προγραμματισμού επιτρέπει την ένθεση asp σε html κώδικα με τη χρήση τόσο των asp code tags (<%) όσο και με τη χρήση xml tags του τύπου <asp: που μεταγλωττίζονται αυτόματα από το σύστημα σε έγκυρο XHTML κώδικα με ό, τι javascript συνεπάγεται. Για το διαχωρισμό του κυρίως κώδικα από το σύστημα αλληλεπίδρασης με το χρήστη, η Microsoft προτείνει το code-behind μοντέλο προγραμματισμού: Η λογική της εφαρμογής βρίσκεται σε ξεχωριστά αρχεία κώδικα, εν είδη συναρτήσεων και τάξεων, οι οποίες προσπελαύνονται δυναμικά από το βασικό κώδικα asp.net,που περιλαμβάνει τα html στοιχεία και xml αντικείμενα που παρουσιάζονται στο χρήστη. Το σύστημα αυτό επιτρέπει καλύτερη διαχείριση και επεκτασιμότητα. Εντούτοις, η asp.net επιτρέπει και την ένθεση κώδικα όπου αυτό είναι απαραίτητο (in-line τεχνικές) Στο παρακάτω παράδειγμα παρουσιάζεται η έννοια του μοντέλου code-behind: Στο αρχείο.aspx της web-εφαρμογής μας τοποθετούμε τη παρακάτω γραμμή κώδικα: 23

24 Index.apsx Page Language="C#" CodeFile="SampleCodeBehind.aspx.cs" Inherits="Website.SampleCodeBehind" AutoEventWireup="true" %> Εδώ η ιδιότητα codefile δείχνει ποιο είναι το αρχείο που υλοποιεί τη λογική της σελίδας, ενώ η ιδιότητα inherits δείχνει τη τάξη πάνω στην οποία βασίζεται η συγκεκριμένη σελίδα. Με τον τρόπο αυτό παρέχεται μια αντιστοιχία σελίδας.aspx και τάξεως (C#). Έτσι, στο παρακάτω C# κώδικα η μέθοδος Page_Load θα καλείται κάθε φορά που η συγκεκριμένη σελίδα προβάλλεται (ή προσπελαύνεται) SampleCodeBehind.aspx.cs using System; namespace Website{ public partial class SampleCodeBehind : System.Web.UI.Page{ protected override void Page_Load(EventArgs e){ base.onload(e); Με αντίστοιχο τρόπο, ο προγραμματιστής μπορεί να αναπτύξει μεθόδους τάξεων για να υλοποιήσει λειτουργικότητα και να τις διασυνδέσει με διάφορα γεγονότα που λαμβάνουν χώρα κατά τα διάφορα στάδια επεξεργασίας, προβολής ή αλληλεπίδρασης του χρήστη με τη σελίδα. Σε αντιδιαστολή με το code-behind μοντέλο, υπάρχει η δυνατότητα παράθεσης κώδικα κατά τα πρότυπα της php: <%@ Page Language="C#" %> <script runat="server"> protected void Page_Load(object sender, EventArgs e){ Label1.Text = DateTime.Now.ToLongDateString(); </script> <html xmlns=" <head runat="server"> <title>sample page</title> </head> <body> <form id="form1" runat="server"> <div> The current time is: <asp:label runat="server" id="label1" /> </div> </form> </body> </html> Άλλα χαρακτηριστικά της asp περιλαμβάνουν την ενσωματωμένη στη γλώσσα διαχείριση sessions (με τρεις διαφορετικούς τρόπους: in-procces, aspstate και sqlstate) και με τη δυνατότητα να αποθηκεύσει δεδομένα για τη σύνοδο κάθε απομακρυσμένου χρήστη ακόμα και σε non-volatile συστήματα όπως μια απομακρυσμένη βάση δεδομένων. Επίσης, χρησιμοποιεί την έννοια των Master Pages για να ορίσει κοινά οπτικά χαρακτηριστικά και placeholders που διατηρούνται σταθερά ανεξαρτήτως σελίδας της web-εφαρμογής. Τέλος, χρησιμοποιώντας πρότυπα, ο προγραμματιστής μπορεί να κατασκευάσει στοιχεία που υλοποιούν συγκεκριμένες λειτουργίες και να τα χρησιμοποιήσει για να αναπτύξει ολοκληρωμένες σελίδες, στα πρότυπα του Object Oriented Programming. Ένα σημαντικό πλεονέκτημα της asp.net είναι ο ολοκληρώνεται σε μεγάλο βαθμό με το Microsoft Visual Studio: Όχι μόνο επιτρέπεται η γραφική σχεδίαση των διαφόρων στοιχείων μιας σελίδας μέσα από το περιβάλλον, αλλά το Visual Studio επιβοηθεί το χρήστη στη συμπλήρωση κώδικα σε κάθε πιθανή γλώσσα: Javascript, asp, html κλπ. Επειδή η ολοκλήρωση που φέρνει το.net framework είναι πολύ μεγάλη, το χαρακτηριστικό αυτό είναι πολύ σημαντικό, καθώς ο προγραμματιστής καλείται να αναπτύξει κώδικα σε ένα πλήρως ετερογενές περιβάλλον, όπου η html, η sql, η javascript και η c# συνυπάρχουν με asp tags, asp.net tags, κώδικα xml και ένα σύνολο από άλλα APIs. 24

Τεχνικός Εφαρμογών Πληροφορικής

Τεχνικός Εφαρμογών Πληροφορικής Τεχνικός Εφαρμογών Πληροφορικής ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΙΣΑΓΩΓΗ Εξάμηνο: 2014Β Διδάσκουσα: Ηλεκτρονική Τάξη: Κανελλοπούλου Χριστίνα_ΠΕ19 Πληροφορικής Περιεχόμενα 1.Τι είναι η Php; 2.Πως γίνετε η γραφή

Διαβάστε περισσότερα

Πτυχιακή Εργασία ΠΛΗΡΟΦΟΡΙΑΚΟ ΣΥΣΤΗΜΑ ΓΙΑ ΕΤΑΙΡΙΑ ΚΙΝΗΤΗΣ ΤΗΛΕΦΩΝΙΑΣ ΖΟΥΡΑΡΑΚΗΣ ΕΜΜΑΝΟΥΗΛ ΑΜ:2462 [ΤΕΙ ΚΡΗΤΗΣ: ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΡΟΦΟΡΙΚΗΣ]

Πτυχιακή Εργασία ΠΛΗΡΟΦΟΡΙΑΚΟ ΣΥΣΤΗΜΑ ΓΙΑ ΕΤΑΙΡΙΑ ΚΙΝΗΤΗΣ ΤΗΛΕΦΩΝΙΑΣ ΖΟΥΡΑΡΑΚΗΣ ΕΜΜΑΝΟΥΗΛ ΑΜ:2462 [ΤΕΙ ΚΡΗΤΗΣ: ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΡΟΦΟΡΙΚΗΣ] 2015 Πτυχιακή Εργασία ΠΛΗΡΟΦΟΡΙΑΚΟ ΣΥΣΤΗΜΑ ΓΙΑ ΕΤΑΙΡΙΑ ΚΙΝΗΤΗΣ ΤΗΛΕΦΩΝΙΑΣ ΖΟΥΡΑΡΑΚΗΣ ΕΜΜΑΝΟΥΗΛ ΑΜ:2462 [ΤΕΙ ΚΡΗΤΗΣ: ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΡΟΦΟΡΙΚΗΣ] ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ΠΙΝΑΚΑΣ ΕΙΚΟΝΩΝ... 4 ΠΙΝΑΚΑΣ ΠΙΝΑΚΩΝ...

Διαβάστε περισσότερα

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Τεχνολογικών Εφαρμογών Τμήμα Μηχανικών Πληροφορικής Πτυχιακή εργασία Τίτλος: Ολοκληρωμένο πληροφοριακό σύστημα για ασφαλιστική εταιρία. ΓΑΒΡΙΛΑΚΗ ΓΕΩΡΓΙΑ (ΑΜ:3101)

Διαβάστε περισσότερα

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Εργαλεία ανάπτυξης εφαρμογών internet Ι IEK ΟΑΕΔ ΚΑΛΑΜΑΤΑΣ ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΟΦΟΡΙΚΗΣ Εργαλεία ανάπτυξης εφαρμογών internet Ι Διδάσκουσα: Κανελλοπούλου Χριστίνα ΠΕ19 Πληροφορικής Εργαλεία και τεχνικές από την πλευρά του πελάτη Java Applet

Διαβάστε περισσότερα

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 1 Εισαγωγή

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος... 13. Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος... 13. Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15 ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος... 13 Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15 1.1 Εισαγωγή... 16 1.2 Διαδίκτυο και Παγκόσμιος Ιστός Ιστορική αναδρομή... 17 1.3 Αρχές πληροφοριακών συστημάτων

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ Κεφάλαιο 2. Το περιβάλλον του παγκόσμιου Ιστού Επιμέλεια: Καραγιάννης Σπύρος Καθηγητής ΠΕ19 Πλεονεκτήματα παγκόσμιου Ιστού Εξυπηρετητής Ιστού & Ιστοσελίδες Κύριες

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη

Διαβάστε περισσότερα

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

Πτυχιακή εργασία Δημιουργία ιστοσελίδας για την αξιολόγηση προσφορών από διαδικτυακά καταστήματα Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Τεχνολογικών Εφαρμογών Τμήμα Εφαρμοσμένης Πληροφορικής και Πολυμέσων Πτυχιακή εργασία Δημιουργία ιστοσελίδας για την αξιολόγηση προσφορών από διαδικτυακά καταστήματα

Διαβάστε περισσότερα

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες Εισαγωγή-Σκοπός. Τρόποι δημιουργίας δυναμικών ιστοσελίδων. Dynamic Web Pages. Dynamic Web Page Development Using Dreamweaver. Τρόποι δημιουργίας δυναμικών

Διαβάστε περισσότερα

Τεχνολογίες Ανάπτυξης Ηλεκτρονικού Καταστήματος Μικρομεσαίας Επιχείρησης. Μικρομεσαίες Επιχειρήσεις και Καινοτομία

Τεχνολογίες Ανάπτυξης Ηλεκτρονικού Καταστήματος Μικρομεσαίας Επιχείρησης. Μικρομεσαίες Επιχειρήσεις και Καινοτομία Τεχνολογίες Ανάπτυξης Ηλεκτρονικού Καταστήματος Μικρομεσαίας Επιχείρησης Μικρομεσαίες Επιχειρήσεις και Καινοτομία Ηλεκτρονικό Εμπόριο H δυνατότητα των καταναλωτών και των εμπορικών καταστημάτων να κάνουν

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Αντικειµενοστρεφής Προγραµµατισµός

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

Διαβάστε περισσότερα

Θέματα Προγραμματισμού Διαδικτύου ~ PHP ~

Θέματα Προγραμματισμού Διαδικτύου ~ PHP ~ Θέματα Προγραμματισμού Διαδικτύου ~ PHP ~ Στελιος Σφακιανάκης Εαρινό 2019 Αυτή η εργασία χορηγείται με άδεια Creative Commons Αναφορά Δημιουργού - Μη Εμπορική Χρήση - Παρόμοια Διανομή 1 Server-side programming

Διαβάστε περισσότερα

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP) ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP) Γιάννης Σαμωνάκης 1 Περιεχόμενα Τι είναι η PHP Που μπορεί να χρησιμοποιηθεί

Διαβάστε περισσότερα

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΜΕ ΧΡΗΣΗ PHP

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΜΕ ΧΡΗΣΗ PHP Αντώνης Χρυσόπουλος Κατερίνα Κυπριώτη Στέλιος Μόσχογλου Θεοδόσης Σουργκούνης ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΜΕ ΧΡΗΣΗ PHP Για να γίνουμε όλοι καλύτεροι άνθρωποι Τι έχει το μενού σήμερα??? 1. Τι είναι η PHP??? Τι είναι

Διαβάστε περισσότερα

Βασικές Έννοιες Web Εφαρμογών

Βασικές Έννοιες Web Εφαρμογών ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Τεχνολογίες και Εφαρμογές Διαδικτύου Βασικές Έννοιες Web Εφαρμογών Κατερίνα Πραματάρη Τεχνολογίες και Εφαρμογές Διαδικτύου Περιεχόμενα

Διαβάστε περισσότερα

Κεφάλαιο 6 ο. Διαχείριση στοιχείων λογισμικού

Κεφάλαιο 6 ο. Διαχείριση στοιχείων λογισμικού Κεφάλαιο 6 ο Διαχείριση στοιχείων λογισμικού Διδακτικοί στόχοι Να περιγραφούν οι κύριοι τύποι λογισμικού Να εξεταστεί το λογισμικό συστήματος και τα λειτουργικά συστήματα Να αναλυθούν οι πιο σημαντικές

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

Διαβάστε περισσότερα

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β.1 Τύποι Δεδομένων Όλες οι γλώσσες προγραμματισμού (πρέπει να) υποστηρίζουν πέντε (5) πρωταρχικούς τύπους δεδομένων: char (character) int (integer)

Διαβάστε περισσότερα

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά

Διαβάστε περισσότερα

PHP 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

PHP 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών PHP 1 Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

Διαβάστε περισσότερα

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Διαφορές Java και C++ ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΔΙΑΦΟΡΕΣ JAVA C++ Η

Διαβάστε περισσότερα

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 1ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος Ορισμός Wikipedia.org 2 Δομημένος προγραμματισμός (structured programming) ή διαδικαστικός προγραμματισμός (procedural

Διαβάστε περισσότερα

Τεχνολογίες Διαδικτύου. Server Side Scripting I PHP

Τεχνολογίες Διαδικτύου. Server Side Scripting I PHP Τεχνολογίες Διαδικτύου Server Side Scripting I PHP Εισαγωγή PHP PHP:Hypertext Preprocessor Mηχανή που συνοδεύει web servers όπως ο IIS και ο Apache Η PHP είναι γλώσσα προγραμματισμού για web εφαρμογές

Διαβάστε περισσότερα

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Pascal- Εισαγωγή Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου

Διαβάστε περισσότερα

ΜΑΘΗΜΑ: Εργαλεία Ανάπτυξης εφαρμογών internet.

ΜΑΘΗΜΑ: Εργαλεία Ανάπτυξης εφαρμογών internet. ΜΑΘΗΜΑ: Εργαλεία Ανάπτυξης εφαρμογών internet. ΩΡΕΣ ΔΙΔΑΣΚΑΛΙΑΣ: ΕΙΔΟΣ ΜΑΘΗΜΑΤΟΣ: Μικτό Γενικός σκοπός είναι να αποκτήσει ο καταρτιζόμενος τις αναγκαίες γνώσεις σχετικά με εργαλεία και τις τεχνικές για

Διαβάστε περισσότερα

Πληροφορική 2. Γλώσσες Προγραμματισμού

Πληροφορική 2. Γλώσσες Προγραμματισμού Πληροφορική 2 Γλώσσες Προγραμματισμού 1 2 Γλώσσες προγραμματσιμού Επιτρέπουν την κωδικοποίηση των αλγορίθμων Η εκτέλεση ενός προγράμματος θα πρέπει να δίνει τα ίδια αποτελέσματα με την νοητική εκτέλεση

Διαβάστε περισσότερα

3 Αλληλεπίδραση Αντικειμένων

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

Διαβάστε περισσότερα

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Εισαγωγή Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Μεταγλωττιστής Αρχικό πρόγραμμα (source program) Μεταγλωττιστής Τελικό πρόγραμμα (object program) Διαγνωστικά μηνύματα Μεταγλωττιστής Παίρνει σαν

Διαβάστε περισσότερα

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2 Ανασκόπηση Μια εφαρμογή Java είναι ένα σύνολο από συνεργαζόμενες κλάσεις Διάλεξη #2: Αντικείμενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή

Διαβάστε περισσότερα

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν

Διαβάστε περισσότερα

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

Διαβάστε περισσότερα

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου ΕΣΔ 516 Τεχνολογίες Διαδικτύου Εισαγωγή στην PHP Περιεχόμενα Περιεχόμενα PHP και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις Παράδειγματα 1 Βιβλιογραφία Ενότητας Βιβλιογραφία [Lane 2004]: Chapter

Διαβάστε περισσότερα

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Παύλος Εφραιμίδης 1 Βασικά Στοιχεία της γλώσσας Τύποι Δεδομένων Η έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) iti τύπους δεδομένων δδ αναφορές 2 Βασικά Στοιχεία της

Διαβάστε περισσότερα

Γλώσσες Προγραμματισμού Μεταγλωττιστές

Γλώσσες Προγραμματισμού Μεταγλωττιστές Γλώσσες Προγραμματισμού Μεταγλωττιστές Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Γλώσσες Προγραμματισμού Εισαγωγικά Γλώσσα Μηχανής Γλώσσες υψηλού επιπέδου Μεταγλωττιστές

Διαβάστε περισσότερα

Διαδικτυακές Εφαρμογές. Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ

Διαδικτυακές Εφαρμογές. Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ Διαδικτυακές Εφαρμογές Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1

Διαβάστε περισσότερα

Εισαγωγή στις Σελίδες Εξυπηρετητή Java Java Server Pages (JSP)

Εισαγωγή στις Σελίδες Εξυπηρετητή Java Java Server Pages (JSP) Εισαγωγή στις Σελίδες Εξυπηρετητή Java Java Server Pages (JSP) Τι είναι τα JSP ; Σελίδες Εξυπηρετητή σε Java Μέθοδος δημιουργίας δυναμικών σελίδων (σε HTML ή XML) Το κύριο έγγραφο είναι γραμμένο σε HTML

Διαβάστε περισσότερα

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Μάριος Αραποστάθης Καθηγητής πληροφορικής Βαρβάκειου Λύκειου http://users.sch.gr/mariosarapostathis 6.1 Η έννοια του

Διαβάστε περισσότερα

2.1 Αντικειµενοστρεφής προγραµµατισµός

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

Διαβάστε περισσότερα

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19 Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών Κεφ. 2 Θεωρητική Επιστήμη Υπολογιστών 2.3.1.1 Έννοια προγράμματος Τι είναι πρόγραμμα και τι προγραμματισμός; Πρόγραμμα είναι το σύνολο εντολών που χρειάζεται

Διαβάστε περισσότερα

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο FrontPage 2003 Πρακτικός Οδηγός Χρήσης Το FrontPage είναι ένα πρόγραμμα δημιουργίας ιστοσελίδων και δικτυακών τόπων που επιτρέπει το σχεδιασμό ιστοσελίδων μέσα από γραφικό περιβάλλον αλλά και την ταυτόχρονη

Διαβάστε περισσότερα

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

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή. ΑΕσΠΠ-Κεφ6. Εισαγωγή στον προγραμματισμό 1 ΣΩΣΤΟ ΛΑΘΟΣ 1. Οι γλώσσες προγραμματισμού αναπτυχθήκαν με σκοπό την επικοινωνία ανθρώπου μηχανής. 2. Αλγόριθμος = Πρόγραμμα + Δομές Δεδομένων 3. Ένα πρόγραμμα

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής Προγραμματισμός Η/Υ Προτεινόμενα θέματα εξετάσεων Εργαστήριο Μέρος 1 ό ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής Ιανουάριος 2011 Καλογιάννης Γρηγόριος Επιστημονικός/ Εργαστηριακός

Διαβάστε περισσότερα

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1 Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

Γλώσσες Σήµανσης (Markup Languages) Τεχνολογία ιαδικτύου και Ηλεκτρονικό Εµπόριο

Γλώσσες Σήµανσης (Markup Languages) Τεχνολογία ιαδικτύου και Ηλεκτρονικό Εµπόριο Γλώσσες Σήµανσης (Markup Languages) Τεχνολογία ιαδικτύου και Ηλεκτρονικό Εµπόριο 1 Γλώσσες Σήµανσης Γλώσσες σήµανσης: Αρχικά για τον καθορισµό εµφάνισης σελίδων, γραµµατοσειρών. Στη συνέχεια επεκτάθηκαν

Διαβάστε περισσότερα

Προβλήµατα CGI, SSI CGI: Απόδοση Έναρξη νέας διαδικασίας για εκτέλεση (2 διαδικασιών σε περίπτωση διερµηνευόµενης γλώσσας, π.χ. perl). Κοινές διαδικασ

Προβλήµατα CGI, SSI CGI: Απόδοση Έναρξη νέας διαδικασίας για εκτέλεση (2 διαδικασιών σε περίπτωση διερµηνευόµενης γλώσσας, π.χ. perl). Κοινές διαδικασ Αρχιτεκτονική προηγµένων web εφαρµογών Σαράντης Πασκαλής Εθνικό και Καποδιστριακό Πανεπιστήµιο Αθηνών 1 Προβλήµατα CGI, SSI CGI: Απόδοση Έναρξη νέας διαδικασίας για εκτέλεση (2 διαδικασιών

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

Διαβάστε περισσότερα

Στρατηγική ανάπτυξη δικτυακού κόμβου

Στρατηγική ανάπτυξη δικτυακού κόμβου ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΔΙΑΤΜΗΜΑΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Παντελής Παντελίδης Στρατηγική ανάπτυξη δικτυακού κόμβου Επιβλέπουσα Καθηγήτρια: Μάρω Βλαχοπούλου Εξετάστρια:

Διαβάστε περισσότερα

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 8 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: Τεχνολογία Java Server Pages (JSP)

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 8 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: Τεχνολογία Java Server Pages (JSP) Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 8 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: Τεχνολογία Java Server Pages (JSP) Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών

Διαβάστε περισσότερα

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Εργαλεία ανάπτυξης εφαρμογών internet Ι IEK ΟΑΕΔ ΚΑΛΑΜΑΤΑΣ ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΟΦΟΡΙΚΗΣ Εργαλεία ανάπτυξης εφαρμογών internet Ι Διδάσκουσα: Κανελλοπούλου Χριστίνα ΠΕ19 Πληροφορικής 4 φάσεις διαδικτυακών εφαρμογών 1.Εφαρμογές στατικής πληροφόρησης

Διαβάστε περισσότερα

Ανάπτυξη Plugins για το AgentSheets

Ανάπτυξη Plugins για το AgentSheets Ανάπτυξη Plugins για το AgentSheets Thought Amplifier AgentSheets Ανάπτυξη Plugins AgentSheets 2.5 Συγγραφείς Τεκµηρίωσης: Alexander Repenning και Ronald Sudomo Εξελληνισµός Τεκµηρίωσης: Λίνος Βίγκλας,

Διαβάστε περισσότερα

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

Διαβάστε περισσότερα

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 1: Εισαγωγικές έννοιες

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 1: Εισαγωγικές έννοιες ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 1: Εισαγωγικές έννοιες Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 1 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου

Διαβάστε περισσότερα

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6 Ανασκόπηση Μια εφαρµογή Java είναι ένα σύνολο από συνεργαζόµενες κλάσεις Εβδοµάδα 2: Αντικείµενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Προγραµµατισµό,,, Slide 1 Εισαγωγή στον Προγραµµατισµό,,, Slide 2 Ανασκόπηση:

Διαβάστε περισσότερα

Περίληψη ιπλωµατικής Εργασίας

Περίληψη ιπλωµατικής Εργασίας Περίληψη ιπλωµατικής Εργασίας Θέµα: Πρότυπη Εφαρµογή ιαλειτουργικότητας για Φορητές Συσκευές Όνοµα: Κωνσταντίνος Χρηστίδης Επιβλέπων: Ιωάννης Βασιλείου Συν-επιβλέπων: Σπύρος Αθανασίου 1. Αντικείµενο Αντικείµενο

Διαβάστε περισσότερα

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Βασικά χαρακτηριστικά αναπτύχθηκε ως επέκταση της C το 1979 υπερσύνολο της C γλώσσα γενικού σκοπού, γρήγορη, Αντικειμενοστραφής προγραμματισμός (Object

Διαβάστε περισσότερα

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS. Εισαγωγή στη JAVA Σύντομο Ιστορικό Η Java και το διαδίκτυο Το πρώτο απλό πρόγραμμα σε JAVA Μεταβλητές και σταθερές Παραστάσεις και εντολές Οι βασικοί τύποι δεδομένων στη Java Οι βασικοί Τελεστές στη Java

Διαβάστε περισσότερα

Περιεχόμενα. Γαβαλάς Δαμιανός Τρέχον status της HTML

Περιεχόμενα. Γαβαλάς Δαμιανός Τρέχον status της HTML Δικτυακά Πολυμέσα ΙΙ Διάλεξη #2 η : Βασικές έννοιες σχεδιασμού στο web Γαβαλάς Δαμιανός dgavalas@aegean.gr Περιεχόμενα Τρέχον status της HTML Μετάβαση από την HTML στην XHTML Κλέ Καλές πρακτικές συγγραφής

Διαβάστε περισσότερα

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

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1 Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα Προγραμματισμός II 1 lalis@inf.uth.gr Χρήση λογισμικού που ήδη υπάρχει Τα πολύπλοκα συστήματα αναπτύσσονται σταδιακά, «χτίζοντας» πάνω σε υπάρχουσα λειτουργικότητα

Διαβάστε περισσότερα

Υπολογιστικά Συστήματα

Υπολογιστικά Συστήματα Υπολογιστικά Συστήματα Ενότητα 3: Βασικά στοιχεία της γλώσσας προγραμματισμού Visual Basic for Applications (VBA) Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Στοιχειώδης προγραμματισμός σε C++

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

Διαβάστε περισσότερα

Σχεδίαση και Ανάπτυξη Ιστότοπων

Σχεδίαση και Ανάπτυξη Ιστότοπων Σχεδίαση και Ανάπτυξη Ιστότοπων Ιστορική Εξέλιξη του Παγκόσμιου Ιστού Παρουσίαση 1 η 1 Βελώνης Γεώργιος Καθηγητής Περιεχόμενα Τι είναι το Διαδίκτυο Βασικές Υπηρεσίες Διαδικτύου Προηγμένες Υπηρεσίες Διαδικτύου

Διαβάστε περισσότερα

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο) TEC610 (ΣΤ εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Εαρινό εξάμηνο Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 2ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΣΦΑΛΜΑΤΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ Η γλώσσα C κάνει αυστηρή διάκριση μεταξύ πεζών

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου 49 Διδακτικές ενότητες 6.1 Γλώσσες και εργαλεία προγραμματισμού 6.2 Σύγχρονα προγραμματιστικά περιβάλλοντα Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν την ανάγκη ύπαρξης τόσο

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Στέφανος Ουγιάρογλου

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Στέφανος Ουγιάρογλου ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Κεφάλαιο 6 «Εισαγωγή στον Προγραμματισμό» Στέφανος Ουγιάρογλου Διαφάνειες από υλικό του Χ. Μουρατίδη Προγραμματισμός Η/Υ Ο προγραμματισμός είναι η διατύπωση

Διαβάστε περισσότερα

Αρχιτεκτονική πελάτη-εξυπηρέτη Οι διεργασίες που εκτελούνται στο δίκτυο είναι είτε πελάτες (clients) είτε εξυπηρέτες (servers). Εξυπηρέτης: παθητικός,

Αρχιτεκτονική πελάτη-εξυπηρέτη Οι διεργασίες που εκτελούνται στο δίκτυο είναι είτε πελάτες (clients) είτε εξυπηρέτες (servers). Εξυπηρέτης: παθητικός, Αρχιτεκτονική web εφαρµογών Σαράντης Πασκαλής Εθνικό και Καποδιστριακό Πανεπιστήµιο Αθηνών 1 Αρχιτεκτονική πελάτη-εξυπηρέτη Οι διεργασίες που εκτελούνται στο δίκτυο είναι είτε πελάτες

Διαβάστε περισσότερα

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο) TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Επιστημονικός συνεργάτης Εργαστηρίου: Στέλλα Λάμπουρα Εαρινό εξάμηνο Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Μεταφραστές Εισαγωγή Διδάσκων: Επικ. Καθ. Γεώργιος Μανής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol HTTP Protocol Web and HTTP Βασικά Συστατικά: Web Server Web Browser HTTP Protocol Web Servers (1/2) Ένα πρόγραμμα (λογισμικό) που έχει εγκατασταθεί σε ένα υπολογιστικό σύστημα (έναν ή περισσότερους υπολογιστές)

Διαβάστε περισσότερα

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες

Διαβάστε περισσότερα

Ανάπτυξη Υπηρεσίας Καταλόγου LDAP με τα στοιχεία του προσωπικού του TEI Πειραιά. Νίκος Πασσαράς. Εισηγητής: Πρεζεράκος Γεώργιος

Ανάπτυξη Υπηρεσίας Καταλόγου LDAP με τα στοιχεία του προσωπικού του TEI Πειραιά. Νίκος Πασσαράς. Εισηγητής: Πρεζεράκος Γεώργιος ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΙΔΡΥΜΑ ΠΕΙΡΑΙΑ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Ανάπτυξη Υπηρεσίας Καταλόγου LDAP με τα στοιχεία του προσωπικού του TEI Πειραιά Νίκος Πασσαράς

Διαβάστε περισσότερα

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

Διαβάστε περισσότερα

Δυναμικές Ιστοσελίδες Προγραμματισμός στην πλευρά του client

Δυναμικές Ιστοσελίδες Προγραμματισμός στην πλευρά του client ΕΣΔ516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Προγραμματισμός στην πλευρά του client Περιεχόμενα Περιεχόμενα Η Διεπίπέδη αρχιτεκτονική (2-tier architecture) Η τριεπίπεδη αρχιτεκτονική (3-tier architecture)

Διαβάστε περισσότερα

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το Σηµαντικά σηµεία κεφαλαίου Τα τρία στάδια επίλυσης ενός προβλήµατος: Ακριβής προσδιορισµό του προβλήµατος Ανάπτυξη του αντίστοιχου αλγορίθµου. ιατύπωση του αλγορίθµου σε κατανοητή µορφή από τον υπολογιστή.

Διαβάστε περισσότερα

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

Διαβάστε περισσότερα

Προγραμματισμός διαδικτυακών εφαρμογών με PHP

Προγραμματισμός διαδικτυακών εφαρμογών με PHP ΕΣΔ516: Τεχνολογίες Διαδικτύου Προγραμματισμός διαδικτυακών εφαρμογών με PHP Ερωτήματα μέσω Περιεχόμενα Περιεχόμενα Λογισμικό για εφαρμογές Web Η τριεπίπεδη αρχιτεκτονική (3-tier architecture) Εισαγωγή

Διαβάστε περισσότερα

Αρχές Προγραμματισμού Υπολογιστών

Αρχές Προγραμματισμού Υπολογιστών Αρχές Προγραμματισμού Υπολογιστών Ανάπτυξη Προγράμματος Β ΕΠΑΛ Τομέας Πληροφορικής Βελώνης Γεώργιος Καθηγητής Πληροφορικής ΠΕ20 Κύκλος ανάπτυξης προγράμματος/λογισμικού Η διαδικασία ανάπτυξης λογισμικού,

Διαβάστε περισσότερα

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ Εισαγωγή στην γλώσσα προγραμματισμού Ακαδημαϊκό έτος 2016-2017, Εαρινό εξάμηνο Οι σημειώσεις βασίζονται στα συγγράμματα: A byte of Python (ελληνική

Διαβάστε περισσότερα

Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress

Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress ΚΟΤΣΟΓΙΑΝΝΙΔΗΣ ΛΑΖΑΡΟΣ Επιβλέπων καθηγητής Σφέτσος Παναγιώτης ΗΛΕΚΤΡΟΝΙΚΟ ΕΜΠΟΡΙΟ Ως Ηλεκτρονικό Εμπόριο ή

Διαβάστε περισσότερα

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο) TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Εαρινό εξάμηνο 2014-2015 Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου

Διαβάστε περισσότερα

ΕΠΛ 012. JavaScripts

ΕΠΛ 012. JavaScripts ΕΠΛ 012 JavaScripts Γλώσσα JavaScript (JS) ηµιουργεί δυναµικές ιστοσελίδες και αλληλεπιδράσεις µε το χρήστη εν είναι Java, αλλά είναι αντικειµενοστραφής (απλό µοντέλο υποκειµένων) Objects, properties (τιµές

Διαβάστε περισσότερα

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 2: Μεταβλητές και Σταθερές Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

Διαβάστε περισσότερα

Σύγχρονα εργαλεία και τεχνολογίες ανάπτυξης I.S. Το Microsoft.NET

Σύγχρονα εργαλεία και τεχνολογίες ανάπτυξης I.S. Το Microsoft.NET Σύγχρονα εργαλεία και τεχνολογίες ανάπτυξης I.S. Το Microsoft.NET Δημήτριος Παπαδημητρίου Παπαδημητρίου Δημήτριος - MIS - Παν.Μακεδονίας 1 Microsoft.NET Πλατφόρμα επικοινωνίας ανθρώπων, συστημάτων και

Διαβάστε περισσότερα

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr Κανόνες Ομαλής Λειτουργίας Ερχόμαστε στην ώρα μας Δεν καπνίζουμε και τρώμε εντός της αίθουσας

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Προγραµµατισµός Η/Υ Ο προγραµµατισµός είναι η διατύπωση του αλγορίθµου σε µορφή κατανοητή από τον Η/Υ ώστε να τον εκτελέσει («τρέξει» όπως λέµε στην ορολογία της

Διαβάστε περισσότερα

Προγραμματισμός Ι (HY120)

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Εισαγωγή στη C θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ενότητα 7: Υπορουτίνες Καθ. Γιάννης Γαροφαλάκης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής Ορισμός Αφαίρεση με χρήση υπορουτινών (subroutine abstraction)

Διαβάστε περισσότερα

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Ιωάννης Γεωργουδάκης - Πάρις Μαστοροκώστας Σεπτέμβριος 2011 ΠΕΡΙΕΧΟΜΕΝΑ

Διαβάστε περισσότερα