– Python

Python es un lenguaje de programación interpretado, cuya filosofía hace hincapié en una sintaxis muy limpia y un código legible. Aquí les presento una lista de razones para aprender Python.

Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis muy limpia y un código legible. Aquí les presento una lista sobre las razones de aprender python.

Es una buena alternativa para optar por este lenguaje en el mundo de la programación, puesto que es un lenguaje muy sencillo y fácil.

Su sintaxis es fácil de entender puesto que es cercana al lenguaje natural, y los programas hechos en Python parecen pseudocódigos, lo cual brinda una gran ayuda en su mantenimiento.

Su código es más organizado evitando el uso del signo de punto y coma al final de cada sentencia y también evita el uso de llaves para especificar que dicho bloque de código pertenece a una sentencia. Para esto Python hace uso de la indentación, la cual esta representada por un bloque de 4 espacios, teniendo así un código legible.

 

def suma(numero1, numero2):

  return numero1 + numero2

 

Es de código abierto, nos permite crear nuestras aplicaciones e involucrarnos en su desarrollo.

Tiene tipado dinámico, esto se refiere a que su tipo de dato se determinará en tiempo de ejecución, según el valor que se le asigne a una variable.

Es multiplataforma y está disponible en muchas plataformas, entre las más comunes son windows, mac y distribuciones unix/Linux.

Es multiparadigma permitiendo la programación imperativa, orientada a objetos y funcional.

Tiene una gran comunidad dispuesta a ayudarnos con nuestro código.

Javascript

1.- Es fácil iniciarse a la programación con él

Dado que no hay nada que instalar o configurar, ni requisitos previos de ningún tipo, no hay lenguaje de programación hoy en día que esté tan al alcance de la mano de cualquiera. El propio navegador que estás usando para leer esto tiene incorporado todo lo que necesitas para empezar a probar código JavaScript. Si no me crees pulsa la tecla F12 ahora mismo y puedes comprobarlo 😉

Los fundamentos del lenguaje son sencillos y permiten escribir código sin complicarse la vida antes. Si pretendes aprender un framework como .NET, Ruby On Rails o Java, antes de poder escribir la primera línea de código tienes que entender muchas cosas: la arquitectura de la plataforma y sus componentes, las herramientas de desarrollo, convenciones propias de los proyectos, conceptos de orientación a objetos, etc, etc… En JavaScript puedes escribir tu primer programa sencillo a los 2 minutos de empezar a estudiarlo, aproximadamente.

Y esto anima mucho a continuar y actúa de lubricante para que el aprendizaje transcurra sin grandes roces entre tú y el lenguaje. Y como todo el mundo sabe, la mejor manera de aprender a programar es programando. Y el auto-descubrimiento de conceptos, el poder ir avanzando poco a poco desde el primer momento sin tener que preocuparte de detalles innecesarios ayudan mucho a esto. Y JavaScript es ideal para esto.

Sobre todo si estás empezando en el mundo de la programación, esto es especialmente importante. Existen una serie de cuestiones y conceptos que son universales y que se utilizan en todos los lenguajes de programación: variables, matrices, cadenas, métodos y funciones, bucles, condicionales, objetos, herencia…. y también entender y acostumbrarse a la lógica que hay detrás de cualquier programa. Esos conceptos fundamentales son transversales a todos los lenguajes. Cuando los dominas en uno te sirven para toda la vida en cualquier otro lenguaje que decidas aprender. Por eso cuanto antes los aprendas mejor, y JavaScript te permitirá aprenderlos muy rápido.

2.- Es un lenguaje versátil

Aunque JavaScript sea más sencillo que otros lenguajes no quiere decir que sea simple o poco sofisticado. Son cosas muy diferentes. De hecho una de las bellezas de este lenguaje es que no te restringe a un único estilo de programación. Así, JavaScript es multi-paradigma y es a la vez:

  • Un lenguaje procedural tradicional
  • Un lenguaje funcional
  • Imperativo
  • Dinámico en cuanto a tipos
  • Orientado a eventos
  • Orientado a objetos

De este modo no te limita a la hora de elegir un estilo de programación concreto y, de hecho, te permite aprender y adoptar varios de ellos, de manera que luego puedas usarlos con otros lenguajes o en otras plataformas. Es una base de aprendizaje estupenda para luego cambiar si es necesario.

3.- JavaScript está en todas partes

JavaScript hoy en día está presente en prácticamente cualquier ámbito:

El alcance es increíble. La promesa que hacia Java hace más de 20 años de “Write once, run everywhere” ningún otro lenguaje ha estado tan cerca de conseguirla como JavaScript. Ni siquiera el propio Java (que por cierto, no tienen nada que ver entre sí).

