Μια επισκόπηση του Erlang με παραδείγματα

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

  • διανεμημένο και ανεκτικό σε σφάλματα (ένα κομμάτι αποτυχημένου λογισμικού ή υλικού δεν πρέπει να κατεβάσει το σύστημα)
  • ταυτόχρονη (μπορεί να γεννήσει πολλές διεργασίες, καθεμία από τις οποίες εκτελεί ένα μικρό και καλά καθορισμένο έργο, και απομονωθεί το ένα από το άλλο αλλά μπορεί να επικοινωνήσει μέσω μηνυμάτων)
  • hot-swappable (ο κωδικός μπορεί να εναλλάσσεται στο σύστημα ενώ λειτουργεί, οδηγώντας σε υψηλή διαθεσιμότητα και ελάχιστο χρόνο διακοπής λειτουργίας του συστήματος)

Σύνταξη

Ο Έρλανγκ κάνει μεγάλη χρήση της αναδρομής . Δεδομένου ότι τα δεδομένα είναι αμετάβλητα στο Erlang, δεν επιτρέπεται η χρήση whileκαι των forβρόχων (όπου μια μεταβλητή πρέπει να αλλάζει την τιμή της).

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

-module(name). -export([print_name/1]). print_name([RemainingLetter | []]) -> io:format("~c~n", [RemainingLetter]); print_name([FirstLetter | RestOfName]) -> io:format("~c~n", [FirstLetter]), print_name(RestOfName).

Παραγωγή:

> name:print_name("Mike"). M i k e ok

Υπάρχει επίσης μεγάλη έμφαση στην αντιστοίχιση προτύπων , η οποία συχνά εξαλείφει την ανάγκη για μια ifδομή ή μια caseδήλωση. Στο ακόλουθο παράδειγμα, υπάρχουν δύο αγώνες για συγκεκριμένα ονόματα, ακολουθούμενο από το catch-all για οποιαδήποτε άλλα ονόματα.

-module(greeting). -export([say_hello/1]). say_hello("Mary") -> "Welcome back Mary!"; say_hello("Tom") -> "Howdy Tom."; say_hello(Name) -> "Hello " ++ Name ++ ".".

Παραγωγή:

> greeting:say_hello("Mary"). "Welcome back Mary!" > greeting:say_hello("Tom"). "Howdy Tom." > greeting:say_hello("Beth"). "Hello Beth."

Erlang Term Storage

Το Erlang Term Storage, συνήθως συντομογραφία ETS, είναι μια βάση δεδομένων στη μνήμη ενσωματωμένη στο OTP. Είναι προσβάσιμο εντός του Elixir και αποτελεί μια ισχυρή εναλλακτική λύση σε λύσεις όπως το Redis όταν η εφαρμογή σας εκτελείται σε έναν μόνο κόμβο.

Γρήγορη εκίνηση

Για να δημιουργήσετε έναν πίνακα ETS πρέπει πρώτα να προετοιμάσετε έναν πίνακα tableName = :ets.new(:table_otp_name, []), αφού έχετε προετοιμάσει έναν πίνακα μπορείτε: εισαγωγή δεδομένων, τιμές αναζήτησης, διαγραφή δεδομένων και άλλα.

Επίδειξη ETS στο IEX

iex(1)> myETSTable = :ets.new(:my_ets_table, []) #Reference iex(2)> :ets.insert(myETSTable, {"favoriteWebSite", "freeCodeCamp"}) true iex(3)> :ets.insert(myETSTable, {"favoriteProgrammingLanguage", "Elixir"}) true iex(4)> :ets.i(myETSTable)  {<>,<>}  {<>,<>} EOT (q)uit (p)Digits (k)ill /Regexp -->

επιμονή

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

Χρησιμοποιήστε θήκες

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

Δοκίμασέ το

Υπάρχουν ιστότοποι όπου μπορείτε να δοκιμάσετε να εκτελείτε εντολές Erlang χωρίς να χρειάζεται να εγκαταστήσετε κάτι τοπικά, όπως αυτές:

  • Δοκίμασε το! (ένα πρακτικό σεμινάριο)
  • TutorialsPoint CodingGround

Αν θέλετε να το εγκαταστήσετε στον υπολογιστή σας (ή σε εικονικό), μπορείτε να βρείτε αρχεία εγκατάστασης στο Erlang.org ή στο Erlang Solutions.

Περισσότερες πληροφορίες:

  • Σχετικά με τον Έρλανγκ
  • Erlang (γλώσσα προγραμματισμού)