Wolfram Function Repository: Πλατφόρμα ανοιχτής πρόσβασης για επεκτάσεις γλώσσας Wolfram

Γεια σου, Χαμπρ! Σας παρουσιάζω μια μετάφραση της ανάρτησης του Stephen Wolfram "The Wolfram Function Repository: Launching an Open Platform for Extending the Wolfram Language".

Wolfram Function Repository: Πλατφόρμα ανοιχτής πρόσβασης για επεκτάσεις γλώσσας Wolfram

Προϋποθέσεις για τη συνέπεια της γλώσσας Wolfram

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

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

Για παράδειγμα, το αποθετήριο συναρτήσεων Wolfram περιέχει ήδη 532 νέες δυνατότητες διαρθρώνεται σε 26 θεματικές κατηγορίες:

Wolfram Function Repository: Πλατφόρμα ανοιχτής πρόσβασης για επεκτάσεις γλώσσας Wolfram

Ομοίως περισσότερο από 6000 τυπικές λειτουργίες, ενσωματωμένη στη γλώσσα Wolfram, κάθε συνάρτηση από το αποθετήριο έχει μια σελίδα τεκμηρίωσης με λεπτομερή περιγραφή τους και παραδείγματα εργασίας:

Wolfram Function Repository: Πλατφόρμα ανοιχτής πρόσβασης για επεκτάσεις γλώσσας Wolfram

Για να μεταβείτε στη σελίδα, αντιγράψτε το παραπάνω αντικείμενο (συνάρτηση BLOB), επικολλήστε το στη γραμμή εισαγωγής και, στη συνέχεια, εκτελέστε τη συνάρτηση - είναι ήδη ενσωματωμένη στη γλώσσα Wolfram και υποστηρίζεται από προεπιλογή ξεκινώντας με έκδοση 12.0:

Wolfram Function Repository: Πλατφόρμα ανοιχτής πρόσβασης για επεκτάσεις γλώσσας Wolfram

Εδώ πρέπει να σημειωθεί ότι κατά την επεξεργασία LogoQRCode Δεν χρειάζεται, για παράδειγμα, να δημιουργήσετε μια «βιβλιοθήκη επεξεργασίας εικόνας» - αφού έχουμε ήδη εφαρμόσει έναν συνεπή και προσεκτικά αλγοριθμικό τρόπο στη γλώσσα Wolfram ΕΠΕΞΕΡΓΑΣΙΑ ΕΙΚΟΝΑΣ, το οποίο μπορεί να υποβληθεί σε άμεση επεξεργασία από διάφορες γραφικές συναρτήσεις γλώσσας:

Wolfram Function Repository: Πλατφόρμα ανοιχτής πρόσβασης για επεκτάσεις γλώσσας Wolfram

Ελπίζω ότι με την υποστήριξη υπέροχη και ταλαντούχα κοινότητα, το οποίο αναπτύσσεται και επεκτείνεται (με βάση τη γλώσσα Wolfram) τις τελευταίες δεκαετίες. Το αποθετήριο συναρτήσεων Wolfram θα επιτρέψει στο άμεσο μέλλον να επεκτείνει σημαντικά το εύρος των (ενδεχομένως σημαντικών, εξειδικευμένων σε διάφορους τομείς της επιστήμης και της τεχνολογίας) λειτουργιών που είναι διαθέσιμες στη γλώσσα. Έτσι, καθίσταται δυνατή η χρήση τόσο του περιεχομένου της γλώσσας (τις ενσωματωμένες λειτουργίες της) όσο και αρχές ανάπτυξης, τα οποία υλοποιούνται με βάση τη γλώσσα. (Θα πρέπει να σημειωθεί εδώ ότι η Γλώσσα Wolfram έχει ήδη περισσότερα από 30 χρόνια ιστορίας ανάπτυξης και σταθερής ανάπτυξης).
Οι συναρτήσεις από το αποθετήριο ενδέχεται να περιέχουν μικρά ή μεγάλα κομμάτια κώδικα γραμμένα στη γλώσσα Wolfram. Για παράδειγμα, αυτές θα μπορούσαν να είναι κλήσεις εξωτερικά API και υπηρεσίες ή εξωτερικές βιβλιοθήκες σε άλλες γλώσσες. Το μοναδικό σε αυτήν την προσέγγιση είναι ότι όταν αναλύσετε τη λειτουργικότητα σε επίπεδο χρήστη, δεν θα υπάρχουν πιθανές ασυνέπειες επειδή η προσέγγιση βασίζεται στη συνεπή δομή της γλώσσας Wolfram - και κάθε λειτουργία θα λειτουργεί αυτόματα σωστά - ακριβώς όπως θα έπρεπε.
Το κέλυφος και η δομή προγραμματισμού του Wolfram Feature Repository έχουν σχεδιαστεί έτσι ώστε όλοι να μπορούν να συνεισφέρουν στην κοινή αιτία με τον πιο απλό και βολικό τρόπο γι 'αυτούς - στην πραγματικότητα, απλώς συμπληρώνοντας το αρχείο κειμένου του σημειωματάριου (με επέκταση nb) WL. Οι ενσωματωμένες αυτόματες λειτουργίες σάς επιτρέπουν να ελέγχετε νέες λειτουργίες που έχουν προστεθεί στο αποθετήριο για να διασφαλίσετε την ενσωμάτωσή τους στη γλώσσα. Η εταιρεία μας ποντάρει στο ευρύ φάσμα των χρηστών που μπορούν να ενσωματώσουν τις λειτουργίες τους στη γλώσσα, παρά στη μεγάλη πολυπλοκότητα των νέων λειτουργιών - και παρόλο που υπάρχει διαδικασία αναθεώρησης, δεν επιμένουμε σε κάτι παρόμοιο επίπονη σχεδιαστική ανάλυση ή αυστηρά πρότυπα για την πληρότητα και την αξιοπιστία των νέων δυνατοτήτων χρήστη, σε αντίθεση με την πιο αυστηρή δοκιμή των λειτουργιών που είναι ενσωματωμένες στη βασική γλώσσα που χρησιμοποιούμε.

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

Αύξηση της αποτελεσματικότητας με ταυτόχρονη μείωση του κόστους

Ακόμη και πριν από το Διαδίκτυο, υπήρχαν τρόποι για κοινή χρήση του κώδικα Wolfram Language (το πρώτο μας μεγάλο κεντρικό έργο ήταν MathSource, που δημιουργήθηκε για το Mathematica το 1991 με βάση το CD-ROM κ.λπ.). Φυσικά, η προσέγγιση που προτείνεται για υλοποίηση με βάση το αποθετήριο συναρτήσεων Wolfram είναι ένα πιο ισχυρό και αξιόπιστο εργαλείο για την υλοποίηση των παραπάνω εργασιών.

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

