Consultario
  • Ensayo
  • Museo
  • Narrativa
  • Opinión
  • Palimsesto
  • Poesía
  • Teatro
  • Directorio
  • Tendencias
  • e-consulta
Tacos
Ciencia y sociedad 0

Entrando hasta la cocina. ¿Los programadores son científicos?

· octubre 9, 2020

Arlem Aleida Castillo Avila[i]

Cuando utilizamos un dispositivo electrónico, además de su diseño, nos interesa que los programas y aplicaciones que usamos se ejecuten de forma eficiente. Aquí es donde entra en juego el papel del programador. Ese personaje que, por un lado, la ficción nos presenta como la persona detrás de una consola de pantalla negra y letras verdes, capaz de entrar al sistema del FBI. Y por otro lado, quien se dedica a formatear PCs y hackear Facebook y WhatsApp.

¿Cuál es la realidad? ¿Qué hace un programador?

Programar es el proceso de idear y organizar acciones para realizar un proyecto. “Todo ha salido como estaba programado”. Podemos programar un evento en nuestra agenda o hacer el programa de una ceremonia sin meternos en terminología y herramientas computacionales. Pero es cierto que en este artículo nos interesa justamente eso último. Pues bien, en la computación, programar es obtener la abstracción de los problemas reales para proponer soluciones computacionales. Es decir, obtener las características esenciales de los elementos del problema, separando sus cualidades del contexto superficial. La programación implica tres etapas de razonamiento: analizar, resolver y codificar.

El objetivo de la programación es crear herramientas que permiten que los procedimientos de la solución a un determinado problema se realicen automáticamente por medio del uso de un dispositivo electrónico. A esto se le denomina automatización.

El proceso de programación inicia con el análisis del problema. Esto es, descomponer el “todo” en partes detalladas para identificar sus atributos y estados; lo que nos lleva a obtener conclusiones al respecto. Para esto, el programador lleva a cabo un proceso de observación rigurosa sobre los objetos y fenómenos que conforman el problema que nuestro software va a resolver. Comienza por revisar el problema en general, de forma narrativa, para tener una idea de lo que es el “todo”. A partir de esa idea, realizamos numerosas revisiones a esa narrativa, intentando que en cada revisión obtengamos un conocimiento más detallado sobre las partes que componen el problema y las cualidades esenciales de cada parte.

Pongamos como ejemplo la preparación de un taco con todo. ¿Qué es el todo? Como taqueros filósofos programadores, empezaremos por obtener las partes detalladas del taco. Bien, observemos nuestro taco.

Tenemos como base una tortilla (de harina o de maíz) que contiene un ingrediente principal:

  • carne preparada (al pastor, asada, etcétera)
  • o un guisado sin carne (para quienes son vegetarianos).

También tenemos una cantidad de ingredientes complementarios:

  • salsa,
  • cebolla,
  • cilantro,
  • limón, y
  • cualquier cosa que la receta y el comensal nos permita.

¿Cuáles son los objetos que componen al taco? ¿Cuáles son sus atributos y estados? Sin duda hay muchas respuestas correctas a estas preguntas y es justamente nuestro proceso de observación el que determinará el nivel de detalle de nuestra abstracción. Yo haré una propuesta de solución particular pero que por supuesto no es la única ni la mejor.

Primero identifico el objeto tortilla, con los atributos:

  • tipo (maíz o harina) y
  • tamaño (chica, mediana, grande).

La tortilla contiene un ingrediente principal, y un conjunto de ingredientes complementarios a los que, como buenos taqueros, llamaremos verdura.

Supongamos que nuestra taquería tiene solamente cuatro tipos de ingredientes principales,

  • carne al pastor,
  • carne asada,
  • arroz a la mexicana y
  • rajas poblanas.

Estos cuatro tipos son los valores que puede tomar el atributo tipo de nuestro ingrediente principal. Es decir, los atributos son aquellas variables que personalizan a nuestros objetos.

Ahora vamos a analizar la verdura. En nuestro conjunto “verdura” podemos tener

  • cebolla,
  • cilantro y
  • limón.

En el conjunto “verdura” lo que representaremos son los estados de cada elemento. ¿Con cebolla? Sí/No, y lo mismo para cada ingrediente. En nuestro taco, el estado de la cebolla, cilantro y limón determinan su propia existencia (volvemos a la parte filosófica del todo).

Por último, la salsa. La he dejado al final porque, si hemos podido notar los patrones de mi análisis, tiene las características de un objeto que varía en el tipo. La salsa puede ser

  • roja
  • o verde,

