La programación en Linux 1. Una breve introducción
Muchas veces quienes escribimos artículos o contestamos en foros sobre Linux, caemos en la mala costumbre de dar por sabidas cosas que los usuarios novatos no tienen por qué saber. Es por eso que cada tanto resulta conveniente dar un repaso a los conceptos básicos.
Cada vez hay más personas interesadas en programar y son muy frecuentes las preguntas sobre qué opciones de código abierto utilizar. Y acá es donde volvemos a hacer gala de otra mala costumbre, la de actuar como fanáticos religiosos que pretenden imponer sus alternativas preferidas sin tener en cuenta las necesidades del usuario que pregunta.
La programación en Linux
Es por eso que para complementar la enumeración de las herramientas de código abierto disponibles para Linux, que hacemos de manera periódica, vamos a repasar algunos conceptos
Qué es programar
Nuestra manera de interactuar con computadoras y dispositivos móviles sigue un paradigma creado en los laboratorios de investigación de la empresa Xerox en Palo Alto. Apple primero y Microsoft después copiaron el modelo de iconos y ventanas para sus sistemas operativos. Con el correr de los años iOS y Android, adoptarán el mismo esquema adaptándolos a teléfonos y tabletas
Antes de la interfaz gráfica, la manera de comunicarse con el equipo era escribir los comandos en una terminal. En un futuro puede que solo baste con pensar que es lo que queremos que haga.
Pero, cualquiera sea la forma con la que nos comunicamos, el ordenador necesita que se le diga cómo responder a los requerimientos de los usuarios. De eso es lo que se ocupa la programación.
Programar es entonces proporcionar al dispositivo instrucciones expresadas en un lenguaje de programación que éste puede entender.
Diferencias entre codificar y programar
Aunque estos términos suene interpretarse como sinónimos no lo son. Codificar, perdón por la obviedad, es escribir código para crear un programa o sitio web.
La programación implica el proceso de desarrollar un programa desde el momento en que se identifica el problema del usuario hasta que se crea una aplicación para su uso como solución. También, se incluye la etapa de mantenimiento y actualización.
El clásico ejemplo de imprimir “Hola Mundo» en la pantalla, es entonces un ejercicio de codificación ya que no tiene el propósito de solucionar un problema ni cumple con el resto de las etapas del proceso.
La tarea de programar es una actividad compleja que requiere de múltiples instrumentos como herramientas para análisis de código, frameworks, compiladores, creadores de bases de datos, diseñadores de interfaces gráficas y depuradores.
Lo primero que necesitamos saber para ayudar al usuario es si quiere aprender programación con un nivel profesional o solo escribir programas. Dado que la codificación solo requiere escribir sentencias en cualquier lenguaje de programación y, no se busca la eficiencia ni se pretende que el código pueda ser actualizado ni comprendido por otras personas, basta cualquier programa de escritura.
De la respuesta a esa pregunta sabremos si se siente más cómodo con un editor de código o un entorno integrado de desarrollo. Pero, no nos puede contestar eso sí no entiende cuál es la diferencia. Es lo que vamos a tratar de responder en este artículo.
Si se trata de escribir código cualquier editor o procesador de textos podría hacerlo. Solo hay que asegurarse de guardarlo con un formato que el sistema operativo puede identificar como código de un programa. La diferencia es que no dispondermos de ningún tipo de herramienta que ayude a verificar que no exista ningún tipo de errores.
Algunos de los editores de texto incluidos en las distribuciones Linux incluyen varios complementos para convertirlos en editores de código, pero para no confundir no vamos a insistir en ese tema.
Diferencias entre entornos integrados de desarrollo y editores de código
Para hacerla corta la diferencia es la que hay entre una navaja suiza y un destornillador. Los entornos integrados de desarrollo traen casi todo lo que se puede necesitar en la tarea de programación incluyendo la redacción de código, el autocompletado, el mercado de errores, la depuración, las pruebas y la compilación.
Hay entornos integrados de desarrollo que están optimizados para un lenguaje de programación específico y otros que son compatibles con varios. También los hay para sistemas operativos específicos como Android o Arduino.