¿Cómo se programan las computadoras para resolver problemas matemáticos?

A nivel conceptual, las computadoras no son más que simples manipuladores rápidos de cadenas o símbolos. Una cadena es una secuencia de símbolos. No entienden ni atribuyen significado al lenguaje y las matemáticas que reciben y que escupen, excepto en la medida en que puedan transformar la entrada en la salida. Los humanos hemos atribuido significado a estas técnicas de manipulación de símbolos y las reconocemos como calculadoras, demostradores de teoremas, solucionadores de problemas, reproductores de video, servicios de noticias, motores de búsqueda, sitios de redes sociales, etc.

Uno de los pasos importantes de nivel inferior, o aspectos de una computadora, es tener una representación para leer, almacenar, manipular y escupir los símbolos mencionados anteriormente. Esto generalmente se realiza mediante la conversión de símbolos (letras, números, operadores (+ – * /, etc.), signos de puntuación, espacios, pestañas, color e intensidad de puntos en una imagen, tono y longitud de un sonido, etc.) en un mapeo numérico (una tabla de búsqueda, un índice o una lista de vocabulario). Los únicos números permitidos en estos números son 0 y 1, solo porque esa es la forma más fácil de hacer máquinas rápidas y confiables.

Otra noción importante (tanto teórica como práctica) es una jerarquía de máquinas (o máquinas virtuales – VM), una construida sobre la otra, desde el nivel físico más fundamental hasta el más complejo donde las ideas se pueden expresar con relativa facilidad: tal como mencionó, a los humanos se les enseña … con los cuales construir … Cualquier discusión salta intuitivamente a través de muchas capas de estas máquinas virtuales, y puede sonar confuso y mágico para los no iniciados, pero lo mismo puede decirse de cualquier esfuerzo humano. No olvidemos que el servicio web Wolfram Alpha, el servicio de búsqueda de Google y la web en su conjunto pueden considerarse como una sola máquina (o computadora) (aunque a su vez pueden estar compuestas por cientos, millones o 10 millones de computadoras) .

Cada una de estas máquinas virtuales toma una determinada entrada (o más bien ve la misma entrada en una luz diferente) la manipula utilizando una secuencia de instrucciones (o un programa) y la escupe. Si comenzamos a dividir los pelos, cada función / método en un programa podría considerarse una VM, que a su vez llama a otras funciones (depende de VM de nivel inferior). La idea que se lleva a cabo en el programa es el algoritmo (para esa VM). un ejemplo tomemos la mecánica de hacer una multiplicación larga y dividirla en dos niveles: un “pensador” matemático (o computadora en el lenguaje de la Segunda Guerra Mundial) y un escriba (o un mecanógrafo). Para el matemático, todo el proceso representa el algoritmo de multiplicación larga, mientras que para el escriba, el proceso consiste en escribir un conjunto de números decimales de algunos operadores y ciertas reglas de formato en papel. El escriba a su vez depende de la pluma, la tinta y el papel como medio para llevar a cabo sus negocios. El matemático depende del escriba para ocuparse de la mecánica de la escritura (y no le importa si el escriba cambia de un bolígrafo a un lápiz cuando se queda sin tinta). Mientras tanto, al escriba no le importaría si los números (y su ubicación) representan una tabla contable, un recuento estadístico o una multiplicación larga; lo único que le importa es el formato perfecto. El matemático tiene que saber cómo dar instrucciones de formato al escriba; Esto se suma a la comprensión del algoritmo de multiplicación larga. El escriba tiene que conocer las instrucciones de formateo y la mecánica de escribir, formatear y mantener la pluma y la papelería, pero el mantenimiento de la pluma y la papelería podría a su vez subcontratarse.

Para un programa de calculadora básico, la computadora tiene que tomar números decimales e internamente “pensarlos” (o representarlos) como números binarios (o cadenas más precisas / fundamentales). También entiende a cada uno de los operadores como una cadena binaria. En un nivel superior, la computadora (o podríamos conceptualizar una máquina virtual en cierto nivel) comprende ciertas instrucciones y técnicas de manipulación, muchas de las cuales podrían asignarse directamente a actividades humanas como PEMDAS / BOMDAS, simplificar fracciones, racionalizar el denominador, realizar transferencias mientras agrega dos números largos, etc.

