Γεια σου, Χαμπρ! Σας παρουσιάζω μια μετάφραση της ανάρτησης του Stephen Wolfram
Προϋποθέσεις για τη συνέπεια της γλώσσας Wolfram
Σήμερα βρισκόμαστε στο κατώφλι των μεγάλων επιτευγμάτων μαζί με τη γλώσσα προγραμματισμού
Το Wolfram Function Repository είναι κάτι που έγινε δυνατό από τη μοναδική φύση της γλώσσας Wolfram όχι μόνο ως γλώσσα προγραμματισμού, αλλά και ως γλώσσα
Για παράδειγμα, το αποθετήριο συναρτήσεων Wolfram περιέχει ήδη
Ομοίως περισσότερο από
Για να μεταβείτε στη σελίδα, αντιγράψτε το παραπάνω αντικείμενο (συνάρτηση BLOB), επικολλήστε το στη γραμμή εισαγωγής και, στη συνέχεια, εκτελέστε τη συνάρτηση - είναι ήδη ενσωματωμένη στη γλώσσα Wolfram και υποστηρίζεται από προεπιλογή ξεκινώντας με
Εδώ πρέπει να σημειωθεί ότι κατά την επεξεργασία
Ελπίζω ότι με την υποστήριξη
Οι συναρτήσεις από το αποθετήριο ενδέχεται να περιέχουν μικρά ή μεγάλα κομμάτια κώδικα γραμμένα στη γλώσσα Wolfram. Για παράδειγμα, αυτές θα μπορούσαν να είναι κλήσεις
Το κέλυφος και η δομή προγραμματισμού του Wolfram Feature Repository έχουν σχεδιαστεί έτσι ώστε όλοι να μπορούν να συνεισφέρουν στην κοινή αιτία με τον πιο απλό και βολικό τρόπο γι 'αυτούς - στην πραγματικότητα, απλώς
Υπάρχουν πολλές ανταλλαγές και λεπτομέρειες σε αυτήν την προσέγγιση, αλλά ο στόχος μας είναι να βελτιστοποιήσουμε το χώρο αποθήκευσης δυνατοτήτων Wolfram τόσο για την εμπειρία χρήστη όσο και για να διασφαλίσουμε ότι οι νέες δυνατότητες χρήστη συμβάλλουν ουσιαστικά στην ανάπτυξη της γλώσσας. Καθώς μεγαλώνουμε, δεν έχω καμία αμφιβολία ότι θα πρέπει να εφεύρουμε νέες μεθόδους για την επεξεργασία και την επικύρωση λειτουργιών που είναι ενσωματωμένες στο αποθετήριο, κυρίως για την οργάνωση μεγάλου αριθμού συναρτήσεων και την εύρεση αυτών που χρειάζονται οι χρήστες. Ωστόσο, είναι ενθαρρυντικό ότι ο δρόμος που επιλέξαμε είναι μια καλή αρχή. Προσωπικά
Αύξηση της αποτελεσματικότητας με ταυτόχρονη μείωση του κόστους
Ακόμη και πριν από το Διαδίκτυο, υπήρχαν τρόποι για κοινή χρήση του κώδικα Wolfram Language (το πρώτο μας μεγάλο κεντρικό έργο ήταν
Για περισσότερα από 30 χρόνια, η εταιρεία μας εργάζεται επιμελώς για να διατηρήσει την ακεραιότητα της δομής της γλώσσας Wolfram, και αυτό είναι κρίσιμο για να διασφαλίσουμε ότι η γλώσσα Wolfram δεν θα γίνει απλώς μια γλώσσα προγραμματισμού, αλλά και μια
Στη δομή υλοποίησης κάθε συνάρτησης συμβαίνουν διάφορες υπολογιστικές διεργασίες. Εδώ πρέπει να σημειωθεί ότι είναι απαραίτητο η λειτουργία να έχει καθαρή και ομοιόμορφη εμφάνιση και οπτική αναγνωσιμότητα για τον χρήστη. Σε αυτό το πλαίσιο, οι ενσωματωμένες λειτουργίες της Γλώσσας Wolfram παρουσιάζονται με περισσότερα από 6000 διαδοχικά παραδείγματα για τον σωστό προγραμματισμό συναρτήσεων (αυτά είναι
Η δημιουργία ενός αποθετηρίου που πραγματικά λειτουργεί καλά είναι μια ενδιαφέρουσα εργασία μετα-προγραμματισμού. Για παράδειγμα, η υπέρβαση των περιορισμών στο πρόγραμμα δεν θα επιτρέψει την απόκτηση της απαιτούμενης ενοποίησης και καθολικότητας του αλγορίθμου. Ακριβώς όπως με έναν ανεπαρκή αριθμό λειτουργικών περιορισμών, δεν θα μπορείτε να εφαρμόσετε μια αρκετά σωστή ακολουθία εκτέλεσης αλγορίθμου. Αρκετά προηγούμενα παραδείγματα εφαρμογής ενός συμβιβασμού αυτών των προσεγγίσεων, που εφαρμόστηκαν από την εταιρεία μας, λειτούργησαν αρκετά σταθερά - αυτά είναι:
Όλα τα παραπάνω παραδείγματα έχουν ένα θεμελιώδες χαρακτηριστικό - τα αντικείμενα και οι λειτουργίες που συλλέγονται στο έργο έχουν πολύ υψηλό βαθμό δόμησης και κατανομής των διαδικασιών. Φυσικά, η λεπτομέρεια της δομής του τι είναι ένα demo ή ένα νευρωνικό δίκτυο ή κάτι άλλο μπορεί να ποικίλλει πολύ, αλλά η θεμελιώδης δομή για κάθε τρέχον αποθετήριο παραμένει πάντα η ίδια. Ποια είναι λοιπόν η γνώμη σας, αγαπητέ χρήστη, για τη δημιουργία ενός τέτοιου αποθετηρίου που προσθέτει επεκτάσεις στη γλώσσα Wolfram; Η γλώσσα Wolfram έχει σχεδιαστεί για να είναι εξαιρετικά ευέλικτη, ώστε να μπορεί να επεκταθεί και να τροποποιηθεί με οποιονδήποτε τρόπο. Αυτή η περίσταση είναι εξαιρετικά σημαντική για τη δυνατότητα γρήγορης δημιουργίας διαφόρων έργων λογισμικού μεγάλης κλίμακας στη γλώσσα Wolfram. Θα πρέπει να σημειωθεί εδώ ότι όσο αυξάνεται η ευελιξία της γλώσσας, το κόστος των έργων που υλοποιούνται σε μια τέτοια γλώσσα αναπόφευκτα θα αυξάνεται. Αυτό οφείλεται στο γεγονός ότι όσο περισσότερο ο χρήστης χρησιμοποιεί μια τέτοια γλώσσα, τόσο πιο αποκλειστική λειτουργικότητα λαμβάνει, αλλά δεν πρέπει να ξεχνάμε ότι αυτή η προσέγγιση μπορεί να έχει και αρνητικές πλευρές όσον αφορά την αδυναμία εξασφάλισης συνεπούς συνέπειας των λειτουργικών μονάδων του προγράμματος.
Υπάρχει ένα κοινό πρόβλημα με τις βιβλιοθήκες στις παραδοσιακές γλώσσες προγραμματισμού - εάν χρησιμοποιείτε μια βιβλιοθήκη, για παράδειγμα, ο κώδικας θα λειτουργήσει σωστά, αλλά εάν προσπαθήσετε να χρησιμοποιήσετε πολλές βιβλιοθήκες, δεν υπάρχει καμία εγγύηση ότι θα αλληλεπιδράσουν σωστά μεταξύ τους . Επίσης, στις παραδοσιακές γλώσσες προγραμματισμού - σε αντίθεση με μια πλήρη γλώσσα υπολογιστών - δεν υπάρχει τρόπος να εγγυηθεί την παρουσία συνεπών ενσωματωμένων αναπαραστάσεων για οποιεσδήποτε συναρτήσεις ή τύπους δεδομένων εκτός από τις βασικές δομές τους. Αλλά, στην πραγματικότητα, το πρόβλημα είναι ακόμη μεγαλύτερο από ό,τι φαίνεται με την πρώτη ματιά: εάν κάποιος χτίζει μια μεγάλης κλίμακας κάθετο λειτουργικότητας, τότε χωρίς το τεράστιο κόστος του κεντρικού προγραμματισμού έργων που τοποθετούμε στη γλώσσα Wolfram, είναι αδύνατο να επιτύχει συνέπεια. Επομένως, είναι σημαντικό όλες οι μονάδες λογισμικού να συνεργάζονται πάντα σωστά.
Έτσι, η ιδέα πίσω από το αποθετήριο χαρακτηριστικών Wolfram είναι να αποφευχθεί το πρόβλημα που περιγράφηκε παραπάνω, προσθέτοντας απλώς επεκτάσεις στη γλώσσα σε σχετικά μικρά κομμάτια κώδικα μέσω μεμονωμένων χαρακτηριστικών που είναι πιο εύκολο να αναπτυχθούν ως συνεκτικές μονάδες. Τούτου λεχθέντος, υπάρχουν δυνατότητες προγραμματισμού που δεν μπορούν να γίνουν βολικές χρησιμοποιώντας μεμονωμένες λειτουργίες (και η εταιρεία μας σχεδιάζει να κυκλοφορήσει έναν βελτιστοποιημένο αλγόριθμο προγραμματισμού στο εγγύς μέλλον για να βοηθήσει στην εφαρμογή πακέτων λογισμικού μεγάλης κλίμακας). Ωστόσο, με βάση τις λειτουργίες που έχουν ήδη ενσωματωθεί στη Γλώσσα Wolfram, υπάρχουν πολλές δυνατότητες προγραμματισμού που υλοποιούνται με βάση μεμονωμένες συναρτήσεις. Η ιδέα εδώ είναι ότι με σχετικά μικρή προσπάθεια προγραμματισμού είναι δυνατό να δημιουργηθούν πολλές νέες και πολύ χρήσιμες λειτουργίες που θα παρέχουν επαρκή συνοχή στο σχεδιασμό, θα είναι καλά συντονισμένες μεταξύ τους και επίσης, επιπλέον, θα μπορούν να χρησιμοποιηθούν εύκολα και ευρέως στη γλώσσα στο μέλλον.
Αυτή η προσέγγιση είναι, φυσικά, ένας συμβιβασμός. Εάν υλοποιούνταν ένα μεγαλύτερο πακέτο, θα μπορούσε να φανταστεί κανείς έναν εντελώς νέο κόσμο λειτουργικότητας που θα ήταν εξαιρετικά ισχυρός και χρήσιμος. Εάν υπάρχει ανάγκη να αποκτήσετε νέα λειτουργικότητα που θα ταιριάζει με όλα τα άλλα, αλλά δεν είστε διατεθειμένοι να ξοδέψετε πολλή προσπάθεια για την ανάπτυξη του έργου, αυτό, δυστυχώς, μπορεί να οδηγήσει σε μείωση του πεδίου εφαρμογής του έργου σας. Η ιδέα πίσω από το αποθετήριο χαρακτηριστικών Wolfram είναι να παρέχει λειτουργικότητα σε ένα καθοριστικό μέρος ενός έργου· αυτή η προσέγγιση θα προσθέσει ισχυρή λειτουργικότητα ενώ θα διευκολύνει τη διατήρηση καλής συνέπειας σε ένα έργο προγραμματισμού.
Βοηθήστε στην προσθήκη προσαρμοσμένων συναρτήσεων στο χώρο αποθήκευσης λειτουργιών
Η ομάδα μας έχει εργαστεί σκληρά για να διευκολύνει τους χρήστες να συνεισφέρουν στις δυνατότητες του αποθετηρίου Wolfram. Στην επιφάνεια εργασίας (ήδη μέσα
Υπάρχουν δύο βασικά βήματα που θα χρειαστεί να εκτελέσετε: πρώτον, γράψτε πραγματικά τον κώδικα για τη λειτουργία σας και, δεύτερον, σημειώστε την τεκμηρίωση που δείχνει πώς πρέπει να λειτουργεί η λειτουργία σας.
Κάντε κλικ στο κουμπί "Άνοιγμα δείγματος" στο επάνω μέρος για να δείτε ένα παράδειγμα του τι πρέπει να κάνετε:
Ουσιαστικά, προσπαθείτε να δημιουργήσετε κάτι παρόμοιο με μια ενσωματωμένη συνάρτηση στη Γλώσσα Wolfram. Μόνο που μπορεί να κάνει κάτι πολύ πιο συγκεκριμένο από μια ενσωματωμένη λειτουργία. Ταυτόχρονα, οι προσδοκίες σχετικά με την πληρότητα και την αξιοπιστία του θα είναι πολύ χαμηλότερες.
Πρέπει να δώσετε στη συνάρτησή σας ένα όνομα που να ακολουθεί τις οδηγίες ονομασίας συναρτήσεων της Wolfram Language. Επιπλέον, θα χρειαστεί να αναπτύξετε τεκμηρίωση για τη λειτουργία σας, παρόμοια με τις ενσωματωμένες λειτουργίες της γλώσσας. Θα μιλήσω για αυτό με περισσότερες λεπτομέρειες αργότερα. Προς το παρόν, απλώς παρατηρήστε ότι στη σειρά των κουμπιών στην κορυφή του αρχείου σημειωματάριου ορισμού υπάρχει ένα κουμπί
Όταν βεβαιωθείτε ότι όλα έχουν συμπληρωθεί σωστά και είστε έτοιμοι, κάντε κλικ στο κουμπί «Έλεγχος». Είναι απολύτως φυσιολογικό να μην έχετε καταλάβει ακόμα όλες τις λεπτομέρειες. Έτσι, η λειτουργία "Έλεγχος" θα εκτελεστεί αυτόματα και θα κάνει πολλούς ελέγχους στυλ και συνέπειας. Συχνά, θα σας ζητήσει αμέσως να επιβεβαιώσετε και να αποδεχτείτε τις διορθώσεις (Για παράδειγμα: "Αυτή η γραμμή πρέπει να τελειώνει με άνω και κάτω τελεία" και θα σας ζητήσει να εισαγάγετε άνω και κάτω τελεία). Μερικές φορές θα σας ζητήσει να προσθέσετε ή να αλλάξετε κάτι μόνοι σας. Θα προσθέτουμε συνεχώς νέες δυνατότητες στην αυτόματη λειτουργικότητα του κουμπιού Έλεγχος, αλλά βασικά σκοπός του είναι να διασφαλίσει ότι οτιδήποτε υποβάλλετε στο αποθετήριο λειτουργιών ακολουθεί ήδη όσο το δυνατόν περισσότερες οδηγίες στυλ
Έτσι, αφού εκτελέσετε το "Έλεγχος", μπορείτε να χρησιμοποιήσετε το "Προεπισκόπηση". Η "Προεπισκόπηση" δημιουργεί μια προεπισκόπηση της σελίδας τεκμηρίωσης που ορίσατε για τη λειτουργία σας. Μπορείτε επίσης να δημιουργήσετε μια προεπισκόπηση για ένα αρχείο που δημιουργήθηκε στον υπολογιστή σας ή για ένα αρχείο που βρίσκεται σε αποθήκευση cloud. Εάν, για κάποιο λόγο, δεν είστε ικανοποιημένοι με αυτό που βλέπετε στην προεπισκόπηση, απλώς επιστρέψτε και κάντε τις απαραίτητες διορθώσεις και, στη συνέχεια, κάντε ξανά κλικ στο κουμπί Προεπισκόπηση.
Τώρα είστε έτοιμοι να ωθήσετε τη λειτουργία σας στο αποθετήριο. Το κουμπί Ανάπτυξη σάς δίνει τέσσερις επιλογές:
Το σημαντικό σε αυτό το βήμα είναι ότι μπορείτε να υποβάλετε τη συνάρτησή σας στο αποθετήριο συναρτήσεων Wolfram ώστε να είναι διαθέσιμη σε οποιονδήποτε. Ταυτόχρονα, μπορείτε επίσης να τοποθετήσετε τη λειτουργία σας για περιορισμένο αριθμό χρηστών. Για παράδειγμα, μπορείτε να δημιουργήσετε μια συνάρτηση που φιλοξενείται τοπικά στον υπολογιστή σας, ώστε να είναι διαθέσιμη όταν χρησιμοποιείτε τον συγκεκριμένο υπολογιστή. Ή μπορείτε να το δημοσιεύσετε στο δικό σας
Ας υποθέσουμε λοιπόν ότι θέλετε πραγματικά να υποβάλετε τη συνάρτησή σας στη γνωσιακή βάση συνάρτησης Wolfram. Για να το κάνετε αυτό, κάνετε κλικ στο κουμπί "Υποβολή" στο αποθετήριο. Τι συμβαίνει λοιπόν αυτή τη στιγμή; Η αίτησή σας βρίσκεται αμέσως στην ουρά για έλεγχο και έγκριση από την ειδική ομάδα επιμελητών μας.
Καθώς η αίτησή σας προχωρά στη διαδικασία έγκρισης (η οποία συνήθως διαρκεί αρκετές ημέρες), θα λαμβάνετε επικοινωνίες σχετικά με την κατάστασή της και πιθανώς προτάσεις για μελλοντική χρήση. Αλλά μόλις εγκριθεί η λειτουργία σας, θα δημοσιευτεί αμέσως στο Αποθετήριο λειτουργιών Wolfram και θα είναι διαθέσιμη για χρήση από οποιονδήποτε. (Και αυτό θα εμφανιστεί στο
Τι πρέπει να υπάρχει στην αποθήκευση;
Θα πρέπει να σημειωθεί ότι η εταιρεία μας έχει πολύ υψηλά πρότυπα πληρότητας, αξιοπιστίας και συνολικής ποιότητας και από τις 6000+ λειτουργίες που έχουμε ήδη ενσωματώσει στη γλώσσα Wolfram τα τελευταία 30+ χρόνια, όλες πληρούν τις παραπάνω απαιτήσεις. Ο στόχος του αποθετηρίου συναρτήσεων Wolfram είναι να χρησιμοποιήσει όλη τη δομή και τη λειτουργικότητα που υπάρχει ήδη στη Γλώσσα Wolfram προκειμένου να προσθέσει όσο το δυνατόν περισσότερες πιο ελαφριές συναρτήσεις (δηλαδή συναρτήσεις υψηλότερης απόδοσης).
Φυσικά, οι συναρτήσεις στο αποθετήριο συναρτήσεων Wolfram πρέπει να συμμορφώνονται με τις αρχές σχεδιασμού της γλώσσας Wolfram - έτσι ώστε να μπορούν να αλληλεπιδρούν πλήρως με άλλες λειτουργίες και τις προσδοκίες των χρηστών για το πώς θα πρέπει να λειτουργεί σωστά η λειτουργία. Ωστόσο, οι λειτουργίες δεν χρειάζεται να έχουν την ίδια πληρότητα ή αξιοπιστία.
Στις ενσωματωμένες λειτουργίες της γλώσσας Wolfram, εργαζόμαστε σκληρά για να κάνουμε τις λειτουργίες προγραμματισμού όσο το δυνατόν πιο γενικές. Τούτου λεχθέντος, όταν στο αποθετήριο συναρτήσεων Wolfram δεν υπάρχει τίποτα κακό να υπάρχει μια συνάρτηση σε αυτό που απλώς χειρίζεται κάποια πολύ συγκεκριμένη αλλά χρήσιμη περίπτωση. Για παράδειγμα, η συνάρτηση
Ένα άλλο σημείο που σχετίζεται με τις ενσωματωμένες λειτουργίες είναι ότι η εταιρεία μας καταβάλλει κάθε δυνατή προσπάθεια για να χειριστεί όλες τις άτυπες περιπτώσεις, να χειριστεί σωστά λανθασμένες πληροφορίες κ.λπ. Σε ένα αποθετήριο συναρτήσεων, είναι απολύτως φυσιολογικό να υπάρχει μια ειδική συνάρτηση που χειρίζεται τις κύριες περιπτώσεις επίλυσης ενός προβλήματος και αγνοεί όλες τις άλλες.
Το προφανές σημείο είναι ότι είναι καλύτερο να υπάρχουν συναρτήσεις που κάνουν περισσότερα και το κάνουν καλύτερα, αλλά η βελτιστοποίηση για ένα αποθετήριο συναρτήσεων - σε αντίθεση με τις ενσωματωμένες λειτουργίες της γλώσσας Wolfram - θα πρέπει να έχει περισσότερες συναρτήσεις συνδυασμένες με περισσότερες λειτουργίες αντί να εμβαθύνει σε τις διαδικασίες υλοποίησης κάθε συγκεκριμένης λειτουργίας.
Τώρα ας δούμε ένα παράδειγμα δοκιμής συναρτήσεων σε ένα αποθετήριο. Οι προσδοκίες συνέπειας για τέτοιες λειτουργίες είναι φυσικά πολύ χαμηλότερες από ό,τι για τις ενσωματωμένες γλωσσικές λειτουργίες. Αυτό ισχύει ιδιαίτερα σε περιπτώσεις όπου οι συναρτήσεις εξαρτώνται από εξωτερικούς πόρους όπως τα API, είναι σημαντικό να διεξάγονται συνεχώς συνεπείς δοκιμές, κάτι που συμβαίνει αυτόματα στους αλγόριθμους επαλήθευσης. Στο αρχείο nb, μπορείτε να καθορίσετε ρητά ορισμούς (στην ενότητα Πρόσθετες πληροφορίες) και να καθορίσετε όσες δοκιμές ορίζονται είτε από συμβολοσειρές εισόδου και εξόδου είτε από αντικείμενα πλήρους χαρακτήρων του τύπου
Ως αποτέλεσμα, το αποθετήριο συναρτήσεων θα έχει μια σειρά από πολυπλοκότητες υλοποίησης. Μερικά θα είναι μόνο μια γραμμή κώδικα, άλλα μπορεί να περιλαμβάνουν χιλιάδες ή δεκάδες χιλιάδες γραμμές, πιθανότατα χρησιμοποιώντας πολλές βοηθητικές συναρτήσεις. Πότε αξίζει να προσθέσετε μια συνάρτηση που απαιτεί πολύ λίγο κώδικα για να οριστεί; Βασικά, αν για μια συνάρτηση υπάρχει
Ο κύριος σκοπός ενός αποθετηρίου συναρτήσεων (όπως υποδηλώνει το όνομά του) είναι να εισάγει νέα χαρακτηριστικά στη γλώσσα. Εάν θέλετε να προσθέσετε νέα δεδομένα ή
Στην πραγματικότητα υπάρχουν δύο τρόποι. Μπορεί να θέλετε να εισαγάγετε έναν νέο τύπο αντικειμένου που θα χρησιμοποιείται σε νέες συναρτήσεις στο χώρο αποθήκευσης συναρτήσεων. Και σε αυτήν την περίπτωση, μπορείτε πάντα απλώς να γράψετε τη συμβολική του αναπαράσταση και να τη χρησιμοποιήσετε κατά την εισαγωγή ή την έξοδο συναρτήσεων σε ένα αποθετήριο συναρτήσεων.
Τι γίνεται όμως αν θέλετε να αναπαραστήσετε ένα αντικείμενο και στη συνέχεια να ορίσετε, μέσω των υπαρχουσών συναρτήσεων στη Γλώσσα Wolfram, ότι θέλετε να εργαστείτε με αυτό; Η Γλώσσα Wolfram είχε πάντα έναν ελαφρύ μηχανισμό για αυτό, που ονομάζεται
Λοιπόν, τι μπορεί να υπάρχει στον κώδικα συνάρτησης σε ένα αποθετήριο συναρτήσεων;
Πρέπει όλος ο κώδικας για το αποθετήριο δυνατοτήτων Wolfram να είναι γραμμένος στο Wolfram; Σίγουρα, ο κώδικας μέσα στο εξωτερικό API δεν πρέπει να είναι γραμμένος στη γλώσσα Wolfram, η οποία δεν κάνει καν τον κώδικα γλώσσας. Στην πραγματικότητα, εάν βρείτε μια συνάρτηση σχεδόν σε οποιαδήποτε εξωτερική γλώσσα ή βιβλιοθήκη, μπορείτε να δημιουργήσετε ένα περιτύλιγμα που σας επιτρέπει να τη χρησιμοποιήσετε στο χώρο αποθήκευσης συναρτήσεων Wolfram. (Συνήθως θα πρέπει να χρησιμοποιήσετε τις ενσωματωμένες λειτουργίες για αυτό
Τι νόημα έχει λοιπόν να το κάνεις αυτό; Ουσιαστικά, αυτό σας επιτρέπει να χρησιμοποιήσετε ολόκληρο το ενσωματωμένο σύστημα Wolfram Language και ολόκληρο το ενοποιημένο σύνολο δυνατοτήτων λογισμικού του. Εάν αποκτήσετε τη βασική υλοποίηση από μια εξωτερική βιβλιοθήκη ή γλώσσα, μπορείτε στη συνέχεια να χρησιμοποιήσετε την πλούσια συμβολική δομή της Γλώσσας Wolfram για να δημιουργήσετε μια βολική λειτουργία ανώτατου επιπέδου που επιτρέπει στους χρήστες να χρησιμοποιούν εύκολα οποιαδήποτε λειτουργικότητα έχει ήδη υλοποιηθεί. Τουλάχιστον, αυτό θα πρέπει να είναι εφικτό σε έναν ιδανικό κόσμο όπου υπάρχουν όλα τα δομικά στοιχεία της φόρτωσης βιβλιοθηκών κ.λπ., οπότε θα τα χειρίζεται αυτόματα η Γλώσσα Wolfram. (Θα πρέπει να σημειωθεί ότι στην πράξη μπορεί να υπάρχουν προβλήματα με
Παρεμπιπτόντως, όταν κοιτάζετε για πρώτη φορά τυπικές εξωτερικές βιβλιοθήκες, συχνά φαίνονται πολύ περίπλοκες για να καλύπτονται με λίγες μόνο λειτουργίες, αλλά σε πολλές περιπτώσεις, μεγάλο μέρος της πολυπλοκότητας προέρχεται από τη δημιουργία της υποδομής που απαιτείται για τη βιβλιοθήκη και όλες τις λειτουργίες υποστηρίξτε το. Ωστόσο, όταν χρησιμοποιείτε τη Γλώσσα Wolfram, η υποδομή είναι συνήθως ήδη ενσωματωμένη στα πακέτα και επομένως δεν χρειάζεται να εκτεθούν όλες αυτές οι λειτουργίες υποστήριξης λεπτομερώς, αλλά να δημιουργηθούν μόνο λειτουργίες για τις "ανώτατες" λειτουργίες που αφορούν συγκεκριμένες εφαρμογές στη βιβλιοθήκη. .
«Οικοσύστημα» της γνωσιακής βάσης
Εάν έχετε γράψει συναρτήσεις που χρησιμοποιείτε τακτικά, υποβάλετέ τις στο Αποθετήριο συναρτήσεων Wolfram! Εάν δεν προκύψει κάτι περισσότερο από αυτό (ανάπτυξη γλώσσας), τότε ακόμη και τότε θα είναι πολύ πιο βολικό για εσάς να χρησιμοποιήσετε τις λειτουργίες για προσωπική χρήση. Ωστόσο, είναι λογικό να υποθέσουμε ότι εάν χρησιμοποιείτε τις λειτουργίες τακτικά, ίσως και άλλοι χρήστες θα τις βρουν χρήσιμες.
Φυσικά, μπορεί να βρεθείτε σε μια κατάσταση όπου δεν μπορείτε - ή δεν θέλετε - να μοιραστείτε τις λειτουργίες σας ή σε περίπτωση που αποκτήσετε πρόσβαση σε ιδιωτικούς πόρους πληροφοριών. Ακόμη και σε τέτοιες περιπτώσεις, μπορείτε απλά να αναπτύξετε τις λειτουργίες στον δικό σας λογαριασμό cloud,
Οι λειτουργίες που υποβάλλετε στο αποθετήριο συναρτήσεων Wolfram δεν χρειάζεται να είναι τέλειες. απλά πρέπει να είναι χρήσιμοι. Αυτό μοιάζει λίγο με την ενότητα "Σφάλματα" στην κλασική τεκμηρίωση του Unix - στην ενότητα "Ορισμοί" υπάρχει μια ενότητα "Σημειώσεις συγγραφέα" όπου μπορείτε να περιγράψετε περιορισμούς, προβλήματα κ.λπ. που γνωρίζετε ήδη για τη λειτουργία σας. Επιπλέον, όταν υποβάλλετε τη λειτουργία σας στο αποθετήριο, μπορείτε να προσθέσετε σημειώσεις υποβολής που θα διαβαστούν από μια ειδική ομάδα επιμελητών.
Μόλις δημοσιευτεί ένα χαρακτηριστικό, η σελίδα του έχει πάντα δύο συνδέσμους στο κάτω μέρος: "
Μερικές φορές θέλετε απλώς να χρησιμοποιήσετε συναρτήσεις από το αποθετήριο συναρτήσεων Wolfram, όπως ενσωματωμένες συναρτήσεις, χωρίς να κοιτάξετε τον κώδικά τους. Ωστόσο, αν θέλετε να ρίξετε μια ματιά στο εσωτερικό, υπάρχει πάντα ένα κουμπί Σημειωματάριο στην κορυφή. Κάντε κλικ σε αυτό και θα λάβετε το δικό σας αντίγραφο του αρχικού σημειωματάριου ορισμού που υποβλήθηκε στο αποθετήριο λειτουργιών. Μερικές φορές μπορείτε απλώς να το χρησιμοποιήσετε ως παράδειγμα για τις ανάγκες σας. Ταυτόχρονα, μπορείτε επίσης να αναπτύξετε τη δική σας τροποποίηση αυτής της λειτουργίας. Μπορεί να θέλετε να δημοσιεύσετε αυτές τις συναρτήσεις που βρήκατε από το αποθετήριο στον υπολογιστή σας ή στον λογαριασμό αποθήκευσης στο σύννεφο αφιδών, ίσως θέλετε να τις υποβάλετε στη βάση γνώσεων λειτουργίας, ίσως ως βελτιωμένη, διευρυμένη έκδοση της αρχικής λειτουργίας.
Στο μέλλον, σκοπεύουμε να υποστηρίξουμε το forking τύπου Git για αποθετήρια χαρακτηριστικών, αλλά προς το παρόν προσπαθούμε να το διατηρήσουμε απλό και έχουμε πάντα μόνο μία αποδεκτή έκδοση κάθε δυνατότητας ενσωματωμένη στη γλώσσα. Τις περισσότερες φορές (εκτός εάν οι προγραμματιστές εγκαταλείψουν τη διατήρηση των δυνατοτήτων που ανέπτυξαν και ανταποκριθούν στις υποβολές των χρηστών), ο αρχικός συγγραφέας της δυνατότητας αναλαμβάνει τον έλεγχο των ενημερώσεων σε αυτό και υποβάλλει νέες εκδόσεις, οι οποίες στη συνέχεια εξετάζονται και, εάν περάσουν τη διαδικασία ελέγχου , δημοσιευμένο στη γλώσσα.
Ας εξετάσουμε το ερώτημα πώς λειτουργεί η "έκδοση" των αναπτυγμένων λειτουργιών. Αυτήν τη στιγμή, όταν χρησιμοποιείτε μια συνάρτηση από το χώρο αποθήκευσης συναρτήσεων, ο ορισμός της θα αποθηκευτεί μόνιμα στον υπολογιστή σας (ή στον λογαριασμό σας στο cloud, εάν χρησιμοποιείτε το cloud). Εάν είναι διαθέσιμη μια νέα έκδοση μιας λειτουργίας, την επόμενη φορά που θα τη χρησιμοποιήσετε θα λάβετε ένα μήνυμα που θα σας ειδοποιεί για αυτό. Και αν θέλετε να ενημερώσετε τη λειτουργία σε μια νέα έκδοση, μπορείτε να το κάνετε χρησιμοποιώντας την εντολή
Ένα από τα όμορφα πράγματα του Wolfram Function Repository είναι ότι οποιοδήποτε πρόγραμμα Wolfram Language, οπουδήποτε μπορεί να χρησιμοποιήσει λειτουργίες από αυτό. Εάν ένα πρόγραμμα εμφανίζεται σε ένα σημειωματάριο, είναι συχνά βολικό να μορφοποιήσετε τις λειτουργίες του αποθετηρίου ως ευανάγνωστες συναρτήσεις "δυαδικού αντικειμένου λειτουργιών" (ίσως με ένα κατάλληλο σύνολο εκδόσεων).
Μπορείτε πάντα να έχετε πρόσβαση σε οποιαδήποτε λειτουργία στο χώρο αποθήκευσης λειτουργιών χρησιμοποιώντας κείμενο
Πώς λειτουργεί;
Μέσα στις λειτουργίες στο αποθετήριο Wolfram αυτό είναι δυνατό χρησιμοποιώντας ακριβώς το ίδιο
Εξετάστε
Στο εσωτερικό μπορείτε να δείτε ορισμένες πληροφορίες χρησιμοποιώντας τη λειτουργία
Πώς λειτουργεί η ρύθμιση μιας συνάρτησης πόρων; Το πιο απλό είναι μια καθαρά τοπική περίπτωση. Ακολουθεί ένα παράδειγμα που παίρνει μια συνάρτηση (σε αυτήν την περίπτωση απλώς μια καθαρή συνάρτηση) και την ορίζει ως συνάρτηση πόρου για μια δεδομένη συνεδρία προγράμματος:
Αφού κάνετε τον ορισμό, μπορείτε να χρησιμοποιήσετε τη συνάρτηση πόρων:
Σημειώστε ότι υπάρχει ένα μαύρο εικονίδιο σε αυτή τη μάζα συνάρτησης . Αυτό σημαίνει ότι η συνάρτηση BLOB αναφέρεται στη συνάρτηση πόρων στη μνήμη που έχει οριστεί για την τρέχουσα περίοδο λειτουργίας. Μια δυνατότητα πόρων που είναι μόνιμα αποθηκευμένη στον υπολογιστή σας ή στον λογαριασμό σας στο cloud έχει ένα γκρι εικονίδιο . Και υπάρχει ένα πορτοκαλί εικονίδιο για μια επίσημη λειτουργία πόρων στο Αποθετήριο λειτουργιών Wolfram .
Τι συμβαίνει λοιπόν όταν χρησιμοποιείτε το μενού Ανάπτυξη στο Σημειωματάριο ορισμού; Πρώτον, παίρνει όλους τους ορισμούς στο σημειωματάριο και από αυτούς δημιουργεί ένα συμβολικό
Η τοπική ανάπτυξη μιας συνάρτησης από ένα χώρο αποθήκευσης στον υπολογιστή σας πραγματοποιείται χρησιμοποιώντας την εντολή
Εάν κάνετε κλικ στο κουμπί Υποβολή για ένα αποθετήριο συναρτήσεων, τι συμβαίνει κάτω από αυτό
Από προεπιλογή, οι υποβολές γίνονται με το όνομα που σχετίζεται με το Wolfram ID σας. Αλλά εάν υποβάλλετε μια αίτηση για λογαριασμό μιας ομάδας ανάπτυξης ή ενός οργανισμού, μπορείτε
Αφού υποβάλετε οποιαδήποτε από τις συναρτήσεις σας στη γνωσιακή βάση συναρτήσεων, θα μπει στην ουρά για έλεγχο. Εάν λαμβάνετε σχόλια ως απάντηση, συνήθως θα έχουν τη μορφή αρχείου κειμένου με πρόσθετα "κελιά σχολίων". Μπορείτε πάντα να ελέγξετε την κατάσταση της αίτησής σας επισκεπτόμενοι
Μερικές λεπτότητες στη δουλειά
Με την πρώτη ματιά μπορεί να φαίνεται ότι μπορείτε απλώς να πάρετε ένα σημειωματάριο ορισμών και να το βάλετε αυτολεξεί σε ένα αποθετήριο συναρτήσεων, ωστόσο, στην πραγματικότητα υπάρχουν πολλές λεπτές λεπτομέρειες - και ο χειρισμός τους απαιτεί να κάνετε έναν αρκετά περίπλοκο μετα-προγραμματισμό, χειρισμό συμβολικής επεξεργασίας ως κωδικός που ορίζει τη συνάρτηση και ορίζεται το ίδιο το Σημειωματάριο. Τα περισσότερα από αυτά συμβαίνουν εσωτερικά, στα παρασκήνια, αλλά μπορεί να έχουν ορισμένες συνέπειες που αξίζει να κατανοήσετε εάν πρόκειται να συνεισφέρετε στη βάση γνώσεων για τα χαρακτηριστικά.
Πρώτη άμεση λεπτότητα: Όταν συμπληρώνετε το Σημειωματάριο ορισμού, μπορείτε απλά να ανατρέξετε στη λειτουργία σας παντού χρησιμοποιώντας ένα όνομα όπως MyFunction, το οποίο μοιάζει με κανονικό όνομα για μια συνάρτηση στη γλώσσα Wolfram, αλλά για την τεκμηρίωση του αποθετηρίου συναρτήσεων αυτό αντικαθίσταται
Η δεύτερη λεπτότητα: όταν δημιουργείτε μια συνάρτηση πόρου από το Σημειωματάριο ορισμού, όλες οι εξαρτήσεις που εμπλέκονται στον ορισμό της συνάρτησης πρέπει να καταγράφονται και να περιλαμβάνονται ρητά. Ωστόσο, για να διασφαλίσετε ότι οι ορισμοί παραμένουν αρθρωτοί, πρέπει να βάλετε τα πάντα σε ένα μοναδικό
Συνήθως δεν θα δείτε ποτέ κανένα ίχνος του κώδικα που χρησιμοποιείται για τη διαμόρφωση αυτού του χώρου ονομάτων. Αλλά αν για κάποιο λόγο καλέσετε ένα υπο-εκτελεσμένο σύμβολο μέσα στη συνάρτησή σας, τότε θα δείτε ότι αυτό το σύμβολο βρίσκεται στο εσωτερικό πλαίσιο της συνάρτησης. Ωστόσο, κατά την επεξεργασία του σημειωματάριου ορισμού, είναι τουλάχιστον το σύμβολο που αντιστοιχεί στην ίδια τη λειτουργία
Το αποθετήριο συναρτήσεων είναι για τον ορισμό νέων συναρτήσεων. Και αυτές οι λειτουργίες μπορεί να έχουν επιλογές. Συχνά αυτές οι παράμετροι (για παράδειγμα,
Οι περισσότερες συναρτήσεις κάνουν απλώς αυτό που υποτίθεται ότι πρέπει να κάνουν κάθε φορά που καλούνται, αλλά ορισμένες συναρτήσεις πρέπει να αρχικοποιηθούν για να εκτελεστούν σε μια συγκεκριμένη περίοδο λειτουργίας - και για να λυθεί αυτό το πρόβλημα, υπάρχει μια ενότητα "Αρχικοποίηση" στην ενότητα Ορισμός.
Οι συναρτήσεις από ένα αποθετήριο μπορούν να χρησιμοποιούν άλλες συναρτήσεις που βρίσκονται ήδη στο χώρο αποθήκευσης· για να ορίσετε ορισμούς για ένα αποθετήριο συναρτήσεων που περιλαμβάνει δύο (ή περισσότερες) συναρτήσεις που αναφέρονται η μία στην άλλη, πρέπει να τις αναπτύξετε στη συνεδρία του προγράμματός σας, ώστε να μπορείτε αναφορά όπως σε αυτά
Προοπτικές ανάπτυξης. Τι πρέπει να συμβεί όταν το αποθετήριο γίνει πραγματικά μεγάλο;
Σήμερα μόλις λανσάρουμε το Wolfram Feature Repository, αλλά με την πάροδο του χρόνου αναμένουμε ότι το μέγεθος και η λειτουργικότητά του μπορεί να αυξηθούν δραματικά και καθώς αναπτύσσεται θα υπάρχουν διάφορα προβλήματα που ήδη αναμένουμε ότι μπορεί να προκύψουν.
Το πρώτο πρόβλημα αφορά τα ονόματα συναρτήσεων και τη μοναδικότητά τους. Το αποθετήριο συναρτήσεων έχει σχεδιαστεί με τέτοιο τρόπο ώστε, όπως και οι ενσωματωμένες συναρτήσεις στη Γλώσσα Wolfram, να μπορείτε να αναφέρετε οποιαδήποτε δεδομένη συνάρτηση απλώς προσδιορίζοντας το όνομά της. Αλλά αυτό αναπόφευκτα σημαίνει ότι τα ονόματα συναρτήσεων πρέπει να είναι συνολικά μοναδικά σε όλο το αποθετήριο, έτσι ώστε, για παράδειγμα, να μπορεί να υπάρχει μόνο ένα
Αυτό μπορεί να φαίνεται μεγάλο πρόβλημα στην αρχή, αλλά αξίζει να συνειδητοποιήσετε ότι είναι ουσιαστικά το ίδιο πρόβλημα με πράγματα όπως οι τομείς του Διαδικτύου ή οι χειρισμοί μέσων κοινωνικής δικτύωσης. Και το γεγονός είναι ότι το σύστημα πρέπει απλώς να έχει έναν καταχωρητή - και αυτός είναι ένας από τους ρόλους που θα εκτελέσει η εταιρεία μας για τη γνωσιακή βάση λειτουργιών Wolfram. (Για ιδιωτικές εκδόσεις ενός αποθετηρίου, οι καταχωρητές τους μπορεί να είναι διαχειριστές.) Φυσικά, ένας τομέας Διαδικτύου μπορεί να καταχωρηθεί χωρίς να υπάρχει τίποτα σε αυτόν, αλλά σε ένα αποθετήριο συνάρτησης, ένα όνομα συνάρτησης μπορεί να καταχωρηθεί μόνο εάν υπάρχει πραγματικός ορισμός του η λειτουργία.
Μέρος του ρόλου μας στη διαχείριση της γνωσιακής βάσης συνάρτησης Wolfram είναι να διασφαλίσουμε ότι το όνομα που επιλέγεται για μια συνάρτηση είναι λογικό, δεδομένου του ορισμού της συνάρτησης και ότι ακολουθεί τις συμβάσεις ονομασίας της γλώσσας Wolfram. Έχουμε πάνω από 30 χρόνια εμπειρίας στην ονομασία ενσωματωμένων συναρτήσεων στη Γλώσσα 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