Προγραμματισμός

Τέλεια εργαλεία για μεταγλώττιση σε JavaScript

Κάθε προγραμματιστής έχει μια ή δύο αγαπημένη γλώσσα. Οι λάτρεις της JavaScript είναι οι πιο τυχεροί αυτές τις μέρες, επειδή η γλώσσα τους καταλαμβάνει το Διαδίκτυο και το Διαδίκτυο καταλαμβάνει τον κόσμο. Όσοι οι καρδιές τους κατοικούν αλλού στον κόσμο της γλώσσας προγραμματισμού, έχουν κολλήσει. Μπορούν είτε να παραμείνουν στο περιθώριο και να καταραστούν τον αδυσώπητο ζογκλέρ των HTML, CSS, JavaScript και Node.js, είτε μπορούν να βρουν έναν τρόπο να το λατρέψουν.

Ευτυχώς, υπάρχει ένας τρίτος τρόπος που σας επιτρέπει να απολαύσετε τις απολαύσεις της αγαπημένης σας γλώσσας ενώ ταυτόχρονα αναπτύσσετε τον κώδικά σας στον συνεχώς διευρυνόμενο κόσμο της JavaScript: Απλώς μετατρέψτε τον κωδικό σας, ο οποίος μπορεί να είναι εκπληκτικά εύκολος. Η απόδοση μπορεί να υποφέρει λίγο, αλλά συχνά πολύ λιγότερο από ό, τι φαντάζεστε. Στη συνέχεια, μπορείτε να στείλετε τον κωδικό σας σε προγράμματα περιήγησης και να σταματήσετε να προσπαθείτε να κάνετε τους ανθρώπους να εγκαταστήσουν εκτελέσιμα αρχεία.

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

Είστε ευπρόσδεκτοι να βυθιστείτε στην κρίμα σας, αλλά υπάρχουν πολλοί εξορθολογισμοί που κάνουν την ιδέα πιο εύγευστη. Πρώτον, οι μηχανές JavaScript λειτουργούν πολύ, πολύ πιο γρήγορα από ό, τι στο παρελθόν. Δεύτερον, η δημιουργία ενός UI Ιστού δεν ήταν ποτέ πιο εύκολη, χάρη στα πλαίσια και το άφθονο ταλέντο σχεδιασμού HTML / CSS. Τρίτον, το JavaScript καθίσταται λίγο lingua franca. Εάν μπορείτε να μετατρέψετε όλες αυτές τις γλώσσες σε JavaScript και η λίστα είναι εκπληκτικά μεγάλη, μπορείτε επίσης να τις συνδέσετε όλες μαζί.

Εδώ ρίχνουμε μια ματιά στον πλούτο των μικρών γλωσσών που επιτρέπουν σε ορισμένες από τις πιο δημοφιλείς γλώσσες προγραμματισμού να μεταγλωττιστούν στο JavaScript. Ένα μελλοντικό άρθρο θα διερευνήσει πώς οι ξεθωριασμένες γλώσσες ξαναγεννιούνται φέρνοντάς τις στον browser Δεν υπάρχει λόγος να μπερδευτείς με οίκτο ή μίσος. Αυτές οι τεχνικές σάς επιτρέπουν να απολαύσετε την αγαπημένη σας γλώσσα και να εκτελέσετε οπουδήποτε κάνει το JavaScript.

Ρουμπίνι

Υπάρχουν πολλές επιλογές που σας επιτρέπουν να σκεφτείτε σαν προγραμματιστής Ruby ενώ εκτελείτε σε περιβάλλον JavaScript.

Το RubyJS, για παράδειγμα, είναι μια βιβλιοθήκη JavaScript που προσθέτει πολλά από τα βασικά πρωτόγονα σε ένα αντικείμενο JavaScript. Αυτό που γράφετε είναι τεχνικά JavaScript, αλλά το ειδικό αντικείμενο Ruby συμπεριφέρεται σαν τον κωδικό Ruby τις περισσότερες φορές. Σας περιμένουν χορδές, αριθμοί, επαναληπτές και αριθμητές.