Los niveles más bajos de máquinas virtuales se implementan continuamente en hardware a medida que el espacio de silicio y la tecnología de fabricación maduran.

Otros temas para explorar: matemáticas binarias, programación simple, uso de algunas funciones de biblioteca, comprensión de un poco de ensamblaje, máquinas de Turing.

Esto ha resultado ser un artículo muy largo y no estoy seguro de haber transmitido ninguna técnica concreta. Mucho ruido y pocas nueces. Quizás es por eso que mi hijo de 12 años se queja del almacenamiento en búfer mientras mira un video de baja resolución en un procesador de 2.5 GHz conectado con una conexión a Internet de 50 Mbps.

Las operaciones básicas de matemática y lógica están integradas (cableadas) en los circuitos del microprocesador de la computadora. También se pueden implementar operaciones más complejas utilizando el código de máquina (firmware) que está integrado con el microprocesador. En algún momento, el software se involucra, a menudo usando subrutinas preescritas para cálculos más complejos, usando las capacidades básicas cableadas. Por último, el programador codifica las fórmulas matemáticas utilizando el lenguaje de programación y las funciones preescritas para obtener los resultados finales.

Naturalmente, el resultado final debe probarse a fondo para garantizar que no haya errores de codificación. Y a veces las funciones cableadas se han diseñado o construido incorrectamente, lo que resulta en errores matemáticos que producen resultados de programa defectuosos. (Recuerdo que esto sucedió al menos una vez con un diseño de microprocesador Intel, que requiere una solución que creo que se realizó inicialmente a través del firmware).

Cuando uno logra comprender incluso un poco la complejidad del diseño y fabricación de microprocesadores, parece un milagro que funcionen en absoluto, y mucho menos tan perfectamente que literalmente miles de millones de operaciones pueden tener lugar en un segundo sin errores en el resultado final ( Hay muchos errores que ocurren debido a la interferencia de los circuitos y otros factores, pero estos errores son corregidos por otros mecanismos integrados en los circuitos y el firmware).

El programador realiza las operaciones específicas y su orden. Todo lo que hace la computadora es seguir las instrucciones y hacer el cálculo real al pie de la letra.

Hay algunos programas, por ejemplo: Wolfram Mathematica que resuelven problemas matemáticos de la manera que usted describe entonces, pero lo hacen de manera ligeramente diferente. Si va a Wolfram Alpha (versión en línea de Mathica), puede darle los pasos necesarios para resolver el problema. Aún así, este también es un algoritmo programado por un programador, por lo que no es la computadora la que se da cuenta sino el programa.

Esto es lo que la gente quiere decir cuando dice que las computadoras son idiotas.

More Interesting

En la universidad, ¿debería centrarme más en la teoría o la aplicación en los campos de la informática y las matemáticas?

¿Cuál es una explicación intuitiva del aprendizaje probablemente aproximadamente correcto (PAC)?

¿Qué motiva el problema de k-satisfacción en la informática teórica?

¿Qué campos \ conceptos matemáticos deben conocer los lingüistas?

Cómo encontrar un circuito de Euler en un gráfico en tiempo lineal

¿Cómo probarías que el problema máximo de conjunto independiente en los gráficos está en la clase NP?

¿Debo crear una solución para un problema matemático que nunca he encontrado antes, o tomar la ayuda de alguien y aprenderlo de manera efectiva?

¿Cómo ha influido la teoría de conjuntos en el desarrollo de las estructuras de datos?

¿Cómo funciona una calculadora electrónica?

¿Cuál es la complejidad computacional de la satisfacción de resolución de restricciones sobre enteros? He leído que es polinomial para las igualdades y NP-duro para las desigualdades, pero, ¿no puedes convertir siempre una restricción de desigualdad en una igualdad agregando vars de holgura?

Cómo abordar problemas de cobertura de conjuntos en la programación de enteros

Cómo usar plantillas y vectores en C ++

Cómo responder a las consultas de rango medio de manera eficiente

¿Por qué los estudiantes que se especializan en matemáticas, física, informática y estadística no se gustan?

Cómo calcular el inverso de la distribución normal estándar