Ola, Habr! Presento á súa atención unha tradución da publicación de Stephen Wolfram
Requisitos previos para a coherencia da linguaxe Wolfram
Hoxe estamos no limiar de grandes logros xunto coa linguaxe de programación
O Wolfram Function Repository é algo posible pola natureza única da Wolfram Language non só como linguaxe de programación, senón tamén como unha
Por exemplo, o repositorio de funcións Wolfram xa contén
Así mesmo máis que
Para acceder á páxina, copie o obxecto anterior (función BLOB), pégueo na liña de entrada e, a continuación, execute a función: xa está integrada na linguaxe Wolfram e é compatible por defecto comezando por
Cómpre sinalar aquí que ao procesar
Espero que co apoio
As funcións do repositorio poden conter pequenos ou grandes fragmentos de código escritos na linguaxe Wolfram. Por exemplo, estas poden ser chamadas
O shell e a estrutura de programación do repositorio de funcións de Wolfram están deseñados para que todos poidan contribuír á causa común do xeito máis sinxelo e cómodo para eles; de feito, só
Neste enfoque hai moitas compensacións e detalles, pero o noso obxectivo é optimizar o repositorio de funcións de Wolfram tanto para a experiencia do usuario como para garantir que as novas funcións dos usuarios contribúan significativamente ao desenvolvemento da linguaxe. A medida que imos medrando, non teño dúbida de que teremos que inventar novos métodos para procesar e validar funcións integradas no repositorio, non menos importante para organizar un gran número de funcións e atopar as que precisan os usuarios. Porén, é alentador que o camiño que escollemos sexa un bo comezo. Eu persoalmente
Aumentar a eficiencia reducindo os custos
Mesmo antes de Internet, había formas de compartir código Wolfram Language (o noso primeiro gran proxecto centralizado foi
Durante máis de 30 anos, a nosa empresa traballou con dilixencia para manter a integridade da estrutura da linguaxe Wolfram, e isto é fundamental para garantir que a linguaxe Wolfram non se converta só nunha linguaxe de programación, senón tamén nunha linguaxe de programación.
Na estrutura de implementación de cada función ocorren diversos procesos computacionais. Cabe sinalar aquí que é necesario que a función teña un aspecto claro e uniforme e unha lexibilidade visual para o usuario. Neste contexto, as funcións integradas do Wolfram Language preséntanse con máis de 6000 exemplos secuenciais de como programar correctamente as funcións (estes son os nosos
Crear un repositorio que funcione ben é unha tarefa de metaprogramación interesante. Por exemplo, un exceso de restricións no programa non permitirá obter a necesaria unificación e universalidade do algoritmo. Do mesmo xeito que cun número insuficiente de restricións funcionais, non poderá implementar unha secuencia suficientemente correcta de execución do algoritmo. Varios exemplos anteriores de implementación dun compromiso destes enfoques, implementados pola nosa empresa, funcionaron de forma bastante estable: estes son:
Todos os exemplos anteriores teñen unha característica fundamental: os obxectos e funcións recollidos no proxecto teñen un moi alto grao de estruturación e distribución de procesos. Por suposto, o detalle da estrutura do que é unha demostración ou unha rede neuronal ou outra cousa pode variar moito, pero a estrutura fundamental para calquera repositorio actual sempre segue sendo a mesma. Entón, cal é a túa opinión, querido usuario, sobre a creación dun repositorio que engada extensións á linguaxe Wolfram? A linguaxe Wolfram está deseñada para ser extremadamente flexible, polo que se pode ampliar e modificar de calquera forma. Esta circunstancia é moi importante para a capacidade de crear rapidamente varios proxectos de software a gran escala no Wolfram Language. Cómpre sinalar aquí que a medida que aumenta a flexibilidade da lingua, o custo dos proxectos implementados en tal lingua inevitablemente aumentará. Isto débese ao feito de que canto máis usa o usuario tal linguaxe, máis funcionalidade dedicada recibe, pero non debemos esquecer que este enfoque tamén pode ter aspectos negativos en canto á incapacidade de garantir a coherencia coherente dos módulos do programa.
Hai un problema común coas bibliotecas en linguaxes de programación tradicionais: se usas unha biblioteca, por exemplo, o código funcionará correctamente, pero se intentas usar varias bibliotecas, non hai garantía de que interactúen correctamente entre si. . Ademais, nas linguaxes de programación tradicionais, a diferenza dunha linguaxe de computación completa, non hai forma de garantir a presenza de representacións integradas consistentes para calquera función ou tipo de datos que non sexan as súas estruturas básicas. Pero, de feito, o problema é aínda máis grande do que parece a primeira vista: se un está construíndo unha vertical de funcionalidade a gran escala, sen os enormes custos da programación centralizada de proxectos que poñemos na linguaxe Wolfram, é imposible conseguir coherencia. Polo tanto, é importante que todos os módulos de software funcionen sempre xuntos correctamente.
Polo tanto, a idea detrás do repositorio de funcións de Wolfram é evitar o problema descrito anteriormente simplemente engadindo extensións á linguaxe en fragmentos de código relativamente pequenos mediante funcións individuais que sexan máis fáciles de desenvolver como módulos coherentes. Dito isto, hai funcións de programación que non se poden facer convenientes usando funcións individuais (e a nosa empresa planea lanzar un algoritmo de programación optimizado nun futuro próximo para axudar a implementar paquetes de software a gran escala). Non obstante, baseándose nas funcións xa integradas na linguaxe Wolfram, hai moitas posibilidades de programación que se implementan en función de funcións individuais. A idea aquí é que con relativamente pouco esforzo de programación é posible crear unha serie de funcións novas e moi útiles que proporcionarán coherencia suficiente ao deseño, estarán ben coordinadas entre si e ademais, ademais diso, será capaz de usar facilmente e amplamente na lingua no futuro.
Este enfoque é, por suposto, un compromiso. Se se implementase un paquete máis grande, podería imaxinarse un novo mundo de funcionalidades que sería extremadamente poderoso e útil. Se hai necesidade de obter unha nova funcionalidade que encaixará con todo o demais, pero non estás disposto a gastar moito esforzo no desenvolvemento do proxecto, isto, por desgraza, pode levar a unha redución do alcance do teu proxecto. A idea detrás do repositorio de funcións de Wolfram é proporcionar funcionalidade a unha parte definitoria dun proxecto; este enfoque engadirá unha funcionalidade potente ao tempo que facilitará manter unha boa coherencia nun proxecto de programación.
Axuda a engadir funcións personalizadas ao repositorio de funcións
O noso equipo traballou duro para facilitar aos usuarios a contribución ás funcións do repositorio de Wolfram. No escritorio (xa en
Hai dous pasos principais que terás que realizar: primeiro, escribir o código da túa función e, segundo, anotar a documentación que ilustra como debería funcionar a túa función.
Fai clic no botón "Abrir mostra" na parte superior para ver un exemplo do que debes facer:
Esencialmente, estás tentando crear algo semellante a unha función integrada no Wolfram Language. Excepto que pode facer algo moito máis específico que unha función integrada. Ao mesmo tempo, as expectativas sobre a súa integridade e fiabilidade serán moito menores.
Debes darlle á túa función un nome que siga as directrices de nomeamento de funcións de Wolfram Language. Ademais, terá que desenvolver documentación para a súa función, similar ás funcións integradas da linguaxe. Disto falarei con máis detalle máis adiante. Polo momento, só tes en conta que na fila de botóns na parte superior do ficheiro do caderno de definición hai un botón
Cando estea seguro de que todo se encheu correctamente e estea listo, prema no botón "Comprobar". É completamente normal que aínda non descubras todos os detalles. Así que a función "Comprobar" executarase automaticamente e fará moitas comprobacións de estilo e coherencia. Moitas veces, pediralle inmediatamente que confirme e acepte as correccións (por exemplo: "Esta liña debe rematar con dous puntos" e pediralle que introduza dous puntos). Ás veces, ela pedirache que engadas ou cambies algo ti mesmo. Engadiremos constantemente novas funcións á funcionalidade automática do botón Comprobar, pero basicamente a súa finalidade é garantir que todo o que envíes ao repositorio de funcións siga de preto tantas pautas de estilo como sexa posible.
Entón, despois de executar "Comprobar", pode usar "Vista previa". "Vista previa" crea unha vista previa da páxina de documentación que definiches para a túa función. Tamén pode crear unha vista previa dun ficheiro creado no seu ordenador ou dun ficheiro situado no almacenamento na nube. Se por algún motivo non estás satisfeito co que ves na vista previa, simplemente volve atrás e fai as correccións necesarias e fai clic de novo no botón Vista previa.
Agora estás preparado para enviar a túa función ao repositorio. O botón Implementar ofrécelle catro opcións:
O importante neste paso é que pode enviar a súa función ao repositorio de funcións de Wolfram para que estea dispoñible para calquera. Ao mesmo tempo, tamén pode colocar a súa función para un número limitado de usuarios. Por exemplo, pode crear unha función que estea aloxada localmente no seu ordenador para que estea dispoñible cando use ese ordenador en particular. Ou podes publicalo no teu
Entón, digamos que realmente quere enviar a súa función á base de coñecemento de funcións de Wolfram. Para iso, fai clic no botón "Enviar" ao repositorio. Entón, que está a suceder neste momento? A túa solicitude ponse inmediatamente en cola para a súa revisión e aprobación polo noso equipo de comisarios.
A medida que a túa solicitude avanza no proceso de aprobación (que normalmente leva varios días), recibirás comunicacións sobre o seu estado e posiblemente suxestións para o seu uso futuro. Pero unha vez que se aprobe a túa función, publicarase inmediatamente no repositorio de funcións de Wolfram e estará dispoñible para que o use. (E isto aparecerá en
Que debería haber no almacenamento?
Nótese que a nosa empresa ten estándares moi altos de integridade, fiabilidade e calidade xeral, e das máis de 6000 funcións que xa incorporamos na linguaxe Wolfram nos últimos 30 anos, todas cumpren os requisitos anteriores. O obxectivo do Repositorio de funcións de Wolfram é utilizar toda a estrutura e funcionalidade que xa existe na linguaxe Wolfram para engadir tantas funcións máis lixeiras (é dicir, funcións de maior rendemento) como sexa posible.
Por suposto, as funcións do repositorio de funcións de Wolfram deben axustarse aos principios de deseño da linguaxe Wolfram, para que poidan interactuar plenamente con outras funcións e as expectativas dos usuarios sobre como debería funcionar correctamente a función. Non obstante, as funcións non teñen por que ser da mesma integridade ou fiabilidade.
Nas funcións integradas da linguaxe Wolfram, traballamos duro para que as funcións de programación sexan o máis xerais posible. Dito isto, cando no repositorio de funcións de Wolfram non hai nada de malo en ter unha función que simplemente xestione algún caso moi específico pero útil. Por exemplo, a función
Outro punto relacionado coas funcións integradas é que a nosa empresa fai todo o posible para xestionar todos os casos atípicos, para xestionar correctamente a entrada incorrecta, etc. Nun repositorio de funcións, é completamente normal que haxa unha función especial que xestione os casos principais de resolución dun problema e ignore todos os demais.
O punto obvio é que é mellor ter funcións que fagan máis e o fagan mellor, pero a optimización para un repositorio de funcións -en oposición ás funcións integradas da linguaxe Wolfram- debería ter máis funcións agrupadas con máis funcións en lugar de afondar en os procesos de implementación de cada función específica.
Agora vexamos un exemplo de funcións de proba nun repositorio. As expectativas de coherencia para tales funcións son, naturalmente, moito máis baixas que para as funcións de linguaxe integradas. Isto é especialmente certo nos casos en que as funcións dependen de recursos externos como as API, é importante realizar constantemente probas consistentes, o que ocorre automaticamente dentro dos algoritmos de verificación. No ficheiro nb, pode especificar de forma explícita definicións (na sección Información adicional) e especificar tantas probas como se definan mediante cadeas de entrada e saída ou obxectos de carácter completo de tipo
Como resultado, o repositorio de funcións terá unha serie de complexidades de implementación. Algúns serán só unha liña de código, outros poden implicar miles ou decenas de miles de liñas, probablemente usando moitas funcións auxiliares. Cando paga a pena engadir unha función que require moi pouco código para definir? Basicamente, se para unha función hai
O propósito principal dun repositorio de funcións (como o seu nome indica) é introducir novas funcións na linguaxe. Se queres engadir novos datos ou
En realidade hai dúas formas. Quizais queira introducir un novo tipo de obxecto que se utilizará en novas funcións do repositorio de funcións. E neste caso, sempre podes simplemente anotar a súa representación simbólica e usala ao introducir ou sair funcións nun repositorio de funcións.
Pero e se queres representar un obxecto e logo definir, a través das funcións existentes na linguaxe Wolfram, que queres traballar con el? O Wolfram Language sempre tivo un mecanismo lixeiro para iso, chamado
Entón, que pode haber no código de función nun repositorio de funcións?
Todo o código para o repositorio de funcións de Wolfram debería estar escrito en Wolfram? Certamente, o código dentro da API externa non debería estar escrito na linguaxe Wolfram, que nin sequera fai o código da linguaxe. De feito, se atopas unha función en case calquera linguaxe ou biblioteca externa, podes crear un envoltorio que che permita usala no repositorio de funcións de Wolfram. (Normalmente deberías usar as funcións integradas para iso
Entón, cal é o punto de facer isto? Esencialmente, isto permítelle utilizar todo o sistema integrado Wolfram Language e todo o seu conxunto unificado de capacidades de software. Se obtén a implementación base dunha biblioteca ou linguaxe externa, entón pode usar a rica estrutura simbólica do Wolfram Language para crear unha función de nivel superior conveniente que permita aos usuarios utilizar facilmente calquera funcionalidade xa implementada. Polo menos, isto debería ser factible nun mundo ideal onde existan todos os bloques de construción de bibliotecas de carga, etc., en cuxo caso serían xestionados automaticamente polo Wolfram Language. (Hai que ter en conta que na práctica pode haber problemas con
Por certo, cando miras por primeira vez as bibliotecas externas típicas, moitas veces parecen demasiado complexas para cubrirse con só unhas poucas funcións, pero en moitos casos, gran parte da complexidade vén de crear a infraestrutura necesaria para a biblioteca e todas as funcións para apoialo. Non obstante, cando se usa Wolfram Language, a infraestrutura normalmente xa está integrada nos paquetes, polo que non hai necesidade de expor todas estas funcións de soporte en detalle, senón de crear funcións para as funcións específicas da aplicación "máis arriba" da biblioteca. .
"Ecosistema" da base de coñecemento
Se escribiu funcións que usa habitualmente, envíeas ao repositorio de funcións de Wolfram. Se isto non sae algo máis (desenvolvemento da linguaxe), aínda así será moito máis cómodo que use as funcións para uso persoal. Non obstante, é lóxico asumir que se usa as funcións con regularidade, quizais outros usuarios tamén as atopen útiles.
Naturalmente, pode atoparse nunha situación na que non pode -ou non quere- compartir as súas funcións ou no caso de acceder a recursos de información privada. Incluso nestes casos, pode simplemente implementar as funcións na súa propia conta na nube,
As funcións que envías ao repositorio de funcións de Wolfram non teñen por que ser perfectas; só teñen que ser útiles. Isto é un pouco como a sección "Erros" na documentación clásica de Unix - na "Sección Definicións" hai unha sección "Notas do autor" onde podes describir limitacións, problemas, etc. que xa coñeces sobre a túa función. Ademais, cando envíes a túa función ao repositorio, podes engadir notas de envío que serán lidas por un equipo dedicado de comisarios.
Unha vez que se publica unha función, a súa páxina sempre ten dúas ligazóns na parte inferior: "
Ás veces só quere usar funcións do repositorio de funcións de Wolfram, como funcións integradas, sen mirar o seu código. Non obstante, se queres botar unha ollada ao interior, sempre hai un botón do Bloc de notas na parte superior. Fai clic nel e obterás a túa propia copia do caderno de definicións orixinal que se enviou ao repositorio de funcións. Ás veces só podes usalo como exemplo para as túas necesidades. Ao mesmo tempo, tamén pode desenvolver a súa propia modificación desta función. Quizais queira publicar estas funcións que atopou no repositorio no seu ordenador ou na súa conta de almacenamento na nube de pulgóns, quizais queira envialas á base de coñecemento de funcións, quizais como unha versión mellorada e ampliada da función orixinal.
No futuro, pensamos admitir a bifurcación ao estilo de Git para os repositorios de funcións, pero polo de agora estamos tentando que sexa sinxelo e sempre temos só unha versión aceptada de cada función integrada no idioma. Na maioría das veces (a non ser que os desenvolvedores renuncien a manter as funcións que desenvolveron e respondan aos envíos dos usuarios), o autor orixinal da función toma o control das actualizacións da mesma e envía novas versións, que despois son revisadas e, se pasan o proceso de revisión. , publicado na lingua.
Consideremos a cuestión de como funciona o "versionado" das funcións desenvolvidas. Agora mesmo, cando utilizas unha función do repositorio de funcións, a súa definición almacenarase permanentemente no teu ordenador (ou na túa conta na nube se estás a usar a nube). Se está dispoñible unha nova versión dunha función, a próxima vez que a utilice, recibirá unha mensaxe notificándoo. E se queres actualizar a función a unha nova versión, podes facelo usando o comando
Unha das cousas bonitas do Repositorio de funcións de Wolfram é que calquera programa de linguaxe Wolfram, en calquera lugar, pode usar funcións del. Se un programa aparece nun bloc de notas, adoita ser conveniente formatar as funcións do repositorio como funcións de "obxecto binario de funcións" fáciles de ler (quizais cun conxunto de versións axeitado).
Sempre podes acceder a calquera función do repositorio de funcións mediante texto
Como funciona isto?
Dentro das funcións do repositorio Wolfram isto é posible usando exactamente o mesmo
Considerar
No seu interior podes ver algunha información usando a función
Como funciona a configuración dunha función de recurso? O máis sinxelo é un caso puramente local. Aquí tes un exemplo que toma unha función (neste caso só unha función pura) e a define como unha función de recurso para unha determinada sesión do programa:
Unha vez feita a definición, pode usar a función de recursos:
Teña en conta que hai unha icona negra nesta función . Isto significa que a función BLOB fai referencia á función de recursos en memoria definida para a sesión actual. Unha función de recurso que se almacena permanentemente no teu ordenador ou conta na nube ten unha icona gris . E hai unha icona laranxa para unha función de recurso oficial no Repositorio de funcións de Wolfram .
Entón, que ocorre cando usas o menú Expandir no caderno de definicións? En primeiro lugar, toma todas as definicións do bloc de notas e a partir delas crea un simbólico
A implantación local dunha función desde un repositorio do seu ordenador realízase mediante o comando
Se fai clic no botón Enviar para un repositorio de funcións, o que ocorre debaixo del
Por defecto, os envíos realízanse co nome asociado ao teu ID de Wolfram. Pero se estás a enviar unha solicitude en nome dun equipo ou organización de desenvolvemento, podes facelo
Despois de enviar algunha das súas funcións á base de coñecemento de funcións, quedará en cola para a súa revisión. Se recibes comentarios como resposta, normalmente terán a forma dun ficheiro de texto con "celas de comentarios" adicionais engadidas. Sempre podes consultar o estado da túa solicitude visitando
Algunhas sutilezas no traballo
A primeira vista pode parecer que só podes coller un caderno de definicións e poñelo textualmente nun repositorio de funcións, non obstante, en realidade hai moitas sutilezas implicadas, e manexalas require facer unha metaprogramación bastante complexa, manexar o procesamento simbólico. como o código que define a función e o propio Bloc de notas está definido. A maior parte disto ocorre internamente, entre bastidores, pero pode ter algunhas implicacións que paga a pena comprender se vas contribuír á base de coñecemento de funcións.
Primeira sutileza inmediata: cando enche o caderno de definicións, pode simplemente facer referencia á súa función en todas partes usando un nome como A miña función, que parece un nome normal para unha función no Wolfram Language, pero para a documentación do repositorio de funcións substitúese
A segunda sutileza: cando crea unha función de recurso desde o caderno de definicións, todas as dependencias implicadas na definición da función deben ser capturadas e incluídas explícitamente. Non obstante, para garantir que as definicións sigan sendo modulares, cómpre poñer todo nun único
Normalmente nunca verá ningún rastro do código usado para configurar este espazo de nomes. Pero se por algún motivo chamas a un símbolo pouco executado dentro da túa función, verás que este símbolo está no contexto interno da función. Non obstante, ao procesar o Bloc de notas de definición, polo menos o símbolo correspondente á propia función é
O repositorio de funcións serve para definir novas funcións. E estas funcións poden ter opcións. Moitas veces estes parámetros (por exemplo,
A maioría das funcións simplemente fan o que se supón que deben facer cada vez que son chamadas, pero algunhas funcións deben ser inicializadas antes de que poidan executarse nunha sesión concreta, e para resolver este problema, hai unha sección "Inicialización" na sección Definición.
As funcións dun repositorio poden usar outras funcións que xa están no repositorio; para configurar definicións para un repositorio de funcións que inclúan dúas (ou máis) funcións que se refiren entre si, debes implementalas na sesión do programa para que poidas referencia como sobre eles
Perspectivas de desenvolvemento. Que debería pasar cando o repositorio se fai realmente grande?
Hoxe acabamos de lanzar o Repositorio de funcións de Wolfram, pero co paso do tempo esperamos que o seu tamaño e funcionalidade poidan aumentar drasticamente, e a medida que vaia crendo no seu desenvolvemento haberá varios problemas que xa anticipamos que poden xurdir.
O primeiro problema refírese aos nomes das funcións e á súa singularidade. O repositorio de funcións está deseñado de tal xeito que, como as funcións integradas no Wolfram Language, podes facer referencia a calquera función determinada simplemente especificando o seu nome. Pero isto significa inevitablemente que os nomes das funcións deben ser globalmente únicos en todo o repositorio, polo que, por exemplo, só pode haber un
Isto pode parecer un gran problema ao principio, pero paga a pena entender que é basicamente o mesmo problema que para cousas como dominios de Internet ou manexos de redes sociais. E o feito é que o sistema simplemente necesita ter un rexistrador, e este é un dos roles que a nosa empresa desempeñará para a base de coñecemento da función Wolfram. (Para versións privadas dun repositorio, os seus rexistradores poden ser administradores.) Por suposto, un dominio de Internet pódese rexistrar sen ter nada nel, pero nun repositorio de funcións só se pode rexistrar un nome de función se hai unha definición real de a función.
Parte do noso papel na xestión da base de coñecemento da función Wolfram é asegurarnos de que o nome elixido para unha función é lóxico dada a definición da función e que segue as convencións de nomenclatura de Wolfram Language. Temos máis de 30 anos de experiencia nombrando funcións integradas no Wolfram Language, e o noso equipo de comisarios tamén achegará esa experiencia ao repositorio de funcións. Por suposto, sempre hai excepcións. Por exemplo, pode parecer preferible ter un nome curto para algunha función, pero é mellor "defender" cun nome máis longo e específico porque é menos probable que se atope con alguén que queira crear un nome de función similar no futuro. .
(Hai que ter en conta que simplemente engadir algunha etiqueta de membro para desambiguar funcións non terá o efecto desexado. Porque a non ser que insistas en asignar sempre unha etiqueta, terás que definir unha etiqueta predeterminada para calquera función determinada e tamén asignar etiquetas de autor. , que de novo requiriría unha coordinación global.)
A medida que crece a base de coñecemento das funcións de Wolfram, un dos problemas que probablemente xurda é a descuberta das funcións, para a que o sistema proporciona
Para as funcións integradas no Wolfram Language hai unha chamada capa de detección proporcionada por
O repositorio de funcións de Wolfram está configurado como un repositorio de funcións persistentes, onde calquera función nel sempre funcionará. Por suposto, poden estar dispoñibles novas versións de funcións e esperamos que algunhas funcións queden obsoletas co paso do tempo. As funcións funcionarán se se usan en programas, pero as súas páxinas de documentación enlazarán a funcións novas e máis avanzadas.
O repositorio de funcións de Wolfram está deseñado para axudarche a descubrir rapidamente novas funcións e aprender novas formas de usar a linguaxe Wolfram. Estamos moi optimistas de que parte do que se explorou no repositorio de funcións acabará por ter sentido para converterse en partes integradas do núcleo de Wolfram Language. Durante a última década tivemos un conxunto similar
O máis importante aquí é que unha función nun repositorio de funcións é algo que todos os usuarios poden usar agora mesmo. É posible que unha función na lingua nativa sexa moito mellor e máis rendible, pero un repositorio de funcións permitiría aos usuarios ter acceso a todas as novas funcións de inmediato. E, o máis importante, este concepto permite a todos engadir as novas funcións que queiran.
Antes na historia da linguaxe Wolfram, esta idea non tería funcionado tan ben como o ten, pero nesta fase hai tanto esforzo posto na linguaxe, e unha comprensión tan profunda dos principios de deseño da linguaxe, que agora parece moi posible para unha gran comunidade de usuarios engadir funcións que manterán a coherencia do deseño para facelos útiles para unha ampla gama de usuarios.
Hai un incrible espírito de talento(?) na comunidade de usuarios de Wolfram Language. (Por suposto, esta comunidade inclúe moitas persoas líderes en I+D nunha variedade de campos.) Espero que o Repositorio de funcións de Wolfram proporcione unha plataforma eficaz para desbloquear e difundir este espírito de talento. Só xuntos podemos crear algo que amplíe significativamente a área á que se pode aplicar o paradigma de computación en linguaxe Wolfram.
En máis de 30 anos, percorremos un longo camiño coa linguaxe Wolfram. Agora xuntos, imos aínda máis alá. Animo encarecidamente a todos os usuarios respectados da linguaxe Wolfram en todo o mundo a que utilicen o repositorio funcional como plataforma para iso, así como o novo proxecto de software como o Free Wolfram Engine for Developers.
Fonte: www.habr.com