¡Hola Habr! Les presento una traducción del post de Stephen Wolfram.
Requisitos previos para la coherencia de Wolfram Language
Hoy nos encontramos en el umbral de grandes logros junto con el lenguaje de programación.
El repositorio de funciones Wolfram es algo posible gracias a la naturaleza única de Wolfram Language no sólo como lenguaje de programación, sino también como
Por ejemplo, el repositorio de funciones de Wolfram ya contiene
Asimismo más de
Para acceder a la página, copie el objeto anterior (función BLOB), péguelo en la línea de entrada y luego ejecute la función; ya está integrada en Wolfram Language y es compatible de forma predeterminada a partir de
Cabe señalar aquí que al procesar
espero que con el apoyo
Las funciones del repositorio pueden contener fragmentos de código pequeños o grandes escritos en Wolfram Language. Por ejemplo, estas podrían ser llamadas
El shell y la estructura de programación de Wolfram Feature Repository están diseñados para que todos puedan contribuir a la causa común de la manera más simple y conveniente para ellos; de hecho, solo
Hay muchas compensaciones y detalles en este enfoque, pero nuestro objetivo es optimizar el repositorio de funciones de Wolfram tanto para la experiencia del usuario como para garantizar que las nuevas funciones del usuario contribuyan significativamente al desarrollo del lenguaje. A medida que crezcamos, no tengo ninguna duda de que tendremos que inventar nuevos métodos para procesar y validar funciones integradas en el repositorio, sobre todo para organizar una gran cantidad de funciones y encontrar aquellas que los usuarios necesitan. Sin embargo, es alentador que el camino que hemos elegido sea un buen comienzo. yo personalmente
Aumento de la eficiencia y reducción de costes
Incluso antes de Internet, había formas de compartir código de Wolfram Language (nuestro primer proyecto centralizado importante fue
Durante más de 30 años, nuestra empresa ha trabajado diligentemente para mantener la integridad de la estructura del lenguaje Wolfram, y esto es fundamental para garantizar que el lenguaje Wolfram se convierta no solo en un lenguaje de programación, sino también en un
En la estructura de implementación de cada función ocurren varios procesos computacionales. Cabe señalar aquí que es necesario que la función tenga una apariencia clara y uniforme y legibilidad visual para el usuario. En este contexto, las funciones integradas de Wolfram Language se presentan con más de 6000 ejemplos secuenciales de cómo programar funciones correctamente (estos son nuestros
Crear un repositorio que realmente funcione bien es una tarea de metaprogramación interesante. Por ejemplo, un exceso de restricciones en el programa no permitirá obtener la unificación y universalidad requeridas del algoritmo. Al igual que con un número insuficiente de restricciones funcionales, no podrá implementar una secuencia de ejecución del algoritmo suficientemente correcta. Varios ejemplos anteriores de implementación de un compromiso de estos enfoques, implementados por nuestra empresa, funcionaron de manera bastante estable: estos son:
Todos los ejemplos anteriores tienen una característica fundamental: los objetos y funciones recopilados en el proyecto tienen un grado muy alto de estructuración y distribución de procesos. Por supuesto, el detalle de la estructura de lo que es una demostración, una red neuronal o cualquier otra cosa puede variar mucho, pero la estructura fundamental de cualquier repositorio actual siempre sigue siendo la misma. Entonces, ¿cuál es su opinión, querido usuario, acerca de la creación de un repositorio que agregue extensiones al lenguaje Wolfram? Wolfram Language está diseñado para ser extremadamente flexible, por lo que puede ampliarse y modificarse de cualquier forma. Esta circunstancia es extremadamente importante para la capacidad de crear rápidamente varios proyectos de software a gran escala en Wolfram Language. Cabe señalar aquí que a medida que aumenta la flexibilidad del idioma, el costo de los proyectos implementados en dicho idioma aumentará inevitablemente. Esto se debe al hecho de que cuanto más utiliza el usuario dicho lenguaje, más funcionalidad específica recibe, pero no debemos olvidar que este enfoque también puede tener aspectos negativos en términos de la incapacidad de garantizar la coherencia coherente de los módulos del programa.
Existe un problema común con las bibliotecas en los lenguajes de programación tradicionales: si usa una biblioteca, por ejemplo, el código funcionará correctamente, pero si intenta usar varias bibliotecas, no hay garantía de que interactúen correctamente entre sí. . Además, en los lenguajes de programación tradicionales, a diferencia de un lenguaje informático completo, no hay forma de garantizar la presencia de representaciones integradas consistentes para funciones o tipos de datos distintos de sus estructuras básicas. Pero, de hecho, el problema es aún mayor de lo que parece a primera vista: si uno está construyendo una vertical de funcionalidad a gran escala, entonces sin los enormes costos de programación centralizada de proyectos que ponemos en el lenguaje Wolfram, es imposible lograr consistencia. Por eso es importante que todos los módulos de software funcionen siempre correctamente juntos.
Entonces, la idea detrás del repositorio de funciones Wolfram es evitar el problema descrito anteriormente simplemente agregando extensiones al lenguaje en fragmentos de código relativamente pequeños a través de funciones individuales que son más fáciles de desarrollar como módulos coherentes. Dicho esto, hay características de programación que no se pueden hacer convenientes usando funciones individuales (y nuestra compañía planea lanzar un algoritmo de programación optimizado en un futuro cercano para ayudar a implementar paquetes de software a gran escala). Sin embargo, basándose en las funciones ya integradas en Wolfram Language, existen muchas posibilidades de programación que se implementan en función de funciones individuales. La idea aquí es que con relativamente poco esfuerzo de programación es posible crear una serie de funciones nuevas y muy útiles que darán suficiente coherencia al diseño, estarán bien coordinadas entre sí y además, además de esto, podrá utilizarse fácil y ampliamente en el idioma en el futuro.
Este enfoque es, por supuesto, un compromiso. Si se implementara un paquete más grande, se podría imaginar un mundo completamente nuevo de funcionalidades que sería extremadamente poderoso y útil. Si es necesario obtener una nueva funcionalidad que se adapte a todo lo demás, pero no está dispuesto a dedicar mucho esfuerzo al desarrollo del proyecto, esto, desafortunadamente, puede conducir a una reducción en el alcance de su proyecto. La idea detrás del repositorio de funciones Wolfram es proporcionar funcionalidad a una parte definitoria de un proyecto; este enfoque agregará una funcionalidad poderosa y al mismo tiempo facilitará el mantenimiento de una buena coherencia en un proyecto de programación.
Ayuda para agregar funciones personalizadas al repositorio de funciones
Nuestro equipo ha trabajado arduamente para facilitar a los usuarios la contribución a las funciones del repositorio Wolfram. En el escritorio (ya en
Hay dos pasos principales que deberá realizar: primero, escriba el código de su función y, segundo, escriba la documentación que ilustre cómo debería funcionar su función.
Haga clic en el botón "Abrir muestra" en la parte superior para ver un ejemplo de lo que debe hacer:
Básicamente, está intentando crear algo similar a una función integrada en Wolfram Language. Excepto que puede hacer algo mucho más específico que una función integrada. Al mismo tiempo, las expectativas en cuanto a su integridad y fiabilidad serán mucho menores.
Debe darle a su función un nombre que siga las pautas de nomenclatura de funciones de Wolfram Language. Además, necesitará desarrollar documentación para su función, similar a las funciones integradas del lenguaje. Hablaré de esto con más detalle más adelante. Por ahora, sólo observe que en la fila de botones en la parte superior del archivo del cuaderno de definiciones hay un botón
Cuando esté seguro de que todo está completado correctamente y esté listo, haga clic en el botón "Verificar". Es completamente normal que aún no hayas descubierto todos los detalles. Por lo tanto, la función "Verificar" se ejecutará automáticamente y realizará muchas comprobaciones de estilo y coherencia. A menudo, le pedirá inmediatamente que confirme y acepte las correcciones (por ejemplo: "Esta línea debe terminar con dos puntos" y le pedirá que ingrese dos puntos). A veces te pedirá que agregues o cambies algo tú mismo. Agregaremos constantemente nuevas funciones a la funcionalidad automática del botón Verificar, pero básicamente su propósito es garantizar que todo lo que envíe al repositorio de funciones siga de cerca tantas pautas de estilo como sea posible.
Entonces, después de ejecutar "Verificar", puede usar "Vista previa". "Vista previa" crea una vista previa de la página de documentación que definió para su función. También puede crear una vista previa de un archivo creado en su computadora o de un archivo ubicado en el almacenamiento en la nube. Si, por alguna razón, no está satisfecho con lo que ve en la vista previa, simplemente regrese y haga las correcciones necesarias y luego haga clic en el botón Vista previa nuevamente.
Ahora está listo para enviar su función al repositorio. El botón Implementar le ofrece cuatro opciones:
Lo importante en este paso es que puede enviar su función al repositorio de funciones de Wolfram para que esté disponible para cualquiera. Al mismo tiempo, también puedes colocar tu función para un número limitado de usuarios. Por ejemplo, puede crear una función alojada localmente en su computadora para que esté disponible cuando use esa computadora en particular. O puedes publicarlo en tu
Entonces digamos que realmente desea enviar su función a la base de conocimiento de funciones de Wolfram. Para hacer esto, haga clic en el botón "Enviar" al repositorio. Entonces, ¿qué está pasando en este momento? Su solicitud se pone inmediatamente en cola para que nuestro dedicado equipo de curadores la revise y apruebe.
A medida que su solicitud avance en el proceso de aprobación (que generalmente demora varios días), recibirá comunicaciones sobre su estado y posiblemente sugerencias para uso futuro. Pero una vez que se apruebe su característica, se publicará inmediatamente en el Repositorio de características de Wolfram y estará disponible para que cualquiera la use. (Y esto aparecerá en
¿Qué debería haber en el almacenamiento?
Cabe señalar que nuestra empresa tiene estándares muy altos en cuanto a integridad, confiabilidad y calidad general, y de las más de 6000 funciones que ya hemos integrado en Wolfram Language durante los últimos 30 años, todas cumplen con los requisitos anteriores. El objetivo del Wolfram Function Repository es utilizar toda la estructura y funcionalidad que ya existe en Wolfram Language para agregar tantas funciones mucho más ligeras (es decir, funciones de mayor rendimiento) como sea posible.
Por supuesto, las funciones en el repositorio de funciones de Wolfram deben ajustarse a los principios de diseño de Wolfram Language, para que puedan interactuar completamente con otras funciones y con las expectativas de los usuarios sobre cómo debería funcionar correctamente la función. Sin embargo, las funciones no tienen por qué ser igualmente completas o fiables.
En las funciones integradas del lenguaje Wolfram, trabajamos arduamente para que las funciones de programación sean lo más generales posible. Dicho esto, en el repositorio de funciones de Wolfram no hay nada malo en tener una función que simplemente maneje algún caso muy específico pero útil. Por ejemplo, la función
Otro punto relacionado con las funciones integradas es que nuestra empresa hace todo lo posible para manejar todos los casos atípicos, manejar correctamente las entradas incorrectas, etc. En un repositorio de funciones, es completamente normal que haya una función especial que maneje los casos principales de resolución de un problema e ignore todos los demás.
El punto obvio es que es mejor tener funciones que hagan más y mejor, pero la optimización para un repositorio de funciones - a diferencia de las funciones integradas del lenguaje Wolfram - debería tener más funciones agrupadas con más funciones en lugar de profundizar en los procesos de implementación de cada función específica.
Ahora veamos un ejemplo de prueba de funciones en un repositorio. Las expectativas de coherencia para dichas funciones son, naturalmente, mucho más bajas que para las funciones integradas en el lenguaje. Esto es especialmente cierto en los casos en que las funciones dependen de recursos externos como las API; es importante realizar pruebas consistentes constantemente, lo que ocurre automáticamente dentro de los algoritmos de verificación. En el archivo nb, puede especificar definiciones explícitamente (en la sección Información adicional) y especificar tantas pruebas como se definen mediante cadenas de entrada y salida u objetos de tipo de caracteres completos.
Como resultado, el repositorio de funciones tendrá varias complejidades de implementación. Algunos serán solo una línea de código, otros pueden involucrar miles o decenas de miles de líneas, probablemente usando muchas funciones auxiliares. ¿Cuándo vale la pena agregar una función que requiere muy poco código para definirse? Básicamente, si para una función hay
El objetivo principal de un repositorio de funciones (como su nombre indica) es introducir nuevas funciones en el lenguaje. Si desea agregar nuevos datos o
En realidad, hay dos formas. Es posible que desee introducir un nuevo tipo de objeto que se utilizará en nuevas funciones en el repositorio de funciones. Y en este caso, siempre puedes escribir su representación simbólica y usarla al ingresar o generar funciones en un repositorio de funciones.
Pero, ¿qué sucede si desea representar un objeto y luego definir, a través de funciones existentes en Wolfram Language, que desea trabajar con él? Wolfram Language siempre ha tenido un mecanismo ligero para esto, llamado
Entonces, ¿qué podría haber en el código de función en un repositorio de funciones?
¿Todo el código para el repositorio de funciones de Wolfram debería escribirse en Wolfram? Ciertamente, el código dentro de la API externa no debe estar escrito en el lenguaje Wolfram, que ni siquiera constituye el código del lenguaje. De hecho, si encuentra una función en casi cualquier lenguaje o biblioteca externa, puede crear un contenedor que le permita usarla en el repositorio de funciones de Wolfram. (Por lo general, debería utilizar las funciones integradas para esto
Entonces, ¿cuál es el punto de hacer esto? Básicamente, esto le permite utilizar todo el sistema integrado de Wolfram Language y todo su conjunto unificado de capacidades de software. Si obtiene la implementación base de una biblioteca o lenguaje externo, puede usar la rica estructura simbólica de Wolfram Language para crear una función conveniente de nivel superior que permita a los usuarios usar fácilmente cualquier funcionalidad ya implementada. Como mínimo, esto debería ser factible en un mundo ideal donde existan todos los componentes básicos de las bibliotecas de carga, etc., en cuyo caso serían manejados automáticamente por Wolfram Language. (Cabe señalar que en la práctica puede haber problemas con
Por cierto, cuando miras por primera vez las bibliotecas externas típicas, a menudo parecen demasiado complejas para cubrirlas con solo unas pocas funciones, pero en muchos casos, gran parte de la complejidad proviene de la creación de la infraestructura necesaria para la biblioteca y todas las funciones para apoyarlo. Sin embargo, cuando se utiliza Wolfram Language, la infraestructura generalmente ya está integrada en los paquetes, por lo que no es necesario exponer todas estas funciones de soporte en detalle, sino solo crear funciones para las funciones "principales" específicas de la aplicación en la biblioteca. .
"Ecosistema" de la base de conocimientos.
Si ha escrito funciones que utiliza regularmente, envíelas al repositorio de funciones de Wolfram. Si de esto no sale algo más (desarrollo del lenguaje), aun así le resultará mucho más cómodo utilizar las funciones para uso personal. Sin embargo, es lógico suponer que si utiliza las funciones con regularidad, quizás otros usuarios también las encuentren útiles.
Naturalmente, es posible que se encuentre en una situación en la que no pueda - o no quiera - compartir sus funciones o en el caso de obtener acceso a recursos de información privados. Incluso en tales casos, simplemente puede implementar las funciones en su propia cuenta en la nube,
Las funciones que envíe al repositorio de funciones de Wolfram no tienen que ser perfectas; sólo tienen que ser útiles. Esto es un poco como la sección "Errores" en la documentación clásica de Unix: en la "Sección Definiciones" hay una sección "Notas del autor" donde puede describir limitaciones, problemas, etc. que ya conoce sobre su función. Además, cuando envía su característica al repositorio, puede agregar notas de envío que serán leídas por un equipo dedicado de curadores.
Una vez que se publica una característica, su página siempre tiene dos enlaces en la parte inferior: "
A veces simplemente desea utilizar funciones del repositorio de funciones de Wolfram, como funciones integradas, sin mirar su código. Sin embargo, si quieres echar un vistazo al interior, siempre hay un botón del Bloc de notas en la parte superior. Haga clic en él y obtendrá su propia copia del cuaderno de definiciones original que se envió al repositorio de funciones. A veces puedes usarlo como ejemplo para tus necesidades. Al mismo tiempo, también puedes desarrollar tu propia modificación de esta función. Es posible que desee publicar estas funciones que encontró en el repositorio en su computadora o en su cuenta de almacenamiento en la nube de Aphid, tal vez desee enviarlas a la base de conocimientos de funciones, tal vez como una versión mejorada y ampliada de la función original.
En el futuro, planeamos admitir bifurcaciones al estilo Git para repositorios de funciones, pero por ahora estamos tratando de mantenerlo simple y siempre solo tenemos una versión aceptada de cada función integrada en el lenguaje. La mayoría de las veces (a menos que los desarrolladores dejen de mantener las funciones que desarrollaron y respondan a los envíos de los usuarios), el autor original de la función toma el control de las actualizaciones y envía nuevas versiones, que luego se revisan y, si pasan el proceso de revisión. , publicado en el idioma.
Consideremos la cuestión de cómo funciona el "control de versiones" de las funciones desarrolladas. En este momento, cuando usas una función del repositorio de funciones, su definición se almacenará permanentemente en tu computadora (o en tu cuenta en la nube si estás usando la nube). Si hay una nueva versión de una función disponible, la próxima vez que la use recibirá un mensaje notificándolo. Y si deseas actualizar la función a una nueva versión, puedes hacerlo usando el comando
Una de las cosas hermosas del Wolfram Function Repository es que cualquier programa de Wolfram Language, en cualquier lugar, puede usar sus funciones. Si un programa aparece en un bloc de notas, a menudo es conveniente formatear las funciones del repositorio como funciones de "objeto binario de función" fáciles de leer (quizás con un conjunto de versiones apropiado).
Siempre puedes acceder a cualquier función en el repositorio de funciones usando texto
Como funciona?
Dentro de las funciones en el repositorio de Wolfram esto es posible usando exactamente el mismo
Considerar
En su interior puedes ver alguna información usando la función.
¿Cómo funciona la configuración de una función de recursos? El más sencillo es un caso puramente local. Aquí hay un ejemplo que toma una función (en este caso solo una función pura) y la define como una función de recurso para una sesión de programa determinada:
Una vez que haya realizado la definición, puede utilizar la función de recurso:
Tenga en cuenta que hay un icono negro en este blob de funciones. . Esto significa que la función BLOB se refiere a la función de recurso en memoria definida para la sesión actual. Una característica de recurso que está almacenada permanentemente en su computadora o cuenta en la nube tiene un ícono gris . Y hay un ícono naranja para una característica de recurso oficial en el Repositorio de características de Wolfram. .
Entonces, ¿qué sucede cuando usas el menú Expandir en el Cuaderno de definiciones? Primero, toma todas las definiciones del bloc de notas y a partir de ellas crea un archivo simbólico.
La implementación local de una función desde un repositorio en su computadora se realiza usando el comando
Si hace clic en el botón Enviar de un repositorio de funciones, ¿qué sucede debajo de él?
De forma predeterminada, los envíos se realizan con el nombre asociado con su ID de Wolfram. Pero si envía una solicitud en nombre de un equipo u organización de desarrollo, puede
Una vez que haya enviado cualquiera de sus funciones a la base de conocimientos de funciones, se pondrá en cola para su revisión. Si recibe comentarios en respuesta, generalmente estarán en forma de un archivo de texto con “celdas de comentarios” adicionales agregadas. Siempre puedes comprobar el estado de tu solicitud visitando
Algunas sutilezas en el trabajo.
A primera vista, puede parecer que se puede simplemente tomar un cuaderno de definiciones y ponerlo palabra por palabra en un repositorio de funciones; sin embargo, en realidad hay muchas sutilezas involucradas, y manejarlas requiere realizar una metaprogramación bastante compleja, manejar el procesamiento simbólico. como el código que define la función, y se define el Bloc de notas en sí. La mayor parte de esto sucede internamente, entre bastidores, pero puede tener algunas implicaciones que vale la pena comprender si desea contribuir a la base de conocimientos de funciones.
Primera sutileza inmediata: cuando complete el Cuaderno de definiciones, puede simplemente referirse a su función en todas partes usando un nombre como Mifuncion, que parece un nombre normal para una función en Wolfram Language, pero para la documentación del repositorio de funciones se reemplaza
La segunda sutileza: cuando crea una función de recurso desde el Cuaderno de definición, todas las dependencias involucradas en la definición de la función deben capturarse e incluirse explícitamente. Sin embargo, para garantizar que las definiciones sigan siendo modulares, es necesario colocar todo en un formato único.
Normalmente nunca verá ningún rastro del código utilizado para configurar este espacio de nombres. Pero si por alguna razón llamas a un símbolo subejecutado dentro de tu función, verás que este símbolo está en el contexto interno de la función. Sin embargo, al procesar el Bloc de notas de definición, al menos se muestra el símbolo correspondiente a la función en sí.
El repositorio de funciones sirve para definir nuevas funciones. Y estas funciones pueden tener opciones. A menudo estos parámetros (por ejemplo,
La mayoría de las funciones simplemente hacen lo que se supone que deben hacer cada vez que se llaman, pero algunas funciones deben inicializarse antes de poder ejecutarse en una sesión en particular; y para resolver este problema, hay una sección de "Inicialización" en la sección Definición.
Las funciones de un repositorio pueden usar otras funciones que ya están en el repositorio; para configurar definiciones para un repositorio de funciones que incluya dos (o más) funciones que hagan referencia entre sí, debe implementarlas en la sesión de su programa para que pueda referencia como en ellos
Perspectivas de desarrollo. ¿Qué debería pasar cuando el repositorio crezca mucho?
Hoy recién estamos lanzando Wolfram Feature Repository, pero con el tiempo esperamos que su tamaño y funcionalidad puedan aumentar dramáticamente y, a medida que crezca en desarrollo, habrá varios problemas que ya anticipamos que pueden surgir.
El primer problema tiene que ver con los nombres de funciones y su unicidad. El repositorio de funciones está diseñado de tal manera que, al igual que las funciones integradas en Wolfram Language, puede hacer referencia a cualquier función determinada simplemente especificando su nombre. Pero esto inevitablemente significa que los nombres de las funciones deben ser globalmente únicos en todo el repositorio, de modo que, por ejemplo, sólo pueda haber una
Esto puede parecer un gran problema al principio, pero vale la pena darse cuenta de que es básicamente el mismo problema que ocurre con cosas como dominios de Internet o identificadores de redes sociales. Y el hecho es que el sistema simplemente necesita tener un registrador, y esta es una de las funciones que nuestra empresa desempeñará para la base de conocimientos de funciones de Wolfram. (Para las versiones privadas de un repositorio, sus registradores pueden ser administradores). Por supuesto, un dominio de Internet se puede registrar sin tener nada en él, pero en un repositorio de funciones, el nombre de una función sólo se puede registrar si existe una definición real de la función.
Parte de nuestra función en la gestión de la base de conocimientos de funciones de Wolfram es garantizar que el nombre elegido para una función sea lógico dada la definición de la función y que siga las convenciones de nomenclatura de Wolfram Language. Tenemos más de 30 años de experiencia nombrando funciones integradas en Wolfram Language, y nuestro equipo de curadores también aportará esa experiencia al repositorio de funciones. Por supuesto, siempre hay excepciones. Por ejemplo, puede parecer preferible tener un nombre corto para alguna función, pero es mejor "defenderse" con un nombre más largo y específico porque es menos probable que te encuentres con alguien que quiera crear un nombre de función similar en el futuro. .
(Cabe señalar aquí que simplemente agregar alguna etiqueta de miembro para eliminar la ambigüedad de las funciones no tendrá el efecto deseado. Porque, a menos que insista en asignar siempre una etiqueta, deberá definir una etiqueta predeterminada para cualquier función determinada y también asignar etiquetas de autor). , lo que nuevamente requeriría coordinación global.)
A medida que crece la base de conocimiento de las funciones de Wolfram, uno de los problemas que probablemente surgirá es la capacidad de descubrimiento de funciones, para lo cual el sistema proporciona
Para las funciones integradas en Wolfram Language existe la llamada capa de detección proporcionada por
El repositorio de funciones de Wolfram está configurado como un repositorio de funciones persistente, donde cualquier función que contenga siempre funcionará. Por supuesto, es posible que estén disponibles nuevas versiones de funciones y esperamos que algunas funciones queden obsoletas con el tiempo. Las funciones funcionarán si se usan en programas, pero sus páginas de documentación se vincularán a funciones nuevas y más avanzadas.
El repositorio de funciones de Wolfram está diseñado para ayudarle a descubrir rápidamente nuevas funciones y aprender nuevas formas de utilizar Wolfram Language. Somos muy optimistas de que algo de lo que se ha explorado en el repositorio de características eventualmente tendrá sentido para convertirse en partes integradas del núcleo de Wolfram Language. Durante la última década hemos tenido un conjunto similar
Lo más importante aquí es que una función en un repositorio de funciones es algo que está disponible para que todos los usuarios la utilicen en este momento. Es posible que una función en el idioma nativo sea mucho mejor y más eficaz, pero un repositorio de funciones permitiría a los usuarios tener acceso a todas las funciones nuevas de inmediato. Y, lo más importante, este concepto permite a todos agregar las funciones nuevas que deseen.
En una etapa anterior de la historia de Wolfram Language, esta idea no habría funcionado tan bien como lo ha hecho, pero en esta etapa hay tanto esfuerzo puesto en el lenguaje y una comprensión tan profunda de los principios de diseño del lenguaje, que ahora parece muy útil. Es posible que una gran comunidad de usuarios agregue características que mantendrán la coherencia del diseño para que sean útiles para una amplia gama de usuarios.
Existe un increíble espíritu de talento(?) en la comunidad de usuarios de Wolfram Language. (Por supuesto, esta comunidad incluye muchos expertos líderes en I+D en una variedad de campos). Espero que Wolfram Feature Repository proporcione una plataforma eficaz para desbloquear y difundir este espíritu de talento. Sólo juntos podremos crear algo que amplíe significativamente el área en la que se puede aplicar el paradigma informático del lenguaje Wolfram.
En más de 30 años, hemos recorrido un largo camino con Wolfram Language. Ahora juntos, vayamos aún más lejos. Recomiendo encarecidamente a todos los usuarios respetados de Wolfram Language en todo el mundo que utilicen el repositorio funcional como plataforma para esto, así como el nuevo proyecto de software como Free Wolfram Engine para desarrolladores.
Fuente: habr.com