Στη δομή υλοποίησης κάθε συνάρτησης συμβαίνουν διάφορες υπολογιστικές διεργασίες. Εδώ πρέπει να σημειωθεί ότι είναι απαραίτητο η λειτουργία να έχει καθαρή και ομοιόμορφη εμφάνιση και οπτική αναγνωσιμότητα για τον χρήστη. Σε αυτό το πλαίσιο, οι ενσωματωμένες λειτουργίες της Γλώσσας Wolfram παρουσιάζονται με περισσότερα από 6000 διαδοχικά παραδείγματα για τον σωστό προγραμματισμό συναρτήσεων (αυτά είναι ζωντανά βίντεο προγραμματισμούπου περιλαμβάνουν εκατοντάδες ώρες διαδικασίας δημιουργίας τυπικών προγραμμάτων). Αυτό που τελικά αυτή η προσέγγιση κάνει το αποθετήριο χαρακτηριστικών Wolfram ικανό να αποδώσει καλά είναι η δομική φύση της Γλώσσας Wolfram, με τον μεγάλο αριθμό πρόσθετων και ποικίλων βιβλιοθηκών που είναι ήδη ενσωματωμένες στη γλώσσα. Για παράδειγμα, εάν έχετε μια λειτουργία που επεξεργάζεται εικόνες ή αραιοί πίνακεςΉ μοριακές δομέςΚαι γεωγραφικά δεδομένα ή κάποια άλλα - η συνεπής συμβολική τους αναπαράσταση υπάρχει ήδη στη γλώσσα και χάρη σε αυτό, η λειτουργία σας γίνεται αμέσως συμβατή με άλλες λειτουργίες της γλώσσας.

Η δημιουργία ενός αποθετηρίου που πραγματικά λειτουργεί καλά είναι μια ενδιαφέρουσα εργασία μετα-προγραμματισμού. Για παράδειγμα, η υπέρβαση των περιορισμών στο πρόγραμμα δεν θα επιτρέψει την απόκτηση της απαιτούμενης ενοποίησης και καθολικότητας του αλγορίθμου. Ακριβώς όπως με έναν ανεπαρκή αριθμό λειτουργικών περιορισμών, δεν θα μπορείτε να εφαρμόσετε μια αρκετά σωστή ακολουθία εκτέλεσης αλγορίθμου. Αρκετά προηγούμενα παραδείγματα εφαρμογής ενός συμβιβασμού αυτών των προσεγγίσεων, που εφαρμόστηκαν από την εταιρεία μας, λειτούργησαν αρκετά σταθερά - αυτά είναι: Έργο Επιδείξεις Tungsten, κυκλοφόρησε το 2007 και τώρα εκτελείται διαδικτυακά με πάνω από 12000 διαδραστικές επιδείξεις χρήστη. ΣΕ Βάση δεδομένων Wolfram υπάρχουν περισσότερες από 600 έτοιμες βάσεις δεδομένων που μπορούν να χρησιμοποιηθούν στη γλώσσα Wolfram και Αποθήκευση νευρωνικού δικτύου Wolfram αναπληρώνεται με νέα νευρωνικά δίκτυα σχεδόν κάθε εβδομάδα (υπάρχουν ήδη 118 από αυτά τώρα) και συνδέονται άμεσα μέσω της λειτουργίας NetModel στη γλώσσα Wolfram.

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

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

Έτσι, η ιδέα πίσω από το αποθετήριο χαρακτηριστικών Wolfram είναι να αποφευχθεί το πρόβλημα που περιγράφηκε παραπάνω, προσθέτοντας απλώς επεκτάσεις στη γλώσσα σε σχετικά μικρά κομμάτια κώδικα μέσω μεμονωμένων χαρακτηριστικών που είναι πιο εύκολο να αναπτυχθούν ως συνεκτικές μονάδες. Τούτου λεχθέντος, υπάρχουν δυνατότητες προγραμματισμού που δεν μπορούν να γίνουν βολικές χρησιμοποιώντας μεμονωμένες λειτουργίες (και η εταιρεία μας σχεδιάζει να κυκλοφορήσει έναν βελτιστοποιημένο αλγόριθμο προγραμματισμού στο εγγύς μέλλον για να βοηθήσει στην εφαρμογή πακέτων λογισμικού μεγάλης κλίμακας). Ωστόσο, με βάση τις λειτουργίες που έχουν ήδη ενσωματωθεί στη Γλώσσα Wolfram, υπάρχουν πολλές δυνατότητες προγραμματισμού που υλοποιούνται με βάση μεμονωμένες συναρτήσεις. Η ιδέα εδώ είναι ότι με σχετικά μικρή προσπάθεια προγραμματισμού είναι δυνατό να δημιουργηθούν πολλές νέες και πολύ χρήσιμες λειτουργίες που θα παρέχουν επαρκή συνοχή στο σχεδιασμό, θα είναι καλά συντονισμένες μεταξύ τους και επίσης, επιπλέον, θα μπορούν να χρησιμοποιηθούν εύκολα και ευρέως στη γλώσσα στο μέλλον.

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

Βοηθήστε στην προσθήκη προσαρμοσμένων συναρτήσεων στο χώρο αποθήκευσης λειτουργιών

Η ομάδα μας έχει εργαστεί σκληρά για να διευκολύνει τους χρήστες να συνεισφέρουν στις δυνατότητες του αποθετηρίου Wolfram. Στην επιφάνεια εργασίας (ήδη μέσα έκδοση 12.0), Μπορείτε απλώς να περάσετε διαδοχικά από τις καρτέλες του κύριου μενού: Αρχείο > Νέο > RepositoryItem > Στοιχείο αποθήκης συνάρτησης και θα λάβετε "Ορισμός Σημειωματάριο" (προγραμματικά μέσα στον πάγκο εργασίας. Μπορείτε επίσης να χρησιμοποιήσετε την αναλογική λειτουργία - Δημιουργία Σημειωματάριου["FunctionResource"]):

Wolfram Function Repository: Πλατφόρμα ανοιχτής πρόσβασης για επεκτάσεις γλώσσας Wolfram

Υπάρχουν δύο βασικά βήματα που θα χρειαστεί να εκτελέσετε: πρώτον, γράψτε πραγματικά τον κώδικα για τη λειτουργία σας και, δεύτερον, σημειώστε την τεκμηρίωση που δείχνει πώς πρέπει να λειτουργεί η λειτουργία σας.
Κάντε κλικ στο κουμπί "Άνοιγμα δείγματος" στο επάνω μέρος για να δείτε ένα παράδειγμα του τι πρέπει να κάνετε:

Wolfram Function Repository: Πλατφόρμα ανοιχτής πρόσβασης για επεκτάσεις γλώσσας Wolfram

