ILNumerics es un lenguaje específico de dominio (DSL) de código abierto para la implementación de algoritmos numéricos en la plataforma .NET y constituye el núcleo de la plataforma de desarrollo matemático / biblioteca de clases ILNumerics . Funciona como un sistema de álgebra para desarrolladores .NET, centrándose en la creación de prototipos de algoritmos y su implementación robusta en aplicaciones listas para su distribución mediante lenguajes de programación de propósito general (GPL) como C# y Visual Basic . ILNumerics se integra en Visual Studio y tiene como objetivo facilitar la creación de aplicaciones técnicas en entornos comerciales y académicos.
Historia
ILNumerics comenzó en 2006 como un proyecto de código abierto, originado en la Universidad Técnica de Berlín . [ 1 ] En 2007, ILNumerics ganó el premio BASTA! Innovation Award 2007 [ 2 ] como el proyecto .NET más innovador en Alemania , Suiza y Austria . Después de 6 años de desarrollo de código abierto, el proyecto agregó una licencia propietaria de código cerrado en 2011, dirigida a desarrolladores empresariales y académicos por igual. El proyecto rápidamente ganó popularidad (números de descargas y participación en stackoverflow.com, [ 3 ] [ 4 ] [ 5 ] recuentos de descargas del sitio web no disponibles). El marco .NET fue seleccionado como una base administrada , ya que los intentos anteriores en la plataforma Java habían sido abandonados debido a limitaciones técnicas. De manera similar, el marco .NET no ha sido diseñado con el enfoque en los requisitos del desarrollo de aplicaciones técnicas. ILNumerics agregó interfaces a códigos populares ( LAPACK , FFTW ), números complejos y clases genéricas de matrices multidimensionales . En 2010 se añadieron capacidades gráficas. En 2011 se iniciaron esfuerzos para mejorar el rendimiento de la tecnología. Al mismo tiempo, se fundó una empresa para continuar con el desarrollo.
En 2026, el núcleo numérico de la plataforma de desarrollo se liberó como código abierto en el proyecto ILNumerics.ONAL (Open Numerical Algorithm Language) y se publicó en GitHub . Sirve como implementación estándar y continúa siendo mantenido por ILNumerics . El estándar ONAL tiene como objetivo proporcionar una base madura, preparada para el futuro e independiente del proveedor para el desarrollo de algoritmos numéricos en .NET. El lenguaje se diseñó para centrarse en la semántica y la funcionalidad fáciles de usar, excluyendo estrictamente cualquier aspecto relacionado con el rendimiento. Los algoritmos escritos en ILNumerics.ONAL permanecen independientes y funcionan sin soporte propietario del proveedor, al tiempo que permiten una aceleración automática sin esfuerzo para compiladores compatibles con ONAL. [ 6 ] [ 7 ]
Compilador acelerador ONAL
En 2024, el lanzamiento de ILNumerics versión 7.1 introdujo el compilador acelerador ONAL, un sistema para la paralelización automática de programas de matrices numéricas escritos con el DSL de ILNumerics. [ 8 ] El compilador aborda un cuello de botella común en el desarrollo de software numérico al trasladar la paralelización de fragmentos de código optimizados manualmente a la ejecución autónoma a nivel de programa. En lugar de requerir que el programador coordine explícitamente las tareas paralelas, el programa compilado organiza su ejecución en tiempo de ejecución de manera descentralizada, masivamente paralela y auto-adaptativa en los recursos de hardware disponibles. [ 8 ]
En tiempo de ejecución, el sistema identifica operaciones de matriz independientes que trascienden los límites de funciones y módulos, y las programa para su ejecución concurrente en los recursos de cómputo disponibles, incluidos los núcleos de CPU y las GPU. Para ello, el programa, originalmente secuencial, se descompone en segmentos individuales , correspondientes a operaciones de matriz simples o combinadas, que posteriormente se vuelven a ensamblar para su ejecución asíncrona y paralela. Cada operación de matriz tiene su propia lógica de ejecución: evalúa los costes de ejecución previstos, selecciona un recurso de cómputo adecuado, prepara el código del kernel optimizado para la operación en el dispositivo seleccionado e inicia la ejecución en cuanto se satisfacen sus dependencias. En este modelo, la propia programación se convierte en parte de la carga de trabajo paralelizada. [ 9 ]
Sintaxis
ILNumerics implementa la funcionalidad básica frecuentemente necesaria para el desarrollo de aplicaciones en áreas técnicas: matrices N-dimensionales , números complejos , álgebra lineal , FFT y controles de trazado (2D y 3D ). Las clases de matrices son totalmente compatibles con las características de matrices de Matlab y NumPy , incluyendo el orden de almacenamiento interno, la creación de submatrices, la expansión y la indexación avanzada. La funcionalidad de nivel superior se proporciona mediante cajas de herramientas para interpolación , optimización , estadística , HDF5 y aprendizaje automático . El DSL de ILNumerics [ 10 ] está integrado en .NET. Los algoritmos computacionales se formulan utilizando cualquier lenguaje CLI . Sin embargo, solo se recomienda oficialmente C# . Debido al sistema de tipos fuerte del framework .NET, los algoritmos creados con ILNumerics son fuertemente tipados. Esto difiere de la sintaxis de las alternativas , que suelen ser débilmente tipadas y, por lo tanto, más fáciles de adoptar.
Gráficos

