Ciao, Habr! Presento alla vostra attenzione una traduzione del post di Stephen Wolfram
Prerequisiti per la consistenza del linguaggio Wolfram
Oggi siamo sulla soglia di grandi conquiste insieme al linguaggio di programmazione
Il Wolfram Function Repository è qualcosa reso possibile dalla natura unica del linguaggio Wolfram non solo come linguaggio di programmazione, ma anche come linguaggio
Ad esempio, il repository delle funzioni Wolfram contiene già
Allo stesso modo più di
Per accedere alla pagina, copia l'oggetto sopra (funzione BLOB), incollalo nella riga di input e quindi esegui la funzione: è già integrata nel linguaggio Wolfram e supportata per impostazione predefinita a partire da
Va notato qui che durante l'elaborazione
Lo spero con il supporto
Le funzioni del repository possono contenere pezzi di codice piccoli o grandi scritti nel linguaggio Wolfram. Ad esempio, queste potrebbero essere chiamate
La struttura della shell e della programmazione del Wolfram Feature Repository è progettata in modo tale che tutti possano contribuire alla causa comune nel modo più semplice e conveniente per loro - in effetti, solo
Ci sono molti compromessi e dettagli in questo approccio, ma il nostro obiettivo è ottimizzare il repository di funzionalità Wolfram sia per l'esperienza dell'utente sia per garantire che le nuove funzionalità dell'utente contribuiscano in modo significativo allo sviluppo del linguaggio. Man mano che cresciamo, non ho dubbi che dovremo inventare nuovi metodi per elaborare e convalidare le funzioni integrate nel repository, non ultimo per organizzare un gran numero di funzioni e trovare quelle di cui gli utenti hanno bisogno. Tuttavia, è incoraggiante che il percorso che abbiamo scelto sia un buon inizio. Io personalmente
Aumentare l’efficienza riducendo i costi
Anche prima di Internet, esistevano modi per condividere il codice Wolfram Language (il nostro primo grande progetto centralizzato è stato
Per oltre 30 anni, la nostra azienda ha lavorato diligentemente per mantenere l'integrità della struttura del linguaggio Wolfram, e questo è fondamentale per garantire che il linguaggio Wolfram diventi non solo un linguaggio di programmazione, ma anche un
Vari processi computazionali si verificano nella struttura di implementazione di ciascuna funzione. Va notato qui che è necessario che la funzione abbia un aspetto chiaro e uniforme e una leggibilità visiva per l'utente. In questo contesto, le funzioni integrate del linguaggio Wolfram vengono presentate con più di 6000 esempi sequenziali di come programmare correttamente le funzioni (questi sono i nostri
Creare un repository che funzioni davvero bene è un compito di meta-programmazione interessante. Ad esempio, un eccesso di restrizioni nel programma non consentirà di ottenere l'unificazione e l'universalità richieste dell'algoritmo. Proprio come con un numero insufficiente di restrizioni funzionali, non sarai in grado di implementare una sequenza sufficientemente corretta di esecuzione dell'algoritmo. Diversi esempi precedenti di implementazione di un compromesso di questi approcci, implementati dalla nostra azienda, hanno funzionato in modo abbastanza stabile: questi sono:
Tutti gli esempi sopra riportati hanno una caratteristica fondamentale: gli oggetti e le funzioni raccolti nel progetto hanno un grado molto elevato di strutturazione e distribuzione dei processi. Naturalmente, i dettagli della struttura di ciò che è una demo, una rete neurale o qualcos'altro possono variare notevolmente, ma la struttura fondamentale di qualsiasi repository attuale rimane sempre la stessa. Allora qual è la tua opinione, caro utente, sulla creazione di un repository che aggiunga estensioni al linguaggio Wolfram? Il Wolfram Language è progettato per essere estremamente flessibile, quindi può essere esteso e modificato in qualsiasi modo. Questa circostanza è estremamente importante per la possibilità di creare rapidamente vari progetti software su larga scala nel linguaggio Wolfram. Va notato qui che con l'aumento della flessibilità della lingua, il costo dei progetti implementati in tale lingua aumenterà inevitabilmente. Ciò è dovuto al fatto che più l'utente utilizza tale linguaggio, più funzionalità dedicate riceve, ma non dobbiamo dimenticare che questo approccio può avere anche lati negativi in termini di incapacità di garantire la coerenza coerente dei moduli del programma.
Esiste un problema comune con le librerie nei linguaggi di programmazione tradizionali: se utilizzi una libreria, ad esempio, il codice funzionerà correttamente, ma se provi a utilizzare più librerie, non vi è alcuna garanzia che interagiscano correttamente tra loro . Inoltre, nei linguaggi di programmazione tradizionali, a differenza di un linguaggio informatico completo, non c'è modo di garantire la presenza di rappresentazioni integrate coerenti per funzioni o tipi di dati diversi dalle loro strutture di base. Ma, in realtà, il problema è ancora più grande di quanto sembri a prima vista: se si sta costruendo un verticale di funzionalità su larga scala, senza gli enormi costi della programmazione di progetto centralizzata che mettiamo nel linguaggio Wolfram, è impossibile raggiungere la coerenza. È quindi importante che tutti i moduli software funzionino sempre insieme correttamente.
Quindi l'idea alla base del repository di funzionalità Wolfram è quella di evitare il problema sopra delineato semplicemente aggiungendo estensioni al linguaggio in porzioni di codice relativamente piccole tramite funzionalità individuali che sono più facili da sviluppare come moduli coerenti. Detto questo, ci sono caratteristiche di programmazione che non possono essere rese convenienti utilizzando singole funzioni (e la nostra azienda prevede di rilasciare nel prossimo futuro un algoritmo di programmazione ottimizzato per aiutare a implementare pacchetti software su larga scala). Tuttavia, sulla base delle funzioni già integrate nel Wolfram Language, esistono molte possibilità di programmazione che vengono implementate in base alle singole funzioni. L'idea qui è che con uno sforzo di programmazione relativamente piccolo è possibile creare una serie di funzioni nuove e molto utili che forniranno sufficiente coerenza al progetto, saranno ben coordinate tra loro e, in aggiunta a ciò, sarà in grado di essere facilmente e ampiamente utilizzato nella lingua in futuro.
Questo approccio è, ovviamente, un compromesso. Se venisse implementato un pacchetto più grande, si potrebbe immaginare un mondo completamente nuovo di funzionalità che sarebbe estremamente potente e utile. Se è necessario ottenere nuove funzionalità che si adattino a tutto il resto, ma non sei disposto a dedicare molti sforzi allo sviluppo del progetto, ciò, sfortunatamente, può portare a una riduzione della portata del tuo progetto. L'idea alla base del repository di funzionalità Wolfram è quella di fornire funzionalità a una parte determinante di un progetto; questo approccio aggiungerà funzionalità potenti rendendo più semplice mantenere una buona coerenza in un progetto di programmazione.
Aiuta ad aggiungere funzioni personalizzate al repository di funzioni
Il nostro team ha lavorato duramente per rendere più semplice per gli utenti contribuire alle funzionalità del repository Wolfram. Sul desktop (già in
Ci sono due passaggi principali che dovrai eseguire: in primo luogo, annotare effettivamente il codice per la tua funzione e, in secondo luogo, annotare la documentazione che illustra come dovrebbe funzionare la tua funzione.
Fai clic sul pulsante "Apri campione" in alto per vedere un esempio di ciò che devi fare:
In sostanza, stai cercando di creare qualcosa di simile a una funzione incorporata nel linguaggio Wolfram. Solo che può fare qualcosa di molto più specifico di una funzione integrata. Allo stesso tempo, le aspettative riguardo alla sua completezza e affidabilità saranno molto più basse.
Devi dare alla tua funzione un nome che segua le linee guida per la denominazione delle funzioni di Wolfram Language. Inoltre, dovrai sviluppare la documentazione per la tua funzione, simile alle funzioni integrate del linguaggio. Ne parlerò più dettagliatamente più avanti. Per ora, nota solo che nella riga di pulsanti nella parte superiore del file del notebook delle definizioni è presente un pulsante
Quando sei sicuro che tutto sia compilato correttamente e sei pronto, fai clic sul pulsante "Verifica". È del tutto normale che tu non abbia ancora capito tutti i dettagli. Quindi la funzione "Verifica" verrà eseguita automaticamente ed eseguirà molti controlli di stile e coerenza. Spesso ti chiederà immediatamente di confermare e accettare le correzioni (ad esempio: "Questa riga deve terminare con i due punti" e ti chiederà di inserire i due punti). A volte ti chiederà di aggiungere o modificare qualcosa tu stesso. Aggiungeremo costantemente nuove funzionalità alla funzionalità automatica del pulsante Controlla, ma fondamentalmente il suo scopo è garantire che tutto ciò che invii al repository di funzionalità segua già da vicino quante più linee guida di stile possibili
Quindi, dopo aver eseguito "Verifica", puoi utilizzare "Anteprima". "Anteprima" crea un'anteprima della pagina di documentazione definita per la tua funzione. Puoi anche creare un'anteprima per un file creato sul tuo computer o per un file situato nell'archivio cloud. Se, per qualche motivo, non sei soddisfatto di ciò che vedi nell'anteprima, torna semplicemente indietro e apporta le correzioni necessarie, quindi fai nuovamente clic sul pulsante Anteprima.
Ora sei pronto per inserire la tua funzione nel repository. Il pulsante Distribuisci offre quattro opzioni:
La cosa importante in questo passaggio è che puoi inviare la tua funzione al repository di funzioni Wolfram in modo che sia disponibile a chiunque. Allo stesso tempo, puoi anche inserire la tua funzione per un numero limitato di utenti. Ad esempio, puoi creare una funzione ospitata localmente sul tuo computer in modo che sia disponibile quando utilizzi quel particolare computer. Oppure puoi postarlo nel tuo
Supponiamo quindi che tu voglia effettivamente inviare la tua funzione alla knowledge base delle funzioni Wolfram. Per fare ciò, fai clic sul pulsante "Invia" al repository. Allora cosa sta succedendo in questo momento? La tua domanda viene immediatamente messa in coda per la revisione e l'approvazione da parte del nostro team dedicato di curatori.
Man mano che la tua richiesta avanza nel processo di approvazione (che in genere richiede diversi giorni), riceverai comunicazioni relative al suo stato ed eventualmente suggerimenti per un utilizzo futuro. Ma una volta approvata la tua funzionalità, verrà immediatamente pubblicata nel Wolfram Feature Repository e sarà disponibile per l'utilizzo da parte di chiunque. (E questo apparirà in
Cosa dovrebbe esserci nel deposito?
Va notato che la nostra azienda ha standard molto elevati di completezza, affidabilità e qualità complessiva, delle oltre 6000 funzioni che abbiamo già integrato nel linguaggio Wolfram negli ultimi 30 anni soddisfano tutte i requisiti di cui sopra. L'obiettivo del Wolfram Function Repository è utilizzare tutta la struttura e le funzionalità già esistenti nel Wolfram Language per aggiungere quante più funzioni più leggere (ovvero funzioni con prestazioni più elevate) possibili.
Naturalmente, le funzioni nel repository di funzioni Wolfram devono essere conformi ai principi di progettazione del linguaggio Wolfram, in modo che possano interagire completamente con altre funzioni e con le aspettative degli utenti su come la funzione dovrebbe funzionare correttamente. Tuttavia, le funzioni non devono essere di uguale completezza o affidabilità.
Nelle funzioni integrate del linguaggio Wolfram, lavoriamo duramente per rendere le funzioni di programmazione il più generali possibile. Detto questo, quando nel repository di funzioni Wolfram non c'è niente di sbagliato nell'avere una funzione al suo interno che gestisce semplicemente qualche caso molto specifico ma utile. Ad esempio, la funzione
Un altro punto relativo alle funzioni integrate è che la nostra azienda fa ogni sforzo per gestire tutti i casi atipici, per gestire correttamente input errati e così via. In un repository di funzioni, è del tutto normale che ci sia una funzione speciale che gestisce i casi principali di risoluzione di un problema e ignora tutti gli altri.
Il punto ovvio è che è meglio avere funzioni che facciano di più e lo facciano meglio, ma l'ottimizzazione per un repository di funzioni - al contrario delle funzioni integrate del linguaggio Wolfram - dovrebbe avere più funzioni raggruppate con più funzioni piuttosto che approfondire i processi di implementazione di ciascuna specifica funzione.
Ora diamo un'occhiata a un esempio di test delle funzioni in un repository. Le aspettative di coerenza per tali funzioni sono naturalmente molto inferiori rispetto a quelle per le funzioni del linguaggio integrato. Ciò è particolarmente vero nei casi in cui le funzioni dipendono da risorse esterne come le API, è importante condurre costantemente test coerenti, cosa che avviene automaticamente all'interno degli algoritmi di verifica. Nel file nb è possibile specificare esplicitamente le definizioni (nella sezione Informazioni aggiuntive) e specificare tutti i test definiti dalle stringhe di input e output o dagli oggetti di carattere completo di tipo
Di conseguenza, il repository delle funzioni presenterà una serie di complessità di implementazione. Alcuni saranno costituiti da una sola riga di codice, altri potrebbero includere migliaia o decine di migliaia di righe, probabilmente utilizzando molte funzioni di supporto. Quando vale la pena aggiungere una funzione che richiede pochissimo codice per essere definita? Fondamentalmente, se per una funzione c'è
Lo scopo principale di un repository di funzioni (come suggerisce il nome) è introdurre nuove funzionalità nel linguaggio. Se vuoi aggiungere nuovi dati o
In realtà ci sono due modi. Potresti voler introdurre un nuovo tipo di oggetto che verrà utilizzato nelle nuove funzioni nel repository delle funzioni. E in questo caso, puoi sempre semplicemente scrivere la sua rappresentazione simbolica e usarla quando si immettono o emettono funzioni in un repository di funzioni.
Ma cosa succede se vuoi rappresentare un oggetto e poi definire, attraverso le funzioni esistenti nel linguaggio Wolfram, che vuoi lavorare con esso? Il linguaggio Wolfram ha sempre avuto un meccanismo leggero per questo, chiamato
Quindi, cosa potrebbe esserci nel codice della funzione in un repository di funzioni?
Tutto il codice per il repository di funzionalità Wolfram dovrebbe essere scritto in Wolfram? Certamente il codice all'interno dell'API esterna non dovrebbe essere scritto nel linguaggio Wolfram, che non realizza nemmeno il codice della lingua. Infatti, se trovi una funzione in quasi tutti i linguaggi o librerie esterne, puoi creare un wrapper che ti permetta di usarla nel repository delle funzioni Wolfram. (Di solito dovresti usare le funzioni integrate per questo
Allora qual è lo scopo di farlo? In sostanza, ciò consente di utilizzare l'intero sistema integrato Wolfram Language e il suo intero insieme unificato di funzionalità software. Se si ottiene l'implementazione di base da una libreria o da un linguaggio esterno, è possibile utilizzare la ricca struttura simbolica del linguaggio Wolfram per creare una comoda funzione di primo livello che consenta agli utenti di utilizzare facilmente qualsiasi funzionalità già implementata. Per lo meno, questo dovrebbe essere fattibile in un mondo ideale in cui esistono tutti gli elementi costitutivi del caricamento delle librerie, ecc., nel qual caso verrebbero gestiti automaticamente dal Wolfram Language. (Va notato che in pratica potrebbero esserci problemi con
A proposito, quando si guardano per la prima volta le tipiche librerie esterne, spesso sembrano troppo complesse per essere coperte in poche funzioni, ma in molti casi, gran parte della complessità deriva dalla creazione dell'infrastruttura necessaria affinché la libreria e tutte le funzioni possano funzionare. sostenerlo. Tuttavia, quando si utilizza il linguaggio Wolfram, l'infrastruttura è in genere già integrata nei pacchetti e quindi non è necessario esporre tutte queste funzioni di supporto in dettaglio, ma solo creare funzioni per le funzioni specifiche dell'applicazione "più in alto" nella libreria .
"Ecosistema" della base di conoscenza
Se hai scritto funzioni che usi regolarmente, inviale al Wolfram Function Repository! Se da questo non viene fuori qualcosa di più (sviluppo del linguaggio), anche in questo caso sarà molto più conveniente per te utilizzare le funzioni per uso personale. Tuttavia è logico supporre che se si utilizzano regolarmente le funzioni, forse anche altri utenti le troveranno utili.
Naturalmente potresti trovarti nella situazione in cui non puoi - o non vuoi - condividere le tue funzioni o nel caso di accesso a risorse informative private. Anche in questi casi potete semplicemente implementare le funzioni nel vostro account cloud,
Le funzioni inviate al repository di funzioni Wolfram non devono essere perfette; devono solo essere utili. È un po' come la sezione "Errori" nella classica documentazione Unix: nella "Sezione Definizioni" c'è una sezione "Note dell'autore" in cui puoi descrivere limitazioni, problemi, ecc. che già conosci riguardo alla tua funzione. Inoltre, quando invii la tua funzionalità al repository, puoi aggiungere note di invio che verranno lette da un team dedicato di curatori.
Una volta pubblicata una funzionalità, la sua pagina ha sempre due link in basso: "
A volte vuoi semplicemente utilizzare le funzioni dal repository di funzioni Wolfram, come le funzioni integrate, senza guardare il loro codice. Tuttavia, se vuoi dare un'occhiata all'interno, c'è sempre un pulsante Blocco note in alto. Fai clic su di esso e otterrai la tua copia del taccuino di definizione originale che è stato inviato al repository di funzionalità. A volte puoi semplicemente usarlo come esempio per le tue esigenze. Allo stesso tempo, puoi anche sviluppare la tua modifica di questa funzione. Potresti voler pubblicare queste funzioni che hai trovato dal repository sul tuo computer o nel tuo account di archiviazione cloud aphid, forse vuoi inviarle alla base di conoscenza delle funzioni, magari come una versione migliorata ed estesa della funzione originale.
In futuro, prevediamo di supportare il fork in stile Git per i repository di funzionalità, ma per ora stiamo cercando di mantenerlo semplice e abbiamo sempre solo una versione accettata di ciascuna funzionalità incorporata nel linguaggio. Nella maggior parte dei casi (a meno che gli sviluppatori non rinuncino a mantenere le funzionalità che hanno sviluppato e rispondano agli invii degli utenti), l'autore originale della funzionalità prende il controllo degli aggiornamenti e invia nuove versioni, che vengono poi riviste e, se superano il processo di revisione , pubblicato nella lingua.
Consideriamo la questione di come funziona il "versioning" delle funzioni sviluppate. In questo momento, quando utilizzi una funzione dal repository delle funzioni, la sua definizione verrà archiviata in modo permanente sul tuo computer (o nel tuo account cloud se stai utilizzando il cloud). Se è disponibile una nuova versione di una funzionalità, la prossima volta che la utilizzerai riceverai un messaggio di notifica. E se vuoi aggiornare la funzione a una nuova versione, puoi farlo usando il comando
Una delle cose belle del Wolfram Function Repository è che qualsiasi programma Wolfram Language, ovunque, può utilizzare le sue funzioni. Se un programma appare in un blocco note, spesso è conveniente formattare le funzioni del repository come funzioni di "oggetto binario funzione" di facile lettura (magari con un set di versioni appropriato).
Puoi sempre accedere a qualsiasi funzione nel repository di funzioni utilizzando il testo
Come funziona?
All'interno delle funzioni nel repository Wolfram questo è possibile utilizzando esattamente lo stesso
Prendere in considerazione
All'interno è possibile visualizzare alcune informazioni utilizzando la funzione
Come funziona l'impostazione di una funzione risorsa? Il più semplice è un caso puramente locale. Ecco un esempio che prende una funzione (in questo caso solo una funzione pura) e la definisce come funzione di risorsa per una determinata sessione del programma:
Una volta effettuata la definizione, è possibile utilizzare la funzione risorsa:
Tieni presente che è presente un'icona nera in questo BLOB di funzioni . Ciò significa che la funzione BLOB fa riferimento alla funzione della risorsa in memoria definita per la sessione corrente. Una funzionalità di risorsa archiviata in modo permanente sul tuo computer o account cloud è contrassegnata da un'icona grigia . E c'è un'icona arancione per una funzionalità di risorsa ufficiale nel Wolfram Feature Repository .
Quindi cosa succede quando usi il menu Espandi nel Notebook delle definizioni? Innanzitutto, prende tutte le definizioni nel blocco note e da esse crea un simbolico
La distribuzione locale di una funzione da un repository sul computer viene eseguita utilizzando il comando
Se fai clic sul pulsante Invia per un repository di funzioni, cosa succede sotto di esso
Per impostazione predefinita, gli invii vengono effettuati con il nome associato al tuo ID Wolfram. Ma se stai inviando una domanda per conto di un team o un'organizzazione di sviluppo, puoi farlo
Dopo aver inviato una delle funzioni alla knowledge base delle funzioni, verrà messa in coda per la revisione. Se ricevi commenti in risposta, solitamente saranno sotto forma di un file di testo con l'aggiunta di "celle di commento" aggiuntive. Puoi sempre verificare lo stato della tua richiesta visitando
Alcune sottigliezze al lavoro
A prima vista potrebbe sembrare che tu possa semplicemente prendere un taccuino di definizioni e inserirlo parola per parola in un repository di funzioni, tuttavia, in realtà ci sono molte sottigliezze coinvolte - e gestirle richiede una meta-programmazione piuttosto complessa, gestendo l'elaborazione simbolica come codice che definisce la funzione e viene definito il Blocco note stesso. La maggior parte di ciò avviene internamente, dietro le quinte, ma può avere alcune implicazioni che vale la pena comprendere se si intende contribuire alla knowledge base delle funzionalità.
Prima sottigliezza immediata: quando compili il Quaderno delle definizioni, puoi semplicemente fare riferimento alla tua funzione ovunque usando un nome come La mia funzione, che sembra un nome normale per una funzione nel linguaggio Wolfram, ma per la documentazione del repository di funzioni viene sostituito
La seconda sottigliezza: quando crei una funzione di risorsa dal Definition Notebook, tutte le dipendenze coinvolte nella definizione della funzione devono essere acquisite e incluse esplicitamente. Tuttavia, per garantire che le definizioni rimangano modulari, è necessario inserire tutto in un unico
In genere non vedrai mai alcuna traccia del codice utilizzato per configurare questo spazio dei nomi. Ma se per qualche motivo chiami un simbolo sottoeseguito all'interno della tua funzione, vedrai che questo simbolo si trova nel contesto interno della funzione. Tuttavia, durante l'elaborazione del Blocco note delle definizioni, lo è almeno il simbolo corrispondente alla funzione stessa
Il repository delle funzioni serve per definire nuove funzioni. E queste funzioni possono avere opzioni. Spesso questi parametri (ad esempio,
La maggior parte delle funzioni fanno semplicemente quello che dovrebbero fare ogni volta che vengono chiamate, ma alcune funzioni devono essere inizializzate prima di poter essere eseguite in una sessione particolare - e per risolvere questo problema, c'è una sezione "Inizializzazione" nella sezione Definizione.
Le funzioni di un repository possono utilizzare altre funzioni già presenti nel repository; per impostare le definizioni per un repository di funzioni che includono due (o più) funzioni che fanno riferimento a vicenda, è necessario distribuirle nella sessione del programma in modo da poter riferimento come su di essi
Prospettive di sviluppo. Cosa dovrebbe succedere quando il repository diventa davvero grande?
Oggi stiamo lanciando solo il Wolfram Feature Repository, ma col tempo ci aspettiamo che le sue dimensioni e funzionalità possano aumentare notevolmente, e man mano che cresce nello sviluppo ci saranno vari problemi che già prevediamo potrebbero sorgere.
Il primo problema riguarda i nomi delle funzioni e la loro unicità. Il repository delle funzioni è progettato in modo tale che, come le funzioni integrate nel linguaggio Wolfram, puoi fare riferimento a qualsiasi funzione semplicemente specificandone il nome. Ma ciò significa inevitabilmente che i nomi delle funzioni devono essere globalmente univoci in tutto il repository, in modo che, ad esempio, possa essercene solo uno
All'inizio questo può sembrare un grosso problema, ma vale la pena rendersi conto che fondamentalmente è lo stesso problema che si riscontra per cose come i domini Internet o gli handle dei social media. E il fatto è che il sistema deve semplicemente avere un registrar - e questo è uno dei ruoli che la nostra azienda svolgerà per la knowledge base della funzione Wolfram. (Per le versioni private di un repository, i loro registrar possono essere amministratori.) Naturalmente, un dominio Internet può essere registrato senza contenere nulla, ma in un repository di funzioni, un nome di funzione può essere registrato solo se esiste una definizione effettiva di la funzione.
Parte del nostro ruolo nella gestione della base di conoscenza della funzione Wolfram è garantire che il nome scelto per una funzione sia logico data la definizione della funzione e che segua le convenzioni di denominazione del linguaggio Wolfram. Abbiamo oltre 30 anni di esperienza nella denominazione delle funzioni integrate nel linguaggio Wolfram e il nostro team di curatori porterà questa esperienza anche nel repository delle funzioni. Naturalmente ci sono sempre delle eccezioni. Ad esempio, può sembrare preferibile avere un nome breve per alcune funzioni, ma è meglio "difendersi" con un nome più lungo e specifico perché è meno probabile imbattersi in qualcuno che voglia dare un nome simile a una funzione in futuro. .
(Va notato qui che la semplice aggiunta di alcuni tag membro per chiarire le ambiguità delle funzioni non avrà l'effetto desiderato. Perché a meno che tu non insista nell'assegnare sempre un tag, dovrai definire un tag predefinito per ogni determinata funzione e anche allocare i tag dell'autore , che richiederebbe ancora una volta un coordinamento globale.)
Man mano che la base di conoscenza delle funzioni Wolfram cresce, uno dei problemi che probabilmente sorgerà è la rilevabilità delle funzioni, per le quali il sistema fornisce
Per le funzioni integrate nel linguaggio Wolfram esiste un cosiddetto livello di rilevamento fornito da
Il repository di funzioni Wolfram è configurato come repository di funzioni persistenti, dove qualsiasi funzione in esso contenuta funzionerà sempre. Naturalmente, potrebbero diventare disponibili nuove versioni delle funzionalità e prevediamo che alcune funzionalità diventeranno ovviamente obsolete nel tempo. Le funzioni funzioneranno se vengono utilizzate nei programmi, ma le loro pagine di documentazione si collegheranno a funzioni nuove e più avanzate.
Il Wolfram Feature Repository è progettato per aiutarti a scoprire rapidamente nuove funzionalità e apprendere nuovi modi di utilizzare il linguaggio Wolfram. Siamo molto ottimisti sul fatto che parte di ciò che è stato esplorato nel repository di funzionalità alla fine avrà senso per diventare parti integrate del nucleo di Wolfram Language. Negli ultimi dieci anni abbiamo avuto un set simile
La cosa più importante qui è che una funzione in un repository di funzioni sia qualcosa che può essere utilizzato da ogni utente in questo momento. È possibile che una funzionalità in lingua nativa possa essere molto migliore e più performante, ma un repository di funzionalità consentirebbe agli utenti di avere accesso immediato a tutte le nuove funzionalità. E, cosa più importante, questo concetto consente a tutti di aggiungere tutte le nuove funzionalità che desiderano.
All'inizio della storia del linguaggio Wolfram, questa idea non avrebbe funzionato così bene come ha fatto, ma in questa fase c'è così tanto sforzo profuso nel linguaggio, e una comprensione così profonda dei principi di progettazione del linguaggio, che ora sembra molto possibile per una vasta comunità di utenti aggiungere funzionalità che mantengano la coerenza del design per renderle utili a un'ampia gamma di utenti.
C'è un incredibile spirito di talento(?) nella comunità degli utenti di Wolfram Language. (Naturalmente, questa comunità include molti importanti esperti di ricerca e sviluppo in una varietà di campi.) Spero che il Wolfram Feature Repository fornisca una piattaforma efficace per sbloccare e diffondere questo spirito di talento. Solo insieme possiamo creare qualcosa che amplierà in modo significativo l’area a cui può essere applicato il paradigma del linguaggio informatico Wolfram.
In più di 30 anni abbiamo fatto molta strada con la lingua Wolfram. Ora insieme andiamo ancora oltre. Incoraggio vivamente tutti gli utenti rispettati del linguaggio Wolfram in tutto il mondo a utilizzare il repository funzionale come piattaforma per questo, così come il nuovo progetto software come Free Wolfram Engine for Developers.
Fonte: habr.com