Ουσιαστικά, προσπαθείτε να δημιουργήσετε κάτι παρόμοιο με μια ενσωματωμένη συνάρτηση στη Γλώσσα Wolfram. Μόνο που μπορεί να κάνει κάτι πολύ πιο συγκεκριμένο από μια ενσωματωμένη λειτουργία. Ταυτόχρονα, οι προσδοκίες σχετικά με την πληρότητα και την αξιοπιστία του θα είναι πολύ χαμηλότερες.
Πρέπει να δώσετε στη συνάρτησή σας ένα όνομα που να ακολουθεί τις οδηγίες ονομασίας συναρτήσεων της Wolfram Language. Επιπλέον, θα χρειαστεί να αναπτύξετε τεκμηρίωση για τη λειτουργία σας, παρόμοια με τις ενσωματωμένες λειτουργίες της γλώσσας. Θα μιλήσω για αυτό με περισσότερες λεπτομέρειες αργότερα. Προς το παρόν, απλώς παρατηρήστε ότι στη σειρά των κουμπιών στην κορυφή του αρχείου σημειωματάριου ορισμού υπάρχει ένα κουμπί "Οδηγίες στυλ", το οποίο εξηγεί τι πρέπει να κάνετε και ένα κουμπί Εργαλεία, το οποίο παρέχει εργαλεία για τη μορφοποίηση της τεκμηρίωσης της λειτουργίας σας.
Όταν βεβαιωθείτε ότι όλα έχουν συμπληρωθεί σωστά και είστε έτοιμοι, κάντε κλικ στο κουμπί «Έλεγχος». Είναι απολύτως φυσιολογικό να μην έχετε καταλάβει ακόμα όλες τις λεπτομέρειες. Έτσι, η λειτουργία "Έλεγχος" θα εκτελεστεί αυτόματα και θα κάνει πολλούς ελέγχους στυλ και συνέπειας. Συχνά, θα σας ζητήσει αμέσως να επιβεβαιώσετε και να αποδεχτείτε τις διορθώσεις (Για παράδειγμα: "Αυτή η γραμμή πρέπει να τελειώνει με άνω και κάτω τελεία" και θα σας ζητήσει να εισαγάγετε άνω και κάτω τελεία). Μερικές φορές θα σας ζητήσει να προσθέσετε ή να αλλάξετε κάτι μόνοι σας. Θα προσθέτουμε συνεχώς νέες δυνατότητες στην αυτόματη λειτουργικότητα του κουμπιού Έλεγχος, αλλά βασικά σκοπός του είναι να διασφαλίσει ότι οτιδήποτε υποβάλλετε στο αποθετήριο λειτουργιών ακολουθεί ήδη όσο το δυνατόν περισσότερες οδηγίες στυλ

Wolfram Function Repository: Πλατφόρμα ανοιχτής πρόσβασης για επεκτάσεις γλώσσας Wolfram

Έτσι, αφού εκτελέσετε το "Έλεγχος", μπορείτε να χρησιμοποιήσετε το "Προεπισκόπηση". Η "Προεπισκόπηση" δημιουργεί μια προεπισκόπηση της σελίδας τεκμηρίωσης που ορίσατε για τη λειτουργία σας. Μπορείτε επίσης να δημιουργήσετε μια προεπισκόπηση για ένα αρχείο που δημιουργήθηκε στον υπολογιστή σας ή για ένα αρχείο που βρίσκεται σε αποθήκευση cloud. Εάν, για κάποιο λόγο, δεν είστε ικανοποιημένοι με αυτό που βλέπετε στην προεπισκόπηση, απλώς επιστρέψτε και κάντε τις απαραίτητες διορθώσεις και, στη συνέχεια, κάντε ξανά κλικ στο κουμπί Προεπισκόπηση.
Τώρα είστε έτοιμοι να ωθήσετε τη λειτουργία σας στο αποθετήριο. Το κουμπί Ανάπτυξη σάς δίνει τέσσερις επιλογές:

Wolfram Function Repository: Πλατφόρμα ανοιχτής πρόσβασης για επεκτάσεις γλώσσας Wolfram

Το σημαντικό σε αυτό το βήμα είναι ότι μπορείτε να υποβάλετε τη συνάρτησή σας στο αποθετήριο συναρτήσεων Wolfram ώστε να είναι διαθέσιμη σε οποιονδήποτε. Ταυτόχρονα, μπορείτε επίσης να τοποθετήσετε τη λειτουργία σας για περιορισμένο αριθμό χρηστών. Για παράδειγμα, μπορείτε να δημιουργήσετε μια συνάρτηση που φιλοξενείται τοπικά στον υπολογιστή σας, ώστε να είναι διαθέσιμη όταν χρησιμοποιείτε τον συγκεκριμένο υπολογιστή. Ή μπορείτε να το δημοσιεύσετε στο δικό σας λογαριασμό cloud, ώστε να είναι διαθέσιμο σε εσάς όταν είστε συνδεδεμένοι στο cloud. Μπορείτε επίσης να φιλοξενήσετε (να αναπτύξετε) δημόσια τη λειτουργία μέσω του λογαριασμού σας στο cloud. Δεν θα βρίσκεται στο κεντρικό αποθετήριο λειτουργιών Wolfram, αλλά θα μπορείτε να δώσετε σε κάποιον ένα URL που θα του επιτρέψει να λάβει τη λειτουργία σας από τον λογαριασμό σας. (Στο μέλλον, θα υποστηρίζουμε επίσης κεντρικά αποθετήρια σε όλη την εταιρεία μας.)

Ας υποθέσουμε λοιπόν ότι θέλετε πραγματικά να υποβάλετε τη συνάρτησή σας στη γνωσιακή βάση συνάρτησης Wolfram. Για να το κάνετε αυτό, κάνετε κλικ στο κουμπί "Υποβολή" στο αποθετήριο. Τι συμβαίνει λοιπόν αυτή τη στιγμή; Η αίτησή σας βρίσκεται αμέσως στην ουρά για έλεγχο και έγκριση από την ειδική ομάδα επιμελητών μας.

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

Τι πρέπει να υπάρχει στην αποθήκευση;

Θα πρέπει να σημειωθεί ότι η εταιρεία μας έχει πολύ υψηλά πρότυπα πληρότητας, αξιοπιστίας και συνολικής ποιότητας και από τις 6000+ λειτουργίες που έχουμε ήδη ενσωματώσει στη γλώσσα Wolfram τα τελευταία 30+ χρόνια, όλες πληρούν τις παραπάνω απαιτήσεις. Ο στόχος του αποθετηρίου συναρτήσεων Wolfram είναι να χρησιμοποιήσει όλη τη δομή και τη λειτουργικότητα που υπάρχει ήδη στη Γλώσσα Wolfram προκειμένου να προσθέσει όσο το δυνατόν περισσότερες πιο ελαφριές συναρτήσεις (δηλαδή συναρτήσεις υψηλότερης απόδοσης).

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

