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) .
- Como estudiante de primer año de ciencias de la computación, ¿debería saber estas matemáticas?
- ¿Quiénes son los equipos más notables que trabajan para resolver el problema P vs NP?
- ¿Puede un programa de computadora derivar las matemáticas?
- En términos simples, ¿qué es SOCP (programación de cono de segundo orden / programación semi-definida) y en qué se diferencia la optimización convexa de otros tipos de optimizaciones?
- ¿Cuál es la forma de demostrar que el límite inferior del par más cercano es n log n utilizando Element Uniqueness?
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.