Lenguaje científico del Futuro

 

Clase 1: Instalación y Visión General

¿Cómo utilizar esta presentación?

  • En ​Chrome: presionar F12, y después > "Consola" 
  • En IE: presionar F12, y después > "Consola"
  • En FIREFOX: presionar Ctrl+Shift+k

Cada hoja tiene mis notas de presentación.

Abreviaciones Teclado

  • ↓, PgDn, n, j    Siguiente Hoja
  • ↑, PgUp, p, k   Anterior Hoja
  • Esc                   Permite el uso de CTRL-f

Instructor

David Cardozo

david.cardozo@me.com
gd.cardozo684@uniandes.edu.co

O(exp \sqrt[3]{ \frac{64}{9} b ( \log b)^ 2 }
O(exp649b(logb)23O(exp \sqrt[3]{ \frac{64}{9} b ( \log b)^ 2 }

Ciencias Computacionales

  • Usualmente los científicos no tienen un entrenamiento formal en ingeniería de software.
  • Ingenieros de software raramente encuentran problemas que tengan requerimientos de rendimiento tan demandantes como en problemas científicos
  • Solamente mediante el entendimiento de ambas partes del problema podemos producir soluciones adequadas.

ENTER
JULIA
 

¿Que es Julia?

  • Un nuevo lenguaje de programación (publico desde 2012)
  • Hecho en MIT, Julia Computing
  • Enfocado en aplicaciones de computo científico
  • Apunta a ser un lenguaje de alto nivel que también es rápido para simulaciones
    • fácil de aprender y flexible como python
    • con 2x la velocidad de C,C++ o FORTRAN

Razones para considerar Julia 

  • Escribes tus propios algoritmos.
  • Necesitas escribir código que es muy rápido
  • Te gustaría prototipar y optimizar dentro del mismo lenguaje
  • Escribir al mismo tiempo código en C, Python y C++
  • Tener acceso a los últimos algoritmos en diferenciación automática y optimización
  • Usar letras griegas como nombres de variables
  • Interés en el diseño de lenguajes de programación

Mis herramientas de trabajo en 2010

En un solo proyecto, estaba utilizando:

  • Matlab para álgebra lineal
  • R para estadística y visualización
  • C para las cosas rápidas
  • Ruby para unir las cosas

"systems languages"

estáticos

compilados

user types

rápidos

díficiles

"scripting languages"

dinámicos

interpretados

standard types

lentos

fáciles

 

El problema de los dos lenguajes

El problema de los dos lenguajes

Debido a esta diferenciación, se obtienen dos compromisos:

  • Para conveniencia usar un lenguaje de script (Python, R, Matlab)
  • Para hacer las cosas pesadas hacerlo en un system language (C, C++, Fortran) 

La unificación Juliana

Julia

dinámico

compilado

user types y standard types

rápido 

sencillo

 

 

Velocidad

dgromov@dgromov-Lenovo-B570:~/Documents/Julia$ julia
               _
   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: http://docs.julialang.org
   _ _   _| |_  __ _   |  Type "?help" for help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 0.5.0 (2016-09-19 18:14 UTC)
 _/ |\__'_|_|_|\__'_|  |  
|__/                   |  x86_64-linux-gnu

julia> 

El poder de la línea de comandos (REPL)

               _
   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: http://docs.julialang.org
   _ _   _| |_  __ _   |  Type "?help" for help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 0.5.0 (2016-09-19 18:14 UTC)
 _/ |\__'_|_|_|\__'_|  |  
|__/                   |  x86_64-linux-gnu

julia> x = 10
10

julia> 2x
20

julia> 2*x
20

julia> 

Asignacíon y evaluacíon

               _
   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: http://docs.julialang.org
   _ _   _| |_  __ _   |  Type "?help" for help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 0.5.0 (2016-09-19 18:14 UTC)
 _/ |\__'_|_|_|\__'_|  |  
|__/                   |  x86_64-linux-gnu

help?> linspace
search: linspace LinSpace

  linspace(start, stop, n=50)

  Construct a range of n linearly spaced elements from start to stop.

julia> 

¿Dónde consigo ayuda?

               _
   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: http://docs.julialang.org
   _ _   _| |_  __ _   |  Type "?help" for help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 0.5.0 (2016-09-19 18:14 UTC)
 _/ |\__'_|_|_|\__'_|  |  
|__/                   |  x86_64-linux-gnu

julia> A_simétrica = randn(3,3) |> t -> t + t'
3×3 Array{Float64,2}:
 -0.226926   0.361216   -0.212612 
  0.361216  -0.980483    0.0696489
 -0.212612   0.0696489  -1.08299  

julia> λ = eigmax(A_simétrica)
-0.05272142006674203

UTF-8 y la magia en Español

¿ Cómo hacer la lambda en la consola?

Instalación en Windows 

Link:http://julialang.org/downloads/

cmd > Julia

Buscamos la opción *.exe y utilizamos la versión de 64bits. 

Una introducción a Julia

By David Cardozo

Una introducción a Julia

Crash course en Julia en español.

  • 846