Εάν η σύνταξη JavaScript που λειτουργεί όπως το Ruby δεν είναι αρκετή, η Opal θα μεταφράσει τον πηγαίο κώδικα Ruby απευθείας σε JavaScript. Συμπεριφέρεται συχνά σαν Ruby VM, αλλά μερικές φορές δεν συμβαίνει. Οι μεταβλητές χορδές του Ruby, για παράδειγμα, μετατρέπονται απευθείας σε αμετάβλητες JavaScript, οι οποίες δεν πρέπει να αποτελούν πρόβλημα για ορισμένες εφαρμογές, αλλά θα μπορούσαν να προκαλέσουν τρελούς σε ορισμένα άτομα. Άλλα μικρά εφέ όπως αυτό μπορεί να οδηγήσουν σε αγενείς εκπλήξεις σε περιπτώσεις περιθωρίων.

Για όσους θέλουν περισσότερα, το HotRuby προσφέρει μια πιο ολοκληρωμένη λύση, μια εικονική μηχανή JavaScript που πραγματοποιεί κωδικούς Ruby op. Η βάση κώδικα γερνάει λίγο, αλλά προσφέρει στους αληθινούς πιστούς μια άλλη επιλογή.

Ιάβα

Είναι δύσκολο να γνωρίζουμε τι ενέπνευσε την Google να δημιουργήσει το Google Web Toolkit, έναν προεπεξεργαστή που μετατρέπει την Java σε JavaScript. Ίσως ο διευθυντής αγαπούσε την Java και δεν ήθελε να πεθάνει. Ίσως είχαν επιπλέον ιδιοφυΐες Java να περιμένουν, να περιμένουν να τρέξουν στον Ιστό.

Όποιος και αν είναι ο λόγος, το έκαναν και το χρησιμοποιούν συχνά για τα πιο εξελιγμένα προϊόντα τους στο Web. Είναι ένα υπέροχο δώρο για οποιονδήποτε έχει σωρό Java και δεν έχει χρόνο να το ξαναγράψει. Τα κότσια της γλώσσας είναι όλα εκεί, αλλά μερικά από τα λιγότερο κοινά μαθήματα όπως το BigInteger λείπουν. Ωστόσο, συνήθως μπορείτε να βρείτε έναν τρόπο να τα προσθέσετε. Το πλαίσιο διεπαφής χρήστη δανείζεται σε μεγάλο βαθμό από το Swing, οπότε οι προγραμματιστές Swing θα νιώσουν σαν στο σπίτι τους. Άλλοι δεν θα δυσκολευτούν να μάθουν.

Το Google Web Toolkit απέχει πολύ από τη μόνη επιλογή για προγραμματιστές Java. Το Java2Script είναι πλήρως ενσωματωμένο με το Eclipse και το GrooScript μετατρέπει τον ξάδερφο της Java, Groovy.

Υπάρχουν πολλά εργαλεία που εκτελούν κώδικα JVM byte με JavaScript, μια έξυπνη ιδέα που σας επιτρέπει να αναπτύξετε αρχεία JAR ακόμη και αν δεν έχετε την πηγή Java. Μερικοί, όπως ο Doppio και ο Node-jvm, είναι διερμηνείς. Άλλοι, όπως το TeaVM ή το Dragome, θα μετατρέψουν τον κώδικα byte σε JavaScript μόνιμα.

Έρλανγκ

Οι λάτρεις του Erlang έχουν πολλές επιλογές. Μια λύση είναι να χρησιμοποιήσετε το Erjang, ένα εργαλείο που εκτελεί το Erlang στο JVM, το οποίο στη συνέχεια χρησιμοποιείται για την εκτέλεση κώδικα byte Java με μία από τις παραπάνω επιλογές Java. Ακούγεται απλό, έτσι;

Ο Shen είναι ένας μεταγλωττιστής που μετατρέπει τον Erlang και τα ξαδέλφια του, όπως το Elixir, το Joxa και το Lol, σε JavaScript. Εάν θέλετε να εκτελέσετε αυτόν τον κώδικα στο Node.js, υπάρχει επίσης ένα πακέτο erlang-shen-js.

Μια τρίτη επιλογή είναι να χρησιμοποιήσετε το LuvvieScript, ένα αυστηρό υποσύνολο του Erlang στο οποίο έχουν δοθεί αγκίστρια για πρόσβαση σε όλα τα αντικείμενα DOM. Χρησιμοποιείτε τη δομή Erlang που σας αρέσει και μεταφράζει τις οδηγίες σας σε κάτι που το DOM κατανοεί. Δεν είναι ακριβώς το ίδιο, αλλά θα το κάνει.

ντο

