Εισαγωγή
Γεια σας. Καλώς ήρθατε. Ελπίζω να είστε όλοι καλά. Ελπίζω να διασκεδάσατε παίζοντας και εξερευνώντας κάποιες παλιές και επιδραστικές γλώσσες τον Jurasic July. Τώρα πάμε στον 8ο μήνα του 2023 και στον 7ο θεματικό μας μήνα: τον Appy August.
Τι εννοούμε με τον όρο apps;
Λοιπόν, μπορεί να σημαίνει αρκετά πράγματα:
- Εφαρμογές web, το ψωμοτύρι πολλών από εμάς σήμερα
- Native εφαρμογές, όπως αυτές που τρέχουν στο τηλέφωνο ή το tablet σου
- Εφαρμογές desktop που τρέχουν απευθείας στο λειτουργικό σύστημα Windows, Mac ή Linux σου
- Εφαρμογές για συγκεκριμένους τομείς
- Επιχειρηματικές εφαρμογές
- Και άλλα πολλά!
Ποιες είναι, λοιπόν, οι γλώσσες;
Έχουμε να κάνουμε με 14 ολόκληρες γλώσσες: ABAP, CoffeeScript, Dart, Delphi, Elm, Java, JavaScript, Kotlin, Objective-C, PHP, PureScript, ReasonML, Swift και TypeScript.
Τα σήματα
Πάρε το σήμα ολοκληρώνοντας 5 ασκήσεις σε μία από αυτές τις γλώσσες αυτόν τον μήνα. Και για το ετήσιο σήμα, χρειάζεται να ολοκληρώσεις:
- Αναγραμματισμός: με δεδομένη μια λέξη και μια λίστα πιθανών αναγραμματισμών, βρες τους αναγραμματισμούς της
- Αριθμός τηλεφώνου: καθάρισε έναν αριθμό τηλεφώνου
- Τρίγωνο: χαρακτήρισε ένα τρίγωνο
- Μεταγραφή RNA: μετάτρεψε μια αλληλουχία DNA στο συμπλήρωμα RNA της
- Βαθμολογία Scrabble: με δεδομένη μια λέξη, υπολόγισε τη βαθμολογία της στο Scrabble
Επισκοπήσεις
ABAP
- Αναπτύχθηκε από τη SAP SE τη δεκαετία του 1980 και ο σχεδιαστικός της στόχος γίνεται σαφής όταν δούμε τι σήμαινε το ακρωνύμιο: Allgemeiner Berichts-Aufbereitungs-Prozessor, που στα γερμανικά σημαίνει "επεξεργαστής σύνταξης γενικών αναφορών". Αργότερα, η ABAP έγινε γενικότερα εφαρμόσιμη και το ακρωνύμιο ενημερώθηκε σε Advanced Business Application Programming για να το αντικατοπτρίζει
- Ισχυρή και στατικά τυποποιημένη γλώσσα
- Πολυπαραδειγματική: υποστηρίζει προστακτικό και αντικειμενοστρεφή προγραμματισμό
- Μεταγλωττίζεται σε bytecode. Έχει ενδιαφέρον ότι ο πηγαίος κώδικας αποθηκεύεται μέσα στη βάση δεδομένων
- Όλος ο κώδικας τρέχει στο πλαίσιο ενός συστήματος SAP, το οποίο αποτελείται από μια σχεσιακή βάση δεδομένων και έναν ή περισσότερους διακομιστές εφαρμογών
- Ιδιόκτητη τεχνολογία και κλειστός κώδικας, αν και ένας από τους συντηρητές μας έχει φτιάξει μια φανταστική υλοποίηση ανοιχτού κώδικα
- Χρησιμοποιείται σε επιχειρηματικές εφαρμογές, όπως χρηματοοικονομικά, διαχείριση υλικών, λογιστική και διοίκηση. Έχει πελάτες σε όλο τον κόσμο, με πολλά μεγάλα ονόματα όπως Apple, Amazon και Walmart
Γιατί είναι σπουδαία
- Εξελίσσεται διαρκώς, με νέες δυνατότητες να προστίθενται τακτικά
- Αξιόπιστη: σταθερή λειτουργικότητα με δεκαετίες εμπειρίας πίσω της
- Μεγάλη τυπική βιβλιοθήκη
Ξεχωριστά χαρακτηριστικά
- Απρόσκοπτη ενσωμάτωση με το σύστημα και τη βάση δεδομένων SAP, αλλά και με πολλά άλλα συστήματα
- Το ABAP Dictionary περιέχει όλα τα μεταδεδομένα για τα δεδομένα στο σύστημα SAP, που περιλαμβάνουν πίνακες, όψεις και δομές. Οι τύποι σε αυτό το λεξικό μπορούν να χρησιμοποιηθούν για να δώσουν στατικό τύπο σε μεταβλητές, ακόμη και όταν ο τύπος είναι πίνακας
- Το ABAP Workbench είναι μέρος του συστήματος ABAP και περιέχει μια σουίτα εργαλείων για την επεξεργασία προγραμμάτων. Περιλαμβάνει και τον σχεδιασμό οθονών
CoffeeScript
- Η γλώσσα δέχτηκε τα πρώτα της commits το 2009 από τον Jeremy Ashkenas, και το πρώτο μήνυμα commit είχε την ετικέτα "initial commit of the mystery language."
- Δυναμικά τυποποιημένη και πολυπαραδειγματική (αντικειμενοστρεφής, προστακτική, συναρτησιακή, πρωτοτυπική)
- Μεταγλωττίζεται σε JavaScript (αυτό είναι γνωστό ως transpiling). Ο χρυσός κανόνας της CoffeeScript είναι: "It's just JavaScript." Μία από τις πρώτες επιτυχημένες γλώσσες που "μεταγλωττίζονται σε JS"
- Έγινε δημοφιλής επειδή η CoffeeScript δεν είχε κάποια από τα προβλήματα που ταλαιπωρούσαν τότε όσους έγραφαν JS (όπως η διαφορετική συμπεριφορά του "this" ή η έλλειψη υποστήριξης κλάσεων). Συμπεριλήφθηκε στο Ruby on Rails από την έκδοση 3.1.
- Το 2017 η γλώσσα απέκτησε την έκδοση 2.0, που στόχευε να τη φέρει στο επίπεδο του τελευταίου προτύπου JavaScript. Η γλώσσα ενημερώνεται περίπου μία φορά τον χρόνο.
- Ο μεταγλωττιστής της γλώσσας γράφτηκε αρχικά σε Ruby, αλλά το 2010 αντικαταστάθηκε από έναν αυτοφιλοξενούμενο μεταγλωττιστή γραμμένο σε CoffeeScript (ο μεταγλωττιστής δεν εξαρτάται από το NodeJS και μπορεί να τρέξει απευθείας στον browser)
- Η CoffeeScript ήταν επιδραστική, καθώς ενέπνευσε τη JavaScript να υιοθετήσει ορισμένα χαρακτηριστικά (σύνταξη βέλους για lambda, κλάσεις)
- Χρησιμοποιούνταν από το Dropbox και στο Rails
Γιατί είναι σπουδαία
- Καθαρή, συνοπτική σύνταξη εμπνευσμένη από τη Python, τη Ruby και τη Haskell. Λιγότερο φλύαρη από τη JavaScript, αφαιρώντας πολλές παρενθέσεις και άγκιστρα, εν μέρει χάρη στη χρήση σημαντικής στοίχισης (τα κενά έχουν σημασία)
- Απλοποιημένη σημασιολογία, π.χ. καμία σύγχυση γύρω από τα let, var, const, αφού δεν υπάρχουν, και το == μετατρέπεται σε === (αυστηρή ισότητα), ενώ οι δεσμεύσεις συναρτήσεων αποτρέπουν κοινά λάθη με το "this"
- Βασισμένη σε εκφράσεις, που σημαίνει ότι μπορείς να αναθέσεις το αποτέλεσμα μιας έκφρασης if σε μια μεταβλητή
- Άφθονη συντακτική ζάχαρη, π.χ. χρήση του @ αντί για this, τα yes/on μπορούν να χρησιμοποιηθούν αντί για true, το // για ακέραια διαίρεση, το @ αντί για this και πολλά άλλα
Ξεχωριστά χαρακτηριστικά
- Μεταγλωττίζεται σε καθαρή, αναγνώσιμη από τον άνθρωπο JavaScript, με αντιστοιχία ένα προς ένα ανάμεσα στον πηγαίο και τον παραγόμενο κώδικα.
- Εξαιρετική διαλειτουργικότητα με τη JavaScript: μπορείς να χρησιμοποιήσεις εύκολα κώδικα γραμμένο σε JS από τη CoffeeScript (και αντίστροφα). Χρησιμοποίησε οποιαδήποτε βιβλιοθήκη JS
- Προσθέτει χαρακτηριστικά που έλειπαν ή λείπουν από τη JavaScript: comprehensions λιστών, παρεμβολή συμβολοσειρών, τελεστή ύπαρξης (?), αλυσιδωτές συγκρίσεις
- Μικρή γλώσσα, ο μεταγλωττιστής είναι περίπου 500 kb (100 kb σε συμπιεσμένη μορφή)
Dart
- Σχεδιάστηκε από τους Lars Bak και Kasper Lund στη Google
- Πρώτη κυκλοφορία το 2011
- Στόχος ήταν η δημιουργία μιας γρήγορης, παραγωγικής γλώσσας, ιδιαίτερα κατάλληλης για την κατασκευή διεπαφών χρήστη
- Στατικά τυποποιημένη
- Πολυπαραδειγματική: κυρίως αντικειμενοστρεφής, αλλά και συναρτησιακή και προστακτική
- Μπορεί να διερμηνευτεί και να μεταγλωττιστεί just-in-time
- Χρησιμοποιείται κυρίως για την κατασκευή εφαρμογών, αλλά και για backends
Γιατί είναι σπουδαία
- Εύκολη στην εκμάθηση χάρη στην οικεία σύνταξη
- Σύγχρονο σύστημα τύπων: συμπερασμός τύπων, αντιστοίχιση προτύπων, async/await
- Εξαιρετική τεκμηρίωση
- Ασφάλεια μέσω ενός ορθού συστήματος null-safety: τέλος στις εξαιρέσεις μηδενικού δείκτη
- Καλά εργαλεία, υποστήριξη σε διάφορα IDE. Βελτιστοποιημένη για σύντομο κύκλο ανάδρασης, π.χ. μέσω γρήγορου hot reload
- Αναπτυσσόμενο οικοσύστημα με πολλές διαθέσιμες βιβλιοθήκες
Ξεχωριστά χαρακτηριστικά
- Μπορεί να μεταγλωττιστεί σε JS, native, αλλά και σε Swift και Kotlin, ιδανική για εφαρμογές για κινητά.
- Η βιβλιοθήκη Flutter μπορεί να χρησιμοποιηθεί για τη γρήγορη κατασκευή εφαρμογών για κινητά, web, desktop ή ενσωματωμένα συστήματα. Γράψε μία φορά, τρέξε σε διαφορετικές πλατφόρμες
- Εξαιρετική υποστήριξη ταυτοχρονισμού, με async/await, isolates (ελαφριές κατασκευές ταυτοχρονισμού), futures και άλλα
Delphi
- Η Delphi αναπτύχθηκε από τη Borland και κυκλοφόρησε το 1995.
- Είναι μια γλώσσα προγραμματισμού Object Pascal και αναπτύχθηκε από τον Anders Hejlsberg, έναν από τους βασικούς αρχιτέκτονες της C#
- Ισχυρή και στατικά τυποποιημένη
- Μεταγλωττίζεται σε native κώδικα
- Πολυπαραδειγματική: κυρίως αντικειμενοστρεφής, αλλά και προστακτική, δηλωτική και οδηγούμενη από γεγονότα
- Χρησιμοποιείται σε επιχειρηματικές εφαρμογές, σε γραφικές διεπαφές και σε σχολεία (για τη διδασκαλία του προγραμματισμού)
Γιατί είναι σπουδαία
- Εύκολη στην εκμάθηση. Η Object Pascal συνδυάζει την απλότητα και τη σαφήνεια της Pascal με χαρακτηριστικά αντικειμενοστρεφούς προγραμματισμού, κάνοντας ευκολότερη τη συγγραφή και τη συντήρηση κώδικα
- Ολοκληρωμένο Περιβάλλον Ανάπτυξης (IDE): Το IDE της Delphi προσφέρει ένα φιλικό προς τον χρήστη περιβάλλον με πλούσια χαρακτηριστικά που βελτιστοποιεί τη διαδικασία ανάπτυξης. Παρέχει πλοήγηση στον κώδικα, εργαλεία αποσφαλμάτωσης, αυτοσυμπλήρωση κώδικα και άλλα χαρακτηριστικά παραγωγικότητας που κάνουν την ανάπτυξη πιο αποδοτική.
- Σταθερότητα: υπάρχει από τις αρχές της δεκαετίας του 1990 με ιστορία αξιόπιστου και σταθερού εργαλείου ανάπτυξης και γλώσσας, με ισχυρή συμβατότητα προς τα πίσω. Κώδικας γραμμένος σε παλαιότερες εκδόσεις της Delphi μπορεί ακόμη να μεταγλωττιστεί και να τρέξει σε νεότερες εκδόσεις με ελάχιστες προσαρμογές.
- Υποστήριξη πολλαπλών πλατφορμών: Η Delphi έχει επεκτείνει τις δυνατότητές της πέρα από τα Windows και προσφέρει υποστήριξη ανάπτυξης για πολλαπλές πλατφόρμες, επιτρέποντας στους προγραμματιστές να στοχεύουν πολλά λειτουργικά συστήματα όπως macOS, iOS, Android και άλλα. Αυτό επιτρέπει τη δημιουργία εφαρμογών για ευρύτερο κοινό και αυξάνει την εμβέλεια των έργων.
- Ισχυρή κοινότητα και υποστήριξη: Η Delphi έχει μια αφοσιωμένη και ενεργή κοινότητα προγραμματιστών που συνεισφέρουν βιβλιοθήκες, εργαλεία και πόρους στο οικοσύστημα.
Ξεχωριστά χαρακτηριστικά
- Εκτελέσιμα υψηλών επιδόσεων: Οι εφαρμογές Delphi είναι γνωστές για την ταχύτητα και τις επιδόσεις τους. Ο μεταγλωττιστής της Delphi παράγει άκρως βελτιστοποιημένα native εκτελέσιμα, κάτι που μπορεί να είναι κρίσιμο για ορισμένους τύπους εφαρμογών, όπως όσες απαιτούν επεξεργασία σε πραγματικό χρόνο ή βαριές υπολογιστικές εργασίες.
- Περιβάλλον Ταχείας Ανάπτυξης Εφαρμογών (RAD): οπτικά εργαλεία σχεδίασης με σύρσιμο και απόθεση επιτρέπουν στους προγραμματιστές να δημιουργούν διεπαφές χρήστη και να τις συνδέουν με λειτουργικότητα με ελάχιστη προσπάθεια, επιταχύνοντας τη διαδικασία ανάπτυξης.
- Αρχιτεκτονική βασισμένη σε components: στηρίζεται σε αρχιτεκτονική βασισμένη σε components, όπου χτίζονται επαναχρησιμοποιήσιμα components για την κατασκευή εφαρμογών. Διευκολύνει την επαναχρησιμοποίηση κώδικα και μειώνει τον χρόνο ανάπτυξης.
- Χειρισμός γεγονότων: Η Delphi χρησιμοποιεί ένα ενσωματωμένο μοντέλο γεγονότων, επιτρέποντας στους προγραμματιστές να ανταποκρίνονται εύκολα σε ενέργειες του χρήστη και άλλα γεγονότα. Ο χειρισμός γεγονότων απλοποιεί τη διαδικασία σύλληψης της εισόδου του χρήστη ή των γεγονότων του συστήματος και της κατάλληλης απόκρισης.
- Συνδεσιμότητα με βάσεις δεδομένων: Η Delphi παρέχει native components πρόσβασης σε βάσεις δεδομένων που επιτρέπουν απρόσκοπτη ενσωμάτωση με διάφορα συστήματα βάσεων δεδομένων. Αυτή η ενσωματωμένη υποστήριξη απλοποιεί την ανάπτυξη εφαρμογών που βασίζονται σε βάσεις δεδομένων.
Elm
- Η γλώσσα δημιουργήθηκε από τον Evan Czaplicki για την πτυχιακή του εργασία και κυκλοφόρησε το 2012
- Αρχικά πραγματεύτηκε το θέμα του Συναρτησιακού Αντιδραστικού Προγραμματισμού (FRP) για γραφικές διεπαφές (FRP με signals), αλλά το 2017 το FRP εγκαταλείφθηκε υπέρ του TEA (The Elm Architecture)
- Στατικά και ισχυρά τυποποιημένη, συναρτησιακή γλώσσα
- Σύνταξη εμπνευσμένη από τη Haskell
- Γλώσσα ανοιχτού κώδικα, αλλά με πολύ συγκεκριμένες απόψεις, και το στιλ ανάπτυξης περιλαμβάνει μεγάλες περιόδους βαθιάς δουλειάς του Evan πριν δημοσιοποιήσει κάτι. Έτσι, τα PR μπορεί να μη συγχωνεύονται για πολύ καιρό και το έργο μπορεί να φαίνεται στάσιμο, αλλά είναι απλώς το στιλ εργασίας του Evan.
- Χρησιμοποιείται σε ιστότοπους, π.χ. NoRedInk, Vendr, Rakuten, Brilliant
Γιατί είναι σπουδαία
- Είναι μια πολύ μικρή γλώσσα, από τις πιο εύκολες στην εκμάθηση στην οικογένεια ML των στατικά τυποποιημένων συναρτησιακών γλωσσών. Αυτό τη κάνει σχεδόν ιδανική για τη διδασκαλία του συναρτησιακού προγραμματισμού.
- Τα σφάλματα του μεταγλωττιστή είναι τα ωραιότερα και πιο βοηθητικά που θα βρεις εκεί έξω.
- Σταθερή γλώσσα: η τελευταία έκδοση είναι του 2019
- Τα πακέτα στο οικοσύστημα είναι λίγα αλλά υψηλής ποιότητας.
- Ένα ισχυρό οικοσύστημα linting με το elm-review (τροφοδοτεί τον αναλυτή της διαδρομής Elm του Exercism).
Ξεχωριστά χαρακτηριστικά
- Η Αρχιτεκτονική Elm (TEA) βρίσκεται κάτω από όλες τις εφαρμογές Elm, οπότε είναι πολύ εύκολο να εξετάσεις άγνωστες εφαρμογές Elm.
- Χωρίς εξαιρέσεις κατά την εκτέλεση! Εκτός από δυο τρεις περιπτώσεις.
- Δεν σπάει όταν ενημερώνεις εξαρτήσεις, η σημασιολογική διαχείριση εκδόσεων επιβάλλεται από τον μεταγλωττιστή.
- Όταν μεταγλωττίζεται, δουλεύει (εκτός από λογικά λάθη). Και όταν το συνηθίσεις, είναι πολύ δύσκολο να γυρίσεις σε άλλες γλώσσες.
- Το "elm-ui" του Matthew Griffith επιτρέπει το "όταν μεταγλωττίζεται, δουλεύει" για το στιλ και τη διάταξη, δεν χρειάζεσαι CSS.
- Εφαρμογές web full-stack: Το Lamdera είναι ένα παράγωγο που χρησιμοποιεί την Elm για εφαρμογές web full-stack με μηδενική "κόλλα" ανάμεσα σε frontend και backend.
Java
- Αναπτύχθηκε από τον James Gosling στη Sun Microsystems και κυκλοφόρησε το 1995.
- Πέντε αρχικοί στόχοι:
- Απλή, αντικειμενοστρεφής και οικεία.
- Ανθεκτική και ασφαλής.
- Ανεξάρτητη από αρχιτεκτονική και φορητή.
- Υψηλών επιδόσεων.
- Διερμηνευόμενη, με νήματα και δυναμική.
- Ισχυρή και στατικά τυποποιημένη
- Μεταγλωττίζεται σε bytecode (δουλεύουν πάνω σε native κώδικα)
- Πολυπαραδειγματική: προστακτική, αντικειμενοστρεφής και συναρτησιακή
- Η γλώσσα και η εικονική μηχανή έχουν επίσημες προδιαγραφές, άρα και πολλαπλές υλοποιήσεις (π.χ. η OpenJDK JVM και η Hotspot VM της Oracle)
- Χρησιμοποιείται σε τεράστιο αριθμό λογισμικού, από ιστότοπους μέχρι ενσωματωμένα συστήματα, και από εφαρμογές μέχρι βάσεις δεδομένων
Γιατί είναι σπουδαία
- Τρέχει (σχεδόν) παντού (όπως θα σου υπενθυμίσει με χαρά ο ενημερωτής της Java ;))
- Γενικής χρήσης: μπορεί να χρησιμοποιηθεί για σχεδόν οποιονδήποτε φόρτο εργασίας, συμπεριλαμβανομένων εφαρμογών, ιστότοπων και ενσωματωμένων συστημάτων
- Διαλειτουργικότητα με άλλες γλώσσες της JVM, όπως Kotlin, Groovy, Scala και Clojure
- Εξαιρετικά εργαλεία, τόσο για IDE όσο και για άλλα εργαλεία όπως συστήματα build
Ξεχωριστά χαρακτηριστικά
- Η JVM είναι μια ώριμη, σταθερή και εξαιρετικά αποδοτική εικονική μηχανή που βελτιώνεται συνεχώς
- Τεράστιο οικοσύστημα, με έναν ασύλληπτο αριθμό διαθέσιμων βιβλιοθηκών. Αυτές οι βιβλιοθήκες, όπως η Java, είναι ώριμες, σταθερές και πλήρεις
- Εξελίσσεται: η γλώσσα και το περιβάλλον εκτέλεσης εξελίσσονται ακόμη, με τακτικές ενημερώσεις της γλώσσας για να γίνει πιο σύγχρονη και να αντιμετωπιστούν παράπονα του κόσμου (όπως η μείωση του boilerplate και της φλυαρίας). Όσον αφορά το περιβάλλον εκτέλεσης, ξεκινούν τακτικά νέα έργα για να το εξελίξουν περαιτέρω (π.χ. το project loom για ελαφριές κατασκευές ταυτοχρονισμού και native μεταγλώττιση μέσω GraalVM)
JavaScript
- Ο Brendan Eich προσλήφθηκε από τη Netscape το 1995 για να παρέχει μια γλώσσα που θα έκανε τις ιστοσελίδες δυναμικές. Το πρώτο πρωτότυπο, όπως είναι γνωστό, δημιουργήθηκε σε 10 ημέρες
- Τυποποιήθηκε ως ECMAScript το 1997
- Δυναμικά και αδύναμα τυποποιημένη
- Κάποτε ήταν αποκλειστικά διερμηνευόμενη, αλλά σήμερα συχνά μεταγλωττίζεται just-in-time
- Πολυπαραδειγματική: πρωτοτυπική (αρκετά σπάνια), αλλά και αντικειμενοστρεφής, προστακτική και συναρτησιακή
- Εξαιρετικά επιδραστική στο να γίνει ο ιστός η επιτυχία που είναι σήμερα. Π.χ. το AJAX βοήθησε πολύ στην προσθήκη διαδραστικότητας. De facto πρότυπο για την ανάπτυξη για τον ιστό, αφού είναι η μόνη γλώσσα προγραμματισμού με ενσωματωμένη υποστήριξη στον browser
- Πιθανώς η πιο χρησιμοποιημένη γλώσσα σήμερα
- Χρησιμοποιείται για backend, frontend, scripts και εργαλεία γραμμής εντολών
Γιατί είναι σπουδαία
- Γενικής χρήσης: μπορεί να χρησιμοποιηθεί για πολλούς φόρτους εργασίας: backend, frontend, scripts, εργαλεία γραμμής εντολών. Πολλά εργαλεία που χρησιμοποιούνται για τον ιστό είναι γραμμένα σε JavaScript (και τρέχουν σε nodejs)
- Τα περιβάλλοντα εκτέλεσης (όπως η V8) είναι άκρως βελτιστοποιημένα και μπορούν να είναι πολύ αποδοτικά, παρόλο που η γλώσσα είναι ιδιαίτερα δυναμική
- Σχετικά μικρή γλώσσα, που την κάνει σχετικά εύκολη στην εκμάθηση. Το ότι μπορείς να την τρέξεις σε έναν browser την κάνει ιδιαίτερα σπουδαία, αφού μπορείς να πάρεις οπτική ανάδραση όσο μαθαίνεις
- Οι προδιαγραφές ενημερώνονται συχνά για να εισαγάγουν νέα χαρακτηριστικά, όπως async/await, παρεμβολή συμβολοσειρών. Επίσης, πολλή καινοτομία γύρω από τα εργαλεία, με νεότερα εργαλεία όπως τα deno, esbuild και bun.js να αναπτύσσονται για να βοηθήσουν στη δουλειά με βάσεις κώδικα JavaScript
- Η υποστήριξη JSON είναι κορυφαία, όπως αποδεικνύει το ότι το JSON σημαίνει JavaScript Object Notation
- Σχεδιασμένη να είναι καλή για κώδικα οδηγούμενο από γεγονότα και μη μπλοκαριστικό
Ξεχωριστά χαρακτηριστικά
- Τεράστιο οικοσύστημα. Ένας πελώριος αριθμός βιβλιοθηκών είναι διαθέσιμος (2,1 εκατομμύρια πακέτα τον Σεπτέμβριο του 2022), αλλά και πολλές άλλες γλώσσες που στοχεύουν τη JavaScript
- Τρέχει στις περισσότερες πλατφόρμες και υλικό, από Windows μέχρι Apple, από Raspberry Pi μέχρι τηλέφωνα, από διακομιστές ιστού μέχρι πλατφόρμες serverless. Οι φυλλομετρητές έχουν ενσωματωμένη native υποστήριξη, οπότε δεν χρειάζεται να εγκαταστήσεις περιβάλλον εκτέλεσης.
- Ιδανική για ανάπτυξη για τον ιστό, με πολλά frameworks για να διαλέξεις (React, Vue, Angular) καθώς και πολλά εργαλεία που βοηθούν στην κατασκευή εφαρμογών web (π.χ. eslint, parcel)
- Μπορεί να χρησιμοποιηθεί ισομορφικά, που σημαίνει ότι η ίδια γλώσσα (και η ίδια βάση κώδικα) μπορεί να χρησιμοποιηθεί και για το backend και για το frontend. Αυτό την κάνει ευκολότερη στη συντήρηση και επιτρέπει την επαναχρησιμοποίηση κώδικα ανάμεσα σε frontend και backend
- Η τεράστια δημοτικότητα σημαίνει: πολλούς πόρους για να μάθεις (βίντεο, blogs, μαθήματα), τεράστια κοινότητα για να αλληλεπιδράσεις
Kotlin
- Αναπτύχθηκε από τη JetBrains το 2010, γνωστή για τα IDE της (π.χ. IntelliJ, CLion, GoLand και Rider)
- Τα περισσότερα προϊόντα της JetBrains ήταν γραμμένα σε Java, αλλά ήθελαν μια γλώσσα για την JVM που θα μείωνε τον boilerplate κώδικα, θα επιτάχυνε την ανάπτυξη και θα υποστήριζε κάποια χαρακτηριστικά που τους έλειπαν. Η Scala τα είχε αυτά τα χαρακτηριστικά, αλλά κρίθηκε πολύ αργή στη μεταγλώττιση. Έτσι ξεκίνησε το Project Kotlin.
- Ισχυρή και στατικά τυποποιημένη
- Πολυπαραδειγματική: προστακτική, αντικειμενοστρεφής, συναρτησιακή, δηλωτική
- Από προεπιλογή μεταγλωττίζεται σε bytecode της JVM, αλλά μπορεί επίσης να μεταγλωττιστεί σε JS και native (χρήσιμο για πλατφόρμες όπου οι εικονικές μηχανές δεν είναι εφικτές ή επιθυμητές, όπως οι συσκευές iOS)
- Το 2019 η Google τη χαρακτήρισε ως τη γλώσσα προτίμησης για τη συγγραφή εφαρμογών Android
- Χρησιμοποιείται για την κατασκευή ιστότοπων, εφαρμογών (κυρίως Android) και ακόμη και ολόκληρων IDE (τα προαναφερθέντα IDE)
Γιατί είναι σπουδαία
- Γενικής χρήσης: μπορεί να χρησιμοποιηθεί για σχεδόν οποιονδήποτε φόρτο εργασίας, συμπεριλαμβανομένων εφαρμογών και ιστότοπων. Η Google έκρινε την Kotlin ως τη γλώσσα προτίμησης για την ανάπτυξη εφαρμογών Android το 2019
- Τρέχει στην JVM, οπότε ισχύουν όλα τα πλεονεκτήματά της: ώριμη, εξαιρετικά αποδοτική εικονική μηχανή και τεράστιος αριθμός διαθέσιμων βιβλιοθηκών
- Απαλύνει πολλά από τα προβλήματα που μπορεί να έχει κάποιος με τη Java, όπως οι ελεγχόμενες εξαιρέσεις, η ασφάλεια έναντι null και η φλυαρία
- Σύγχρονη γλώσσα: προηγμένος συμπερασμός τύπων, βασισμένη σε εκφράσεις, αμεταβλητότητα, αντιστοίχιση προτύπων, coroutines, channels
- Εξαιρετικά εργαλεία (αναμενόμενο, όταν το ίδιο το IDE είναι γραμμένο στη γλώσσα :)
Ξεχωριστά χαρακτηριστικά
- Παραγωγική: Η Kotlin υιοθετεί τα καλύτερα κομμάτια άλλων γλωσσών, τα διαμορφώνει σε μία συνεπή, παραγωγική γλώσσα και σε ορισμένες περιπτώσεις βελτιώνει ακόμη περισσότερο το πρωτότυπο (π.χ. με τοπικές μεθόδους επέκτασης)
- Coroutines: ενώ σε πολλές γλώσσες το async/await είναι ενσωματωμένο στη γλώσσα, στην Kotlin υλοποιείται ως βιβλιοθήκη χρησιμοποιώντας το χαρακτηριστικό coroutines της γλώσσας. Οι coroutines είναι ένας τρόπος να χειρίζεσαι συναρτήσεις αναστολής, που παρέχουν μια ασφαλέστερη και λιγότερο επιρρεπή σε λάθη αφαίρεση για ασύγχρονες λειτουργίες από ό,τι τα futures και τα promises.
- Εξαιρετικός ταυτοχρονισμός: τα async/await, τα channels και η αμεταβλητότητα βοηθούν όλα στο να πετύχεις εξαιρετικό ταυτοχρονισμό
- Το Compose multiplatform επιτρέπει την κατασκευή κοινών διεπαφών χρήστη από την ίδια βάση κώδικα χρησιμοποιώντας δηλωτική σύνταξη
Objective-C
- Αναπτύχθηκε αρχικά από τους Brad Cox και Tom Love στις αρχές της δεκαετίας του 1980 και επιλέχθηκε από τη NeXT για το λειτουργικό της σύστημα NeXTSTEP. Λόγω της άμεσης καταγωγής του macOS της Apple από το NeXTSTEP, έγινε η γλώσσα επιλογής για το λογισμικό της Apple
- Σχεδιάστηκε για να συνδυάσει τις αντικειμενοστρεφείς ιδέες της SmallTalk με τη C, χρησιμοποιώντας το πέρασμα μηνυμάτων ως βασική αντικειμενοστρεφή κατασκευή
- Υπερσύνολο της C, οπότε οποιοσδήποτε κώδικας C είναι έγκυρος κώδικας Objective-C και τα δύο μπορούν να συνδυαστούν στην ίδια βάση κώδικα
- Στατική και δυναμική τυποποίηση
- Μεταγλωττιζόμενη
- Η καθιερωμένη γλώσσα για τη συγγραφή εφαρμογών macOS και iOS μέχρι την έλευση της Swift το 2014
- Χρησιμοποιείται για εφαρμογές macOS και iOS
Γιατί είναι σπουδαία
- Ο συνδυασμός της C με αντικειμενοστρεφή χαρακτηριστικά μπορεί να είναι πραγματικά ισχυρός
- Ελαφρύ περιβάλλον εκτέλεσης, που το κάνει αποδοτικό σε πόρους
- Ελαφριά σύνταξη κλάσεων
- Η γρήγορη απαρίθμηση επιτρέπει ευκολότερους βρόχους for από ό,τι στη C
- Ισχυρή συμβατότητα προς τα πίσω
Ξεχωριστά χαρακτηριστικά
- Υποστηρίζει Αυτόματη Καταμέτρηση Αναφορών (ARC), που ελευθερώνει αυτόματα τη μνήμη όταν ένα αντικείμενο δεν αναφέρεται πια, κάνοντας τη διαχείριση μνήμης ευκολότερη
- Το δυναμικό περιβάλλον εκτέλεσης επιτρέπει το method swizzling (δυναμική αλλαγή της συμπεριφοράς ενός selector (σαν monkey patching)), την αντανάκλαση και την προώθηση μηνυμάτων (ιδανικά για το πρότυπο observer ή proxy)
- Τα protocols και τα interfaces φέρνουν χαρακτηριστικά διασύνδεσης στη C, με τα category interfaces να επιτρέπουν ακόμη και την επέκταση υπαρχόντων τύπων
PHP
- Αναπτύχθηκε και υλοποιήθηκε από τον Rasmus Lerdorf το 1993 και κυκλοφόρησε πρώτη φορά το 1995
- Το όνομά της είναι ένα αναδρομικό αρκτικόλεξο: PHP: Hypertext Preprocessor
- Δυναμικά και αδύναμα τυποποιημένη, με δυνατότητα σταδιακής προσθήκης ισχυρών ελέγχων τύπων κατά την εκτέλεση
- Πολυπαραδειγματική: προστακτική, συναρτησιακή, αντικειμενοστρεφής, διαδικαστική, ανακλαστική
- Διερμηνευόμενη ή μεταγλωττιζόμενη just-in-time
- Η αρχική πλατφόρμα απόδοσης στην πλευρά του διακομιστή
- Χρησιμοποιείται για ιστότοπους (Facebook, Wikipedia και πολλούς άλλους) αλλά και για πολλά συστήματα διαχείρισης περιεχομένου (Wordpress, JOOMLA).
Γιατί είναι σπουδαία
- Είναι πανταχού παρούσα. Η PHP χρησιμοποιείται στο 77,4% όλων των ιστότοπων^1, ανεξάρτητα από συγκεκριμένες πλατφόρμες
- Απλή σύνταξη, παρόμοια με άλλες καθιερωμένες γλώσσες προγραμματισμού, όπως Java, JavaScript, C, που την κάνει εύκολη στην εκμάθηση
- Γενικής χρήσης. Χρησιμοποίησέ την για πολλά πράγματα: από τη δημιουργία μικρών scripts για τον ιστό μέχρι τη δημιουργία μεγάλων εφαρμογών στην πλευρά του διακομιστή που τρέχουν επιχειρήσεις.
- Πολύ καθιερωμένη με ευρεία υιοθέτηση. Υπάρχουν πολλοί πόροι εκμάθησης, frameworks και βιβλιοθήκες.
- Ισχυρή υποστήριξη βάσεων δεδομένων
- Ακόμη σε ενεργή ανάπτυξη, με σύγχρονα χαρακτηριστικά
- Πολλαπλών πλατφορμών. Τρέχει στα πάντα: Windows, Mac, Linux, Unix
- Ανοιχτού κώδικα και δωρεάν
Ξεχωριστά χαρακτηριστικά
- Απλή στην εκτέλεση και την ανάπτυξη. Χωρίς αλυσίδα build. Χωρίς μεταγλωττιστές.
- Σταδιακό σύστημα τύπων. Πρόσθεσε τύπους όπου τους χρειάζεσαι, χρησιμοποίησε δυναμική τυποποίηση για να απλοποιήσεις κομμάτια της ανάπτυξής σου.
- Γρήγορη προτυποποίηση. Φτιάξε μια ιστοσελίδα για να δοκιμάσεις την ιδέα σου και τρέξε την στο δικό σου μηχάνημα.
PureScript
- Σχεδιάστηκε από τον Phil Freeman και η πρώτη έκδοση κυκλοφόρησε το 2013
- Ξεκίνησε να δουλεύει στην PureScript επειδή δεν ήταν ικανοποιημένος από άλλες προσπάθειες μεταγλώττισης της Haskell σε JavaScript
- Ισχυρά και στατικά τυποποιημένη
- Μεταγλωττίζεται σε JS
- Καθαρά συναρτησιακή γλώσσα
- Σύνταξη και χαρακτηριστικά εμπνευσμένα από τη Haskell
- Χρησιμοποιείται για την κατασκευή εφαρμογών web, αλλά μπορεί επίσης να χρησιμοποιηθεί για εφαρμογές στην πλευρά του διακομιστή ή για εφαρμογές desktop μέσω Electron
Γιατί είναι σπουδαία
- Μοιράζεται πολλά από αυτά που κάνουν τη Haskell σπουδαία:
- Ισχυρό και δυνατό σύστημα τύπων: αλγεβρικοί τύποι δεδομένων, κλάσεις τύπων, τύποι ανώτερου είδους
- Εκφραστική: αντιστοίχιση προτύπων, συμπερασμός τύπων
- Ασφάλεια: χωρίς null, αμετάβλητοι τύποι
- Καθαρά συναρτησιακή: οι παρενέργειες κωδικοποιούνται στο σύστημα τύπων
- Εύκολη, ασφαλής ως προς τους τύπους αποκωδικοποίηση/κωδικοποίηση JSON σε τύπους
- Μεταγλωττίζεται σε JavaScript αναγνώσιμη από τον άνθρωπο
- Καλά εργαλεία
Ξεχωριστά χαρακτηριστικά
- Ο συναρτησιακός πυρήνας είναι ιδανικός για ασφαλείς ως προς τους τύπους εφαρμογές web χωρίς σφάλματα κατά την εκτέλεση
- Εξαιρετική διαλειτουργικότητα με τη JS
- Μεταγλωττίζεται σε αποδοτική JS
ReasonML
- Δημιουργήθηκε από τον Jordan Walke στο Facebook και η πρώτη έκδοση κυκλοφόρησε το 2016
- Βασίζεται στην OCaml, αλλά με τις ιδιορρυθμίες της αφαιρεμένες και σχεδιασμένη για διαλειτουργικότητα με τη JS
- Στατικά τυποποιημένη και συναρτησιακή γλώσσα
- Μεταγλωττιζόμενη
- Χρησιμοποιείται για την κατασκευή ιστότοπων (π.χ. στο Facebook)
Γιατί είναι σπουδαία
- Όλα τα καλά της OCaml, αλλά σε περιβάλλον ιστού:
- Ισχυρό σύστημα τύπων: όλες οι τιμές έχουν τύπο με απλούστερους τύπους (όπως καταγραφές, variants και options) που προτιμώνται έναντι σύνθετων τύπων. Τέλος στα σφάλματα undefined, που βελτιώνει την αξιοπιστία
- Εκφραστική: αντιστοίχιση προτύπων, συμπερασμός τύπων, αποδόμηση
- Ασφάλεια: χωρίς null, αμεταβλητότητα από προεπιλογή
- Μεταγλωττίζεται σε JavaScript αναγνώσιμη από τον άνθρωπο
- Μπορεί να μεταγλωττιστεί σε OCaml (και αντίστροφα), που σημαίνει ότι μπορεί να χρησιμοποιήσει ολόκληρο το οικοσύστημα της OCaml (π.χ. για μεταγλώττιση σε native εκτελέσιμο)
Ξεχωριστά χαρακτηριστικά
- Οι χρόνοι μεταγλώττισης της ReasonML είναι εξαιρετικά γρήγοροι, που σημαίνει γρήγορους κύκλους επανάληψης.
- Εξαιρετική διαλειτουργικότητα με τη JS, τόσο για χρήση JS από κώδικα ReasonML όσο και για εξαγωγή ReasonML σε JS. Μπορεί ακόμη και να παράγει τύπους TS. Μπορεί επίσης να συνεργαστεί με τη C. Υποστηρίζει ακόμη και σύνταξη σαν JSX
Swift
- Η ανάπτυξη της Swift ξεκίνησε από τον Chris Lattner το 2010 και ανακοινώθηκε παγκοσμίως στο γεγονός WWDC το 2014.
- Στόχος ήταν να αντικαταστήσει την παλιά γλώσσα προγραμματισμού της Apple, την Objective-C, που δεν είχε δεχτεί μεγάλες αλλαγές από τις αρχές της δεκαετίας του 1980, με μια νέα, σύγχρονη γλώσσα. Σχεδιασμένη να συνεργάζεται με μεγάλα τμήματα της Objective-C.
- Ισχυρή και στατικά τυποποιημένη
- Μεταγλωττιζόμενη, χρησιμοποιώντας το LLVM για τη μεταγλώττιση σε κώδικα μηχανής (όπως π.χ. η Rust)
- Πολυπαραδειγματική: συναρτησιακή, αντικειμενοστρεφής, προστακτική, δηλωτική
- Αρχικά ιδιόκτητο λογισμικό, αλλά έγινε ανοιχτού κώδικα το 2015
- Χρησιμοποιείται κυρίως για εφαρμογές για κινητά και desktop, αλλά και για backends και σε σενάρια serverless
Γιατί είναι σπουδαία
- Σύγχρονη γλώσσα: συμπερασμός τύπων, αντιστοίχιση προτύπων, αλγεβρικοί τύποι δεδομένων, συμβολοσειρές Unicode
- Παραγωγική: Η Swift υιοθετεί τα καλύτερα κομμάτια άλλων γλωσσών (όπως Rust, Python, C# και Ruby) και τα διαμορφώνει σε μία συνεπή, παραγωγική γλώσσα
- Ασφαλής: οι δείκτες δεν εκτίθενται, ένας προαιρετικός τύπος που αποτρέπει τις εξαιρέσεις μηδενικού δείκτη, ρητός χειρισμός σφαλμάτων και αυτόματη διαχείριση μνήμης μέσω ARC (Αυτόματης Καταμέτρησης Αναφορών)
- Ενημερώνεται τακτικά. Στα πρώτα χρόνια, η Apple δεν φοβόταν να εισαγάγει αλλαγές που σπάνε τη συμβατότητα για πράγματα που αποδείχτηκε ότι δεν δουλεύουν καλά. Αυτό αποτρέπει τη συσσώρευση "αποσκευών". Συνήθως διατίθεται ένα εργαλείο που βοηθά στη μετανάστευση κώδικα. Από τη Swift 5, η Διασύνδεση Δυαδικών Εφαρμογών (ABI) είναι σταθερή
- Σε αντίθεση με την Objective-C, η Swift τρέχει σε όλες τις μεγάλες πλατφόρμες: macOS, Windows και Linux
Ξεχωριστά χαρακτηριστικά
- Γρήγορη. Μεταγλωττίζεται σε αποδοτικό κώδικα μηχανής, που την κάνει να τρέχει γρήγορα
- Απρόσκοπτη διαλειτουργικότητα με την Objective-C, αλλά και καλή συνεργασία με τη C και τη C++
- Μεγάλη κοινότητα, με πολλούς εξαιρετικούς πόρους διαθέσιμους
TypeScript
- Δημιουργήθηκε στη Microsoft ως απάντηση στην απογοήτευση από την ανάπτυξη εφαρμογών μεγάλης κλίμακας σε JS. Ένας από τους σχεδιαστές ήταν ο Anders Hejlsberg, βασικός αρχιτέκτονας της C# και δημιουργός της Delphi και της Turbo Pascal
- Η πρώτη έκδοση κυκλοφόρησε το 2012
- Πολυπαραδειγματική: συναρτησιακή, πρωτοτυπική, προστακτική, αντικειμενοστρεφής και γενική
- Χρησιμοποιεί σταδιακή και duck typing
- Μεταγλωττιζόμενη (σε JS)
- Χρησιμοποιείται για ιστότοπους, τόσο frontend όσο και backend, scripts και εργαλεία γραμμής εντολών
Γιατί είναι σπουδαία
- Ισχυρό και ευέλικτο σύστημα τύπων: τύποι ένωσης, τύποι literal, tuples. Βασικά οποιοδήποτε μοτίβο μπορεί να χρησιμοποιηθεί σε κώδικα JS μπορεί να περιγραφεί με ασφάλεια τύπων στην TS. Το σύστημα τύπων είναι τόσο ισχυρό που είναι ακόμη και Turing Complete
- Το ότι είναι υπερσύνολο της JS επιτρέπει τη σταδιακή εισαγωγή της σε μια βάση κώδικα JS
- Συνδυάζει το καλύτερο και από τους δύο κόσμους: δυναμική και στατική τυποποίηση
- Αυξάνεται γρήγορα σε δημοτικότητα, με πολλά εργαλεία είτε να παρέχουν τύπους TypeScript είτε να μετατρέπονται σε TypeScript. Πολλοί πόροι διαθέσιμοι
- Η γλώσσα ενημερώνεται τακτικά, με πρώιμη υιοθέτηση επερχόμενων χαρακτηριστικών της ECMAScript
Ξεχωριστά χαρακτηριστικά
- Βελτιωμένη ασφάλεια και ορθότητα: η στατική τυποποίηση μπορεί να εξαλείψει πολλές κατηγορίες λαθών που κάνει συνήθως κάποιος με τη JS
- Απρόσκοπτη διαλειτουργικότητα με τη JS. Μπορούν να προστεθούν προσαρμοσμένοι ορισμοί τύπων για να δουλεύεις με κώδικα JS με ασφάλεια τύπων. Υπάρχουν διαθέσιμοι προσαρμοσμένοι ορισμοί τύπων για μεγάλο αριθμό
- Εξαιρετικά εργαλεία/υποστήριξη IDE. Σημειώσεις τύπων, αυτοσυμπλήρωση κώδικα και ακόμη και ασφαλής αναδιοργάνωση μεγάλης κλίμακας είναι διαθέσιμα σε πολλά IDE
- Απόκτησε όλα τα οφέλη του να τρέχεις στο οικοσύστημα της JS: τεράστιος αριθμός πακέτων, πολλά εργαλεία, μεγάλη κοινότητα κ.λπ.
Ποια να δοκιμάσεις;
- Αν θέλεις να φτιάξεις native εφαρμογές, οι Dart, Delphi, Java, Kotlin και Swift είναι εξαιρετικές επιλογές. Παρ' όλα αυτά, οποιαδήποτε από τις άλλες γλώσσες που μεταγλωττίζονται σε JS θα μπορούσε επίσης να χρησιμοποιηθεί για την κατασκευή native εφαρμογών. Αξίζει να σημειωθεί ότι η επίσημη γλώσσα για την κατασκευή εφαρμογών iOS/macOS είναι η Swift, και για εφαρμογές Android η Kotlin
- Αν θέλεις να φτιάξεις εφαρμογές web, οι CoffeeScript, Dart, Elm, Java, JavaScript, Kotlin, PHP, PureScript, ReasonML και TypeScript είναι εξαιρετικές
- Αν σε ενδιαφέρει ο συναρτησιακός προγραμματισμός, οι Elm, PureScript και ReasonML είναι φυσικές επιλογές, ενώ οι CoffeeScript, Dart, Java, JavaScript, Kotlin, Swift και TypeScript υποστηρίζουν επίσης συναρτησιακό προγραμματισμό
- Για αντικειμενοστρεφή προγραμματισμό, οι ABAP, Dart, Delphi, Java, Kotlin, Objective-C, PHP και Swift είναι λογικοί υποψήφιοι, ενώ οι CoffeeScript, JavaScript και TypeScript υποστηρίζουν επίσης αυτό το παράδειγμα
- Αν σε ενδιαφέρει να γράφεις επιχειρηματικές εφαρμογές, οι ABAP και Delphi είναι ιδανικές γι' αυτό
Translation missing: el.number.nth.ordinalized Aug 2023
·
Σου φάνηκε χρήσιμο;
Δημοσιεύτηκε από
Erik Schierboom