Skip to content

Commit c138889

Browse files
authored
Update
1 parent c92c341 commit c138889

1 file changed

Lines changed: 3 additions & 56 deletions

File tree

1-js/01-getting-started/1-intro/article.md

Lines changed: 3 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -33,27 +33,18 @@
3333

3434
Τα engines είναι περίπλοκοι. Αλλά τα βασικά είναι εύκολα.
3535

36-
<<<<<<< HEAD
36+
3737
1. Το engine (ενσωματωμένος αν είναι πρόγραμμα περιήγησης) διαβάζει ("αναλύει") τα script.
3838
2. Στη συνέχεια μετατρέπει ("μεταγλώττιση") το script στη γλώσσα του μηχανήματος.
3939
3. Ύστερα ο κώδικας του μηχανήματος τρέχει, αρκετά γρήγορα.
4040
Το engine εφαρμόζει βελτιστοποιήσει σε κάθε βήμα της διαδικασίας. Παρακολουθεί ακόμη και το μεταγλωττισμένο script καθώς εκτελείται, αναλύει τα δεδομένα που ρέουν μέσα από αυτό και εφαρμόζει βελτιστοποιήσεις στον κώδικα του μηχανήματος βάσει αυτής της γνώσης. Όταν ολοκληρωθεί, τα script εκτελούνται αρκετά γρήγορα.
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
4741

4842
## Τι μπορεί να κάνει η JavaScript στο πρόγραμμα περιήγησης?
4943

5044
Η σύγχρονη JavaScript είναι μια "ασφαλής" γλώσσα προγραμματισμού. Δεν παρέχει low-level πρόσβαση στη μνήμη ή στη CPU, επειδή δημιουργήθηκε αρχικά για προγράμματα περιήγησης που δεν το χρειάζονται.
5145

52-
<<<<<<< HEAD
46+
5347
Οι δυνατότητες της 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
5748

5849
Η JavaScript στο πρόγραμμα περιήγησης μπορεί να κάνει ό, τι σχετίζεται με τη διαχείριση ιστοσελίδων, την αλληλεπίδραση με τον χρήστη και τον διακομιστή ιστού.
5950

@@ -69,11 +60,7 @@ Modern JavaScript is a "safe" programming language. It does not provide low-leve
6960

7061
Οι δυνατότητες τις JavaScript στο πρόγραμμα περιήγησης είναι περιορισμένες για λόγους ασφάλειας του χρήστη. Ο στόχος είναι να αποτραπεί η πρόσβαση μιας κακόβουλης ιστοσελίδας σε ιδιωτικές πληροφορίες ή να βλάψει τα δεδομένα του χρήστη.
7162

72-
<<<<<<< HEAD
7363
Παραδείγματα τέτοιων περιορισμών περιλαμβάνουν:
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
7764

7865
- Η JavaScript σε μια ιστοσελίδα ενδέχεται να μην διαβάζει / γράφει αυθαίρετα αρχεία στον σκληρό δίσκο, να τα αντιγράφει ή να εκτελεί προγράμματα. Δεν έχει άμεση πρόσβαση στις λειτουργίες του λειτουργικού συστήματος.
7966

