|
33 | 33 |
|
34 | 34 | Τα engines είναι περίπλοκοι. Αλλά τα βασικά είναι εύκολα. |
35 | 35 |
|
| 36 | +<<<<<<< HEAD |
36 | 37 | 1. Το engine (ενσωματωμένος αν είναι πρόγραμμα περιήγησης) διαβάζει ("αναλύει") τα script. |
37 | 38 | 2. Στη συνέχεια μετατρέπει ("μεταγλώττιση") το script στη γλώσσα του μηχανήματος. |
38 | 39 | 3. Ύστερα ο κώδικας του μηχανήματος τρέχει, αρκετά γρήγορα. |
39 | 40 | Το engine εφαρμόζει βελτιστοποιήσει σε κάθε βήμα της διαδικασίας. Παρακολουθεί ακόμη και το μεταγλωττισμένο script καθώς εκτελείται, αναλύει τα δεδομένα που ρέουν μέσα από αυτό και εφαρμόζει βελτιστοποιήσεις στον κώδικα του μηχανήματος βάσει αυτής της γνώσης. Όταν ολοκληρωθεί, τα script εκτελούνται αρκετά γρήγορα. |
40 | 41 | ''' |
| 42 | +======= |
| 43 | +1. The engine (embedded if it's a browser) reads ("parses") the script. |
| 44 | +2. Then it converts ("compiles") the script to machine code. |
| 45 | +3. And then the machine code runs, pretty fast. |
| 46 | +>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78 |
41 | 47 |
|
42 | 48 | ## Τι μπορεί να κάνει η JavaScript στο πρόγραμμα περιήγησης? |
43 | 49 |
|
44 | 50 | Η σύγχρονη JavaScript είναι μια "ασφαλής" γλώσσα προγραμματισμού. Δεν παρέχει low-level πρόσβαση στη μνήμη ή στη CPU, επειδή δημιουργήθηκε αρχικά για προγράμματα περιήγησης που δεν το χρειάζονται. |
45 | 51 |
|
| 52 | +<<<<<<< HEAD |
46 | 53 | Οι δυνατότητες της JavaScript εξαρτώνται σε μεγάλο βαθμό από το περιβάλλον στο οποίο εκτελείται. Για παράδειγμα, το [Node.js] (https://wikipedia.org/wiki/Node.js) υποστηρίζει λειτουργίες που επιτρέπουν στην JavaScript να διαβάζει/γράφει αυθαίρετα αρχεία, να εκτελεί αιτήματα δικτύου, και τα λοιπά. |
| 54 | +======= |
| 55 | +Modern JavaScript is a "safe" programming language. It does not provide low-level access to memory or the CPU, because it was initially created for browsers which do not require it. |
| 56 | +>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78 |
47 | 57 |
|
48 | 58 | Η JavaScript στο πρόγραμμα περιήγησης μπορεί να κάνει ό, τι σχετίζεται με τη διαχείριση ιστοσελίδων, την αλληλεπίδραση με τον χρήστη και τον διακομιστή ιστού. |
49 | 59 |
|
|
59 | 69 |
|
60 | 70 | Οι δυνατότητες τις JavaScript στο πρόγραμμα περιήγησης είναι περιορισμένες για λόγους ασφάλειας του χρήστη. Ο στόχος είναι να αποτραπεί η πρόσβαση μιας κακόβουλης ιστοσελίδας σε ιδιωτικές πληροφορίες ή να βλάψει τα δεδομένα του χρήστη. |
61 | 71 |
|
| 72 | +<<<<<<< HEAD |
62 | 73 | Παραδείγματα τέτοιων περιορισμών περιλαμβάνουν: |
| 74 | +======= |
| 75 | +JavaScript's abilities in the browser are limited to protect the user's safety. The aim is to prevent an evil webpage from accessing private information or harming the user's data. |
| 76 | +>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78 |
63 | 77 |
|
64 | 78 | - Η JavaScript σε μια ιστοσελίδα ενδέχεται να μην διαβάζει / γράφει αυθαίρετα αρχεία στον σκληρό δίσκο, να τα αντιγράφει ή να εκτελεί προγράμματα. Δεν έχει άμεση πρόσβαση στις λειτουργίες του λειτουργικού συστήματος. |
65 | 79 |
|
|
68 | 82 | Υπάρχουν τρόποι αλληλεπίδρασης με κάμερα / μικρόφωνο και άλλες συσκευές, αλλά απαιτούν τη ρητή άδεια του χρήστη. Επομένως, μια σελίδα με δυνατότητα JavaScript ενδέχεται να μην ενεργοποιεί κρυφά μια κάμερα web, να παρατηρεί το περιβάλλον και να στέλνει τις πληροφορίες στο [NSA] (https://en.wikipedia.org/wiki/National_Security_Agency) |
69 | 83 | - Διαφορετικές tabs/windows γενικά δεν αναγνωρίζουν ο ένας τον άλλον. Μερικές φορές το κάνουν, για παράδειγμα όταν ένα παράθυρο χρησιμοποιεί JavaScript για να ανοίξει το άλλο. Αλλά ακόμη και σε αυτήν την περίπτωση, η JavaScript από μία σελίδα ενδέχεται να μην έχει πρόσβαση στην άλλη, εάν προέρχεται από διαφορετικούς ιστότοπους (από διαφορετικό τομέα, πρωτόκολλο ή θύρα). |
70 | 84 |
|
| 85 | +<<<<<<< HEAD |
71 | 86 | Αυτό ονομάζεται "Same Origin Policy". Για να επιλυθεί αυτό, *οι δυο σελιδες* πρέπει να συμφωνήσουν για την ανταλλαγή δεδομένων και να περιέχουν έναν ειδικό κώδικα JavaScript που το χειρίζεται. Θα το καλύψουμε έπειτα στο σεμινάριο. |
72 | 87 |
|
73 | 88 | Αυτός ο περιορισμός υπάρχει για την ασφάλεια του χρήστη. Μια σελίδα από το 'http://anysite.com' που έχει ανοίξει ένας χρήστης δεν πρέπει να έχει πρόσβαση σε άλλη καρτέλα του προγράμματος περιήγησης με τη διεύθυνση URL 'http://gmail.com' και να κλέβει πληροφορίες από εκεί. |
|
76 | 91 |  |
77 | 92 |
|
78 | 93 | Τέτοια όρια δεν υπάρχουν εάν η JavaScript χρησιμοποιείται εκτός του προγράμματος περιήγησης, για παράδειγμα σε διακομιστή. Τα σύγχρονα προγράμματα περιήγησης επιτρέπουν επίσης plugin/extensions που ενδέχεται να ζητούν εκτεταμένα δικαιώματα. |
| 94 | +======= |
| 95 | + There are ways to interact with the camera/microphone and other devices, but they require a user's explicit permission. So a JavaScript-enabled page may not sneakily enable a web-camera, observe the surroundings and send the information to the [NSA](https://en.wikipedia.org/wiki/National_Security_Agency). |
| 96 | +- Different tabs/windows generally do not know about each other. Sometimes they do, for example when one window uses JavaScript to open the other one. But even in this case, JavaScript from one page may not access the other page if they come from different sites (from a different domain, protocol or port). |
| 97 | + |
| 98 | + This is called the "Same Origin Policy". To work around that, *both pages* must agree for data exchange and must contain special JavaScript code that handles it. We'll cover that in the tutorial. |
| 99 | + |
| 100 | + This limitation is, again, for the user's safety. A page from `http://anysite.com` which a user has opened must not be able to access another browser tab with the URL `http://gmail.com`, for example, and steal information from there. |
| 101 | +- JavaScript can easily communicate over the net to the server where the current page came from. But its ability to receive data from other sites/domains is crippled. Though possible, it requires explicit agreement (expressed in HTTP headers) from the remote side. Once again, that's a safety limitation. |
| 102 | + |
| 103 | + |
| 104 | + |
| 105 | +Such limitations do not exist if JavaScript is used outside of the browser, for example on a server. Modern browsers also allow plugins/extensions which may ask for extended permissions. |
| 106 | +>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78 |
79 | 107 |
|
80 | 108 | ## Τι κάνει την JavaScript μοναδική? |
81 | 109 |
|
|
89 | 117 |
|
90 | 118 | Αυτό κάνει την JavaScript μοναδική. Γι 'αυτό είναι το πιο διαδεδομένο εργαλείο για τη δημιουργία διεπαφών προγράμματος περιήγησης. |
91 | 119 |
|
| 120 | +<<<<<<< HEAD |
92 | 121 | Ενώ σχεδιάζετε να μάθετε μια νέα τεχνολογία, είναι ωφέλιμο να ελέγξετε τις προοπτικές της. Ας προχωρήσουμε λοιπόν στις σύγχρονες τάσεις που το επηρεάζουν, συμπεριλαμβανομένων των νέων γλωσσών και των δυνατοτήτων του προγράμματος περιήγησης. |
| 122 | +======= |
| 123 | +That said, JavaScript can be used to create servers, mobile applications, etc. |
| 124 | +>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78 |
93 | 125 |
|
94 | 126 | ## Γλώσσες "πάνω απο" την JavaScript |
95 | 127 |
|
96 | 128 | Η σύνταξη της JavaScript δεν ταιριάζει στις ανάγκες όλων. Διαφορετικοί άνθρωποι θέλουν διαφορετικά χαρακτηριστικά. |
97 | 129 |
|
98 | 130 | Αυτό είναι αναμενόμενο, επειδή τα έργα και οι απαιτήσεις είναι διαφορετικά για όλους. |
99 | 131 |
|
| 132 | +<<<<<<< HEAD |
100 | 133 | Έτσι πρόσφατα εμφανίστηκε μια πληθώρα νέων γλωσσών, οι οποίες *μεταφράστηκαν* (μετατράπηκαν) σε JavaScript πριν εκτελεστούν στο πρόγραμμα περιήγησης. |
| 134 | +======= |
| 135 | +So, recently a plethora of new languages appeared, which are *transpiled* (converted) to JavaScript before they run in the browser. |
| 136 | +>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78 |
101 | 137 |
|
102 | 138 | Τα σύγχρονα εργαλεία καθιστούν τη μετάδοση πολύ γρήγορα και διαφανα, επιτρέποντας στην πραγματικότητα στους προγραμματιστές να κωδικοποιούν σε άλλη γλώσσα και να το μετατρέπουν αυτόματα σε "under the hood". |
103 | 139 |
|
104 | 140 | Παραδείγματα τέτοιων γλωσσών: |
105 | 141 |
|
| 142 | +<<<<<<< HEAD |
106 | 143 | <<<<<<< HEAD |
107 | 144 | - [CoffeeScript](http://coffeescript.org/) είναι "syntactic sugar" για την JavaScript. Εισάγει συντομότερη σύνταξη, επιτρέποντάς μας να γράψουμε σαφέστερο και ακριβέστερο κώδικα. |
108 | 145 | Συνήθως, στούς Ruby devs αρέσει. |
|
112 | 149 | - [Brython](https://brython.info/) είναι ένας Python transpiler σε JavaScript που επιτρέπει την εγγραφή εφαρμογής σε πλήρη Python χωρίς JavaScript. |
113 | 150 | ======= |
114 | 151 | - [CoffeeScript](https://coffeescript.org/) is a "syntactic sugar" for JavaScript. It introduces shorter syntax, allowing us to write clearer and more precise code. Usually, Ruby devs like it. |
| 152 | +======= |
| 153 | +- [CoffeeScript](https://coffeescript.org/) is "syntactic sugar" for JavaScript. It introduces shorter syntax, allowing us to write clearer and more precise code. Usually, Ruby devs like it. |
| 154 | +>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78 |
115 | 155 | - [TypeScript](https://www.typescriptlang.org/) is concentrated on adding "strict data typing" to simplify the development and support of complex systems. It is developed by Microsoft. |
116 | 156 | - [Flow](https://flow.org/) also adds data typing, but in a different way. Developed by Facebook. |
117 | 157 | - [Dart](https://www.dartlang.org/) is a standalone language that has its own engine that runs in non-browser environments (like mobile apps), but also can be transpiled to JavaScript. Developed by Google. |
118 | 158 | - [Brython](https://brython.info/) is a Python transpiler to JavaScript that enables the writing of applications in pure Python without JavaScript. |
119 | 159 | - [Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) is a modern, concise and safe programming language that can target the browser or Node. |
120 | 160 | >>>>>>> 30a5d5e2a7c3504c9afd5028f83f4a696e60aede |
121 | 161 |
|
| 162 | +<<<<<<< HEAD |
122 | 163 | Υπάρχουν περισσότερα. Φυσικά, ακόμη και αν χρησιμοποιούμε μία από τις μεταγλωττισμένες γλώσσες, πρέπει επίσης να γνωρίζουμε τη JavaScript για να κατανοήσουμε πραγματικά τι κάνουμε. |
| 164 | +======= |
| 165 | +There are more. Of course, even if we use one of these transpiled languages, we should also know JavaScript to really understand what we're doing. |
| 166 | +>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78 |
123 | 167 |
|
124 | 168 | ## Περίληψη |
125 | 169 |
|
|
0 commit comments