Mostrando entradas con la etiqueta programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta programación. Mostrar todas las entradas

domingo, 10 de junio de 2018

Introducción a la programación con Julia 1.0


Introducción a la programación con Julia
está disponible en Amazon
Os presento el penúltimo libro que he publicado sobre programación (del último dedicado a la programación estadística con R hablaré en los próximos días): Introducción  a la programación con Julia (el índice puede consultarse aquí).

Desde que, por casualidad, empece a probar el lenguaje Julia hace ya algo más de un año, me cautivó por su facilidad de uso. Desde entonces utilizo asiduamente la consola de Julia para todo tipo de operaciones con matrices y para dibujos rápidos de gráficas, aunque lógicamente es un lenguaje de propósito general con infinidad de usos de todo tipo.

Julia (https://julialang.org) es un lenguaje de programación, orientado a las aplicaciones científicas que surge ante la necesidad de disponer de un lenguaje de alto nivel y rápido para el cálculo numérico, técnico y científico. Una de las características de Julia es su alto rendimiento que lo aproximan al de lenguajes compilados como C. Otro de sus aspecto interesantes es que la comunidad de desarrolladores de Julia elabora una gran cantidad de paquetes externos que continuamente amplían sus capacidades.

Julia comenzó a ser desarrollado en 2009 por cuatro científicos informáticos que se habían propuesto crear un lenguaje de alto nivel y rápido; Jeff Bezanson, Stefan Karpinski, Viral B. Shah y Alan Edelman. En 2012 lanzaron el sitio web de Julia y desde entonces se ha creado una comunidad de usuarios y desarrolladores a su alrededor.

Es un lenguaje multiplataforma de forma que puede ejecutarse en Linux, Windows y macOS. Dispone de un compilador en tiempo de ejecución, JIT (Just In Time compiler), lo cual significa que los programas se compilan (se traducen a un lenguaje que los ordenadores pueden entender y ejecutar) en el momento en que se utiliza, a diferencia de otros programas, como C. Julia está diseñado para el cálculo en paralelo y en la nube, dispone de una terminal interactiva de texto, llamada REPL, donde se pueden obtener directamente los resultados a medida que son tecleados.

Una de sus características destacable es que es software libre y puede ser descargado de su página web de forma gratuita. Además, Julia plantea similitudes con otros lenguajes ya establecidos hace tiempo como R (lenguaje de programación estadística, véase la entrada en este mismo blog: Introducción a la programación con R), Python o MATLAB, entre otros. De Julia se puede afirmar que tiene la facilidad de uso de Python y la velocidad de C. Efectivamente, Julia es un lenguaje de programación que no requiere un esfuerzo excesivo para conocerlo, a diferencia de R, por ejemplo, en el que cuesta más conseguir un buen nivel de conocimientos. Julia es relativamente sencillo, lo que hace que la curva de aprendizaje sea similar a la de Python, uno de los programas más usados actualmente por la comunidad científica, debido precisamente a su simplicidad. En 2016 entró en la lista de los 50 lenguajes de programación más usados y en la actualidad continúa ascendiendo en la clasificación. A pesar de ser un lenguaje de programación muy nuevo, con sólo 6 años de existencia, se perfila como uno de los que más crecerán y se utilizarán en un futuro cercano.

Este es el aspecto que tiene este lenguaje, aquí en concreto está programada la solución de una ecuación de segundo grado donde se preguntan los parámetros a, b y c a través del teclado:

function ec2(a, b, c)

  x1 = (-b + sqrt(b^2 - 4 * a * c)) / (2* a)
  x2 = (-b - sqrt(b^2 - 4 * a * c)) / (2* a)
  x = [x1, x2]  return x
end

function main()

  print("a = ")
  a = parse(Float64, readline())
  print("b = ")
  b = parse(Float64, readline())
  print("c = ")
  c = parse(Float64, readline())
  x = ec2(a, b, c)
  println("x1 = ", x[1], "\nx2 =", x[2])
end


main()



Y como ejemplo de lo compacto que puede llegar a ser este lenguaje, la siguiente línea de código devuelve true (verdadero) si x es un número primo o false (falso) si no lo es.
esprimo(x) = x <= 1? false : !in(0, x .% (2:sqrt(x)))

jueves, 6 de julio de 2017

La importancia de los lenguajes de programación

En los últimos tiempos me he convencido de la importancia de la programación para nuestros jóvenes. Enfrentarse a la construcción de un programa supone desarrollar toda una serie de estrategias para resolver un problema. Un programa sólo funcionará si cada instrucción está en el sitio que le corresponde. Esta lógica ineludible que conlleva la programación es un ejercicio que desarrolla el aprender a pensar y la racionalidad de los pensamientos. No basta con el "esto es así, más o menos" sino que el programa "debe ser, exactamente así" de lo contrario no hará lo que debería hacer.

Pero esto no significa que sólo exista una forma de construir un programa, al contrario, la programación es un proceso totalmente creativo donde cada solución es única. No encontraremos dos programas iguales para resolver el mismo problema, cada persona, según sea su forma de pensar, razonar y de afrontar los problemas, hará los programas de uno u otro modo. Programar es un proceso creativo como lo pueda ser la escritura, la música, o la pintura. Es también por este motivo que el placer intelectual que proporciona la resolución de un reto de programación sea difícil de conseguir por otros medios que no sean los puramente artísticos.

Se habla del aprender a pensar y de elaborar criterios propios, tarea para la cual la programación se muestra idónea. También favorece la concentración y el análisis de las situaciones por lo que ayuda a establecer patrones de pensamiento lógico que serán de indudable utilidad en la vida del alumno. La habilidad de programar permite afrontar los problemas científicos desde un punto de vista mucho más cercanos al método empleado por la Ciencia para su desarrollo, es decir al método científico.

Además, hoy más que nunca antes, aprender a programar se ha convertido en una necesidad, no sólo para el ingeniero informático, sino para aquellas personas que se desenvuelven en un ambiente laboral de tipo científico y técnico. El desarrollo de la toma de decisiones a partir del análisis de datos masivos (big data), la inteligencia artificial o la robótica, por poner unos ejemplos, hace que cada vez sea más necesario tener conocimientos de programación. 

El libro Introducción a la programación con R. introduce a R como lenguaje de inicio a la programación. Se pretende que R sea utilizado como primer lenguaje de programación, por lo que se puede aprender a programar partiendo del nivel más básico con un lenguaje de amplia difusión en el mundo de la ciencia y la ingeniería. Es decir, es un libro especialmente pensado para aquellos que necesitan la programación para la resolución de problemas básicos relacionados con el mundo de la ciencia y la técnica. Está diseñado para poder ser impartido a partir del nivel de Educación Secundaria Obligatoria.

¿Por qué R y no otro lenguaje de programación? Porque R es uno de los más utilizados por científicos, en numerosas disciplinas. R es un lenguaje diseñado específicamente para manipular y analizar grandes cantidades de datos y la Ciencia funciona gracias a este análisis de datos. Se podría objetar que C++ o Java son lenguajes mucho más utilizados en el mundo de la programación y esto es cierto, pero lo es para el programador profesional, el ingeniero informático. Sin embargo, me parece mucho más útil enseñar lenguajes de amplia aceptación en la solución de los problemas de la Ciencia que sean usados por médicos, químicos, físicos o biólogos. Python es, indudablemente, otro lenguaje utilizado habitualmente en la ciencia y probablemente sea, junto con Julia, uno de los más idóneos para empezar a programar. Esto nos lleva a la trilogía R - Python - Julia como tres grandes pilares de la programación científica y, probablemente, cada uno tendrá su propio libro como el actual, donde se aprende el lenguaje partiendo desde cero.

El libro se publica en Amazon.com (también en Amazon España) con formato de papel. He optado por el papel en lugar del libro electrónico en formato MOBI, porque los lectores de libros Kindle (los lectores de ebooks de Amazon) no permiten el uso de fórmulas matemáticas en sus libros, de forma que aparecen como una serie de símbolos sin sentido para el lector. Los programas que forman parte de los ejercicios del libro están publicados de forma abierta en: http://intro-r.tiddlyspot.com/.