Εισαγωγή
Γεια σε όλους. Ελπίζω να είσαι καλά. Είχαμε έναν πολυάσχολο μήνα τον Σεπτέμβριο. Κυκλοφορήσαμε πολλές νέες βελτιώσεις και λειτουργίες στον ιστότοπο, κυρίως γύρω από τη βελτίωση της καθοδήγησης και των ροών που τη περιβάλλουν. Ως αποτέλεσμα, βλέπουμε τώρα να έρχονται διπλάσια αιτήματα καθοδήγησης απ' ό,τι αυτή την εποχή πριν από 4 εβδομάδες, κάτι που είναι υπέροχο. Αν δεν έχεις δοκιμάσει να εξετάσει ένας καθοδηγητής τον κώδικά σου, κάν' το οπωσδήποτε: είναι ένας καταπληκτικός τρόπος να μάθεις. Και αν ψάχνεις να βοηθήσεις τους άλλους, υπάρχουν πολλά αιτήματα στις ουρές που περιμένουν τη βοήθειά σου. Μπορείς να γραφτείς ως καθοδηγητής από τον σύνδεσμο Mentoring στο μενού Contribute! Κάναμε επίσης μια μεγάλη ενημέρωση της βάσης δεδομένων από MySQL 5.6 σε MySQL 8, την οποία κατέγραψα και είναι διαθέσιμη στην ενότητα Insiders, οπότε αν είσαι Insider και δεν την έχεις δει ακόμα, ρίξε οπωσδήποτε μια ματιά!
Λοιπόν, πάμε στο #12in23. Ο Σεπτέμβριος ήταν ένας ενδιαφέρον μήνας, με εξερεύνηση σύντομων, περιεκτικών γλωσσών. Αυτόν τον μήνα πάμε προς την αντίθετη κατεύθυνση και κοιτάζουμε κάποια πολύ μεγαλύτερα θηρία. Εστιάζουμε στις αντικειμενοστρεφείς γλώσσες και συγκεκριμένα στις C#, Crystal, Java, Pharo, Ruby και PowerShell. Έχουμε ήδη συζητήσει τόσο τη Pharo όσο και τη Java, τον Μάιο και τον Αύγουστο αντίστοιχα, οπότε δεν θα τις καλύψουμε ξανά σε αυτό το βίντεο, αλλά ρίξε μια ματιά στα βίντεο των προηγούμενων μηνών αν σε ενδιαφέρουν οι εισαγωγές σε αυτές τις γλώσσες. Σε αυτό το βίντεο όμως θα εξερευνήσουμε τις C#, Crystal, Ruby και PowerShell, και ως συνήθως ο Erik θα μας εξηγήσει τι κάνει αυτές τις γλώσσες ενδιαφέρουσες και μοναδικές.
Τα σήματα
Όπως πάντα, μπορείς να κερδίσεις το σήμα του Αντικειμενοστρεφούς Οκτωβρίου ολοκληρώνοντας οποιεσδήποτε 5 ασκήσεις σε αυτές τις γλώσσες. Έχουμε επίσης το σήμα της χρονιάς, για το οποίο ξέρω ότι πολλοί από εσάς δουλεύετε. Για αυτό έχουμε 5 επιλεγμένες ασκήσεις για να ολοκληρώσεις, οι οποίες όλες προσφέρονται για λύση με αντικειμενοστρεφή τρόπο. Αυτές είναι:
- Δυαδικό Δέντρο Αναζήτησης: εισαγωγή και αναζήτηση αριθμών σε ένα δυαδικό δέντρο
- Κυκλικός Ενταμιευτής: υλοποίηση μιας δομής δεδομένων διασυνδεδεμένης από άκρη σε άκρη
- Ρολόι: υλοποίηση ενός ρολογιού που χειρίζεται ώρες χωρίς ημερομηνίες
- Πίνακας: επιστροφή των γραμμών και των στηλών ενός πίνακα που αναπαρίσταται ως συμβολοσειρά
- Απλό Κρυπτογράφημα: υλοποίηση ενός κρυπτογραφήματος αντικατάστασης
Επισκοπήσεις
C#
- Αναπτύχθηκε από τον Anders Hejlsberg στη Microsoft το 2000
- Η γλώσσα και η εικονική μηχανή έχουν επίσημες προδιαγραφές. Έγινε επίσημο πρότυπο ECMA το 2002 και πρότυπο ISO το 2003
- Ο μεταγλωττιστής, το .NET Framework (βασική βιβλιοθήκη) και το Visual Studio (πρόγραμμα επεξεργασίας) ήταν αρχικά όλα κλειστού κώδικα, αλλά ο μεταγλωττιστής και το .NET Framework έγιναν ανοιχτού κώδικα το 2014
- Παρόλο που μοιράζεται πολλή σύνταξη με τη Java (η οποία είχε κυκλοφορήσει μερικά χρόνια νωρίτερα), η C# δεν ήταν αντιγραφή της Java ένα προς ένα (π.χ. υποστήριξη για ιδιότητες, τύπους τιμών και χωρίς ελεγχόμενες εξαιρέσεις)
- Μεταγλωττίζεται σε bytecode, με υποστήριξη μεταγλώττισης σε κώδικα μηχανής από το .NET 7 (ακόμα βελτιώνεται)
- Χρησιμοποιείται σε τεράστιο αριθμό λογισμικού, από ιστότοπους μέχρι ενσωματωμένα συστήματα, και από εφαρμογές (Xamarin) μέχρι παιχνίδια (Unity)
Crystal
- Η Crystal αναπτύχθηκε από τους Ary Borenszweig (που έχει λογαριασμό στο Exercism), Juan Wajnerman και Brian Cardiff (αρχικά ονομαζόταν Joy, αλλά μετονομάστηκε σε Crystal 3 μέρες αργότερα :))
- Σχεδιάστηκε να έχει την κομψότητα και την παραγωγικότητα της Ruby, αλλά με την ταχύτητα, την αποδοτικότητα και την ασφάλεια τύπων μιας σύγχρονης μεταγλωττιζόμενης γλώσσας.
- Γλώσσα ανοιχτού κώδικα που αναπτύσσεται από τον οργανισμό Manas.
- Η έκδοση 1.0 κυκλοφόρησε το 2021.
- Μεταγλωττίζεται σε κώδικα μηχανής χρησιμοποιώντας το LLVM (όπως η Rust)
- Ο μεταγλωττιστής ήταν αρχικά γραμμένος σε Ruby, αλλά αργότερα μετατράπηκε σε αυτοφιλοξενούμενη έκδοση
- Χρησιμοποιείται από την εταιρεία φορτηγών Nikola, τη Manas και άλλους, κυρίως για ιστότοπους, αλλά και για υπηρεσίες cloud, εφαρμογές γραμμής εντολών και σενάρια
PowerShell
- Δημιουργήθηκε από μια ομάδα με επικεφαλής τον Jeffrey Snover στη Microsoft και κυκλοφόρησε αρχικά το 2006.
- Η ανάπτυξή του ξεκίνησε από την Intel, η οποία ήθελε να μεταφέρει τα σενάρια KornShell της από το Sun RISC σε άλλη πλατφόρμα, για να βοηθήσει στην ανάπτυξη των επεξεργαστών της. Τελικά, η Intel επέλεξε μια διαφορετική πλατφόρμα, αλλά η Microsoft συνέχισε να δουλεύει το νέο της shell: το PowerShell, καθώς προσέφερε τη δυνατότητα να βελτιωθεί η διαχείριση συστημάτων Windows (η οποία δεν ήταν ιδιαίτερα καλή εκείνη την εποχή, καθώς απαιτούσε συχνά γραφικά περιβάλλοντα)
- Η σύνταξη εμπνεύστηκε από το KornShell, αλλά και από τις PHP, Perl και άλλες
- Η πρώτη έκδοση έτρεχε μόνο σε .NET Framework, που σήμαινε ότι έτρεχε μόνο σε Windows. Αλλά το PowerShell 6.0 (που κυκλοφόρησε το 2018) έτρεχε σε .NET Core, το οποίο είναι πολλαπλών πλατφορμών και ανοιχτού κώδικα.
- Χρησιμοποιείται κυρίως για διαχείριση συστημάτων, αλλά και για να παρέχει βοηθητικά προγράμματα γραμμής εντολών ή περιτυλίγματα γύρω από άλλα εργαλεία. Το έχουμε χρησιμοποιήσει πάρα πολύ για μαζική εργασία με τα αποθετήρια του Exercism
Ruby
- Αναπτύχθηκε από τον Yukihiro Matsumoto (γνωστό και ως Matz) και κυκλοφόρησε για πρώτη φορά το 1995
- Ο Matz ήθελε να δουλέψει με μια σωστή αντικειμενοστρεφή γλώσσα σεναρίων, αλλά δεν του άρεσαν οι υπάρχουσες επιλογές (όπως η Perl και η Python), και έτσι έφτιαξε μια νέα γλώσσα: τη Ruby
- Ο Matz περιγράφει τη Ruby ως μια απλή γλώσσα Lisp στον πυρήνα της, με σύστημα αντικειμένων σαν αυτό της Smalltalk, μπλοκ εμπνευσμένα από συναρτήσεις υψηλότερης τάξης, και πρακτική χρησιμότητα σαν αυτή της Perl.
- Συνήθως διερμηνεύεται, αλλά μπορεί επίσης να μεταγλωττιστεί just-in-time σε κώδικα μηχανής
- Εκτός από τον επίσημο διερμηνευτή, υπάρχουν εναλλακτικές υλοποιήσεις, όπως η JRuby (τρέχει στο JVM), η Rubinius (χρησιμοποιεί το LLVM) και το YJIT, ένας just-in-time μεταγλωττιστής που διανέμεται ως μέρος του επίσημου πακέτου εγκατάστασης
- Χρησιμοποιείται κυρίως σε ιστότοπους (με το Ruby on Rails), π.χ. GitHub, Stripe, Shopify και πολλούς άλλους (συμπεριλαμβανομένων του Exercism και του φόρουμ του Exercism!). Η Ruby χρησιμοποιείται επίσης για σκοπούς αυτοματισμού
Και από προγραμματιστική σκοπιά, πώς διαφέρουν;
Είναι όλες αντικειμενοστρεφείς γλώσσες, αν και δεν το υλοποιούν όλες με τον ίδιο τρόπο (π.χ. η Crystal και η Ruby χρησιμοποιούν το μοντέλο αποστολής μηνυμάτων της Smalltalk για την κλήση μεθόδων).
C#
- Ισχυρή και στατική τυποποίηση
- Υποστηρίζει επίσης προστακτικά και δηλωτικά υποδείγματα και γίνεται όλο και πιο συναρτησιακή
Crystal
- Ισχυρή και στατική τυποποίηση (σε αντίθεση με τη Ruby)
- Υποστηρίζει επίσης συναρτησιακό και προστακτικό προγραμματισμό
PowerShell
- Ισχυρή τυποποίηση
- Υποστηρίζει επίσης προστακτικό, συναρτησιακό προγραμματισμό και προγραμματισμό βασισμένο σε pipelines.
Ruby
- Δυναμική τυποποίηση
- Υποστηρίζει επίσης συναρτησιακό και προστακτικό προγραμματισμό
Τούτου λεχθέντος, όλες αυτές οι γλώσσες είναι πρωτίστως αντικειμενοστρεφείς.
Ποια είναι τα πράγματα που κάνουν αυτές τις γλώσσες σπουδαίες;
C#
- Τρέχει (σχεδόν) παντού, συμπεριλαμβανομένων των εφαρμογών μέσω Xamarin. Αρχικά έτρεχε μόνο σε Windows, κάτι που γέννησε το Mono, μια δωρεάν υλοποίηση ανοιχτού κώδικα ενός μεταγλωττιστή και περιβάλλοντος εκτέλεσης C# που ήταν πολλαπλών πλατφορμών. Το 2015 παρουσιάστηκε το .NET Core, το οποίο ήταν πλήρως πολλαπλών πλατφορμών και ανοιχτού κώδικα.
- Γενικού σκοπού: μπορεί να χρησιμοποιηθεί για σχεδόν οποιονδήποτε φόρτο εργασίας, συμπεριλαμβανομένων εφαρμογών, ιστότοπων και παιχνιδιών
- Εκφραστική: μπορείς να κάνεις πολλά με σχετικά λίγο κώδικα C#. Το LINQ ειδικά είναι μια μεγάλη ώθηση στην παραγωγικότητα και είναι πολύ διασκεδαστικό να δουλεύεις μαζί του
- Εξαιρετικά εργαλεία, τόσο για IDE όσο και για άλλα εργαλεία όπως συστήματα build. Ενώ το Visual Studio είναι μόνο για Windows, τα JetBrains Rider και VS Code είναι πολλαπλών πλατφορμών
- Η .NET Compiler Platform (συχνά αναφέρεται ως Roslyn) είναι ένας φανταστικός τρόπος να αναλύεις/μετασχηματίζεις/παράγεις κώδικα C# (τη χρησιμοποιούμε εκτενώς στο test runner/analyzer/representer της C#)
- Η τεκμηρίωση είναι εκτενής, λεπτομερής και καλογραμμένη
- Μεγάλη κοινότητα: πολλοί πόροι διαθέσιμοι, συμπεριλαμβανομένων ιστολογίων, φόρουμ και άλλων
Crystal
- Κομψή και ευανάγνωστη σύνταξη, που κάνει τον κώδικα Crystal εύκολο να διαβαστεί και να γραφτεί
- Εκφραστική. Όπως η Ruby, η Crystal είναι πολύ εκφραστική, καθώς μπορείς να κάνεις πολλά με λίγο κώδικα. Αυτό οφείλεται εν μέρει στην εξαιρετική και εκτενή βασική βιβλιοθήκη.
- Γρήγορη. Η στατική τυποποίηση επιτρέπει τη μεταγλώττιση σε αποδοτικό κώδικα μηχανής χρησιμοποιώντας το LLVM, με απλή διαχείριση μνήμης μέσω συλλέκτη απορριμμάτων.
- Καταπληκτική αντικειμενοστρεφής υλοποίηση. Τα πάντα είναι αντικείμενα, συμπεριλαμβανομένων των κλάσεων και των πρωταρχικών τύπων όπως οι αριθμοί και οι Boolean (λογική τιμή)
- Πλήρες πακέτο, μεγάλη βασική βιβλιοθήκη, ενσωματωμένος μορφοποιητής, μηχανή προτύπων, testing framework και άλλα
- Διαλειτουργικότητα. Εύκολη διαλειτουργικότητα με βιβλιοθήκες C
- Πολλαπλών πλατφορμών: τρέχει σε linux, macOS και Windows, αν και τα Windows δεν είναι ακόμα πολίτης πρώτης κατηγορίας
PowerShell
- Ισχυρό: Το PowerShell είναι ένα ισχυρό εργαλείο για διαχειριστές. Ενσωματώνεται καλά με πολλά άλλα συστήματα, όπως το λειτουργικό σύστημα Windows (στοιχεία, υπηρεσίες και ρυθμίσεις), άλλα προϊόντα της Microsoft όπως Exchange, SharePoint, Azure κ.λπ. Μπορεί επίσης να αλληλεπιδράσει με πολλές άλλες τεχνολογίες, όπως REST APIs, βάσεις δεδομένων, υπηρεσίες web και άλλα.
- Διαθεσιμότητα: Το PowerShell έρχεται προεγκατεστημένο σε κάθε σύγχρονο λειτουργικό σύστημα Windows και μπορεί να εγκατασταθεί σε οποιοδήποτε σύστημα τρέχει .NET (που περιλαμβάνει macOS, Linux και πολλά συστήματα Unix)
- Ασφάλεια: Το PowerShell περιλαμβάνει λειτουργίες για την ασφάλιση σεναρίων και τον περιορισμό της εκτέλεσής τους με βάση υπογεγραμμένα σενάρια και πολιτικές εκτέλεσης. Αυτό είναι κρίσιμο για να διασφαλίζεται η ασφάλεια των διαδικασιών αυτοματισμού σου.
- Γραφικό περιβάλλον: Μπορείς να το συνδυάσεις με άλλα frameworks όπως τα Windows Forms ή το Windows Presentation Foundation για να σχεδιάσεις και να φτιάξεις γραφικές διεπαφές για τα σενάρια PowerShell σου, ώστε να είναι πιο φιλικά προς τον χρήστη.
- Pipeline: Όπως το Bash στα συστήματα Unix, το PowerShell σου επιτρέπει να συνδέσεις cmdlets σε αλυσίδα για να εκτελέσεις σύνθετες λειτουργίες και εργασίες, περνώντας την έξοδο ενός cmdlet ως είσοδο σε ένα άλλο
Ruby
- Κομψή και ευανάγνωστη σύνταξη, που κάνει τον κώδικα Ruby εύκολο να διαβαστεί και να γραφτεί
- Εκφραστική. Η Ruby είναι μια πολύ εκφραστική γλώσσα, καθώς μπορείς να κάνεις πολλά με λίγο κώδικα. Αυτό οφείλεται εν μέρει στην εξαιρετική και εκτενή βασική βιβλιοθήκη
- Τεράστιο οικοσύστημα, με τεράστιο αριθμό διαθέσιμων βιβλιοθηκών (gems)
- Καταπληκτική αντικειμενοστρεφής υλοποίηση. Τα πάντα είναι αντικείμενα, συμπεριλαμβανομένων των κλάσεων και των πρωταρχικών τύπων όπως οι αριθμοί και οι Boolean.
- Πραγματιστική. Η Ruby και οι περισσότερες βιβλιοθήκες της είναι πολύ πραγματιστικές, με έμφαση στην επίλυση πραγματικών προβλημάτων.
- Διαλειτουργικότητα. Εύκολη διαλειτουργικότητα με βιβλιοθήκες C, η οποία χρησιμοποιείται συχνά όταν η απόδοση είναι ιδιαίτερα σημαντική. Για παράδειγμα, το gem Nokogiri επιτρέπει την εργασία με XML με εξαιρετικά υψηλή απόδοση, περιτυλίγοντας βιβλιοθήκες C που κάνουν τη βαριά δουλειά
- Γίνεται πολλή καινοτομία. Π.χ. η Stripe έχει φτιάξει το Sorbet, έναν ελεγκτή τύπων για τη Ruby, η Shopify έχει αναπτύξει το YJIT, έναν Just-In-Time μεταγλωττιστή για τη Ruby (περιλαμβάνεται στη Ruby 3.1+) και δουλεύεται υποστήριξη για WASM
Ξεχωριστά χαρακτηριστικά
C#
- Εξαιρετική απόδοση, ειδικά για μια managed γλώσσα. Τόσο η γλώσσα όσο και το περιβάλλον εκτέλεσης έχουν πάρα πολλές λειτουργίες για βελτίωση της απόδοσης, π.χ. τον τύπο Span<t> και την πρόσβαση σε intrinsics της CPU (όπως οι εντολές AVX). Το CLR είναι μια ώριμη, σταθερή και εξαιρετικά αποδοτική εικονική μηχανή που βελτιώνεται συνεχώς</t>
- Τεράστιο οικοσύστημα, με τεράστιο αριθμό διαθέσιμων βιβλιοθηκών. Αυτές οι βιβλιοθήκες, όπως η C#, είναι ώριμες, σταθερές και πλήρεις λειτουργιών
- Σύγχρονη και εξελισσόμενη: η γλώσσα και το περιβάλλον εκτέλεσης εξελίσσονται ακόμα, με πολύ τακτικές ενημερώσεις της γλώσσας για να γίνει πιο σύγχρονη. Παραδείγματα αυτού είναι:
- async/await για εύκολο ταυτοχρονισμό
- span<t> για αποδοτική χρήση μνήμης</t>
- Τύποι αναφοράς με δυνατότητα null (διορθώνοντας το λάθος του δισεκατομμυρίου)
- Το περιβάλλον εκτέλεσης επίσης ενημερώνεται τακτικά, π.χ. το .NET AOT για απευθείας μεταγλώττιση σε κώδικα μηχανής
- Λιγότερες εναλλακτικές από πολλές άλλες γλώσσες/οικοσυστήματα. Για τις περισσότερες χρήσεις, μπορείς να τα βγάλεις πέρα χρησιμοποιώντας τις προεπιλεγμένες λύσεις που παρέχει η Microsoft, οι οποίες συχνά περιλαμβάνουν και το IDE. Κάποιος θα μπορούσε να υποστηρίξει ότι αυτό είναι και μειονέκτημα, αλλά μπορεί να είναι εξαιρετικό, ειδικά όταν ξεκινάς με μια γλώσσα
Crystal
- Το καλύτερο και από τους δύο κόσμους. Ο συνδυασμός καθολικής εξαγωγής τύπων και τύπων ένωσης κάνει τη Crystal να μοιάζει με δυναμικά τυποποιημένη γλώσσα, όπου συχνά χρειάζεται να προσδιορίσεις ελάχιστους τύπους, διατηρώντας όμως την απόδοση και τις πρόσθετες εγγυήσεις ασφάλειας (συμπεριλαμβανομένου του ελέγχου nil κατά τη μεταγλώττιση) μιας στατικά τυποποιημένης γλώσσας
- Μεταπρογραμματισμός. Αντί για τον δυναμικό μεταπρογραμματισμό της Ruby κατά τον χρόνο εκτέλεσης, η Crystal έχει macros, τα οποία εκτελούνται κατά τη μεταγλώττιση. Τα macros δουλεύουν σε κόμβους AST και παράγουν κώδικα. Είναι αρκετά εύκολο να τα ορίσεις και να τα χρησιμοποιήσεις. Το Embedded Crystal (ECR) είναι μια ενσωματωμένη μηχανή προτύπων που χρησιμοποιεί macros για να ενσωματώσει κώδικα Crystal σε άλλο κείμενο
- Εξαιρετικός ταυτοχρονισμός. Ο ταυτοχρονισμός είναι εύκολος στη χρήση με ένα μοντέλο ταυτοχρονισμού σαν της Go, που χρησιμοποιεί fibers (ελαφριά μονάδα εκτέλεσης) που επικοινωνούν μέσω καναλιών
- Παραγωγική και διασκεδαστική. Η Ruby είναι διάσημη για τον σχεδιασμό της με γνώμονα την παραγωγικότητα και την ευχαρίστηση του προγραμματιστή, με κομψή, ευανάγνωστη σύνταξη και εξαιρετική εργονομία. Επειδή η σύνταξη και ο σχεδιασμός της Crystal μοιάζουν πολύ με της Ruby, αυτό ισχύει και για τη Crystal (διασκεδαστική λεπτομέρεια: αρκετός κώδικας Ruby είναι έγκυρος κώδικας Crystal).
PowerShell
- Cmdlets: Το PowerShell χρησιμοποιεί cmdlets (προφέρεται "command-lets") ως δομικά του στοιχεία. Είναι μικρές, προσανατολισμένες σε εργασίες εντολές που περιβάλλουν υπάρχουσα λειτουργικότητα, παρέχοντας μια συνεπή (π.χ. Get-Help για την εμφάνιση της βοήθειας οποιουδήποτε cmdlet), φιλική προς τον διαχειριστή διεπαφή για διαχειριστές συστημάτων. Υπάρχουν cmdlets για μια μεγάλη ποικιλία από "backends", όπως όλες οι κλάσεις .NET, το Windows Management Instrumentation, το Azure και πολλά άλλα. Τα cmdlets μπορούν να οριστούν σε οποιαδήποτε γλώσσα .NET και ορίζονται με έναν πολύ δηλωτικό τρόπο, με παραμέτρους, την επικύρωσή τους, τις απαιτήσεις (required true/false), εναλλακτικά (switch) ονόματα κ.λπ. να ορίζονται εύκολα.
- Αντικειμενοστρεφές: Σχεδόν τα πάντα στο PowerShell είναι ένα αντικείμενο με πολλές διαφορετικές ιδιότητες. Αρχεία, διεργασίες, κλειδιά μητρώου, ακόμα και απλοί τύποι δεδομένων όπως η συμβολοσειρά και ο αριθμός αντιμετωπίζονται όλα ως αντικείμενα. Αυτή η προσέγγιση απλοποιεί τον τρόπο που δουλεύεις και αλληλεπιδράς με διαφορετικούς τύπους δεδομένων και υπηρεσιών. Θα είναι πολύ οικείο σε όποιον έχει δουλέψει με .NET
- Απομακρυσμένη διαχείριση: Υποστηρίζει απομακρυσμένη διαχείριση διακομιστών και συστημάτων Windows, ακόμα και πόρων cloud σε Azure, AWS και GCP, κάτι που είναι απαραίτητο για τη διαχείριση αυτοματισμών και αναπτύξεων μεγάλης κλίμακας.
- Επεκτάσιμο: Έχει ένα εξαιρετικό ενσωματωμένο σύστημα modules, ενώ σου επιτρέπει να δημιουργείς προσαρμοσμένα cmdlets, συναρτήσεις και modules, και να συνεργάζεσαι με άλλες γλώσσες προγραμματισμού και βιβλιοθήκες για να επεκτείνεις περαιτέρω τις δυνατότητές του όπως χρειάζεται.
Ruby
- Παραγωγική και διασκεδαστική. Η Ruby είναι διάσημη για τον σχεδιασμό της με γνώμονα την παραγωγικότητα και την ευχαρίστηση του προγραμματιστή. Αν και δύσκολο να ποσοτικοποιηθεί, ο ενθουσιασμός των ανθρώπων που έχουν χρησιμοποιήσει τη Ruby τα λέει όλα
- Μεταπρογραμματισμός. Η Ruby είναι εξαιρετικά δυναμική και επιτρέπει μεταπρογραμματισμό κατά τον χρόνο εκτέλεσης. Είτε πρόκειται για monkey-patching υπαρχουσών κλάσεων, είτε για δυναμική προσθήκη ή κλήση μεθόδων, η Ruby σε καλύπτει
- Το Ruby on Rails είναι ένα φανταστικό framework με πλήρεις δυνατότητες για την κατασκευή ιστότοπων. Έτοιμο από το κουτί, περιλαμβάνει πρότυπα, caching, ActiveRecord (ένας τρόπος αλληλεπίδρασης με μια βάση δεδομένων μέσω αντικειμένων), migrations, scaffolding, WebSockets και πολλά άλλα.
Τι να διαλέξεις
- Αν είσαι εξοικειωμένος με τον αντικειμενοστρεφή προγραμματισμό αλλά θέλεις να δεις μια διαφορετική προσέγγιση, δοκίμασε τη Pharo
- Αν ξέρεις Java ή C# αλλά δεν τις έχεις αγγίξει για καιρό, δώσε τους άλλη μια ευκαιρία. Και οι δύο γλώσσες έχουν εξελιχθεί πολύ, οπότε ρίξε μια ματιά σε μερικές από αυτές τις ολοκαίνουργιες λειτουργίες!
- Οι C# και Java (και η Ruby σε μικρότερο βαθμό) είναι επίσης εξαιρετικές επιλογές αν ψάχνεις δουλειά, καθώς είναι από τις πιο περιζήτητες γλώσσες από τους εργοδότες
- Αν ξέρεις Ruby, δοκίμασε τη Crystal για να δεις πώς θα έμοιαζε και θα ένιωθε μια στατικά τυποποιημένη Ruby
- Αν σου αρέσουν οι δυναμικές γλώσσες αλλά θέλεις και εξαιρετική απόδοση, πήγαινε να δεις τη Crystal
- Αν ξέρεις Bash ή αρχεία batch των Windows, δοκίμασε το PowerShell για μια διαφορετική, αντικειμενοστρεφή προσέγγιση στο scripting του shell
- Αν σου αρέσουν γενικά οι γλώσσες σεναρίων, οι Ruby, Crystal και PowerShell είναι όλες καλές επιλογές
- Οι Pharo, Crystal και Ruby είναι εξαιρετικές αν θέλεις να κάνεις λίγο μεταπρογραμματισμό (η C# αποκτά κι αυτή κάποιες λειτουργίες μεταπρογραμματισμού)
- Αν θέλεις να βιώσεις πώς είναι να προγραμματίζεις σε μια γλώσσα που δεν στηρίζεται σε αρχεία κειμένου, δοκίμασε τη Pharo και το μοναδικό και ισχυρό IDE της
- Αν σου αρέσει να φτιάχνεις ιστότοπους, η Ruby με το framework Ruby on Rails αξίζει να δοκιμαστεί