Πολλοί άνθρωποι εκπλήσσονται που βρίσκουν ότι μπορούν να χρησιμοποιούν γλώσσες τύπου C ή C με JavaScript. Σίγουρα, η βασική σύνταξη JavaScript μοιάζει αρκετά με το C, αλλά τα κότσια είναι διαφορετικά. Το C σάς επιτρέπει να αγγίζετε τη μνήμη απευθείας, αλλά η JavaScript κρύβει όλες αυτές τις λεπτομέρειες. Το C σας επιτρέπει να χειρίζεστε δείκτες, αλλά η JavaScript σας προστατεύει από την επικίνδυνη ισχύ τους. Ωστόσο, αυτές οι διαφορές μπορούν να ξεπεραστούν με λίγο έξυπνο hacking.

Μπορεί να μην είναι δίκαιο να ονομάσετε LLJS μια έκδοση C, αλλά αυτή η έκδοση του JavaScript προσφέρει στατικά δακτυλογραφημένες μεταβλητές και έλεγχο προγραμματιστή της μνήμης - καλά, όχι η μνήμη αυτή καθαυτή, αλλά μια έκδοση JavaScript αυτής. Η τεκμηρίωση θέλει να υπόσχεται εκτέλεση χωρίς παύση επειδή δεν υπάρχει συλλογή απορριμμάτων.

Εάν θέλετε να εργαστείτε με το τυπικό C, ο Clue θα μετατρέψει το C σε JavaScript και μια ποικιλία άλλων γλωσσών δέσμης ενεργειών όπως η Perl ή η Lua. Οι προγραμματιστές ισχυρίζονται ακόμη ότι κάποιος κώδικας θα τρέχει πραγματικά πιο γρήγορα στο JIT για αυτές τις δυναμικές γλώσσες από ό, τι όταν μεταγλωττίζεται σε εγγενή δυαδικά αρχεία. Το μυστικό είναι ότι τα JIT μπορούν να παρατηρήσουν πράγματα κατά τη διάρκεια του χρόνου εκτέλεσης που οι βασικοί μεταγλωττιστές δεν μπορούσαν, επειδή μπορούν να παρακολουθήσουν την εκτέλεση του προγράμματος.

Το μεγαλύτερο όνομα μπορεί να είναι το Emscripten, μια modded έκδοση του LLVM που επανασυνδέεται για να φτιάξει οδηγίες για το asm.js αντί για τον κωδικό του μηχανήματος. Το μυστικό είναι ότι το asm.js είναι ένα στενό υποσύνολο της JavaScript που έχει σχεδιαστεί για να βελτιστοποιείται εύκολα από τις πιο πρόσφατες μηχανές JavaScript, όπως το SpiderMonkey. Τα αποτελέσματα είναι εντυπωσιακά και μερικές από τις καλύτερες αποδείξεις προέρχονται από την κοινότητα τυχερών παιχνιδιών. Τόσο οι μηχανές Unity όσο και οι Unreal μπορούν να τρέχουν παιχνίδια σε προγράμματα περιήγησης συμβατά με HTML5.

Πύθων

Η Python είναι μια άλλη δημοφιλής δυναμική γλώσσα που χαρτογραφεί εύκολα στο JavaScript. Πολλά από τα εσωτερικά χαρακτηριστικά είναι παρόμοια και μερικές από τις μεγαλύτερες διαφορές είναι στη σύνταξη.

Απλούστερες επιλογές, όπως το RapydScript και το PyvaScript, προσφέρουν απλώς σύνταξη τύπου Python που μεταφράζεται αρκετά απευθείας σε JavaScript. Θα κάνουν μερικούς μετασχηματισμούς, όπως παρεμβολές με σγουρά αγκύλες για να ταιριάζουν με τα μπλοκ με κενό χώρο και voilà - εκτελείται σε ένα πρόγραμμα περιήγησης. Αυτά είναι περισσότερα για προγραμματιστές που σκέφτονται σε JavaScript αλλά θέλουν να πληκτρολογήσουν Pythonically, όπως λένε οι λάτρεις της γλώσσας.

Πιο περίπλοκες εκδόσεις, όπως το PYXC-PJ και το Pyjs, θα μετατρέψουν ενεργά το Python σε JavaScript, δημιουργώντας συχνά κάτι αρκετά ευανάγνωστο - ή τουλάχιστον εξίσου αναγνώσιμο με τον αρχικό κώδικα. Το Pyjs έρχεται επίσης με μια εργαλειοθήκη widget που το κάνει αρκετά παρόμοιο με το Google Web Toolkit.