Y es que, parafraseando a Marc Andreessenla Web se está comiendo el mundo. Y pronto HTML+CSS+JavaScript estará en todas partes.

Si nos centramos en la web hoy en día puedes usar JavaScript como tu único lenguaje de programación, desde el cliente hasta el servidor pasando por la base de datos. El famoso stack MEAN (MongoDB + Express + AngularJS + NodeJS) utiliza JavaScript como único lenguaje:

MEAN_750

En esa figura TODO lo que ves está basado en JavaScript. Hasta el intercambio de datos.

 

Sí, está claro que hoy en día el sesgo  del lenguaje es más hacia la Web, pero cada vez abarca más ámbitos y la tendencia es que sea un lenguaje totalmente universal. Y es que JavaScript está explotando como lenguaje de programación de propósito general.

4.- Tiene mucha demanda de trabajo

Si tu objetivo es trabajar de programador, creo que sería difícil elegir cualquier otro lenguaje que ofrezca las mismas posibilidades que JavaScript.

Hasta lo ha dicho el gobierno en el BOE: el puesto de programador web es uno de los más demandados en el mercado de trabajo. Y no puedes ser programador web sin dominar JavaScript.

Nosotros ya nos hemos hecho eco en varias ocasiones de las tendencias del mercado laboral y consistentemente JavaScript y tecnologías relacionadas (jQuery, HTML y CSS…) está entre los lenguajes más demandados por las empresas. Incluso para novatos. En otros países pasa lo mismo. Por ejemplo, en EEUU está asumido que JavaScript es el lenguaje más demandado por las startups.

Por supuesto no llega con saber solo JavaScript, pero si vas a ser desarrollador front-end, solo con HTML, CSS, JavaScript y jQuery te puedes labrar una carrera profesional.

5.- Porque, quieras o no, acabarás por utilizarlo

Si eres (o pretendes ser) programador profesional sería muy extraño que no tengas que usar JavaScript en algún momento. Y en los próximos años con más razón todavía.

Internet es ya parte de TODO, y salvo que te dediques a crear drivers o algo similar de muy bajo nivel, tarde o temprano tendrás que hacer algo que involucre la Red. Y eso implica JavaScript. Aunque no seas programador web ni quieras serlo. Que ¿tienes que usar una API para comunicarte con un servicio?: JavaScript. ¿Una base de datos NoSQL de alto rendimiento y escalable?: JavaScript. ¿Una versión móvil multiplataforma y creada en poco tiempo de tu aplicación de gestión?: casi seguro JavaScript…

Puedes cerrar los ojos y hacer caso omiso, pero el mundo a tu alrededor gira cada vez más en torno a JavaScript.

– – Elixir

José Valim decidió crear un lenguaje para aumentar la productividad en la plataforma Erlang y lo consiguió. El nombre de este lenguaje es Elixir.

Elixir es lenguaje de programación de propósito general, concurrente; este lenguaje es funcional. Además esta construido sobre la máquina virtual de Erlang. Se trata de un lenguaje dinámico con una sintaxis flexible y apoyado en macros; que aprovecha las capacidades de Erlang para construir aplicaciones concurrentes y distribuidas, tolerables a fallos, con actualizaciones de código en caliente. Elixir también soporta pattern matching, el polimorfismo a través de protocolos (similar a Clojure), alias y estructuras de datos asociativos (generalmente conocido como hashes en otros lenguajes de programación).

Por útimo, Elixir y Erlang comparten el mismo byte code. Esto significa que puede invocar código Erlang de Elixir (y viceversa) sin ningún tipo de transformación o impacto en el rendimiento. Esto permite a los desarrolladores mezclar la expresividad de Elixir con la robustez y el rendimiento de Erlang.

Veamos un ejemplo, es bueno comenzar con un “hola mundo” pero para hacerlo más interesante vamos a hacerlo dentro de un modulo:

defmodule Hello do
  IO.puts "Defining the function world"

  def world do
    IO.puts "Hello World"
  end

  IO.puts "Function world defined"
end

Hello.world

Los módulos son simplemente una forma lógica de organizar el código, no se debe confundir con una clase, ya que no tiene propiedades.

Este código retorna:

Defining the function world
Function world define
Hello World

Si queremos probar el ejemplo solo debemos guardar el ejemplo como Hello.ex y luego debemos compilar, para eso ejecutamos el relp de Elixir y compilamos de la siguiente manera:

Interactive Elixir
iex> c("Hello.ex")
[Hello]
iex> Hello.hello
Defining the function world
Function world define
Hello World
:ok

Elixir tiene varias características que lo hacen un muy buen lenguaje para programar, como por ejemplo tiene pattern matching, veamos un ejemplo:

