/ martes 14 de mayo de 2019

Ciencia y Luz / Programación de computadoras, un arte… marcial

Si la programación de computadoras es un arte, como apunta Donald Knuth, la ciberactivista y escritora Jude Milhon postula el “hacking” como arte marcial

Indispensable en el mundo actual, pero con mayor énfasis en el caso de las estudiantes de tecnologías de la información y áreas afines, la enseñanza y aprendizaje de la programación de computadoras representa todo un reto para docentes y alumnos. Presenta altos índices de reprobación, y frecuentemente está seriada con otras, lo que la hace crucial para los currículos de los informáticos y tecnólogos de la información.

Si la programación de computadoras es un arte, como apunta Donald Knuth, en su influyente libro, El arte de la programación, la ciberactivista y escritora “St Jude” (Jude Milhon), postulaba el “hacking” como arte marcial: la necesidad de defenderse en un mundo de intromisiones múltiples, siguiendo los métodos de defensa del Aiki-Do (https://www.wired.com/1995/02/st-jude/).

Foto: Cortesía


Además, al puro estilo del aprendizaje de un arte marcial, la programación de computadoras es una actividad que requiere una sólida formación teórica de los principios básicos y una práctica constante de ellos, a fin de conseguir el nivel mínimo de competencia requerido por el ejercicio de la profesión.

Por su parte, Dorothy Denning por igual, menciona las similitudes entre enseñar karate y computación (http://cpsr.org/prevsite/cpsr/privacy/crime/denning.hackers.html/). Adicionalmente, Emily Bache propone un manual para un Dojo de programación (https://leanpub.com/codingdojohandbook), si bien su enfoque es la industria no en la enseñanza-aprendizaje como aquí se postula.

La idea primordial se sintetiza en concebir la solución de problemas mediante programación como un combate frente a un oponente (el problema a resolver), para el que las técnicas de defensa y ataque son las herramientas y fundamentos teóricos de la programación (la estrategia de solución, su diseño, codificación y pruebas).

LA DEFENSA Y EL ATAQUE

Tomemos por caso el Karate-Do o “camino de la mano vacía” (no utiliza armas para el combate), cuya práctica incluye “kata” y “kumite”. En el pensamiento japonés, la “kata” es una manera de hacer bien las cosas, un método. En Karate-Do refiere a “un combate imaginario”, expresado como secuencias prediseñadas de movimientos. Su práctica pule la técnica por repetición, hasta lograr la mayor pericia posible.

Una metáfora imperfecta: la repetición no de los problemas (un equívoco y un desperdicio de tiempo), sino de la técnica para obtener las soluciones y las buenas prácticas para lograrlas.

El kumite o combate significa "entrelazar, cruzar, unir las manos". Es la aplicación práctica de la técnica en un enfrentamiento real contra un oponente. El kumite como resolución de un problema, de manera competitiva: bajo el binomio programación-pruebas, y el análisis de algoritmos. O de manera cooperativa: bajo el principio de modularidad. Bajo ésta óptica, habría distintos tipos de combate:

1. De estudio y aplicación de las técnicas de las katas, bajo ciertas reglas acordadas por el docente. Aplicado en la comparación de técnicas de programación, la modularización de programas y el desarrollo de pruebas.

2. De contacto pleno: aplicación libre de las técnicas, restringida sólo por la óptima solución al problema planteado. Aplicación: diseño, programación, pruebas y refactorización.

En busca del… “Do”

Las artes marciales tradicionales japonesas, incluyen en su nombre, el concepto de “Do” o camino. Esto representa lineamientos ideológicos y propósitos que abarcan la formación técnica y ética del practicante.

El “Dojo” o “espacio para el Do”, es el lugar donde se realiza el entrenamiento. En programación comprende el espacio físico destinado a la práctica (un laboratorio o el área de trabajo personal) y las herramientas de cómputo, es decir el “Ambiente de Desarrollo”, que incluye:

- Herramienta de edición de diagramas de diseño, para crear los diagramas de diseño.

- Herramientas de edición de código: para transcribir los programas desarrollados.

- Compilador o Intérprete: para producir el archivo que la computadora ejecuta finalmente.

- Manejador de versiones: para organizar archivos y administrar los cambios en ellos.

Finalmente, El “Dojo-kum” en las artes marciales es un código de ética que trasciende al dojo, aplicable en la vida cotidiana de todo practicante. Asimilándolo a los códigos de ética de los “hackers” y profesionales de la informática y la computación, consideremos los siguientes puntos:

1. Esforzarse siempre y actuar con auto disciplina. Un programador competente velaría por el aprendizaje continuo y la actualización constante.

2. Incentivar la creatividad. Tras entender un programa, el programador debe diseñar la solución, esto pasa por imaginarla, detallarla y luego codificarla. Programar es crear, y ello implica motivar por distintos medios el pensamiento creativo.

3. Incentivar el pensamiento crítico. Análogo al punto anterior, todo buen programador es críticos de las soluciones provistas, sobre todo por las que él mismo obtiene.

4. Nunca plagiar el trabajo de otros. Usar fragmentos o programas completos desarrollados por otros, sin permiso y sin citar la fuente, es un delito y entorpece la mente: usar código en vez de desarrollarlo provee una solución, pero a costa de no aprender, lo que es inaceptable.

5. Procurar la reutilización de código. A diferencia del plagio, es lo que ha llevado al software a escala industrial. Los bloques constitutivos de todo sistema son partes que una vez programadas, deben aplicarse según se necesite, no perder tiempo haciendo todo otra vez.

6. Buscar la optimización del código y refactorizar siempre. No basta tener una buena solución, hay que buscar la mejor. De ello nacen la prevención y detección de errores, la depuración y la reescritura de código.

7. Guardar estricta etiqueta de programador. Esto es una manera de decir y seguir buenas prácticas de ingeniería de software, políticas de desarrollo y metodologías.

* Investigador adscrito a Tecnologías de la Información, UAM-Cuajimalpa

wulfranoarturo@gmail.com

Indispensable en el mundo actual, pero con mayor énfasis en el caso de las estudiantes de tecnologías de la información y áreas afines, la enseñanza y aprendizaje de la programación de computadoras representa todo un reto para docentes y alumnos. Presenta altos índices de reprobación, y frecuentemente está seriada con otras, lo que la hace crucial para los currículos de los informáticos y tecnólogos de la información.

Si la programación de computadoras es un arte, como apunta Donald Knuth, en su influyente libro, El arte de la programación, la ciberactivista y escritora “St Jude” (Jude Milhon), postulaba el “hacking” como arte marcial: la necesidad de defenderse en un mundo de intromisiones múltiples, siguiendo los métodos de defensa del Aiki-Do (https://www.wired.com/1995/02/st-jude/).

Foto: Cortesía


Además, al puro estilo del aprendizaje de un arte marcial, la programación de computadoras es una actividad que requiere una sólida formación teórica de los principios básicos y una práctica constante de ellos, a fin de conseguir el nivel mínimo de competencia requerido por el ejercicio de la profesión.

Por su parte, Dorothy Denning por igual, menciona las similitudes entre enseñar karate y computación (http://cpsr.org/prevsite/cpsr/privacy/crime/denning.hackers.html/). Adicionalmente, Emily Bache propone un manual para un Dojo de programación (https://leanpub.com/codingdojohandbook), si bien su enfoque es la industria no en la enseñanza-aprendizaje como aquí se postula.

La idea primordial se sintetiza en concebir la solución de problemas mediante programación como un combate frente a un oponente (el problema a resolver), para el que las técnicas de defensa y ataque son las herramientas y fundamentos teóricos de la programación (la estrategia de solución, su diseño, codificación y pruebas).

LA DEFENSA Y EL ATAQUE

Tomemos por caso el Karate-Do o “camino de la mano vacía” (no utiliza armas para el combate), cuya práctica incluye “kata” y “kumite”. En el pensamiento japonés, la “kata” es una manera de hacer bien las cosas, un método. En Karate-Do refiere a “un combate imaginario”, expresado como secuencias prediseñadas de movimientos. Su práctica pule la técnica por repetición, hasta lograr la mayor pericia posible.

Una metáfora imperfecta: la repetición no de los problemas (un equívoco y un desperdicio de tiempo), sino de la técnica para obtener las soluciones y las buenas prácticas para lograrlas.

El kumite o combate significa "entrelazar, cruzar, unir las manos". Es la aplicación práctica de la técnica en un enfrentamiento real contra un oponente. El kumite como resolución de un problema, de manera competitiva: bajo el binomio programación-pruebas, y el análisis de algoritmos. O de manera cooperativa: bajo el principio de modularidad. Bajo ésta óptica, habría distintos tipos de combate:

1. De estudio y aplicación de las técnicas de las katas, bajo ciertas reglas acordadas por el docente. Aplicado en la comparación de técnicas de programación, la modularización de programas y el desarrollo de pruebas.

2. De contacto pleno: aplicación libre de las técnicas, restringida sólo por la óptima solución al problema planteado. Aplicación: diseño, programación, pruebas y refactorización.

En busca del… “Do”

Las artes marciales tradicionales japonesas, incluyen en su nombre, el concepto de “Do” o camino. Esto representa lineamientos ideológicos y propósitos que abarcan la formación técnica y ética del practicante.

El “Dojo” o “espacio para el Do”, es el lugar donde se realiza el entrenamiento. En programación comprende el espacio físico destinado a la práctica (un laboratorio o el área de trabajo personal) y las herramientas de cómputo, es decir el “Ambiente de Desarrollo”, que incluye:

- Herramienta de edición de diagramas de diseño, para crear los diagramas de diseño.

- Herramientas de edición de código: para transcribir los programas desarrollados.

- Compilador o Intérprete: para producir el archivo que la computadora ejecuta finalmente.

- Manejador de versiones: para organizar archivos y administrar los cambios en ellos.

Finalmente, El “Dojo-kum” en las artes marciales es un código de ética que trasciende al dojo, aplicable en la vida cotidiana de todo practicante. Asimilándolo a los códigos de ética de los “hackers” y profesionales de la informática y la computación, consideremos los siguientes puntos:

1. Esforzarse siempre y actuar con auto disciplina. Un programador competente velaría por el aprendizaje continuo y la actualización constante.

2. Incentivar la creatividad. Tras entender un programa, el programador debe diseñar la solución, esto pasa por imaginarla, detallarla y luego codificarla. Programar es crear, y ello implica motivar por distintos medios el pensamiento creativo.

3. Incentivar el pensamiento crítico. Análogo al punto anterior, todo buen programador es críticos de las soluciones provistas, sobre todo por las que él mismo obtiene.

4. Nunca plagiar el trabajo de otros. Usar fragmentos o programas completos desarrollados por otros, sin permiso y sin citar la fuente, es un delito y entorpece la mente: usar código en vez de desarrollarlo provee una solución, pero a costa de no aprender, lo que es inaceptable.

5. Procurar la reutilización de código. A diferencia del plagio, es lo que ha llevado al software a escala industrial. Los bloques constitutivos de todo sistema son partes que una vez programadas, deben aplicarse según se necesite, no perder tiempo haciendo todo otra vez.

6. Buscar la optimización del código y refactorizar siempre. No basta tener una buena solución, hay que buscar la mejor. De ello nacen la prevención y detección de errores, la depuración y la reescritura de código.

7. Guardar estricta etiqueta de programador. Esto es una manera de decir y seguir buenas prácticas de ingeniería de software, políticas de desarrollo y metodologías.

* Investigador adscrito a Tecnologías de la Información, UAM-Cuajimalpa

wulfranoarturo@gmail.com

Policiaca

Policías habrían sembrado vehículos robados, armas y droga a detenidos por caso Atzalan

Abogado defensor acusa que la fiscalía y el Distrito Judicial están en contubernio para montarles una historia a los detenidos y así justificar la actuación de la SSP que culminó con el asesinato de un adulto de 70 años y una menor de 11

Local

Están sin profesores y padres de familia pagan maestros suplentes y hasta conserje

Cansados de pagar 250 pesos diarios más 900 pesos semanales para el intendente, exigen una solución a la Secretaría de Educación de Veracruz

Cultura

Atención amantes de los libros: FILU 2020 se mudará a las instalaciones del MIX

En su edición 27, la feria contará con una delegación de invitados procedentes de la República Popular China

Sociedad

AMLO ofrece 4 mil empleos a migrantes y connacionales en la frontera Sur

El primer mandatario expresó que su ideal es que ideal “es empleo pleno, trabajo a todos, que el derecho al trabajo se garantice”

Justicia

Pese a tragedia en Tlahuelilpan, continúa el huachicol: AMLO

El mandatario destacó que a un año de la explosión en Tlahuelilpan, se ha apoyado a los familiares de las víctimas “tenemos el compromiso de seguir atendiendo las causas”

Policiaca

Balean a dos hombres en calles de Coatzacoalcos

Los agresores se trasladaban en una motocicleta que luego de balearlos escaparon con rumbo desconocido sin que nadie les marcará el alto

Celebridades

Mueren dos actores de Televisa durante grabación de “Sin miedo a la verdad”

La televisora detalló que durante la noche del jueves, los actores sufrieron un accidente al caer de un puente

Finanzas

Toca a Canadá cerrar la carrera del T-MEC

El parlamento canadiense podría iniciar el análisis del tratado comercial desde el 27 enero; México prevé que en julio entre en vigor

Sociedad

Alistan mesas para atender a migrantes de nueva caravana

México y Estados Unidos acordaron establecer estrategia para afrontar la problemática de los flujos de centroamericanos