**Computación Científica y Julia**
Máster Propio en Data Science y Big Data $\mathbf{24/25}$
Dpto. Ciencias de la Computación e Inteligencia Artificial - Universidad de Sevilla
!!!ejemplo: Contenido
0. [Transparencias](CompCientJuliaSlides.md.html)
0. [Computación Científica (y Julia)](ComputacionCientificaJulia.html)
1. [Toma de Decisiones y Aprendizaje por Refuerzo (en Julia)](RLJulia.md.html)
!!!ejemplo: Julia y la Programación Científica
[**Julia**](https://julialang.org/) es un lenguaje de programación **homoicónico** (palabra rebuscada para decir que la representación primaria de los programas escritos en Julia es también una estructura de datos en un tipo primitivo del lenguaje), **multiplataforma**, **multiparadigma** (se adapta al estilo del usuario y la necesidad del problema, pudiendo mostrar características de programación funcional, imperativa, declarativa, etc.), de **tipado dinámico** (aunque puede pasarse a un tipado estático si se considera más adecuado), de **alto nivel** y alto desempeño para la **computación genérica, técnica y científica**, con una sintaxis similar a la de otros entornos de computación similares.
Dispone de un compilador avanzado con ejecución principalmente en modo **JIT** (Just in Time), mecanismos para la ejecución paralela y distribuida, además de una extensa biblioteca de funciones matemáticas. La biblioteca, desarrollada fundamentalmente en Julia, también contiene código desarrollado en C o Fortran, proporcionando librerías para el álgebra lineal, álgebra abstracta, cálculo real, generación de números aleatorios, procesamiento de señales, aprendizaje automático, ciencia de datos, procesamiento de cadenas, programación paralela, etc. Adicionalmente, la comunidad de desarrolladores de Julia contribuye con la creación y distribución de paquetes externos a un paso acelerado a través del [gestor de paquetes](https://juliapackages.com/) integrado en Julia.
Además, hay muchos entornos de programación (como [VSCode](https://code.visualstudio.com/), [Atom](https://atom.io/), etc.) que proporcionan extensiones específicas para facilitar el trabajo con Julia, así como sistemas de notebooks que permiten usar Julia como lenguaje de desarrollo ([Jupyter/JupyterLab](https://jupyter.org/), y [Pluto](https://www.juliapackages.com/p/pluto)) o entornos interactivos como [IJulia](https://juliapackages.com/p/ijulia).
!!!alg: Algunos recursos para Julia
* [Instalación y Ecosistema de Julia: `juliaup`](installJulia.md.html)
* [Paquetes y Entornos de Julia](PkgEnv.md.html)
* [Manual Rápido de Programación](Julia.md.html)
* [Manual de Julia Plots](Plots.md.html)
* [Colección: Beautiful Algorithms](https://github.com/mossr/BeautifulAlgorithms.jl)