Το πιο διασκεδαστικό, ωστόσο, μπορεί να είναι το PyPy, ένα απίστευτο επίτευγμα της μηχανικής λογισμικού με σχεδόν αναλογίες Rube Goldberg. Ο Python μπαίνει και τρέχει σε έναν διερμηνέα Python γραμμένο στο RPython, ένα υποσύνολο του Python που έχει σχεδιαστεί για εύκολη σύνταξη. Αυτό το RPython στη συνέχεια συντάσσεται σε κάτι που μοιάζει με C που μπορεί να τροφοδοτηθεί στο Emscripten. Οι προγραμματιστές ισχυρίζονται ότι μπορούν να δείξουν κάποια σημεία αναφοράς Python να τρέχουν γρηγορότερα στο SpiderMonkey από το CPython.

Αν μπορούν να το κάνουν με τους Python και C, μπορείτε επίσης.

JavaScript, σε άλλο κοστούμι

Φυσικά, ακόμη και όταν πρόκειται για JavaScript, έχετε εναλλακτικές λύσεις. Άλλωστε, μερικοί άνθρωποι αρέσουν τα σημεία στίξης και άλλοι δεν το κάνουν. Το CoffeeScript είναι για όσους δεν το κάνουν. Εάν πρέπει να προγραμματίσετε σε JavaScript αλλά δεν θέλετε να πληκτρολογείτε τόσα ερωτηματικά ή αγκύλες, τότε το CoffeeScript είναι για εσάς.

Τα κότσια του CoffeeScript είναι τα ίδια με το JavaScript επειδή δεν είναι πραγματικά γλώσσα. Είναι ένας προεπεξεργαστής που προσθέτει τα ερωτηματικά και τα σγουρά αγκύλια, οπότε δεν χρειάζεται. Πληκτρολογείτε το πρόγραμμά σας με απλότητα τύπου Ruby και το CoffeeScript το μετατρέπει σε μια ελαχιστοποιημένη έκδοση του JavaScript.

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

Ο κόσμος του CoffeeScript είναι εξαιρετικά διαφορετικός. Μόλις ο κόσμος συνειδητοποίησε ότι μπορούσε να προεπεξεργαστεί τον κώδικά του, πολλοί μπήκαν στο παιχνίδι. Το Iced CoffeeScript, για παράδειγμα, είναι σαν το κανονικό CoffeeScript, αλλά με μερικές επιπλέον κατασκευές που κάνουν τις ασύγχρονες κλήσεις λίγο πιο καθαρές και απλούστερες στην πληκτρολόγηση και ανάγνωση. Μπορεί να υπάρχουν τουλάχιστον δώδεκα ξαδέλφια που προσφέρουν να απλοποιήσουν το συγκεκριμένο στυλ προγραμματισμού σας.

Σχετικά Άρθρα

  • 7 λόγοι για τους οποίους τα πλαίσια είναι οι νέες γλώσσες προγραμματισμού
  • 7 διαχρονικά μαθήματα προγραμματισμού «Graybeards»
  • 9 γλώσσες αιχμής που αξίζει να μάθετε τώρα
  • Κατεβάστε: Ο επαγγελματικός οδηγός επιβίωσης του επαγγελματία προγραμματιστή
  • Κατεβάστε: Βραβεία Τεχνολογίας της Χρονιάς 2015
  • Κατεβάστε: 29 συμβουλές για επιτυχία ως ανεξάρτητος προγραμματιστής
  • Ανασκόπηση: Συγκρίθηκαν τα τέσσερα μεγάλα IDE Java
  • Κατεβάστε: Πρακτικά με 10 συντάκτες JavaScript και IDE
  • 10 μάχες μαίνονται για τις καρδιές και το μυαλό των προγραμματιστών
  • Επίθεση των γλωσσών προγραμματισμού ενός γράμματος
  • PHP vs Node.js: Μια επική μάχη για το μερίδιο του προγραμματιστή
  • 15 τεχνολογίες που αλλάζουν τον τρόπο λειτουργίας των προγραμματιστών
  • 12 προβλέψεις για το μέλλον του προγραμματισμού
  • 15 καυτές τάσεις προγραμματισμού - και 15 κρύες
  • Dev-olution: Χαιρετισμός 19 γενεών προγραμματιστών υπολογιστών
  • 10 δυνατότητες που θέλουμε να δούμε σε HTML6
$config[zx-auto] not found$config[zx-overlay] not found