@@ -82,7 +69,6 @@ JavaScript's abilities in the browser are limited to protect the user's safety.
8269
Υπάρχουν τρόποι αλληλεπίδρασης με κάμερα / μικρόφωνο και άλλες συσκευές, αλλά απαιτούν τη ρητή άδεια του χρήστη. Επομένως, μια σελίδα με δυνατότητα JavaScript ενδέχεται να μην ενεργοποιεί κρυφά μια κάμερα web, να παρατηρεί το περιβάλλον και να στέλνει τις πληροφορίες στο [NSA] (https://en.wikipedia.org/wiki/National_Security_Agency)
8370
- Διαφορετικές tabs/windows γενικά δεν αναγνωρίζουν ο ένας τον άλλον. Μερικές φορές το κάνουν, για παράδειγμα όταν ένα παράθυρο χρησιμοποιεί JavaScript για να ανοίξει το άλλο. Αλλά ακόμη και σε αυτήν την περίπτωση, η JavaScript από μία σελίδα ενδέχεται να μην έχει πρόσβαση στην άλλη, εάν προέρχεται από διαφορετικούς ιστότοπους (από διαφορετικό τομέα, πρωτόκολλο ή θύρα).
8471

85-
<<<<<<< HEAD
8672
Αυτό ονομάζεται "Same Origin Policy". Για να επιλυθεί αυτό, *οι δυο σελιδες* πρέπει να συμφωνήσουν για την ανταλλαγή δεδομένων και να περιέχουν έναν ειδικό κώδικα JavaScript που το χειρίζεται. Θα το καλύψουμε έπειτα στο σεμινάριο.
8773

8874
Αυτός ο περιορισμός υπάρχει για την ασφάλεια του χρήστη. Μια σελίδα από το 'http://anysite.com' που έχει ανοίξει ένας χρήστης δεν πρέπει να έχει πρόσβαση σε άλλη καρτέλα του προγράμματος περιήγησης με τη διεύθυνση URL 'http://gmail.com' και να κλέβει πληροφορίες από εκεί.
@@ -91,19 +77,6 @@ JavaScript's abilities in the browser are limited to protect the user's safety.
9177
![](limitations.svg)
9278

9379
Τέτοια όρια δεν υπάρχουν εάν η 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-
![](limitations.svg)
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
10780

10881
## Τι κάνει την JavaScript μοναδική?
10982

@@ -117,53 +90,27 @@ Such limitations do not exist if JavaScript is used outside of the browser, for
11790

11891
Αυτό κάνει την JavaScript μοναδική. Γι 'αυτό είναι το πιο διαδεδομένο εργαλείο για τη δημιουργία διεπαφών προγράμματος περιήγησης.
11992

120-
<<<<<<< HEAD
12193
Ενώ σχεδιάζετε να μάθετε μια νέα τεχνολογία, είναι ωφέλιμο να ελέγξετε τις προοπτικές της. Ας προχωρήσουμε λοιπόν στις σύγχρονες τάσεις που το επηρεάζουν, συμπεριλαμβανομένων των νέων γλωσσών και των δυνατοτήτων του προγράμματος περιήγησης.
122-
=======
123-
That said, JavaScript can be used to create servers, mobile applications, etc.
124-
>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78
12594

12695
## Γλώσσες "πάνω απο" την JavaScript
12796

12897
Η σύνταξη της JavaScript δεν ταιριάζει στις ανάγκες όλων. Διαφορετικοί άνθρωποι θέλουν διαφορετικά χαρακτηριστικά.
12998

13099
Αυτό είναι αναμενόμενο, επειδή τα έργα και οι απαιτήσεις είναι διαφορετικά για όλους.
131100

132-
<<<<<<< HEAD
133101
Έτσι πρόσφατα εμφανίστηκε μια πληθώρα νέων γλωσσών, οι οποίες *μεταφράστηκαν* (μετατράπηκαν) σε 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
137102

138103
Τα σύγχρονα εργαλεία καθιστούν τη μετάδοση πολύ γρήγορα και διαφανα, επιτρέποντας στην πραγματικότητα στους προγραμματιστές να κωδικοποιούν σε άλλη γλώσσα και να το μετατρέπουν αυτόματα σε "under the hood".
139104

140105
Παραδείγματα τέτοιων γλωσσών:
141106

142-
<<<<<<< HEAD
143-
<<<<<<< HEAD
144107
- [CoffeeScript](http://coffeescript.org/) είναι "syntactic sugar" για την JavaScript. Εισάγει συντομότερη σύνταξη, επιτρέποντάς μας να γράψουμε σαφέστερο και ακριβέστερο κώδικα.
145108
Συνήθως, στούς Ruby devs αρέσει.
146109
- [TypeScript](http://www.typescriptlang.org/) επικεντρώνεται στην προσθήκη "αυστηρής πληκτρολόγησης δεδομένων" για απλοποίηση της ανάπτυξης και υποστήριξης σύνθετων συστημάτων. Αναπτύσσεται από τη Microsoft.
147110
- [Flow](http://flow.org/) προσθέτει επίσης πληκτρολόγηση δεδομένων, αλλά με διαφορετικό τρόπο. Αναπτύχθηκε από το Facebook.
148111
- [Dart](https://www.dartlang.org/) είναι μια αυτόνομη γλώσσα που έχει τη δική της μηχανή που λειτουργεί σε περιβάλλοντα εκτός προγράμματος περιήγησης (όπως εφαρμογές για κινητά), αλλά μπορεί επίσης να μεταφερθεί σε JavaScript. Αναπτύχθηκε από την Google.
149-
- [Brython](https://brython.info/) είναι ένας Python transpiler σε JavaScript που επιτρέπει την εγγραφή εφαρμογής σε πλήρη Python χωρίς JavaScript.
150-
=======
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
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.
156-
- [Flow](https://flow.org/) also adds data typing, but in a different way. Developed by Facebook.
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.
158-
- [Brython](https://brython.info/) is a Python transpiler to JavaScript that enables the writing of applications in pure Python without JavaScript.
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.
160-
>>>>>>> 30a5d5e2a7c3504c9afd5028f83f4a696e60aede
161-
162-
<<<<<<< HEAD
112+
163113
Υπάρχουν περισσότερα. Φυσικά, ακόμη και αν χρησιμοποιούμε μία από τις μεταγλωττισμένες γλώσσες, πρέπει επίσης να γνωρίζουμε τη 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
167114

168115
## Περίληψη
169116

0 commit comments

Comments
 (0)