Στις ενσωματωμένες λειτουργίες της γλώσσας Wolfram, εργαζόμαστε σκληρά για να κάνουμε τις λειτουργίες προγραμματισμού όσο το δυνατόν πιο γενικές. Τούτου λεχθέντος, όταν στο αποθετήριο συναρτήσεων Wolfram δεν υπάρχει τίποτα κακό να υπάρχει μια συνάρτηση σε αυτό που απλώς χειρίζεται κάποια πολύ συγκεκριμένη αλλά χρήσιμη περίπτωση. Για παράδειγμα, η συνάρτηση SendMailFromNotebook μπορεί να λαμβάνει αρχεία σε μια συγκεκριμένη μορφή και να δημιουργεί αλληλογραφία με έναν συγκεκριμένο τρόπο. Πολυγωνικό Διάγραμμα δημιουργεί γραφήματα με συγκεκριμένα χρώματα και ετικέτες κ.λπ.

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

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

Τώρα ας δούμε ένα παράδειγμα δοκιμής συναρτήσεων σε ένα αποθετήριο. Οι προσδοκίες συνέπειας για τέτοιες λειτουργίες είναι φυσικά πολύ χαμηλότερες από ό,τι για τις ενσωματωμένες γλωσσικές λειτουργίες. Αυτό ισχύει ιδιαίτερα σε περιπτώσεις όπου οι συναρτήσεις εξαρτώνται από εξωτερικούς πόρους όπως τα API, είναι σημαντικό να διεξάγονται συνεχώς συνεπείς δοκιμές, κάτι που συμβαίνει αυτόματα στους αλγόριθμους επαλήθευσης. Στο αρχείο nb, μπορείτε να καθορίσετε ρητά ορισμούς (στην ενότητα Πρόσθετες πληροφορίες) και να καθορίσετε όσες δοκιμές ορίζονται είτε από συμβολοσειρές εισόδου και εξόδου είτε από αντικείμενα πλήρους χαρακτήρων του τύπου Δοκιμή επαλήθευσης, όσο κρίνετε σωστό. Επιπλέον, το σύστημα προσπαθεί συνεχώς να μετατρέψει τα παραδείγματα τεκμηρίωσης που παρέχετε σε μια διαδικασία επαλήθευσης (και μερικές φορές αυτό μπορεί να απαιτεί αρκετή ένταση πόρων, για παράδειγμα, για μια συνάρτηση της οποίας το αποτέλεσμα εξαρτάται από τυχαίους αριθμούς ή την ώρα της ημέρας).

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

Ο κύριος σκοπός ενός αποθετηρίου συναρτήσεων (όπως υποδηλώνει το όνομά του) είναι να εισάγει νέα χαρακτηριστικά στη γλώσσα. Εάν θέλετε να προσθέσετε νέα δεδομένα ή νέες οντότητες, χρήση Αποθετήριο δεδομένων Wolfram. Τι γίνεται όμως αν θέλετε να εισάγετε νέους τύπους αντικειμένων για τους υπολογισμούς σας;

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

Τι γίνεται όμως αν θέλετε να αναπαραστήσετε ένα αντικείμενο και στη συνέχεια να ορίσετε, μέσω των υπαρχουσών συναρτήσεων στη Γλώσσα Wolfram, ότι θέλετε να εργαστείτε με αυτό; Η Γλώσσα Wolfram είχε πάντα έναν ελαφρύ μηχανισμό για αυτό, που ονομάζεται Upvalues. Με ορισμένους περιορισμούς (ειδικά για λειτουργίες που δεν μπορούν να αξιολογήσουν τα επιχειρήματά τους), ένα αποθετήριο συναρτήσεων σάς επιτρέπει να αναπαραστήσετε απλώς μια συνάρτηση και να ορίσετε τιμές για αυτήν. (Η αύξηση της προσδοκίας συνέπειας κατά τη δημιουργία ενός νέου σημαντικού σχεδίου που είναι πλήρως ενσωματωμένο στη γλώσσα Wolfram είναι γενικά μια πολύ σημαντική διαδικασία που δεν μπορεί να επιτευχθεί με απλή αύξηση του κόστους του έργου και είναι κάτι που η εταιρεία μας κάνει ως μέρος έργων για μακροπρόθεσμη ανάπτυξη της γλώσσας, αυτό το καθήκον δεν είναι στόχος που τίθεται ως μέρος της ανάπτυξης του αποθετηρίου).

Λοιπόν, τι μπορεί να υπάρχει στον κώδικα συνάρτησης σε ένα αποθετήριο συναρτήσεων; Όλα ενσωματωμένα στη γλώσσα Wolfram, φυσικά (τουλάχιστον αν δεν αντιπροσωπεύει απειλές για Ασφάλεια και την απόδοση του ίδιου του προγράμματος, ως υπολογιστικού περιβάλλοντος) καθώς και οποιαδήποτε συνάρτηση από το αποθετήριο συναρτήσεων. Ωστόσο, υπάρχουν και άλλες δυνατότητες λειτουργίας: μια συνάρτηση σε ένα αποθετήριο συναρτήσεων μπορεί να καλέσει ένα API ή σε Wolfram CloudΉ από άλλη πηγή. Φυσικά, υπάρχουν ορισμένοι κίνδυνοι που συνδέονται με αυτό. Λόγω του γεγονότος ότι δεν υπάρχουν εγγυήσεις ότι το API δεν θα αλλάξει και η λειτουργία στο χώρο αποθήκευσης λειτουργιών θα σταματήσει να λειτουργεί. Για να βοηθήσετε στον εντοπισμό τέτοιων ζητημάτων, υπάρχει μια σημείωση στη σελίδα τεκμηρίωσης (στην ενότητα Απαιτήσεις) για οποιαδήποτε λειτουργία βασίζεται σε κάτι περισσότερο από την ενσωματωμένη λειτουργία Wolfram Language. (Φυσικά, όταν πρόκειται για πραγματικά δεδομένα, μπορεί να υπάρχουν προβλήματα ακόμη και με αυτήν τη λειτουργικότητα - επειδή τα δεδομένα του πραγματικού κόσμου αλλάζουν συνεχώς και μερικές φορές ακόμη και οι ορισμοί και η δομή τους αλλάζουν.)

Πρέπει όλος ο κώδικας για το αποθετήριο δυνατοτήτων Wolfram να είναι γραμμένος στο Wolfram; Σίγουρα, ο κώδικας μέσα στο εξωτερικό API δεν πρέπει να είναι γραμμένος στη γλώσσα Wolfram, η οποία δεν κάνει καν τον κώδικα γλώσσας. Στην πραγματικότητα, εάν βρείτε μια συνάρτηση σχεδόν σε οποιαδήποτε εξωτερική γλώσσα ή βιβλιοθήκη, μπορείτε να δημιουργήσετε ένα περιτύλιγμα που σας επιτρέπει να τη χρησιμοποιήσετε στο χώρο αποθήκευσης συναρτήσεων Wolfram. (Συνήθως θα πρέπει να χρησιμοποιήσετε τις ενσωματωμένες λειτουργίες για αυτό Εξωτερική Αξιολόγηση ή Εξωτερική Λειτουργία σε κώδικα γλώσσας Wolfram.)

