La madurez matemática es un término que los matemáticos usan para describir el tipo de sabiduría práctica y confianza que un estudiante solo puede obtener con una exposición repetida y ecléctica a problemas y conceptos en matemáticas. ¿Cómo describirías la madurez de la programación?

En caso de que haya un poco de confusión en la terminología, que está mal visto por los tres grupos distintos: matemáticos, informáticos y programadores informáticos.

¿Estamos trazando los paralelos entre matemáticos e informáticos o entre matemáticos y programadores informáticos, los practicantes en las trincheras?

Si bien es posible “hacer matemáticas” sin ciencias de la computación, como es históricamente evidente, es imposible “hacer ciencias de la computación” sin las matemáticas, como el multivolumen de D. Knuth “El arte de la programación de computadoras” y varios textos sobre diseño y El análisis de algoritmos demuestra ampliamente.

Al establecer los paralelismos entre matemáticos y científicos de la computación, se deduce que podemos equiparar la madurez por campo de un científico de la computación con la de un matemático, siempre que estemos de acuerdo en que ambos realizan un trabajo orientado principalmente académica o teóricamente.

A continuación, es un poco infantil, pero personalmente conozco personas que son buenos informáticos pero malos programadores de computadoras y que son buenos programadores pero pobres informáticos.

Por último, según mi experiencia en lo que colectivamente se llama “la industria”, diría que uno de los rasgos distintivos del programador de computadoras es el de una persona que se espera que produzca resultados tangibles y prácticos, en el acto y verificables al instante en tiempos difíciles. restricciones, pero eso es solo una pequeña parte de un panorama general.

Después de más de un cuarto de siglo en el campo, veo una serie de habilidades distintas que encajan a un programador de computadoras como piezas de un rompecabezas:

  • la capacidad de responder algunas preguntas peculiares de la entrevista, como dos huevos dados, ofrece un esquema de prueba óptimo para detectar el piso más bajo de un edificio de historia [matemática] n [/ matemática] que rompe un huevo, o cuál es el número mínimo de pobres se requiere que los ratones detecten una botella de vino envenenada de un conjunto de [matemáticas] 1000 [/ matemáticas] o cómo los codiciosos piratas dividirán las monedas, etc.
  • una capacidad (sin buscar las páginas de manual) para generar un par de cientos de líneas de código C de un solo archivo que se compilará sin advertencias, se ejecutará durante unos segundos / minutos / un pequeño número de horas (menos de 24), logrará tarea y no volcado de núcleo
  • la capacidad de escribir un par de miles de líneas de código C repartidas en una cantidad moderada de archivos que se compilarán sin advertencias, se ejecutarán durante una gran cantidad de horas / varios días / pocas semanas (hasta un mes), cumplir la tarea y no volcar el núcleo y no perder memoria
  • una habilidad (como miembro de un equipo) con nada más que vi , cc y dbx para escribir, con una actitud de “haré lo que sea necesario hacer yo mismo”, varios cientos de miles de líneas de código C repartidas y divididas en muchos archivos que:
    • compilar sin advertencias
    • ejecutar 24/7/52 durante al menos 18 meses seguidos y durante dos décadas en general
    • cumplir la tarea en cuestión
    • no volcado del núcleo
    • no pierda memoria
    • no reconstruir el universo si un solo bit en una máscara se cambia de [matemáticas] 0 [/ matemáticas] a [matemáticas] 1 [/ matemáticas]
    • soportar e incorporar impecablemente dos décadas de cambios desconocidos en el tiempo del teclado en las reglas comerciales / requisitos de software / hardware de la gama más amplia posible, desde triviales hasta casi locos

Para describir la “madurez de programación”, imagine que una flecha a la izquierda de las viñetas anteriores varía en tres parámetros: dirección: se extiende desde la primera y apunta hacia la última viñeta; ancho: es más angosto en la parte superior y más ancho en la parte inferior; temperatura (color): es azulada en la parte superior y rojiza anaranjada en la parte inferior.

Menos maduro en la parte superior, más maduro en la parte inferior.

Las respuestas hasta ahora son un poco irreflexivas; evasión levemente inteligente de la pregunta prevista que uno realmente debería esperar al hacer una intersección de personas de matemáticas e informática. Creo que lo que quieres decir es, ¿cómo es la madurez de la programación?

La madurez en la programación es análoga a la madurez emocional. ¿Alguna vez has escuchado a una persona mayor decir “Siempre hay una luz al final del túnel?” Y te preguntas, ¿cómo podrías decir que en esta situación, dónde no hay una solución a la vista y todo podría caerse? No es que tu abuela sea un optimista ciego. Es que ella ha visto un poco más del ritmo del mundo ; ella ha aprendido por experiencia que las situaciones más difíciles en esta clase general terminan funcionando al final.

En la misma línea, los programadores maduros generalmente no entran en pánico cuando se enfrentan a una idea o desafío que no entienden al principio. Es una confianza en su competencia. Si el problema se puede resolver, lo resolverán con algo de tiempo y estudio. Se han enfrentado a muchos problemas que no tienen solución a la vista antes, hasta el punto de que creen en sus habilidades, en sus entrañas.

Hay mucho que decir sobre las habilidades y patrones sutiles que solo puedes aprender después de hacer un trabajo durante mucho tiempo, que no se pueden codificar fácilmente en un libro que puedes estudiar. Por ejemplo, saltos intuitivos que podrías hacer mientras depuras algo. En otro sentido de la palabra, eso también es madurez de programación.

De la misma manera, por supuesto. ¿Por qué debería diferir?

Sin embargo, me pregunto si algún tipo de madurez podría medirse de alguna manera. Sin una medida, la definición siempre será vaga y la palabra algo inútil.

Editar: me refiero a la palabra madurez, no al concepto . Creo que el concepto es bastante real y relevante. La más fundamental de nuestras experiencias comunes parece ser siempre la más difícil de definir (existencia, conciencia, el “flujo” del tiempo, …).

El tipo de sabiduría práctica y confianza que un estudiante solo puede obtener con una exposición repetida y ecléctica a problemas y conceptos en la programación.