Lo que me gusta de la informática es que hay una delgada línea entre la teoría y la práctica. La informática se basa únicamente en las matemáticas y todo es agradable, limpio y predecible. La informática se trata de cómo podemos transferir nuestro propio pensamiento a máquinas computacionales y ejecutarlo en un mundo real para obtener un resultado concreto.
Existen varios lenguajes de programación que se utilizan para instruir a esas máquinas computacionales. Los lenguajes son sintácticamente diferentes y tienen características diferentes, pero cuando los vemos desde el lado teórico, todos comparten algunas propiedades comunes que los hacen equivalentes. Estas propiedades son, por ejemplo, la integridad de Turing y los sistemas lógicos. Cuando diseñamos nuevos lenguajes de programación o implementamos nuevas características a los lenguajes existentes, construimos un sistema lógico de las características que queremos capturar. Entonces podemos probar la solidez y la integridad del sistema para asegurarnos de que hemos capturado las características con éxito. Sin embargo, incluso cuando un sistema lógico es completamente sólido y completo, puede estar equivocado si no logra capturar los fenómenos del mundo real que queríamos capturar. Entonces, cuando decimos que algo es lógico en la vida cotidiana, significa completamente diferente en lógica matemática: podemos construir un sistema lógico como queramos. El punto clave es cuál es el universo del sistema lógico. Al capturar un fenómeno del mundo real en un sistema lógico, está transfiriendo conocimiento de nuestro universo a un universo matemático donde se define el sistema lógico. Ese universo matemático puede ser muy diferente a nuestro propio universo. Es por eso que es muy fascinante ver cómo la teoría se encuentra con la práctica en informática y poder instruir a su computadora desde un universo diferente.
De esta manera, cualquier cosa que tenga en sus manos en informática se basa en algún tipo de sistema lógico. Puede comenzar a practicar esto eligiendo un sistema lógico con el que esté familiarizado. Si ya ha hecho algunas matemáticas, probablemente haya encontrado un sistema lógico de primer orden. Elija eso, defina un sistema de deducción para él formalmente (por ejemplo, una deducción natural), demuestre que las reglas de deducción son sólidas y completas y luego comience a probar teorías matemáticas que solo conoce utilizando un conjunto finito de reglas de deducción probadas. Por sorprendente que pueda parecer, esto es lo que hacen los lenguajes de programación en un nivel teórico. Simplemente tienen tan buenas abstracciones que muchos programadores son completamente ignorantes por este hecho. Cuando haya jugado con la lógica de primer orden, puede comenzar a inventar sus propios sistemas lógicos y reglas de deducción. Luego puede estudiar qué tipo de cosas se pueden capturar en ese sistema lógico. Finalmente, puede convertir esto a un lenguaje de programación, escribir un compilador para él que lo convierta en un binario de máquina. Luego, solo ve y encuentra una máquina en el mundo real que pueda ejecutar tu binario. Simplemente sienta la brisa de sus fanáticos cuando ejecuta sus deducciones lógicas en un sistema que construyó en una pizarra. ¿No es asombroso?
- ¿Qué criterios utiliza para determinar si un artículo / publicación es útil para usted?
- Un juego de 64 discos de Tower of Hanoi es jugado por un programa que realiza movimientos a una velocidad creciente. Comienza a 1000 movimientos por segundo. ¿Cuánto tiempo tomará?
- Teoría estadística: ¿Cuáles son algunos resultados teóricos interesantes relacionados con la Estimación de la densidad del núcleo?
- ¿Cómo los operadores matemáticos mapean objetos de un punto a otro en el espacio?
- ¿Dónde puedo encontrar un tutorial simplificado para Atkin's Sieve?