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

9 γλώσσες αιχμής προγραμματισμού που αξίζει να μάθετε τώρα

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

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

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

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

Kotkin: Η Java επανεξετάστηκε

Η Java είναι μια εξαιρετική γλώσσα που υποστηρίζει μερικές από τις πιο δημοφιλείς πλατφόρμες ποτέ, αλλά γερνάει και τα σημεία πόνου γίνονται λίγο πολύ γνωστά. Ο Kotlin είναι ο εγκέφαλος της ομάδας JetBrains στη Ρωσία, αυτοί που μας έφεραν υπέροχα IDE όπως το IntelliJ. Το Kotlin προορίζεται να συντάξει γρήγορα, να συνυπάρχει με την Java και να διορθώσει μερικά από τα χειρότερα ζητήματα που καταλαμβάνουν την εποχή των προγραμματιστών Java.

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

Το Kotlin έχει σχεδιαστεί για να λειτουργεί με τον υπάρχοντα κώδικα Java, καθιστώντας την μια καλή επιλογή για ομάδες που θέλουν σταδιακά να βελτιώσουν μια βάση κώδικα. Θα μεταγλωττιστεί επίσης σε JavaScript ή εγγενή κώδικα εάν αυτό είναι τυχαίο που χρειάζεστε. Η Google αναγνώρισε την αξία της γλώσσας και τώρα οι προγραμματιστές Android που θέλουν να χρησιμοποιήσουν το Kotlin υποστηρίζονται καλά.

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

Erlang: Λειτουργικός προγραμματισμός για συστήματα σε πραγματικό χρόνο

Ο Έρλανγκ άρχισε βαθιά μέσα στα τρομακτικά βασίλεια των τηλεφωνικών διακοπτών στο Ericsson, τη σουηδική τηλεπικοινωνία. Όταν οι προγραμματιστές της Ericsson άρχισαν να καυχιέται για την απόδοσή του «9s 9s», παρέχοντας 99,9999999% των δεδομένων με την Erlang, οι προγραμματιστές εκτός της Ericsson άρχισαν να λαμβάνουν ειδοποίηση.

Το μυστικό του Έρλανγκ είναι το λειτουργικό παράδειγμα. Το μεγαλύτερο μέρος του κώδικα αναγκάζεται να λειτουργεί στον δικό του μικρό κόσμο όπου δεν μπορεί να καταστρέψει το υπόλοιπο σύστημα μέσω παρενεργειών. Οι λειτουργίες κάνουν όλη τη δουλειά τους εσωτερικά, εκτελώντας μικρές «διαδικασίες» που λειτουργούν σαν sandbox και μιλούν ο ένας στον άλλο μόνο μέσω μηνυμάτων αλληλογραφίας. Δεν μπορείτε απλώς να πάρετε έναν δείκτη και να κάνετε μια γρήγορη αλλαγή στην κατάσταση οπουδήποτε στη στοίβα. Πρέπει να μείνετε μέσα στην ιεραρχία κλήσεων. Μπορεί να απαιτεί λίγο περισσότερη σκέψη, αλλά τα λάθη είναι λιγότερο πιθανό να εξαπλωθούν.

Το μοντέλο καθιστά επίσης απλούστερο τον κώδικα χρόνου εκτέλεσης για να καθορίσει τι μπορεί να εκτελείται ταυτόχρονα. Με ταυτόχρονη ανίχνευση τόσο εύκολη, ο προγραμματιστής χρόνου εκτέλεσης μπορεί να επωφεληθεί από την πολύ χαμηλή επιβάρυνση κατά τη ρύθμιση και την αντιγραφή μιας διαδικασίας. Οι οπαδοί της Erlang θέλουν να καυχηθούν για την εκτέλεση 20 εκατομμυρίων «διαδικασιών» ταυτόχρονα σε έναν διακομιστή Web.

Εάν δημιουργείτε ένα σύστημα σε πραγματικό χρόνο χωρίς χώρο για απορριφθέντα δεδομένα, όπως ένα σύστημα χρέωσης για έναν διακόπτη κινητού τηλεφώνου, ελέγξτε το Erlang.

Go: Απλό και δυναμικό