Τι νόημα έχει λοιπόν να το κάνεις αυτό; Ουσιαστικά, αυτό σας επιτρέπει να χρησιμοποιήσετε ολόκληρο το ενσωματωμένο σύστημα Wolfram Language και ολόκληρο το ενοποιημένο σύνολο δυνατοτήτων λογισμικού του. Εάν αποκτήσετε τη βασική υλοποίηση από μια εξωτερική βιβλιοθήκη ή γλώσσα, μπορείτε στη συνέχεια να χρησιμοποιήσετε την πλούσια συμβολική δομή της Γλώσσας Wolfram για να δημιουργήσετε μια βολική λειτουργία ανώτατου επιπέδου που επιτρέπει στους χρήστες να χρησιμοποιούν εύκολα οποιαδήποτε λειτουργικότητα έχει ήδη υλοποιηθεί. Τουλάχιστον, αυτό θα πρέπει να είναι εφικτό σε έναν ιδανικό κόσμο όπου υπάρχουν όλα τα δομικά στοιχεία της φόρτωσης βιβλιοθηκών κ.λπ., οπότε θα τα χειρίζεται αυτόματα η Γλώσσα Wolfram. (Θα πρέπει να σημειωθεί ότι στην πράξη μπορεί να υπάρχουν προβλήματα με ρύθμιση εξωτερικών γλωσσών συγκεκριμένο σύστημα υπολογιστή και η αποθήκευση cloud ενδέχεται να δημιουργήσουν πρόσθετα ζητήματα ασφάλειας).

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

«Οικοσύστημα» της γνωσιακής βάσης

Εάν έχετε γράψει συναρτήσεις που χρησιμοποιείτε τακτικά, υποβάλετέ τις στο Αποθετήριο συναρτήσεων Wolfram! Εάν δεν προκύψει κάτι περισσότερο από αυτό (ανάπτυξη γλώσσας), τότε ακόμη και τότε θα είναι πολύ πιο βολικό για εσάς να χρησιμοποιήσετε τις λειτουργίες για προσωπική χρήση. Ωστόσο, είναι λογικό να υποθέσουμε ότι εάν χρησιμοποιείτε τις λειτουργίες τακτικά, ίσως και άλλοι χρήστες θα τις βρουν χρήσιμες.

Φυσικά, μπορεί να βρεθείτε σε μια κατάσταση όπου δεν μπορείτε - ή δεν θέλετε - να μοιραστείτε τις λειτουργίες σας ή σε περίπτωση που αποκτήσετε πρόσβαση σε ιδιωτικούς πόρους πληροφοριών. Ακόμη και σε τέτοιες περιπτώσεις, μπορείτε απλά να αναπτύξετε τις λειτουργίες στον δικό σας λογαριασμό cloud, προσδιορίζοντας δικαιώματα πρόσβαση σε αυτά. (Εάν ο οργανισμός σας έχει Wolfram Enterprise ιδιωτικό σύννεφο, τότε σύντομα θα μπορεί να φιλοξενεί το δικό του αποθετήριο ιδιωτικών λειτουργιών, το οποίο μπορεί να διαχειρίζεται μέσα από τον οργανισμό σας και να ορίζει εάν θα επιβάλλεται ή όχι η προβολή των προβολών από τρίτους χρήστες.)

Οι λειτουργίες που υποβάλλετε στο αποθετήριο συναρτήσεων Wolfram δεν χρειάζεται να είναι τέλειες. απλά πρέπει να είναι χρήσιμοι. Αυτό μοιάζει λίγο με την ενότητα "Σφάλματα" στην κλασική τεκμηρίωση του Unix - στην ενότητα "Ορισμοί" υπάρχει μια ενότητα "Σημειώσεις συγγραφέα" όπου μπορείτε να περιγράψετε περιορισμούς, προβλήματα κ.λπ. που γνωρίζετε ήδη για τη λειτουργία σας. Επιπλέον, όταν υποβάλλετε τη λειτουργία σας στο αποθετήριο, μπορείτε να προσθέσετε σημειώσεις υποβολής που θα διαβαστούν από μια ειδική ομάδα επιμελητών.

Μόλις δημοσιευτεί ένα χαρακτηριστικό, η σελίδα του έχει πάντα δύο συνδέσμους στο κάτω μέρος: "Στείλτε ένα μήνυμα σχετικά με αυτήν τη δυνατότητα"Και"Συζητήστε στην κοινότητα Wolfram" Εάν επισυνάπτετε μια σημείωση (π.χ. πείτε μου για σφάλματα), μπορείτε να επιλέξετε το πλαίσιο που λέει ότι θέλετε το μήνυμά σας και τα στοιχεία επικοινωνίας σας να κοινοποιηθούν στον συντάκτη της λειτουργίας.

Μερικές φορές θέλετε απλώς να χρησιμοποιήσετε συναρτήσεις από το αποθετήριο συναρτήσεων Wolfram, όπως ενσωματωμένες συναρτήσεις, χωρίς να κοιτάξετε τον κώδικά τους. Ωστόσο, αν θέλετε να ρίξετε μια ματιά στο εσωτερικό, υπάρχει πάντα ένα κουμπί Σημειωματάριο στην κορυφή. Κάντε κλικ σε αυτό και θα λάβετε το δικό σας αντίγραφο του αρχικού σημειωματάριου ορισμού που υποβλήθηκε στο αποθετήριο λειτουργιών. Μερικές φορές μπορείτε απλώς να το χρησιμοποιήσετε ως παράδειγμα για τις ανάγκες σας. Ταυτόχρονα, μπορείτε επίσης να αναπτύξετε τη δική σας τροποποίηση αυτής της λειτουργίας. Μπορεί να θέλετε να δημοσιεύσετε αυτές τις συναρτήσεις που βρήκατε από το αποθετήριο στον υπολογιστή σας ή στον λογαριασμό αποθήκευσης στο σύννεφο αφιδών, ίσως θέλετε να τις υποβάλετε στη βάση γνώσεων λειτουργίας, ίσως ως βελτιωμένη, διευρυμένη έκδοση της αρχικής λειτουργίας.

Στο μέλλον, σκοπεύουμε να υποστηρίξουμε το forking τύπου Git για αποθετήρια χαρακτηριστικών, αλλά προς το παρόν προσπαθούμε να το διατηρήσουμε απλό και έχουμε πάντα μόνο μία αποδεκτή έκδοση κάθε δυνατότητας ενσωματωμένη στη γλώσσα. Τις περισσότερες φορές (εκτός εάν οι προγραμματιστές εγκαταλείψουν τη διατήρηση των δυνατοτήτων που ανέπτυξαν και ανταποκριθούν στις υποβολές των χρηστών), ο αρχικός συγγραφέας της δυνατότητας αναλαμβάνει τον έλεγχο των ενημερώσεων σε αυτό και υποβάλλει νέες εκδόσεις, οι οποίες στη συνέχεια εξετάζονται και, εάν περάσουν τη διαδικασία ελέγχου , δημοσιευμένο στη γλώσσα.

