Η γλώσσα προγραμματισμού Julia είναι μια ανοιχτού κώδικα γλώσσα που έχει τόσο την απλότητα υψηλού επιπέδου όπως η Python, όσο και την απόδοση χαμηλού επιπέδου όπως η γλώσσα C.

Οι τρεις νέες γλώσσες – Go από την Google, Rust από τη Mozilla και Julia από το MIT – είναι οι ηγέτες της νέας γενιάς γλωσσών προγραμματισμού που έχουν σχεδιαστεί ειδικά για να διατηρούν τις καλύτερες πρακτικές και χαρακτηριστικά από τις παλαιότερες γλώσσες (C/C++, Python κ.α), αλλά έχουν σχεδιαστεί εκ νέου από την αρχή για να ανταποκριθούν στο προκλήσεις του σύγχρονου πολυπύρηνου, μηχανικής μάθησης, δικτυωμένου, cloud based κόσμου.

Η Julia είναι μια νέα γλώσσα προγραμματισμού που η έκδοση 1.0 κυκλοφόρησε μόλις το 2018. Παρέχοντας τη δυνατότητα να εκτελούνται αναλύσεις δεδομένων χωρίς πολύ κόπο και με επιδόσεις κοντά στην C, η Julia ήδη έχει αρχίσει να είναι ένα ισχυρό εργαλείο στον τομέα χρηματοοικονομικής τεχνολογίας, ανάλυσης κινδύνων, μοντελοποίηση, κυβερνοασφάλεια κ.α.

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

Αν σας ενδιαφέρει να δείτε παραδείγματα σύνταξης της Julia τότε η επίσημη τεκμηρίωση θα σας καλύψει:

Λίγα λόγια σχετικά με την Julia

Οι εργασίες για τη Julia ξεκίνησαν το 2009, από τους Jeff Bezanson, Stefan Karpinski, Viral B. Shah και Alan Edelman, οι οποίοι ήθελαν να δημιουργούν μια ελεύθερης άδειας γλώσσα προγραμματισμού που θα ήταν υψηλού επιπέδου και ταχύτατη.

Η Julia έχει πάνω από 13.000.000 λήψεις έως και τον Μάρτιο του 2020 και χρησιμοποιείται σε περισσότερα από 1.500 πανεπιστήμια ως διδακτικό και ακαδημαϊκό εργαλείο προγραμματισμού ενώ στον ιδιωτικό τομέα υιοθετείται ραγδαία σε τομείς όπως χρηματοοικονομικά, ασφάλειες, ενέργεια, ρομποτική, γονιδιωματική, αεροδιαστημική, κυβερνοασφάλεια και πολλούς άλλους τομείς.

Οι δημιουργοί της Julia, την περιγράφουν στο μανιφέστο της δημιουργίας:

Είμαστε άπληστοι: θέλουμε περισσότερα.

Θέλουμε μια γλώσσα ανοιχτού κώδικα, με ελεύθερη άδεια. Θέλουμε την ταχύτητα της C με τον δυναμισμό της Ruby. Θέλουμε μια γλώσσα με αληθινές μακροεντολές όπως της Lisp, αλλά με προφανείς, γνωστές μαθηματικές συμβολές όπως στο Matlab.
Θέλουμε κάτι χρησιμοποιήσιμο για γενικό προγραμματισμό όπως η Python, να είναι τόσο εύκολη για στατιστικά όπως η R, όσο και αυτονόητη για επεξεργασία συμβολοσειρών όπως η Perl. Θέλουμε να είναι ισχυρή για γραμμική άλγεβρα όσο το Matlab, ενώ θα πρέπει είναι εξαιρετικά δυνατή σε εφαρμογές τερματικού.
Θέλουμε κάτι που είναι απλό να μάθει κανείς, αλλά να κρατά και τους πιο σοβαρούς χάκερ χαρούμενους. Το θέλουμε interactive αλλά και compiled.

πηγή: Why We Created Julia
Advertisements

Το 2017, η Julia εντάχθηκε στο Petaflop Club. Το «κλάμπ¨ αυτό είναι αποκλειστικά και μόνο για γλώσσες προγραμματισμού που μπορούν να ξεπεράσουν τις ταχύτητες ενός petaflop ανά δευτερόλεπτο. Εκτός από τη Julia, μόνο οι C, C ++ και Fortran είναι στο κλαμπ αυτή τη στιγμή.

Χαρακτηριστικά της Julia

