Hay infinitos términos de programación y he notado que si los buscas en Wikipedia u otros lugares muchos están solo en inglés; pero no solo eso, sino que están definidos de forma muy compleja, así que decidí crear este glosario donde trataré de definir los términos de la manera más coloquial posible, cada vez iré agregando más términos. Si tienes dudas sobre alguno, si ves un error o algún término que no esté presente puedes dejarlo en los comentarios. Espero que te sirva.
API (Interfaz de Programación de Aplicaciones)
Es un grupo de funciones para que se puedan comunicar dos softwares diferentes, por ejemplo una app móvil con un servidor o el frontend de una web con su backend. La API te provee de estas funciones y tu puedes obtener o insertar datos en el servidor con ellas. Por ejemplo la API de Spotify te puede proveer con una función llamada getSong(String name), a la cual llamas desde el código de tu app móvil y le pasas un nombre, luego la API lo recibe y te devuelve una canción con ese nombre. Por supuesto hay APIs públicas y privadas. Las APIs normalmente usan JSON para enviar y recibir los datos.
Arquitectura de programación
Es la forma en que planeas cómo estarán interconectadas las clases y archivos de tu proyecto y cómo se pasarán los datos entre ellos, esto se planea para que la aplicación pueda ser lo más fácil posible de probar, darle mantenimiento y encontrar errores (bugs), además de que si alteras una clase no afecte a las demás. Algunos ejemplos de arquitecturas comunes son MVC, MVP, MVI, MVVM, etc.
Backend:
Es toda la lógica de programación que el usuario no puede ver, normalmente este código está en un servidor e incluye una base de datos y una API para comunicarse con el frontend.
Clase:
Es un «molde» de un objeto de la vida real que cuenta con atributos y funciones (también conocidas como métodos), por ejemplo la clase persona tiene los atributos nombre, edad, género, entre muchos otros, mientras que tiene las funciones caminar, correr, cantar, oír, etc. Digo que es un molde porque con una clase puedes crear todos los objetos que quieras.
Framework:
Es un grupo de herramientas de código que toman un lenguaje de programación y le dan esteroides para que puedas hacer cosas más grandes que con el lenguaje por sí solo. Normalmente estas herramientas ya están probadas y son usadas por muchísima gente. Por ejemplo Django es un framework que toma a Python y le da un montón de métodos, clases y demás cosas para construir páginas web usando Python, de otra manera tendrías que hacer todo eso por tu cuenta. La diferencia con una librería es que la librería se usa para una tarea más pequeña y específica.
Frontend:
Es todo lo que ve el usuario, por ejemplo en este blog el frontend es justo todo lo que ves en este momento. Es lo opuesto del backend.
IDE (Entorno de Desarrollo Integrado):
Es el programa que usas para programar, por ejemplo si estás programando en Android, Android Studio es la IDE. Otros ejemplos son Pycharm, Eclipse e IntelliJ.
JSON:
Es un código compuesto de pares de llaves y valores, donde cada llave tiene un valor y puedes tomar ese valor usando la llave. Esto es un ejemplo de un JSON:{
"name": "Jason",
"last_name": "Statham",
"age": "40",
"gender": "male"
}
Si quieres tomar el apellido de la persona, dependiendo del lenguaje que uses puedes hacer algo así: String name = myJsonObject.get("last_name")
.
Normalmente las APIs usan JSON para establecer su comunicación y enviar datos entre servidor y frontend.
Librería:
Es un conjunto de clases, métodos y demás código que alguien más desarrolló para hacer tareas concretas (Convertir timestamps a hora legible, descarga una imagen, etc.) y lo empaquetó en un archivo que puedes integrar en tus proyectos para ahorrarte tiempo de hacerlo por tu cuenta. Por ejemplo Glide es una librería de Android para descargar fotos, guardarlas en caché, entre otras cosas sin que lo tengas que hacer tu.
Separation of Concerns Principle (Principio de separación de preocupaciones o SoC):
En un programa, cada clase debe preocuparse de una sola cosa y ser tonta en los demás aspectos, por ejemplo si una clase se dedica a pintar en la pantalla, solo se debería dedicar a eso y dejar fuera la lógica de programación. Esto ayuda a que tu programa sea más testeable y a evitar que al editar una clase afectes a las demás. La separación depende de la arquitectura que uses pero algunas «capas» comunes son vista (La clase que muestra todo al usuario), lógica de programación (La que hace las operaciones), acceso a datos (La que trae los datos de la base de datos), clase API (La que trae datos de internet). Aquí cada clase debe aplicar la frase de Drake & Josh «Eso no es asunto mío».
Tiempo de compilación:
Cuando leas que algo se hace o se procesa «En tiempo de compilación» es porque se procesa al momento de correr la aplicación, es decir, al momento de dar clic al botón de «Run». La ventaja de esto es que si hay un error te lo dirá en ese momento y no hasta que el usuario esté usando tu app.
Tiempo de ejecución:
Cuando leas que algo se hace o se procesa «En tiempo de ejecución» es que sucede cuando la aplicación ya está siendo usada por el usuario, por ejemplo un error que sucede cuando entras en una pantalla de tu app/web o cuando das clic a un botón. Es preferible que los errores ocurran en tiempo de compilación que en tiempo de ejecución.