E incluso tener una clasificación más extensa por los ingredientes que la componen. En general, podemos hacer una descomposición de objetos tan detallada como nos sea necesario. Pero lo mantendremos simple. Sus atributos serán el tipo y la cantidad:

  • poca,
  • regular,
  • mucha

Ahora bien, para finalizar nuestro análisis debemos incluir a los actores que ejecutarán las acciones para resolver el problema.

El héroe de nuestra historia es el taquero, que preparará y entregará el taco a un hambriento comensal (a quien, para hacerlo más formal y emprendedor, llamaremos cliente). Como el cliente solo recibirá la salida de nuestra solución, únicamente analizaremos las características del taquero. Cada taquero en nuestra taquería será identificado por un nombre, género y un número de empleado. Es necesario incluir a los actores del problema porque estamos haciendo una abstracción del todo. Sin ellos no habría quién ejecute acciones sobre los objetos que identificamos. Claro que podríamos imaginar que cada objeto tuviera acciones sobre sí mismo y otros objetos, pero eso lo alejaría más del escenario real. Sin embargo, es una propuesta de metodología válida.

Hasta aquí he terminado la primera etapa de la programación para la elaboración del taco. Ahora vamos a identificar las relaciones entre los objetos y las acciones que los actores deben realizar para solucionar el problema. Vamos a crear la receta de cocina pero tomando en cuenta el momento en el que aparece el cliente y hace su pedido. Esto es, la definición del método con el que hipotéticamente prepararemos un taco que va a satisfacer la petición del cliente, que es nuestro objetivo general. Los programadores llamamos a este método, algoritmo.

Imaginemos que un cliente llega a nuestra taquería y observa el menú. Después de unos instantes se acerca a nuestro taquero y, tras un saludo, el taquero procede a preguntar: ¿qué desea ordenar? Nuestro cliente va por algo tradicional y pide una orden de tacos de carne asada. El taquero toma nota y pregunta: ¿Con todo? A lo que el cliente responde “sin cebolla, por favor” (la decepción, la traición, hermano).

Ahora el taquero pregunta por la salsa, ¿roja o verde? Y nuestro cliente se reivindica contestando “verde. Póngale mucha salsa, por favor”. El taquero pone manos a la obra y empieza a preparar los tacos, todo en el orden lógico y establecido. No tendría sentido empezar por poner la salsa y terminar con la tortilla.

 

Diagrama

 

  1. El primer paso es poner la base, la tortilla de maíz porque son tacos de carne asada.
  2. El siguiente paso será colocar la carne, que es el ingrediente principal seleccionado por el cliente.
  3. Posteriormente el conjunto de verdura que solicitó. Aquí el valor del cilantro y el limón serán “Verdadero”, porque existen en el taco. Por el contrario, la cebolla tendrá un valor “Falso”, para que el taquero sepa que no la debe incluir.
  4. Finalmente, el atributo tipo de salsa debe tener el valor “verde”, y el atributo cantidad, debe tener el valor “mucha”.
  5. Una vez listo, el taco es entregado a nuestro hambriento cliente.

Bueno, esto sería en la vida real. Asumimos e imaginamos que, al seguir estos pasos para el número de tacos de la orden, lograremos complacer a nuestro cliente. ¿Qué pasa con la programación? Llega el momento de la codificación, esto es el principio de nuestra experimentación. El programador ha llegado a su papel más conocido: sentarse frente a la computadora y hacer su magia con las letritas verdes, o blancas (según sea la película), y ¡construir el mejor programa de preparación de tacos digitales del mundo! O al menos uno que funcione.

Este paso es relativamente sencillo cuando los dos pasos anteriores se han realizado correctamente. Como programadores seleccionamos un lenguaje de programación que se adecue a nuestras necesidades tecnológicas y a nuestros conocimientos y habilidades técnicas. Una aplicación web requiere una categoría de lenguajes diferentes a las que necesita una aplicación móvil y también depende de la capacidad física de los dispositivos en los que vamos a ejecutar nuestros productos finales.

Después de que hemos seleccionado todas las herramientas que nos permitirán codificar nuestros algoritmos, habrá que traducirlos y comunicarlos con la computadora. Es decir, escribir, unificar, compilar y ejecutar. Como nuestro ejemplo es pequeño, un solo programador puede hacer todo este proceso en poco tiempo.

No obstante, los problemas del mundo real no suelen limitarse a la preparación de un taco. Hablando en el mismo sentido, podemos tener un restaurante de comida mexicana que incluya en el menú a nuestros queridos tacos junto con otros 20 platillos que tienen recetas e ingredientes distintos. Necesitaríamos más de un taquero y otros cocineros, además de meseros, cajeros y tal vez un recepcionista.

