El desarrollo de aplicaciones de software comenzó con aplicaciones de escritorio, que solo podían usarse en ordenadores independientes. Los procesadores de texto, programas administrativos, editores de video, antivirus, programas educativos, reproductores multimedia, navegadores web, se pueden considerar aplicaciones de escritorio típicas, mientras que un carrito de compras en línea en un sitio de comercio electrónico puede considerarse una aplicación web. Por definición, una aplicación de escritorio significa cualquier software que pueda instalarse en un ordenador (sea portátil o de escritorio) y utilizarse para realizar tareas específicas.
En algunos casos, las aplicaciones de escritorio también pueden ser utilizadas por varios usuarios en un entorno de red / servidor, en donde la base de datos se instala, normalmente, en un servidor y la aplicación de escritorio lo que hace es leer y actualizar dicha base de datos. Sin embargo, la aplicación como tal se ejecuta desde el propio ordenador, usando y consumiendo recursos de memoria, procesador y a mayor o menor medida, espacio en disco duro.
Esto permite que la aplicación se ejecute de forma más expedita que otros tipos de aplicaciones que existen en la actualida. Además, que no dependa de la rapidez o estabilidad de una conexión mediante el uso de internet o de un servidor externo a la empresa.
En el desarrollo de software, uno de los principales problemas que surgen es lograr la portabilidad de las aplicaciones; es decir, la capacidad de instalarse y ejecutarse en diferentes plataformas. Los desarrolladores de aplicaciones de escritorio se enfrentan especialmente a este problema, ya que estas aplicaciones están diseñadas para su uso en ordenadores personales. Cuantas más plataformas sean compatibles, más extendida estará la aplicación, a medida que aumente el número de usuarios potenciales.
Uso de herramientas
En las aplicaciones compiladas de forma nativa, la portabilidad se logra mediante el uso de herramientas. Estas son capaces de transformar el código fuente en código de máquina o ejecutable con el formato compatible con el sistema operativo que interesa. Estas herramientas se conocen comúnmente como cadena de herramientas o toolchain (editor de texto para editar el código fuente, compilador, enlazador, bibliotecas, depurador, etc.) y varían de una plataforma a otra. Incluso el código fuente puede variar en ciertos detalles, dependiendo de la plataforma de destino.
Por lo tanto, el esfuerzo por desarrollar y mantener una aplicación crece con la cantidad de plataformas compatibles. Otro enfoque muy diferente y, a su vez, más práctico refiere a los lenguajes basados en máquinas virtuales. La idea es diseñar la especificación de una arquitectura computacional, la máquina virtual, con su propio código de máquina llamado bytecodes, que se puede implementar como una aplicación de software en las diferentes plataformas existentes. De esta forma, con un único proceso de construcción (compilación) del código fuente, se garantiza la ejecución de la aplicación en cualquier plataforma donde exista una instancia de la máquina virtual.
El lenguaje de programación Java, es el caso más conocido de este modelo. Otros lenguajes que usan este modelo son: Python, PHP o Javascript. Aunque, solo Java y Python se han utilizado tradicionalmente en el desarrollo de aplicaciones de escritorio. Así, estrictamente hablando, una aplicación es multiplataforma cuando ha sido construida para varias plataformas diferentes. Por tanto, puede ser empleada en cualquiera de ellas, ya sea compilada directamente o basada en una máquina virtual.
Ventajas principales
- Pueden ser más estables y robustas.
- Tiempo de respuesta más rápido.
- Se pueden usar interfaces de alta resolución y/o complejas o animadas.
- Facilita el uso de teclas rápidas.
- Normalmente, el almacenaje de datos se encuentra alojado en la misma instalación física. No se depende de servicios de terceros para acceder a él.
- En seguridad, si se desea que ningún ente externo a la empresa pueda acceder a la información, se puede hacer un anillo cerrado, en donde no exista medios externos de conexión física, aunque el sistema sigue interactuando perfectamente dentro de la red interna y es invisible para el mundo.
Desventajas
- Requieren instalación en cada cliente.
- Pueden ser incompatibles o generar fallas en diferentes sistemas operativos.
- Se requiere actualizar en cada cliente.
- Pueden quedar rápidamente en desuso si existen cambios importantes en la tecnología.
Desarrollo de aplicaciones: lenguaje de programación
Un lenguaje de programación es, en términos simples, el medio que tienen los humanos de dar instrucciones a los ordenadores a través del uso de un conjunto de instrucciones para obtener un resultado deseado. Un lenguaje de programación permite la comunicación con los ordenadores utilizando algoritmos e instrucciones escritas en una sintaxis que el ordenador entiende e interpreta en lenguaje de máquina: 0 o 1, en otras palabras: hay voltaje – no hay voltaje / verdadero – falso / si – no / entre muchas otras interpretaciones que se pueden dar.
La información es almacenada en los discos rígidos, memorias y otros medios físicos, así como procesada por la CPU, mediante el empleo de varios componentes que integran el ordenador. Para el año de 1801, Joseph Marie Jacquard fue el inventor del telar programable mecánico, esta concepción aportó su grano de arena para el utilización del código binario en la informática.
Se estima que este fue el primer lenguaje de programación, ya que esta idea de las tarjetas perforadas fue usada en las primeras máquinas informáticas creadas por Charles Babbage, más tarde por los primeros ordenadores y lo demás ya es historia. Los lenguajes de programación permiten, a través de la generación de rutinas de programación, que los ordenadores procesen grandes y complejas cantidades de información de manera rápida, eficiente y, prácticamente, con una tasa de error muy cercana al cero absoluto.
Tipos de lenguajes de programación
- Lenguaje de bajo nivel: refiere a lenguajes totalmente orientados a las máquinas. Este lenguaje actúa como una interfaz y crea un vínculo inseparable entre hardware y software. A su vez, se clasifica en dos tipos:
- Lenguaje de máquina. Es el más primitivo de los lenguajes, en donde a través de una serie de bits, los ordenadores procesan alguna rutina previamente programada. Ejemplo: 10111101 00110011 11110011 y así cientos o millones de bits más.
- Lenguaje ensamblador (Assembler): es el primer intento de reemplazar el lenguaje de máquina con uno más cercano al que usan los humanos. Un programa escrito en este lenguaje, se almacena como texto y consta de una serie de instrucciones que corresponden al flujo de comandos ejecutables por un procesador. Sin embargo, los ordenadores no entienden el lenguaje ensamblador, por lo que un programa llamado Assembler debe convertirlo a lenguaje máquina. Ejemplo: add ax, 4
- Lenguaje de alto nivel: está pensado para facilitar el trabajo del programador, puesto que utilizan instrucciones más fáciles de entender. Además, el lenguaje de alto nivel permite escribir códigos usando idiomas que se conocen (español, inglés, etc.) y luego, para ser ejecutado, es traducido a lenguaje máquina por traductores o compiladores.
- Traductor: traduce programas escritos en un lenguaje de programación al lenguaje máquina de la computadora y a medida que se traduce se ejecuta.
- Compilador: permite traducir un programa completo a la vez, lo que hace que su ejecución sea más rápida y se puede almacenar para su uso posterior sin tener que volver a traducir.
Nuevas tecnologías en el mercado
El proceso de desarrollo y evolución tecnológica ha permitido un constante avance en diferentes campos de la actualidad. Ejemplo claro de ello resulta el ámbito del marketing y la publicidad en donde la digitalización ha tenido un alto impacto en cada una de sus acciones. El desarrollo de aplicaciones tomo tanta fuerza allí, que muchas de las ideas se materializaron convirtiéndose en el estilo de vida del ser humano. Por ello, el desarrollo de software ha resultado crucial como paso de la humanidad, siendo los profesionales detrás del mismo la base de este proceso.
TECH Universidad Tecnológica se ha posicionado actualmente como la mayor universidad digital del mundo. Esto se ha logrado gracias a su amplio portafolio educativo enfocado en la excelencia y la alta calidad de cada uno de sus programas. Caso ejemplo de ello resulta su Facultad de Informática donde se encuentran posgrados tales como el Máster en Industria 4.0 y Transformación Digital y el Máster en Tecnología Específica de Telecomunicación. Sin embargo, para aquellos profesionales que buscan complementar su conocimiento en el ámbito del desarrollo de software, no cabe duda que su mejor decisión será optar por tomar el Máster en Ingeniería de Software y Sistemas de Información.