Héctor Álvarez
La ley de moore nos menciona que a cada dos años se duplican la cantidad de transistores en un chip.
Gordon Moore, Cofundador de Intel.
Computador Eniac, encargado de calcular tablas balísticas (1943/45).
Raspberry pi zero 2 W, Computador de una sola placa (SBC).
Michigan Micro Mote (M3), 2018.
Gracias a la miniaturización de transistores, podemos crear dispositivos más complejos con menor tamaño.
Lo que alguna vez utilizaba habitaciones completas, hoy lo llevamos en nuestros bolsillos (con creces).
El TRS-80, Creado en 1980 por Sharp, poseía 1.9KB de RAM y dos procesadores de 4 bits, Contenía un interprete de basic. Podía guardar datos en cassettes e imprimir mediante extensiones de hardware.
El Atari Portfolio fue lanzado en 1989 por Atari, contaba con un procesador 80C88 (x86) a 4.9152 MHz y 128KB de RAM operaba con una versión recordada de MS-DOS (dipDOS). Poseía un dock para agregar conectividad y contaba con tarjetas flash de 128kb para almacenar datos.
Apple Newton es una PDA (Personal Digital Assistant) creada por Apple en 1993, Operaba con Newton OS y se programaba sólo con NewtonScript.
Palm Pilot es una PDA Icónica creada en 1997 por Palm inc. 16Mhz y 512 KB RAM. Operaba con PalmOS se programaba en C y Quartus Forth.
Psion Series 5 es una PDA creada por Psion PLC en 1997, poseía un procesador a 18Mhz y 4MB de RAM se programaba en OPL (Open Programming Language) y utilizaba EPOC32 como SO.
El avance tecnológico permitió la miniaturización de las computadoras, permitiéndonos llevar estos dispositivos con nosotros.
Estos dispositivos estaban creados para realizar pocas funciones y su conectividad estaba limitada a 'docks' o periféricos extensores de cada empresa en particular, limitando su interoperabilidad y autonomía.
El Nokia 7650 es considerado el primer 'Smartphone', lanzado entre el 2001 y 2002 poseía un Procesador ARM-9 a 104Mhz, RAM de 4MB y 16MB de almacentamiento. Utilizaba el sistema operativo Symbian OS.
Terminal Nokia E72 creada por Nokia en 2009, procesador ARM11 a 600Mhz, 128MiB RAM y 256MB de almacenamiento, utilizaba Symbian OS v9.3.
Symbian OS fue un sistema operativo diseñado para dispositivos móviles, basado en EPOC32.
El sistema operativo era compatible con una gran cantidad de dispositivos, como lo es Android en la actualidad.
Por su gran proliferación, fue un sistema con una gran cantidad de desarrolladores, se brindaban SDKs para programar con C/C++ y Java (J2ME).
J2ME fue muy popular gracias a su compatibilidad con distintos dispositivos, aunque contaba con muchas limitaciones.
Symbian OS 1998-2012
Iphone, creado por Apple en 2007, de 412Mhz, 128MB RAM y hasta 16GB de almacenamiento; utilizaba iPhone OS.
A mediados del 2007 se lanza al mercado el iPhone, teléfono inteligente de Apple, llevando la computación móvil a otro nivel.
Contaba con gran capacidad de almacenamiento, un procesador potente para un dispositivo de esas características, conectividad multi banda, Bluetooth y Wifi.
Su SDK bien integrado lo hacía un dispositivo fácil de programar.
Su sistema operativo implementó la 'tienda de aplicaciones', que permitía distribuir fácilmente las aplicaciones.
HTC Dream, creado por HTC en el 2008. Terminal con teclado deslizable, CPU de 528 Mhz y 192 MB RAM y 256MB Almacenamiento. Operaba con Android 1.0
Un año después de la salida del primer iPhone, aparece el primer smartphone con el sistema operativo Android, de Google.
El dispositivo era ligeramente inferior al iPhone en algunos aspectos, pero puso al sistema Android en el Radar para futuras colaboraciones.
Android hoy en día es el sistema operativo móvil más usado, ya que posee soporte para distintos dispositivos y cooperaciones con distintos fabricantes.
De la misma forma que iPhone OS (iOS actualmente), posee un mercado centralizado de aplicaciones y su SDK lo hace fácil para empezar a programar.
Actualmente el mercado está dominado por Android e iOs (70% del mercado dominado por Android mientras que iOs alrededor del 28%).
Cada sistema operativo tiene su propio ecosistema de desarrollo y se programan con lenguajes completamente diferentes.
Android:
Lenguajes: Java, Kotlin, C/C++, etc.
Disponibilidad: Windows, GNU/Linux, macOS.
iOS:
Lenguajes: Objetive-C, Swift, etc.
Disponibilidad: macOS
Para desarrollar aplicaciones móviles podemos encontrar una gran variedad de alternativas, cada una con sus ventajas y desventajas.
Model |
Compile to native |
Interpreted (JavaScript) |
|---|---|---|
MVC/MVP/MVVM |
Android SDK(Java, Kotlin) |
Titanium, Cordova, PhoneGap, Ionic, ... |
Reactive |
Flutter, ReasonML |
React Native, NativeScript |
Ionic Framework, nace en el año 2013, en un principio unía el framework AngularJS y Cordova.
Es de fácil introducción ya que solo es necesario un poco de conocimiento HTML y Javascript. Actualmente soporta múltiples frameworks como Angular, VueJS y React.
Es muy útil para reutilizar componentes ya creados en los framework mencionados anteriormente.
Cómo desventaja podemos observar que su rendimiento no es el mejor ya que muchos componentes son “renderizáados” como páginas web utilizando webview.
React native, nace el año 2015 y utiliza los mismos principios que el framework Ionic, aunque con leves diferencias y mejoras.
React native contiene elementos que otorgan un mayor rendimiento en comparación a Ionic, ya que no ejecuta toda la app en un webview, sino que es un híbrido entre componentes gráficos nativos y lógica interpretada.
Sólo el código Javascript es interpretado por su motor interno y todas las llamadas a componentes gráficos se realizan por un render, lo que ayuda bastante al rendimiento y fluidez de la aplicación.
Flutter lanza su versión estable 1.0 a fines del 2018 (las versiones alpha podían obtenerse desde mayo del 2017).
Flutter nos permite desarrollar aplicaciones multiplataforma realmente nativas.
Se desarrolla con el lenguaje de programación Dart, desarrollado por el mismo Google. Por lo que para crear aplicaciones con flutter, el primer paso es revisar las bases de Dart.
Su entorno de desarrollo la hacen de los frameworks más rápidos para poder desarrollar una aplicación, gracias al hot reload de DartVM (en modo debug).
Algunas características de Flutter.
Rápido desarrollo:
Gracias al “hot reload”, puedes debuggear la aplicación más rápido y ver tus cambios aplicados en un par de segundos.
Puedes refrescar la aplicación sin perder el estado actual de lo que estás observando y/o realizar el hot reload reiniciado los estados de toda la aplicación.
Algunas características de Flutter.
Diseño de interfaces:
Podemos realizar múltiples diseños de interfaces, ya sea utilizando Material Design, Cupertino (iOS) o crear un diseño propio, esto sin bajar el rendimiento de la aplicación.
En Flutter cada componente es un Widget (o bloque de interfaz).
Algunas características de Flutter.
Rendimiento de aplicación nativa:
Flutter al momento de generar una aplicación para su distribución (release), compila el código dart a código máquina (directo al procesador sin VMs ni interpretes).
Para desarrollar (debug), utiliza la máquina virtual de Dart para realizar hot reload y ver nuestros cambios sin necesidad de volver a recopilar.
Dart es un lenguaje de programación grado por Google y lanzado el 2013. Tiene una sintaxis parecida a C, Kotlin y TypesScript; es un lenguaje de programación orientado a objetos con recolector de basura (Garbage Collector) similar a Java.
Es utilizado para desarrollar aplicaciones FrontEnd (web), aplicaciones de servidor (Backend), de escritorio y móviles.
Dart posee la particularidad que puede utilizarse en múltiples ambientes (versatilidad):
Web: Dart puede transpilarse a JavaScript para realizar aplicaciones frontend (AngularDart)
Standalone: Un programa en Dart puede ser interpretado por el interprete de Dart como si de Python (aplicaciones de terminal y lado del servidor).
Snapshots: Dart puede generar un snapshot con los datos esenciales para ejecutarse en la máquina virtual de Dart (DartVM). Similar a un ByteCode en Java.
Nativo: Un programa en Dart se puede compilar a código máquina, lo que permite ejecutarlo sin interpretes y compartirlo como un binario optimizado para el CPU.
Para instalar Flutter es necesario descargar Android Studio y el SDK de Dart desde los siguientes enlaces:
https://developer.android.com/studio
https://docs.flutter.dev/get-started/install
Instalar primero Android Studio, luego seguir los pasos del “get started” de Flutter (se destinará una clase para su instalación).