Todo depende del problema que debamos solucionar. Ahora, para este proceso de análisis y solución de problemas grandes, los programadores pasamos a denominarnos desarrolladores de software y trabajamos en equipo, siguiendo una metodología específica y asumiendo roles de acción diferentes para la etapa de la programación que nos toque realizar. Este proceso se llama Ingeniería de software, y en su metodología clásica incluye una etapa de Análisis de requerimientos (Observación del problema), Diseño de la solución (Hipótesis), Implementación (es el proceso de codificar), Verificación (que junto con la implementación forman la etapa de Experimentación), Despliegue y Mantenimiento (que incluye una documentación y por eso forman la parte de Conclusión y Reporte de resultados).

¿Y así de pronto pasamos de hablar de cocina a hablar del método científico? Sí. Porque en realidad pudimos haber hablado de teatro, de mecánica, finanzas o medicina. Los programadores somos solucionadores de problemas del mundo real, y somos científicos de tiempo completo.

Utilizamos las etapas de los métodos científicos empírico-analítico y sistémico en nuestros procesos de razonamiento para proponer una solución tecnológica que vaya desde la construcción de una pequeña función, hasta proyectos que impliquen la integración de diferentes modelos computacionales que trabajen de forma distribuida para obtener resultados en tiempo real en una situación crítica. Los programadores adquirimos la capacidad de resolver diferentes tareas con diferentes niveles de abstracción mediante la transferencia de conocimiento, pero esa es una historia que contaré en un siguiente artículo. Lo único que resta es invitar a la reflexión de lo aquí expuesto, y dejar claro que la programación no son enchiladas… son tacos.

Etiquetas: Programación, ingeniería de software, método científico.

 

[i] Investigadora de profesión y vocación. Amante de la buena comida y del café. Estudiante de las ciencias computacionales y sus aplicaciones en beneficio de la sociedad. Mi área de especialidad es la investigación en el desarrollo y mejora de la experiencia del usuario (UX). Actualmente estudio el doctorado en sistemas y ambientes educativos.

Share Tweet

admin

You Might Also Like

  • sindrome-estocolmo-atraco-rehenes-dos-k0yE--620x349@abc Ciencia y sociedad

    Del odio al amor, ¡trastornos traumáticos!

  • mecanismo-de-sincronizacion-cerebral-facilita-el-aprendizaje-del-lenguaje-822x617 Ciencia y sociedad

    Efectos en la salud mental del exceso de sincronización cerebral

  • envejecimiento Ciencia y sociedad

    El secreto de la inmortalidad

No Comments

Leave a reply Cancel reply

Recientes

  • Gorilas en Trova 0

    Tirsso Castañeda: sinapsis y revelaciones

    Abril 20, 2022 / Por Maritza Flores Hernández Rodeado de su obra, el artista plástico Tirsso Castañeda conversa sobre cómo el arte es revelación del yo interior, de ...

    On abril 21, 2022 / By admin
  • teatroprincipal_puebla
    Tinta Insomne 0

    Las calles de Puebla

    Fabiola Morales Gasca (Portada: Teatro Principal de Puebla. Tomada de https://www.mexicoescultura.com/recinto/50387/teatro-principal-de-puebla.html#prettyPhoto) Siempre he amado las calles del Centro Histórico de Puebla. El Teatro Principal fue, durante mucho tiempo, ...

    On abril 20, 2022 / By admin
  • picasso_blue1
    DCTS 0

    Las madres y el otoño

    Márcia Batista Ramos (Portada: Pablo Picasso, Madre e hijo, 1901. Periodo azul)   Divinos misterios trae el otoño, que derrama las hojas en tonos naranjas y amarillentos, precediendo ...

    On abril 20, 2022 / By admin
  • Fronteras infranqueables
    Ensayo 0

    Fronteras infranqueables

    Jorge Escamilla Udave   La experiencia de leer un libro conjuga una serie de aspectos que suelen ser reglas de oro para el lector potencial y los más ...

    On abril 20, 2022 / By admin
  • secesionenmexico
    Las malditas ciencias sociales 0

    ¿Cuántos regionalismos caben en el nacionalismo?

    Cúmulo Obseso / Aarón B. López Feldman   ¿Quién recuerda cuando la nación hace memoria? Jesús Martín-Barbero   Cuando hablamos de nacionalismo y de regionalismo hablamos de la ...

    On noviembre 20, 2020 / By admin
  • Directorio

© 2013 Solo Pine Designs, Inc. All rights reserved.