Ας εξετάσουμε το ερώτημα πώς λειτουργεί η "έκδοση" των αναπτυγμένων λειτουργιών. Αυτήν τη στιγμή, όταν χρησιμοποιείτε μια συνάρτηση από το χώρο αποθήκευσης συναρτήσεων, ο ορισμός της θα αποθηκευτεί μόνιμα στον υπολογιστή σας (ή στον λογαριασμό σας στο cloud, εάν χρησιμοποιείτε το cloud). Εάν είναι διαθέσιμη μια νέα έκδοση μιας λειτουργίας, την επόμενη φορά που θα τη χρησιμοποιήσετε θα λάβετε ένα μήνυμα που θα σας ειδοποιεί για αυτό. Και αν θέλετε να ενημερώσετε τη λειτουργία σε μια νέα έκδοση, μπορείτε να το κάνετε χρησιμοποιώντας την εντολή Ενημέρωση πόρων. (Το "function blob" αποθηκεύει στην πραγματικότητα περισσότερες πληροφορίες έκδοσης και σκοπεύουμε να το κάνουμε πιο προσιτό στους χρήστες μας στο μέλλον.)

Ένα από τα όμορφα πράγματα του Wolfram Function Repository είναι ότι οποιοδήποτε πρόγραμμα Wolfram Language, οπουδήποτε μπορεί να χρησιμοποιήσει λειτουργίες από αυτό. Εάν ένα πρόγραμμα εμφανίζεται σε ένα σημειωματάριο, είναι συχνά βολικό να μορφοποιήσετε τις λειτουργίες του αποθετηρίου ως ευανάγνωστες συναρτήσεις "δυαδικού αντικειμένου λειτουργιών" (ίσως με ένα κατάλληλο σύνολο εκδόσεων).

Μπορείτε πάντα να έχετε πρόσβαση σε οποιαδήποτε λειτουργία στο χώρο αποθήκευσης λειτουργιών χρησιμοποιώντας κείμενο Λειτουργία Πόρων[...]. Και αυτό είναι πολύ βολικό εάν γράφετε κώδικα ή σενάρια απευθείας για τη μηχανή Wolfram, για παράδειγμα, με χρησιμοποιώντας ένα πρόγραμμα επεξεργασίας κώδικα IDE ή κειμένου (Πρέπει ιδιαίτερα να σημειωθεί ότι το αποθετήριο λειτουργιών είναι πλήρως συμβατό με Δωρεάν Wolfram Engine για προγραμματιστές).

Πώς λειτουργεί;

Μέσα στις λειτουργίες στο αποθετήριο Wolfram αυτό είναι δυνατό χρησιμοποιώντας ακριβώς το ίδιο συστήματα πόρων βάσεις, όπως στο όλα τα άλλα υπάρχοντα αποθετήρια μας (αποθήκη δεδομένων, Αποθετήριο νευρωνικού δικτύου, συλλογή έργων επίδειξης κ.λπ.), όπως όλοι οι άλλοι πόροι συστήματος Wolfram, Λειτουργία Πόρων βασισμένο τελικά στη λειτουργία ResourceObject.

Εξετάστε Λειτουργία Πόρων:

Wolfram Function Repository: Πλατφόρμα ανοιχτής πρόσβασης για επεκτάσεις γλώσσας Wolfram

Στο εσωτερικό μπορείτε να δείτε ορισμένες πληροφορίες χρησιμοποιώντας τη λειτουργία Πληροφορίες:

Wolfram Function Repository: Πλατφόρμα ανοιχτής πρόσβασης για επεκτάσεις γλώσσας Wolfram

Πώς λειτουργεί η ρύθμιση μιας συνάρτησης πόρων; Το πιο απλό είναι μια καθαρά τοπική περίπτωση. Ακολουθεί ένα παράδειγμα που παίρνει μια συνάρτηση (σε αυτήν την περίπτωση απλώς μια καθαρή συνάρτηση) και την ορίζει ως συνάρτηση πόρου για μια δεδομένη συνεδρία προγράμματος:

Wolfram Function Repository: Πλατφόρμα ανοιχτής πρόσβασης για επεκτάσεις γλώσσας Wolfram

Αφού κάνετε τον ορισμό, μπορείτε να χρησιμοποιήσετε τη συνάρτηση πόρων:

Wolfram Function Repository: Πλατφόρμα ανοιχτής πρόσβασης για επεκτάσεις γλώσσας Wolfram

Σημειώστε ότι υπάρχει ένα μαύρο εικονίδιο σε αυτή τη μάζα συνάρτησης Wolfram Function Repository: Πλατφόρμα ανοιχτής πρόσβασης για επεκτάσεις γλώσσας Wolfram. Αυτό σημαίνει ότι η συνάρτηση BLOB αναφέρεται στη συνάρτηση πόρων στη μνήμη που έχει οριστεί για την τρέχουσα περίοδο λειτουργίας. Μια δυνατότητα πόρων που είναι μόνιμα αποθηκευμένη στον υπολογιστή σας ή στον λογαριασμό σας στο cloud έχει ένα γκρι εικονίδιο Wolfram Function Repository: Πλατφόρμα ανοιχτής πρόσβασης για επεκτάσεις γλώσσας Wolfram. Και υπάρχει ένα πορτοκαλί εικονίδιο για μια επίσημη λειτουργία πόρων στο Αποθετήριο λειτουργιών Wolfram Wolfram Function Repository: Πλατφόρμα ανοιχτής πρόσβασης για επεκτάσεις γλώσσας Wolfram.

Τι συμβαίνει λοιπόν όταν χρησιμοποιείτε το μενού Ανάπτυξη στο Σημειωματάριο ορισμού; Πρώτον, παίρνει όλους τους ορισμούς στο σημειωματάριο και από αυτούς δημιουργεί ένα συμβολικό ResourceObject). (Και εάν χρησιμοποιείτε ένα IDE ή πρόγραμμα που βασίζεται σε κείμενο, τότε μπορείτε επίσης να δημιουργήσετε ρητά ResourceObject)

Η τοπική ανάπτυξη μιας συνάρτησης από ένα χώρο αποθήκευσης στον υπολογιστή σας πραγματοποιείται χρησιμοποιώντας την εντολή LocalCache για ένα αντικείμενο πόρου για να το αποθηκεύσετε ως LocalObject στο σύστημα αρχείων σας. Η ανάπτυξη σε έναν λογαριασμό cloud γίνεται χρησιμοποιώντας την εντολή CloudDeploy για ένα αντικείμενο πόρου και μια δημόσια ανάπτυξη cloud είναι CloudPublish. Σε κάθε περίπτωση ResourceRegister χρησιμοποιείται επίσης για την καταχώρηση του ονόματος της συνάρτησης πόρου, έτσι Λειτουργία Πόρων["όνομα"] θα δουλέψω.

