en Post

Aprendiendo a programar en tu smartphone

Cuándo en 1984 tuve mi primera computadora en casa (una TRS-80 Color Computer) la única alternativa para poder usarla para algo más que jugar era aprender a programar en BASIC. Toda mi generación aprendió a programar porque no existía la amplia variedad de aplicaciones que se pueden encontrar hoy en día en Google Play.

Pero también debo admitir que eran máquinas mucho más sencillas y era cuestion de horas entender completamente el funcionamiento del entorno de desarrollo BASIC y el hardware de nuestras microcomputadoras. Sin embargo ese no es el caso en nuestros días cuándo varias capas de abstracción nos separan del hardware y para muchos su primera computadora ha sido un smartphone o una tablet.

Cuándo veo los tutoriales que existen actualmente en YouTube encuentro mucha información para desarrollo web en sus muy diversas formas, desarrollo de aplicaciones móviles (ya sea híbridas o nativas) o desarrollo de aplicaciones de escritorio. Pero lo que tienen en común todos estos tutoriales es que requieren que se tenga una computadora personal (PC) ya sea en Windows, MacOS o Linux. Sin embargo la computadora que está en las manos y a disposición de los más jóvenes hoy en día es el smartphone.

Pero, ¿se puede aprender programación en un smartphone?, ¿hay disponibles IDE para desarrollo en los lenguajes más populares?, ¿puden trabajar offline o debemos estar conectados a Internet para usarlos?

En este post intentaré responder a las preguntas anteriores y mostraré algunas de la opciones existente.

¿Se puede aprender programación en un smartphone?

La respuesta es que sí. Lo podemos hacer ya sea a través de los emuladores de computadoras de los 80, en cuyo caso estaremos limitados a BASIC o el ensamblador de los microprocesadores de esa época (6502, Z80 o 6809). O a través de lenguajes más contemporáneos como Python, Java o C/C++, que tienen un valor comercial en la actualidad.

¿Hay disponibles IDE para desarrollo en los lenguajes más populares?

La respuesta es sencilla, si. Al menos en la platadorma Android. Desafortunadamente esto no ocurre en iOS. Pero para los que tienen acceso a un smartphone Android aquí un pequeño listado de Apps que permiten desarrollar y por lo tanto aprender a programar en diversos lenguajes:

Pydroid3

Pydroid3 es un IDE educativo gratuito del lenguaje de programación Python 3. Está entre los más fáciles de usar que hay disponibles en la actualidad para Android.

Entre sus principales caracteristicas tenemos:

  • Un intérprete de Python 3.6 que no requiere Internet para ejecutar programas de Python. Es decir una vez instalada la apliación podemos estar offline y aún así ser capaces de desarrollar programas en Python.
  • Incluye un gestor de paquetes PIP y un repositorio personalizado para paquetes precompilados entre los cuales podemos encontrar bibliotecas científicas adaptadas al smartphone, como numpy, scipy, matplotlib, scikit-learn y jupyter.
  • Incluye algunos ejemplos disponibles en la instalación por defecto para permitir un aprendizaje más rápido.
  • Soporte Tkinter completo para programas que necesitan un GUI.
  • Un Terminal Emulator con todas las funciones, con soporte de línea de lectura.
  • Si no se sabe programar este es un buen punto de inicio.

Cxxdroid

Cxxdroid es un IDE gratuito de propósito educatios para desarrollar programas en C/C++ para Android.

Dentro de sus características más importantes tenemos:

  • Incluye un compilador de C/C++ offline, que no requiere Internet para poder programar.
  • Incluye un gestor de paquetes y un repositorio personalizado con paquetes precompilados para bibliotecas comunes, como pueden ser Boost, SQLite, ncurses, libcurl, etc.
  • Emulador de terminal con todas las funciones.
  • Un modo de intérprete C/C++ (REPL) basado en CERN Cling también disponible para pruebas.
  • La interfaz de usuario ha sido diseñada teniendo en cuenta la velocidad y la facilidad de uso en una pantalla táctil.
  • Incluye un compilador verdadero, no hay intérpretes basados en Java (ni siquiera en Javascript), incluso se admite el lenguaje de ensamblador en línea (sintaxis de Clang).

El lenguaje de programación C y el C++ tienen una curva de aprendizaje mayor que Python, así que no lo recomendaría como el primer lenguaje de programación que intenten aprender. Sin embargo, es un lenguaje bastante potente y debe estar entre los lenguajes que conocemos ya que muchos otros lenguajes derivan de su sintaxis.

Algo que he notado en esta aplicación es que debido a la naturaleza del lenguaje (compilado), para obtener resultados se debe esperar un tiempo superior que el de Pydroid3.

Para poder usar esta aplicación de una manera fluida recomendaría contar con un smartphone con un SoC de la serie 600 y al menos 2 GB de RAM.

Jvdroid

Jvdroid es un IDE para Java, sin embargo no es gratuito.

Entre sus principales características tenemos:

  • Incluye un compilador Java fuera offline que no requiere Internet para ejecutar programas Java.
  • Está basado en OpenJDK 11 que es una versión OpenSource de Java a través de la cuál se puede disfrutar del soporte de los últimos estándares y usar las bibliotecas de archivos jar que se desee.
  • Soporte de proyectos y bibliotecas con Maven.
  • Incluye un conjunto de ejemplos en la instalación por defecto que tienen por objetivo favorecer un aprendizaje más rápido.
  • Incluye un emulador de terminal con todas las funciones.
  • El modo de intérprete de Java (REPL) está basado en JShell.
  • Excelente rendimiento del compilador con Facebook Nailgun.
  • Tambien se pueden contruir programas en Kotlin, Scala y Clojure utilizando Maven (aunque se debe tener en cuenta que no se proporciona predicción y análisis de código para estos lenguajes de programación).

Aunque $10 no es costoso, si aún se está estudiando y es el presupuesto es limitado hay otras opciones.

Java N-IDE

Este es un proyecto comunitario y gratuito de código abierto que tiene por objetivo ayudar a aprender Java en Android y utiliza el JDK 1.7.

Aunque oficialmente no está soportado por el proyecto, en teoría se podrían generar apk (aunque solamente con soporte para las siguientes arquitecturas: armeabi-v7a y x86).

Entre las principales características tenemos:

  • Compilador Java offline (admite JDK 1.5, 1.6. 1.7 o superior si su dispositivo lo soporta).
  • El código Java se completa automáticamente cuando se escribe.
  • Permite construir aplicaciones de Android.
  • Permite construir una librería Java.
  • Formateador de código Java (utiliza el formateador de código Java de Google)
  • Android Logcat

Definitivamente, la interfaz no es el punto fuerte de esta apliación, pero nos pertime aprender a programar en Java sin necesidad de gastar un dólar.

Espero la información compartida en este post sea de utilidad.