Planeación de la solución. La programación en Linux 4
Siguiendo con esta serie destinada a mejorar nuestras habilidades de programación en Linux vamos a analizar la segunda etapa de la actividad de programar. Habíamos establecido que si bien codificar es una parte de la tarea de programar, esto incluye todas aquellas que van desde la determinación del problema que se quiere solucionar mediante una aplicación hasta que la misma está lista para su funcionamiento.
Etapa 2: Planeación de la solución
Cualquiera que haya emprendido un proyecto sabe que la solución ideal casi nunca coincide con la posible. O no tenemos los recursos económicos o las habilidades para implementarlos. En esta etapa tomamos decisiones sobre que es lo que podemos hacer de lo que necesitamos:
Para que se entienda lo que quiero decir, voy a poner un ejemplo que no tiene nada que ver con la programación.
Un matrimonio con dos hijos, el es abogado y ella contable. Alquilaban cada uno un despacho. Decidieron que podían ahorrarse ese dinero y añadir un piso a su casa dejando la planta baja para trabajar y el primer piso para vivienda familiar. Con los planos realizados se encontraron con un problema. El ayuntamiento no permite construir un segundo piso.
Tienen al menos cuatro soluciones diferentes:
- Mudarse
- Volver a alquilar los despachos.
- Hacer que una habitación sea multipropósito.
- Hacer un segundo piso con contenedores marítimos reciclados.
De la misma forma, es probable que cuando emprendamos la tarea de planificar nuestra aplicación nos encontremos con algo que no podemos o no nos conviene hacer. Por supuesto que es posible que un programador profesional tenga en cuenta esas restricciones en la etapa de diseño del problema., pero, estamos escribiendo esto para programadores amateurs.
La buena noticia es que así como tenemos restricciones, también tenemos facilitadores.
Antes de continuar con el tema, necesitamos definir algunos términos:
- Algoritmo: De acuerdo a la Wikipedia es un conjunto de instrucciones o reglas definidas y no-ambiguas, ordenadas y finitas que permite, típicamente, solucionar un problema, realizar un cómputo, procesar datos y llevar a cabo otras tareas o actividades. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución.
- API: Es el acrónimo en inglés de interfaz de programación de aplicaciones. Consiste en un conjunto de definiciones y protocolos que permiten que dos aplicaciones de desarrollo independiente se comuniquen entre si, sin necesidad de que los responsables conozcan el código de la otra. Por ejemplo, muchas ciudades tienen aplicaciones móviles que indican a los ciudadanos como trasladarse de un lugar a otro. Para eso se basan en servicios de mapas como Google Maps u OpenStreetMaps. Mediante una API, ya sea gratuita o de pago, es posible ahorrarse mucho tiempo de programación e incorporar prestaciones que de otra forma serían de acceso imposible o parcial.
- Biblioteca: Algunos las denominan librería haciendo una traducción directa del inglés, pero, como para mi librería es un local de venta de libros, biblioteca me parece más adecuado. Se trata de subprogramas para fines específicos y generales que pueden ser utilizados por otros programas. Por ejemplo, imprimir un archivo en formato PDF.
- Framework: ¿Conoces los Lego? Son esos ladrillos plásticos que se encastran uno sobre otro y puedes usar para construir cosas. Bueno, los frameworks son diversos componentes y plantillas sobre los que puedes construir tu proyecto. Muchos de ellos están disponibles bajo licencias abiertas.
- Lenguaje de programación: Se trata de un lenguaje con reglas gramaticales bien definidas que pueden utilizarse para describir una serie de instrucciones o secuencia de órdenes agrupadas en algoritmos. Existen lenguajes para propósitos específicos (análisis de datos, creación de juegos) y otros de propósito general.
Los llamo facilitadores porque cualquier cosa que necesites programar, seguramente ya alguien lo hizo, y con una búsqueda en la web o puedes encontrar el código para copiar o pegar, o que te sirva de guía para hacer modificaciones
En esta etapa es en la que reunimos los materiales con los que vamos a construir nuestra solución. Seleccionamos un lenguaje de programación, un entorno integrado de desarrollo, bibliotecas, y si está disponible, un framework. Como en tantas otras cosas en el mundo del software libre, cada herramienta tiene sus fanáticos y detractores. Lo mejor es ir probando hasta encontrar la combinación que te resulte más cómoda.