ILNumerics utiliza un grafo de escena para generar gráficos. Las aplicaciones WPF y Windows Forms emplean gráficos interactivos en 2D y 3D. El dibujo acelerado por hardware está disponible mediante OpenGL . Se proporciona un renderizador de software completo para hardware antiguo, basado en GDI+, SkiaSharp y SVG .
Integración con IDE

ILNumerics se integra en Visual Studio . Agrega una ventana de herramientas al IDE para la inspección gráfica de objetos matemáticos mientras se recorre el código del usuario. [ 5 ]
Actuación
Dado que ILNumerics se presenta como un ensamblado CLI , está dirigido a aplicaciones de Common Language Infrastructure (CLI). Al igual que Java , estos marcos de trabajo suelen ser criticados por no ser adecuados para cálculos numéricos. Las razones son la gestión de memoria por parte de un recolector de basura , la ejecución del lenguaje intermedio y las optimizaciones deficientes de los compiladores involucrados. ILNumerics aborda estas limitaciones mediante el desenrollado de bucles , la eliminación de comprobaciones de límites en los accesos a matrices y optimizaciones de caché . Se obtiene una mayor aceleración gracias a la gestión automática de la memoria de objetos de matriz grandes. Las rutinas de álgebra lineal dependen de versiones optimizadas específicas del procesador de LAPACK y BLAS .
Los arreglos de ILNumerics utilizan el montón no administrado para almacenar datos. De esta manera, el tamaño de los arreglos de ILNumerics no está limitado por el CLR y se mejora la interoperabilidad con bibliotecas de terceros.
Si bien estas optimizaciones son adecuadas para equiparar el rendimiento de los algoritmos con el de los lenguajes no administrados, la autoparalelización de ILNumerics aporta una ventaja significativa en un nivel superior de granularidad del programa. La capacidad de distribuir automáticamente expresiones de matrices completas en recursos de computación paralela en tiempo de ejecución y el enfoque específico de ILNumerics para identificar el potencial de paralelismo más allá de los cuerpos de bucle simples logran una eficiencia de ejecución única, al tiempo que eliminan la carga de optimización para el programador. [ 11 ]
Véase también
Referencias
- ^ "Centro para el Emprendimiento: Boletín informativo ILNumerics" . Entrepreneurship.tu-berlin.de. Archivado del original el 20 de febrero de 2016. Consultado el 28 de enero de 2016 .
- ^ "BASTA! Premio a la Innovación 2007" . Archivado del original el 27 de febrero de 2006. Consultado el 18 de agosto de 2008 .
- ^ ilnumerics. "NuGet Gallery | ILNumerics 4.8.0" . nuget.org . Nuget.org . Consultado el 10 de junio de 2026 .
- ^ "Preguntas más recientes sobre 'ilnumerics'" . Stack Overflow . Consultado el 28 de enero de 2016 .
- ^ a b "ILNumerics Ultimate VS Visual Studio Extension" . Microsoft . Consultado el 28 de enero de 2016 .
- ^ "Lenguaje de algoritmos numéricos abiertos" . GitHub . Consultado el 10 de junio de 2026 .
{{cite web}}: CS1 mantenimiento: estado de la URL ( enlace ) - ^ "Una implementación de referencia para ONAL (Open Numerical Algorithm Language)" . GitHub . Consultado el 10 de junio de 2026 .
{{cite web}}: CS1 mantenimiento: estado de la URL ( enlace ) - ^ a b Kutschbach, Haymo (2026-06-04), Un procesador virtual trae de vuelta el almuerzo gratis , arXiv, doi : 10.48550/arXiv.2605.30507 , arXiv:2605.30507 , recuperado el 2026-06-10
- ^ "Puntos de referencia de ILNumerics" .
- ^ "Aprende ILNumerics.ONAL en Y minutos" . GitHub . Consultado el 10 de junio de 2026 .
{{cite web}}: CS1 mantenimiento: estado de la URL ( enlace ) - ^ "El compilador acelerador de ILNumerics" . ilnumerics.net . 10 de junio de 2026.
Enlaces externos
- Sitio web oficial
- Artículo sobre bibliotecas matemáticas para .NET en MSDN.
- Software de gráficos 3D
- API de grafos de escena 3D
- lenguajes de programación de matrices
- Bibliotecas de C#
- software de visión artificial
- Software de análisis de datos
- Software de visualización de datos e información
- Software matemático
- Software de análisis numérico para Linux
- Software de análisis numérico para macOS
- Software de análisis numérico para Windows
- Álgebra lineal numérica
- Lenguajes de programación numérica
- Lenguajes de programación orientados a objetos
- OpenGL
- Computación paralela
- Software científico
- Herramientas de programación Unix