Η Google δεν ήταν ο πρώτος οργανισμός που εξέτασε τη συλλογή γλωσσών, μόνο για να τις βρει γεμάτες, περίπλοκες και συχνά αργές. Το 2009, η εταιρεία κυκλοφόρησε τη λύση της: μια στατικά δακτυλογραφημένη γλώσσα που μοιάζει με C, αλλά περιλαμβάνει το υπόβαθρο της ευφυΐας για να σώσει τους προγραμματιστές από το να πρέπει να καθορίσουν τύπους και να κάνει ζογκλέρ κλήσεις malloc. Με το Go, οι προγραμματιστές μπορούν να έχουν την οξύτητα και τη δομή του μεταγλωττισμένου C, μαζί με την ευκολία χρήσης μιας δυναμικής γλώσσας σεναρίου.

Ενώ η Sun και η Apple ακολούθησαν μια παρόμοια πορεία στη δημιουργία Java και Swift, αντίστοιχα, η Google έλαβε μια πολύ διαφορετική απόφαση με το Go: Οι δημιουργοί της γλώσσας ήθελαν να κρατήσουν το Go «αρκετά απλό για να κρατήσει το κεφάλι ενός προγραμματιστή». Ο Rob Pike, ένας από τους δημιουργούς της Go, είπε διάσημα στην Ars Technica ότι «μερικές φορές μπορείτε να κερδίσετε περισσότερα μακροπρόθεσμα αφαιρώντας τα πράγματα». Έτσι, υπάρχουν λίγα πρόσθετα zippy όπως γενικά, κληρονομιά τύπου ή ισχυρισμοί, μόνο καθαρά, απλά μπλοκ συμβολοσειρών, πίνακες και πίνακες κατακερματισμού κώδικα if-then-else.

Σύμφωνα με πληροφορίες, η γλώσσα είναι καλά εδραιωμένη στο εσωτερικό της τεράστιας αυτοκρατορίας της Google και κερδίζει αποδοχή σε άλλα μέρη όπου οι λάτρεις της Python και της Ruby με δυναμική γλώσσα μπορούν να πείσουν να αποδεχτούν κάποια από την αυστηρότητα που προέρχεται από μια μεταγλωττισμένη γλώσσα.

Εάν είστε μια εκκίνηση που προσπαθεί να προσελκύσει το Google και πρέπει να δημιουργήσετε κάποια επιχειρηματική λογική από την πλευρά του διακομιστή, το Go είναι ένα εξαιρετικό μέρος για να ξεκινήσετε.

OCaml: Πολύπλοκος ζογκλέρ ιεραρχίας δεδομένων

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

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

Για αυτούς, υπάρχει το OCaml, μια σοβαρή προσπάθεια της γλωσσικής κοινότητας προγραμματισμού να διαδώσει πολλές από τις προαναφερθείσες ιδέες. Υπάρχει υποστήριξη αντικειμένων, αυτόματη διαχείριση μνήμης και φορητότητα συσκευής. Υπάρχουν ακόμη και εφαρμογές OCaml διαθέσιμες από το App Store της Apple.

Ένα ιδανικό έργο για το OCaml μπορεί να είναι η δημιουργία ενός συμβολικού ιστότοπου μαθηματικών για τη διδασκαλία της άλγεβρας.

TypeScript: JavaScript που θα θέλατε

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

Ο μεγαλύτερος λόγος για τον οποίο περισσότεροι προγραμματιστές ενδιαφέρονται τώρα για το TypeScript είναι το Angular, ένα εξαιρετικό πλαίσιο για τη δημιουργία εφαρμογών ιστού που τυχαίνει να γράφεται στο TypeScript. Η ενδιαφέρουσα ρυτίδα είναι ότι δεν χρειάζεται να χρησιμοποιήσετε TypeScript για να χρησιμοποιήσετε το Angular. Μπορείτε να απολαύσετε την ποιότητα του κώδικα και να τον συγχωνεύσετε με το παλαιό σας JavaScript. Δεν χρειάζεται να επιλέξετε.

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

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

Rust: Ασφαλής και χρησιμοποιήσιμη γλώσσα συστημάτων

Οι προγραμματιστές front-end δεν είναι οι μόνοι που διασκεδάζουν. Το Rust είναι σαν μια ανακαινισμένη έκδοση του C με άφθονη πολυμορφική πληκτρολόγηση αναμεμειγμένη κάτω από την κουκούλα. Κέρδισε «την πιο αγαπημένη γλώσσα προγραμματισμού» από τους ψηφοφόρους του Stack Overflow τα τελευταία δύο χρόνια στη σειρά, μια τιμή που αντικατοπτρίζεται επίσης στο δείκτη δημοτικότητας του Stack Overflow. Πριν από λίγα χρόνια, ο Rust αιωρούσε περίπου 50 στη λίστα και φέτος πήγε στα 18.