Τα χαρακτηριστικά που την κάνουν ελκυστική στους developer των big data και machine learning είναι τα παρακάτω:

  • Είναι δωρεάν και ανοιχτού κώδικα με άδεια MIT.
  • Είναι μια σύγχρονη, εκφραστική γλώσσα προγραμματισμού υψηλής απόδοσης σχεδιασμένη για επιστημονικούς υπολογισμούς και χειρισμό δεδομένων.
  • Έχει σχεδιαστεί για χρήση σε κατανεμημένο και παράλληλο υπολογισμό.
  • Παρέχει μια εκτενή βιβλιοθήκη μαθηματικών συναρτήσεων με μεγάλη αριθμητική ακρίβεια.
  • Ενώ το οικοσύστημα της Julia δεν είναι τόσο ώριμο όσο της C++, Python ή της R, όμως ο ρυθμός ανάπτυξης της αυξάνεται.
  • Το πακέτο Pycall επιτρέπει στη Julia να καλεί τις λειτουργίες Python στον κώδικα όπως επίσης το MATLAB.jl σε ότι αφορά την MATLAB. Οι συναρτήσεις και οι βιβλιοθήκες που γράφονται στην C μπορούν επίσης να κληθούν απευθείας χωρίς να χρειάζονται API ή warper.
  • Χρησιμοποιεί ελαφρύ «green threading», επίσης γνωστό ως coroutines, cooperative multitasking, ή one-shot continuations..
  • Η Julia διαθέτει ένα ισχυρό type system.
  • Έχει αποτελεσματική υποστήριξη για το Unicode
  • Διαθέτει δυνατότητες για μεταπρογραμματισμό και μακροεντολές τύπου Lisp.
  • Διαθέτει ενσωματωμένο διαχειριστή πακέτων (Pkg).

Ποια η σημασία της Julia στο Cybersecurity

Ως γλώσσα που έχει σχεδιαστεί για την Επιστήμη των Δεδομένων (Data Science) και τη Μηχανική μάθηση (Machine learning), είναι μια γλώσσα που έχει σχεδιαστεί για χρήστες που πρέπει να δημιουργήσουν αλγορίθμους οι οποίοι θα χρησιμοποιηθούν για ανάλυση μεγάλου όγκου δεδομένων σε βάθος και σε ταχύτητα.

Παράλληλα η εξάπλωση των IoT συσκευών και των Smart Homes αλλά και η χρήση αυτών σε μεγαλύτερη κλίμακα, όπως Smart Cities δημιουργεί σταδιακά τις ανάγκες για θωράκιση σε τυχών Κυβερνοεπιθέσεις που μπορεί να θέσουν σε σοβαρό κίνδυνο την ζωή χιλιάδων ανθρώπων. Με τη χρήση της Julia ως γλώσσας για τον προγραμματισμό, θα είναι δυνατή η ανίχνευση ορισμένων από τις απειλές που εκτίθενται τα συστήματα που διασυνδέονταν στις έξυπνες πόλεις.

Η αυξανόμενη συμμετοχή της επιστήμης δεδομένων και της τεχνητής νοημοσύνης στον τομέα του Cybersecurity, παρέχει στην Julia ένα προβάδισμα όσον αφορά σε εφαρμογές real-time παρακολούθησης δεδομένων. Για παράδειγμα, αρκετοί ερευνητές της Cisco, χρησιμοποιούν την Julia για μηχανική εκμάθηση με σκοπό τη βελτίωση της ασφάλειας του δικτύου συνδυάζοντας δεδομένα δικτύου, στεγανογραφία και στεγανάλυση για την ανίχνευση μολυσμένων υπολογιστών.

Μία από τις ισχυρότερες περιοχές στην οποία χρησιμοποιείται επιτυχώς η Julia, τόσο από πλευράς οικοσυστήματος όσο και ανάπτυξης, είναι η μοντελοποίηση μεγάλων, πολύπλοκων συστημάτων. Το παραπάνω έργο της Cisco που ανέφερα χρησιμοποιεί το Flux.jl machine learning framework της Julia, για να το βοηθήσει στην μοντελοποίησει του Διαδικτύου όσον αφορά την ασφάλεια στον κυβερνοχώρο.

Η Julia είναι επίσης μια καλή γλώσσα για πρωτότυπους αλγόριθμους κρυπτογραφίας, καθώς όπως είπαμε είναι ιδανική για μαθηματικά, έχει καλή απόδοση και είναι κατάλληλη για prototyping.

Η Julia τέλος είναι μια καλή γλώσσα για δημιουργία αλγορίθμων που θα σπάνε δεδομένα τα οποία είναι κρυπτογραφικά αδύναμα επειδή προσφέρει υψηλές επιδόσεις και είναι η μια γλώσσα με πλήρη υποστήριξη για προγραμματισμό GPU με το CUDAnative.jl. Ωστόσο, για ισχυρό hashing όπως το SHA-2, το τρέχον υλικό των υπολογιστών δεν έχει την δύναμη να το σπάσει, ανεξάρτητα από τη γλώσσα που θα χρησιμοποιηθεί (εκτός αν κάποιος σπάσει το πρόβλημα p = np, που ελπίζουμε ότι κανείς δεν θα το κάνει).

Ποιο είναι το μέλλον της Julia

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

Μέχρι τότε, είμαι σίγουρος ότι η Τζούλια θα συνεχίσει να χρησιμοποιείται ως γλώσσα μοντελοποίησης για την αξιολόγηση απειλών στον κυβερνοχώρο, στα Smart Cities κλπ.