def serve_drinks({ User, name, age }) when age < 21 do
  raise "No way #{name}!"
end

def serve_drinks({ User, name, age }) do
  # Code that serves drinks!
end

serve_drinks User.get("John")
#=> Raises "No way John!" if John is under 21

Otra característica interesante es que la documentación es muy importante para elixir. Por lo que provee mecanismos que facilitan documentar nuestro código, veamos un ejemplo:

defmodule MyModule do
  @moduledoc """
  Documentation for my module. With **formatting**.
  """

  @doc "Hello"
  def world do
    "World"
  end
end

Y como es de esperar, Elixir provee herramientas que facilitan el acceso a la documentación.

iex> h MyModule
# MyModule

Documentation for my module. With **formatting**.

Elixir es un lenguaje que nació para facilitar el desarrollo en la plataforma Erlang y vaya que lo logro!

Más información | Elixir

– – Rust

¿Es Rust un lenguaje en el cual estarías interesado? Examinemos unos pequeños ejemplos de código que demuestran algunas de sus fortalezas.

El concepto principal que hace único a Rust es llamado ‘pertenencia’ (‘ownership’). Considera este pequeño ejemplo:

fn main() {
    let mut x = vec!["Hola", "mundo"];
}

Este programa crea un una variable llamada x.El valor de esta variable es Vec<T>, un ‘vector’, que creamos a través de una macro definida en la biblioteca estandar. Esta macro se llama vec, las macros son invocadas con un !. Todo esto siguiendo un principio general en Rust: hacer las cosas explícitas. Las macros pueden hacer cosas significativamente más complejas que llamadas a funciones, es por ello que son visualmente distintas. El ! ayuda también al análisis sintáctico, haciendo la escritura de herramientas más fácil, lo cual es también importante.

Hemos usado mut para hacer x mutable: En Rust las variables son inmutables por defecto. Más tarde en este ejemplo estaremos mutando este vector.

Es importate mencionar que no necesitamos una anotación de tipos aquí: si bien Rust es estaticamente tipado, no necesitamos anotar el tipo de forma explicita. Rust posee inferencia de tipos para balancear el poder de el tipado estático con la verbosidad de las anotaciones de tipos.

Rust prefiere asignación de memoria desde la pila que desde el montículo: x es puesto directamente en la pila. Sin embargo, el tipo Vec<T> asigna espacio para los elementos del vector en el montículo. Si no estas familiarizado con esta distinción puedes ignorarla por ahora o echar un vistazo ‘La Pila y el Monticulo’. Rust como un lenguaje de programación de sistemas, te da la habilidad de controlar como la memoria es asignada, pero como estamos comenzando no es tan relevante.

Anteriormente mencionamos que la ‘pertenencia’ es nuevo concepto clave en Rust. En terminología Rust, x es el ‘dueño’ del vector. Esto significa que cuando x salga de ámbito, la memoria asignada a el vector sera liberada. Esto es hecho por el compilador de Rust de manera deterministica, sin la necesidad de un mecanismo como un recolector de basura. En otras palabras, en Rust, no haces llamadas a funciones como malloc y free explícitamente: el compilador determina de manera estática cuando se necesita asignar o liberar memoria, e inserta esas llamadas por ti. Errar es de humanos, pero los compiladores nunca olvidan.

Agreguemos otra línea a nuestro ejemplo:

fn main() {
    let mut x = vec!["Hola", "mundo"];

    let y = &x[0];
}

Hemos introducido otra variable, y. En este caso, y es una ‘referencia’ a el primer elemento de el vector. Las referencias en Rust son similares a los apuntadores en otros lenguajes, pero con chequeos de seguridad adicionales en tiempo de compilación. Las referencias interactuan con el sistema de pertenencia a través de el ‘prestamo’ (‘borrowing’), ellas toman prestado a lo que apuntan, en vez de adueñarse de ello. La diferencia es que cuando la referencia salga de ámbito, la memoria subyacente no sera liberada. De ser ese el caso estaríamos liberando la misma memoria dos veces, lo cual es malo.

Agreguemos una tercera línea. Dicha línea luce inocente pero causa un error de compilación:

fn main() {
    let mut x = vec!["Hola", "mundo"];

    let y = &x[0];

    x.push("foo");
}

push es un metodo en los vectores que agrega un elemento al final del vector. Cuando tratamos de compilar el programa obtenemos un error:

error: cannot borrow `x` as mutable because it is also borrowed as immutable
    x.push("foo");
    ^
note: previous borrow of `x` occurs here; the immutable borrow prevents
subsequent moves or mutable borrows of `x` until the borrow ends
    let y = &x[0];
             ^