Γιατί; Ίσως επειδή ο Rust καθαρίζει πολλά από τα σοβαρά ζητήματα με τον C χωρίς να κάνει υπερβολικό χειρισμό ή να επιμένει ότι οι προγραμματιστές δεν κάνουν εικονικά straightjackets. Οι προγραμματιστές συστήματος δεν λατρεύουν τη συλλογή απορριμμάτων, μια εξαιρετική υπηρεσία έως ότου ξεκινήσει την πιο ακατάλληλη στιγμή. Το Rust σάς κάνει να αισθάνεστε σαν να είστε υπεύθυνοι για το τι συμβαίνει στον αριθμό στη μνήμη, χωρίς να περιμένετε κάποια υπηρεσία να κάνει τη δουλειά για εσάς.

Το σύστημα πληκτρολόγησης είναι γενικό και ευέλικτο, προσφέροντας το είδος του πολυμορφισμού που εμπνέεται από τον Haskell, τουλάχιστον στην περίληψη. Ωστόσο, όταν εφαρμόζεται, ο μεταγλωττιστής προσαρμόζει τη δομή για κάθε τύπο, κάτι που οι προγραμματιστές θέλουν να ονομάσουν «μονομορφισμό». Η γλώσσα προσθέτει μερικά άλλα όρια για να εμποδίσει τους προγραμματιστές να μην βγουν από τις ράγες. Κάθε τιμή, για παράδειγμα, «ανήκει» - πράγμα που σημαίνει ότι μπορεί να καταναλωθεί μόνο μία φορά, αποτρέποντας ένα μπερδεμένο ιστό αναφορών από άλλα μέρη του προγράμματος που λειτουργούν σαν να έχουν πλήρη έλεγχο μιας τιμής.

Όλα αυτά τα χαρακτηριστικά καθώς και μερικά ακόμη - όπως το νήμα χωρίς συνθήκες αγώνα - σημαίνουν ότι ο νέος προγραμματιστής μπορεί να ξεκινήσει τη σύνταξη κώδικα συστήματος χωρίς να αντιμετωπίσει μερικά από τα χειρότερα αντι-μοτίβα που έχουν προγραμματιστεί C προγραμματιστές από καιρό. Παίρνετε όλη τη σκληρή, υψηλής απόδοσης διασκέδαση της γραφής C με έναν μεταγλωττιστή που θα πιάσει πολλά από τα χειρότερα λάθη πριν ακόμη εκτελεστεί ο κώδικας.

Scala: Λειτουργικός προγραμματισμός στο JVM

Εάν χρειάζεστε την απλότητα κώδικα των αντικειμενοστρεφών ιεραρχιών για το έργο σας, αλλά λατρεύετε το λειτουργικό παράδειγμα, έχετε πολλές επιλογές. Εάν η Java είναι η σφαίρα σας, η Scala είναι η επιλογή για εσάς.

Το Scala λειτουργεί με το JVM, φέρνοντας όλες τις καθαρές σχεδιαστικές δομές λειτουργικού προγραμματισμού στον κόσμο της Java, παρέχοντας κώδικα που ταιριάζει με τις προδιαγραφές της κλάσης Java και συνδέσμους με άλλα αρχεία JAR. Εάν αυτά τα άλλα αρχεία JAR έχουν παρενέργειες και άλλους επιτακτικούς δυσάρεστους πονοκεφάλους, ας είναι. Ο κωδικός σας θα είναι καθαρός.

Ο μηχανισμός τύπου είναι πολύ στατικός και ο μεταγλωττιστής κάνει όλη τη δουλειά για να συμπεράνει τύπους. Δεν υπάρχει διάκριση μεταξύ πρωτόγονων τύπων και τύπων αντικειμένων, επειδή η Scala θέλει τα πάντα να κατεβαίνουν από μια κλήση ur-object Any. Η σύνταξη είναι πολύ απλούστερη και καθαρότερη από την Java. Οι Σκάλα το αποκαλούν «χαμηλή τελετή». Μπορείτε να αφήσετε ξανά τα ονόματα των μεταβλητών CamelCase παραγράφου σας στο Java Land.

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

Εάν πρέπει να κάνετε ταχυδρόμηση των δεδομένων σε ένα σύμπλεγμα χιλιάδων επεξεργαστών και να έχετε έναν σωρό κώδικα Java παλαιού τύπου, το Scala είναι μια εξαιρετική λύση.

$config[zx-auto] not found$config[zx-overlay] not found