Εάν κάνετε κλικ στο κουμπί Υποβολή για ένα αποθετήριο συναρτήσεων, τι συμβαίνει κάτω από αυτό Υποβολή πόρων καλείται σε ένα αντικείμενο πόρου. (Και αν χρησιμοποιείτε διεπαφή εισαγωγής κειμένου, μπορείτε επίσης να καλέσετε Υποβολή πόρων κατευθείαν.)

Από προεπιλογή, οι υποβολές γίνονται με το όνομα που σχετίζεται με το Wolfram ID σας. Αλλά εάν υποβάλλετε μια αίτηση για λογαριασμό μιας ομάδας ανάπτυξης ή ενός οργανισμού, μπορείτε ορίστε ξεχωριστό αναγνωριστικό εκδότη και αντ' αυτού χρησιμοποιήστε το ως όνομα για να αλληλεπιδράσετε με τις απόψεις σας.

Αφού υποβάλετε οποιαδήποτε από τις συναρτήσεις σας στη γνωσιακή βάση συναρτήσεων, θα μπει στην ουρά για έλεγχο. Εάν λαμβάνετε σχόλια ως απάντηση, συνήθως θα έχουν τη μορφή αρχείου κειμένου με πρόσθετα "κελιά σχολίων". Μπορείτε πάντα να ελέγξετε την κατάσταση της αίτησής σας επισκεπτόμενοι πύλη μελών του συστήματος πόρων. Αλλά μόλις εγκριθεί η δυνατότητα σας, θα ειδοποιηθείτε (μέσω email) και η δυνατότητα σας θα δημοσιευτεί στο αποθετήριο λειτουργιών Wolfram.

Μερικές λεπτότητες στη δουλειά

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

Πρώτη άμεση λεπτότητα: Όταν συμπληρώνετε το Σημειωματάριο ορισμού, μπορείτε απλά να ανατρέξετε στη λειτουργία σας παντού χρησιμοποιώντας ένα όνομα όπως MyFunction, το οποίο μοιάζει με κανονικό όνομα για μια συνάρτηση στη γλώσσα Wolfram, αλλά για την τεκμηρίωση του αποθετηρίου συναρτήσεων αυτό αντικαθίσταται Λειτουργία Πόρων["MyFunction"] είναι αυτό που θα χρησιμοποιήσουν πραγματικά οι χρήστες όταν εργάζονται με τη λειτουργία.

Η δεύτερη λεπτότητα: όταν δημιουργείτε μια συνάρτηση πόρου από το Σημειωματάριο ορισμού, όλες οι εξαρτήσεις που εμπλέκονται στον ορισμό της συνάρτησης πρέπει να καταγράφονται και να περιλαμβάνονται ρητά. Ωστόσο, για να διασφαλίσετε ότι οι ορισμοί παραμένουν αρθρωτοί, πρέπει να βάλετε τα πάντα σε ένα μοναδικό χώρο ονομάτων. (Φυσικά, λειτουργίες που τα κάνουν όλα, βρίσκονται στο αποθετήριο συναρτήσεων.)

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

Το αποθετήριο συναρτήσεων είναι για τον ορισμό νέων συναρτήσεων. Και αυτές οι λειτουργίες μπορεί να έχουν επιλογές. Συχνά αυτές οι παράμετροι (για παράδειγμα, Μέθοδος ή Μέγεθος εικόνας) θα μπορεί να χρησιμοποιηθεί για ενσωματωμένες λειτουργίες, καθώς και για εκείνες για τις οποίες υπάρχουν ήδη ενσωματωμένα σύμβολα. Αλλά μερικές φορές μια νέα δυνατότητα μπορεί να απαιτεί νέες επιλογές. Για να διατηρηθεί η σπονδυλωτότητα, αυτές οι παράμετροι πρέπει να είναι σύμβολα που ορίζονται σε ένα μοναδικό εσωτερικό πλαίσιο (ή κάτι σαν ολόκληρες συναρτήσεις πόρων, δηλαδή οι ίδιες). Για απλότητα, το αποθετήριο συναρτήσεων σάς επιτρέπει να ορίζετε νέες επιλογές σε ορισμούς συμβολοσειρών. Και για τη διευκόλυνση του χρήστη, αυτοί οι ορισμοί (υποθέτοντας ότι χρησιμοποίησαν OptionValue и OptionsPattern) υποβάλλονται επίσης σε επεξεργασία έτσι ώστε κατά τη χρήση συναρτήσεων, οι παράμετροι να μπορούν να καθοριστούν όχι μόνο ως συμβολοσειρές, αλλά και ως καθολικά σύμβολα με τα ίδια ονόματα.

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

Οι συναρτήσεις από ένα αποθετήριο μπορούν να χρησιμοποιούν άλλες συναρτήσεις που βρίσκονται ήδη στο χώρο αποθήκευσης· για να ορίσετε ορισμούς για ένα αποθετήριο συναρτήσεων που περιλαμβάνει δύο (ή περισσότερες) συναρτήσεις που αναφέρονται η μία στην άλλη, πρέπει να τις αναπτύξετε στη συνεδρία του προγράμματός σας, ώστε να μπορείτε αναφορά όπως σε αυτά Λειτουργία Πόρων["όνομα"], τότε μπορείτε να δημιουργήσετε τους συνδυασμούς αυτών των συναρτήσεων που χρειάζεστε, παραδείγματα (δεν κατάλαβα) και να προσθέσετε μια νέα συνάρτηση στο αποθετήριο με βάση αυτές που έχουν ήδη αναρτηθεί νωρίτερα. (ή ήδη ή παλαιότερα - και οι δύο λέξεις είναι αδέξιες)

Προοπτικές ανάπτυξης. Τι πρέπει να συμβεί όταν το αποθετήριο γίνει πραγματικά μεγάλο;

Σήμερα μόλις λανσάρουμε το Wolfram Feature Repository, αλλά με την πάροδο του χρόνου αναμένουμε ότι το μέγεθος και η λειτουργικότητά του μπορεί να αυξηθούν δραματικά και καθώς αναπτύσσεται θα υπάρχουν διάφορα προβλήματα που ήδη αναμένουμε ότι μπορεί να προκύψουν.