note: previous borrow ends here
fn main() {

}
^

¡Uff! El compilador de Rust algunas veces puede proporcionar errores bien detallados y esta vez una de ellas. Como el error lo explica, mientras hacemos la variable mutable no podemos llamar a push. Esto es porque ya tenemos una referencia a un elemento del vector, y. Mutar algo mientras existe una referencia a ello es peligroso, porque podemos invalidar la referencia. En este caso en especifico, cuando creamos el vector, solo hemos asignado espacio para dos elementos. Agregar un tercero significaría asignar un nuevo segmento de memoria para todos los elementos, copiar todos los valores anteriores y actualizar el apuntador interno a esa memoria. Todo eso esta bien. El problema es que y no seria actualizado, generando un ‘puntero colgante’. Lo cual esta mal. Cualquier uso de y seria un error en este caso, y el compilador nos ha prevenido de ello.

Entonces, ¿cómo resolvemos este problema? Hay dos enfoques que podríamos tomar. El primero es hacer una copia en lugar de una referencia:

fn main() {
    let mut x = vec!["Hola", "mundo"];

    let y = x[0].clone();

    x.push("foo");
}

Rust tiene por defecto semántica de movimiento, entonces si queremos hacer una copia de alguna data, llamamos el método clone(). En este ejemplo y ya no es una referencia a el vector almacenado en x, sino una copia de su primer elemento, "Hola". Debido a que no tenemos una referencia nuestro push() funciona perfectamente.

Si realmente queremos una referencia, necesitamos otra opción: asegurarnos de que nuestra referencia salga de ámbito antes que tratamos de hacer la mutación. De esta manera:

fn main() {
    let mut x = vec!["Hola", "mundo"];

    {
        let y = &x[0];
    }

    x.push("foo");
}

Con el par adicional de llaves hemos creado un ámbito interno. y saldrá de ámbito antes que llamemos a push(), entonces no hay problema.

Este concepto de pertenencia no es solo bueno para prevenir punteros colgantes, sino un conjunto entero de problemas, como invalidación de iteradores, concurrencia y más.

– – Swift

Cada día es más importante tener algunos conocimientos de programación, pero esta demanda irá creciendo y en un futuro muy cercano este conocimiento será algo que todo el mundo deberá dominar al igual que ya pasa con el dominio del inglés. Pero el día que te lo propongas tendrás que decidir qué lenguaje aprender. En este post de damos 5 razones por las que el elegido debe ser Swift.

Swift,creado por Apple, lanzó su primera versión en 2014. En diciembre de 2015 lo declararon un lenguaje Open Source y en septiembre de 2016 lanzaron la versión estable Swift 3. A continuación te damos cinco razones para que comiences curso de Swift 3 y tomar ventaja dentro del mundo del desarrollo de aplicaciones móviles.

1. Swift no es un lenguaje exclusivo de iOS

Como ya hemos comentado, en diciembre de 2015, Swift pasó a ser código abierto, dando así una posible cabida del lenguaje en grandes marcas como Google, Facebook o Uber. Cada vez son más los rumores que apuntan a que Google puede plantearse usar Swift como un lenguaje first-class en Android. Es por ello que Swift tiene un futuro muy prometedor y con gran inserción de mercado al convertirse en lenguaje nativo multiplataforma.

2. Swift es un leguaje de reciente creación

Lo que puede parecer algo negativo o de poco aporte, se convierte en una gran oportunidad. Ahora tienes la oportunidad de aprender un leguaje donde no hay demasiada competencia y donde conocer toda su evolución a la par que el propio lenguaje.

3. Swift tiene una curva de aprendizaje menor que otros lenguajes

A diferencia de otros lenguajes de programación, Swift 3 tiene una curva de aprendizaje muy cómoda que no requiere de grandes conocimientos previos. Con unos conceptos básicos de programación podrás comenzar a desarrollar aplicaciones. Y por si fuera poco podrás hacer uso de Swift Playgrounds, una app gratuita para practicar con Swift fácilmente desde el iPad.

4. Swift es el futuro de la programación

Swift ya es presente y futuro de las aplicaciones nativas iOS y, teniendo en cuenta que todo apunta a que también podría ser incorporado por Android, Swift se convierte en un referente de futuro en lo que a desarrollo de apps se refiere.

5. Swift recibe nuevos apoyos a diario

El ejemplo de IBM Swift Sandbox es sólo uno de los mucho apoyos que Swift está teniendo. Con IBM Swift Sandbox tienes una herramienta para ejecutar código sobre Linux en una web dividida en dos pantallas. En la pantalla izquierda podrás escribir código y en la derecha comprobar el resultado.

Mas Videos