Το πρώτο πρόβλημα αφορά τα ονόματα συναρτήσεων και τη μοναδικότητά τους. Το αποθετήριο συναρτήσεων έχει σχεδιαστεί με τέτοιο τρόπο ώστε, όπως και οι ενσωματωμένες συναρτήσεις στη Γλώσσα Wolfram, να μπορείτε να αναφέρετε οποιαδήποτε δεδομένη συνάρτηση απλώς προσδιορίζοντας το όνομά της. Αλλά αυτό αναπόφευκτα σημαίνει ότι τα ονόματα συναρτήσεων πρέπει να είναι συνολικά μοναδικά σε όλο το αποθετήριο, έτσι ώστε, για παράδειγμα, να μπορεί να υπάρχει μόνο ένα Λειτουργία Πόρων["MyFavoriteFunction"].

Αυτό μπορεί να φαίνεται μεγάλο πρόβλημα στην αρχή, αλλά αξίζει να συνειδητοποιήσετε ότι είναι ουσιαστικά το ίδιο πρόβλημα με πράγματα όπως οι τομείς του Διαδικτύου ή οι χειρισμοί μέσων κοινωνικής δικτύωσης. Και το γεγονός είναι ότι το σύστημα πρέπει απλώς να έχει έναν καταχωρητή - και αυτός είναι ένας από τους ρόλους που θα εκτελέσει η εταιρεία μας για τη γνωσιακή βάση λειτουργιών Wolfram. (Για ιδιωτικές εκδόσεις ενός αποθετηρίου, οι καταχωρητές τους μπορεί να είναι διαχειριστές.) Φυσικά, ένας τομέας Διαδικτύου μπορεί να καταχωρηθεί χωρίς να υπάρχει τίποτα σε αυτόν, αλλά σε ένα αποθετήριο συνάρτησης, ένα όνομα συνάρτησης μπορεί να καταχωρηθεί μόνο εάν υπάρχει πραγματικός ορισμός του η λειτουργία.

Μέρος του ρόλου μας στη διαχείριση της γνωσιακής βάσης συνάρτησης Wolfram είναι να διασφαλίσουμε ότι το όνομα που επιλέγεται για μια συνάρτηση είναι λογικό, δεδομένου του ορισμού της συνάρτησης και ότι ακολουθεί τις συμβάσεις ονομασίας της γλώσσας Wolfram. Έχουμε πάνω από 30 χρόνια εμπειρίας στην ονομασία ενσωματωμένων συναρτήσεων στη Γλώσσα Wolfram και η ομάδα επιμελητών μας θα μεταφέρει αυτήν την εμπειρία και στο αποθετήριο λειτουργιών. Φυσικά, υπάρχουν πάντα εξαιρέσεις. Για παράδειγμα, μπορεί να φαίνεται προτιμότερο να έχετε ένα σύντομο όνομα για κάποια συνάρτηση, αλλά είναι καλύτερο να "αμυνθείτε" με μεγαλύτερο, πιο συγκεκριμένο όνομα, επειδή είναι λιγότερο πιθανό να συναντήσετε κάποιον που θέλει να δημιουργήσει ένα παρόμοιο όνομα συνάρτησης στο μέλλον .

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

Καθώς η βάση γνώσεων των συναρτήσεων Wolfram μεγαλώνει, ένα από τα προβλήματα που πιθανότατα θα προκύψουν είναι η ανιχνευσιμότητα των συναρτήσεων, για τις οποίες το σύστημα παρέχει λειτουργία αναζήτησης (και τα αρχεία ορισμών μπορεί να περιλαμβάνουν λέξεις-κλειδιά κ.λπ.). Για τις ενσωματωμένες συναρτήσεις στη Γλώσσα Wolfram, υπάρχουν όλα τα είδη παραπομπών στην τεκμηρίωση που βοηθούν στη «διαφήμιση» των λειτουργιών. Οι συναρτήσεις σε ένα αποθετήριο συναρτήσεων μπορούν να αναφέρονται σε ενσωματωμένες συναρτήσεις. Τι γίνεται όμως με το αντίστροφο; Για να γίνει αυτό, θα πειραματιστούμε με διαφορετικά σχέδια για να εκθέσουμε συναρτήσεις αποθετηρίου σε σελίδες τεκμηρίωσης για ενσωματωμένες λειτουργίες.

Για ενσωματωμένες λειτουργίες στη Γλώσσα Wolfram υπάρχει ένα λεγόμενο επίπεδο ανίχνευσης που παρέχεται από δίκτυο "σελίδων βοήθειας", τα οποία παρέχουν οργανωμένες λίστες με χαρακτηριστικά που σχετίζονται με συγκεκριμένες περιοχές. Είναι πάντα δύσκολο να εξισορροπήσετε σωστά τις σελίδες man, και καθώς η γλώσσα Wolfram μεγαλώνει, οι σελίδες man συχνά χρειάζεται να αναδιοργανωθούν πλήρως. Είναι πολύ εύκολο να τοποθετήσετε συναρτήσεις από ένα αποθετήριο σε μεγάλες κατηγορίες, ακόμη και να αναλύσετε αυτές τις κατηγορίες με συνέπεια, αλλά είναι πολύ πιο πολύτιμο να έχετε σωστά οργανωμένες σελίδες αναφοράς γλώσσας. Δεν είναι ακόμη σαφές πώς να τα δημιουργήσετε καλύτερα για ολόκληρη τη γνωσιακή βάση λειτουργιών. Για παράδειγμα, CreateResourceObjectGallery στο αποθετήριο χαρακτηριστικών, οποιοσδήποτε μπορεί να δημοσιεύσει μια ιστοσελίδα που περιέχει τις "επιλογές" του από το αποθετήριο:

Wolfram Function Repository: Πλατφόρμα ανοιχτής πρόσβασης για επεκτάσεις γλώσσας Wolfram

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

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

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

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

Υπάρχει ένα απίστευτο πνεύμα ταλέντου(;) στην κοινότητα χρηστών Wolfram Language. (Φυσικά, αυτή η κοινότητα περιλαμβάνει πολλούς κορυφαίους εμπειρογνώμονες Ε&Α σε διάφορους τομείς.) Ελπίζω ότι το Wolfram Feature Repository θα προσφέρει μια αποτελεσματική πλατφόρμα για το ξεκλείδωμα και τη διάδοση αυτού του πνεύματος ταλέντου. Μόνο μαζί μπορούμε να δημιουργήσουμε κάτι που θα επεκτείνει σημαντικά την περιοχή στην οποία μπορεί να εφαρμοστεί το υπολογιστικό παράδειγμα της γλώσσας Wolfram.

Σε περισσότερα από 30 χρόνια, έχουμε κάνει πολύ δρόμο με τη γλώσσα Wolfram. Τώρα μαζί, ας πάμε ακόμα παραπέρα. Ενθαρρύνω θερμά όλους τους αξιοσέβαστους χρήστες της γλώσσας Wolfram σε όλο τον κόσμο να χρησιμοποιήσουν το λειτουργικό αποθετήριο ως πλατφόρμα για αυτό, καθώς και το νέο έργο λογισμικού, όπως το Free Wolfram Engine for Developers.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο