¿Cuál es el lado teórico detrás de la informática?

A2A: “¿Cuál es el lado teórico detrás de la informática?”

El lado teórico de la informática es el estudio matemático de la computación. Lo mejor que puedes hacer para prepararte es hacerlo bien en tus clases de matemáticas y no tener miedo a las abstracciones matemáticas .

Computabilidad

Está recién comenzando a aprender Java, por lo que su baúl de herramientas y técnicas aún es relativamente pequeño. Probablemente concederías que podría pedirte que resuelvas un problema realmente complejo que está más allá de tu habilidad actual, o al menos te tomaría mucho tiempo escribir el programa para resolverlo. Pero pare y hágase la siguiente pregunta. ¿Podría ser lo suficientemente complicado como para darte un problema muy razonable para el cual es imposible que escribas un programa? La respuesta a eso es sí. Y lo aprenderá cuando estudie la teoría de la computabilidad.

El ejemplo clásico de un problema tan imposible se llama problema de detención: ¿existe un programa que me diga si otro programa se detendrá cuando se le dé un conjunto particular de entradas?

Piénsalo. Usted sabe que hay un compilador de Java que traduce un programa de Java en un formulario que puede ser ejecutable por la JVM. La primera idea obvia para resolver el problema de detención sería tomar el programa y comenzar a ejecutarlo en la JVM, darle las entradas y ver si finalmente se detiene. Si lo hace, entonces envíe “sí”. Si no es así … bueno, eso es un pequeño problema. Probablemente ya haya aprendido lo fácil que es escribir un programa que se integre en un bucle infinito. Por lo tanto, es bastante fácil decir “sí” cuando ve que el programa se detiene. Pero hay un problema persistente que si se mete en un bucle infinito, nunca lo verás detenerse y nunca saldrá “no”.

Si piensa más en este problema, puede encontrar algunas posibles soluciones inteligentes. Podrías reconocer algunas condiciones bajo las cuales podrías concluir que el programa estaba en un ciclo infinito y ser capaz de terminarlo y responder “no”. Pero habría algunos programas e insumos para los cuales aún tenía problemas para reconocer el bucle infinito. Encontraría formas más inteligentes de reconocer el comportamiento ‘no intermitente’. Aún así, siempre habrá algunos programas e insumos para los que no reconoció que el programa nunca se detendría.

Puedes intentarlo para siempre para resolver este problema. Por otro lado, con un poco de razonamiento matemático sobre la naturaleza de los programas, puede probar que no hay ningún programa que resuelva el problema de detención. Requiere que retroceda un nivel y vea programas (o algoritmos) como objetos matemáticos en sí mismos. Ese paso de abstracción puede ser confuso para algunas personas. Es la parte más difícil de la teoría de la computabilidad con la que te encontrarás en el nivel de pregrado. Si puede dar ese salto intelectual, entonces el resto de la teoría de la computabilidad estará trabajando en los detalles.

Complejidad e Intractabilidad

Al igual que con la computabilidad, la teoría de la complejidad requiere que veas los algoritmos como entidades matemáticas abstractas. Aprenderá un montón de técnicas para analizar las características de tiempo de ejecución de un algoritmo, en particular, la complejidad del tiempo y la complejidad del espacio. Si puede dar el salto desde la programación hasta el análisis de programas, y conoce bien las matemáticas discretas y las series matemáticas, entonces comprender la teoría de la complejidad será cuestión de superar todos los detalles. No solo aprenderá cómo analizar un algoritmo dado, sino que también verá clases de problemas que tienen una complejidad similar. Observará las características de los problemas que se pueden resolver, pero cuya complejidad es tan grande que no pueden ejecutarse en una cantidad de tiempo prácticamente útil en un dispositivo de computación del mundo real (es decir, intratabilidad).

Teoría formal del lenguaje

La teoría del lenguaje formal es una forma diferente de estudiar la naturaleza de la computación. Tiene conexiones con las teorías de computabilidad y complejidad. Se aplica a problemas de análisis, traducción y compilación. Puede profundizarse, pero no es demasiado difícil a nivel de pregrado si puedes asimilar las abstracciones matemáticas.

La informática teórica es solo el estudio formal de lo que los algoritmos y la informática pueden y no pueden hacer. Por lo general, implica el estudio en profundidad (y a menudo matemático) del poder y las limitaciones de los algoritmos. Un buen ejemplo de esto puede ser un curso de algoritmos (como el 6.006 o 6.046 del MIT) o la teoría de la computabilidad y la complejidad (como el 6.045 / 18.404 del MIT). Al final, es solo un estudio en profundidad de algoritmos aplicados a lo que quieras. Por ejemplo, en Machine Learning es el estudio de qué tipo de garantías teóricas podemos dar para los algoritmos de machine learning. O puede ser el estudio formal de la criptografía, o algoritmos sublineales, o estructuras de datos, algoritmos distribuidos … la lista es interminable. Es demasiado para abarcar en una publicación de Quora. De hecho, Wikipedia parece hacer un buen trabajo al describirlo: informática teórica

Al final, es una de las áreas más bellas de las matemáticas.

Otras personas han mencionado autómatas, teoría del lenguaje y computabilidad general y teoría de la complejidad. Los dos primeros temas son realmente útiles en compiladores. La complejidad básica es realmente una herramienta indispensable para analizar sus algoritmos. La mayor computabilidad / complejidad es realmente bastante teórica. Eso no quita que puede ser elegante e interesante.

Una vez que avance en sus estudios, se encontrará con la concurrencia y el paralelismo, que tienen una teoría propia. La concurrencia se puede analizar con cantidades arbitrarias de matemáticas, como la topología y la teoría de la homotopía: topología algebraica y concurrencia

Estoy más interesado en el paralelismo, que tiene su propia teoría de la complejidad. Véase, por ejemplo, la respuesta de Victor Eijkhout a ¿Cuáles son los límites fundamentales de la computación? O vea el análisis de escala en: Álgebra lineal de alto rendimiento

Si te apasionan las computadoras y te consideras un experto en matemáticas, te puede interesar aprender sobre informática teórica, que es su propia forma de estudio que combina conceptos de informática y matemática.
Algunos temas que componen este marco teórico incluyen:
Autómatas
Matemáticas discretas
Estructura de datos
Criptografía
Geometría Computacional
Aprendizaje automático
Inteligencia artificial.
Esta lista no es muy completa. Hay muchos más temas que se cruzan para formar este campo de estudio diverso. Esencialmente, sin embargo, el lado teórico de la informática y los aspectos aplicados se unen con respecto a la informática.
La informática teórica es muy seca en el trabajo, pero algunos teóricos de la informática se emplean en la industria para proporcionar a los ingenieros y otros profesionales el marco teórico detrás de sus desarrollos.

Para una licenciatura, realmente no creo que sea tan malo. Probablemente el curso de teoría más significativo sea un curso de Teoría de la Computación y / o Teoría de Autómatas. Cuando enseño ese tipo de curso, trato de relacionarlo también con aplicaciones reales, pero probablemente no se enseñe de esa manera muy a menudo. Si observa cualquiera de los libros de Sipser, Ullman o Lewis & Papadimitriou, obtendrá una buena idea. Generalmente hay mucho de cómo construir autómatas finitos de diferentes tipos, lenguajes formales y, a menudo, algún material introductorio sobre la integridad de NP con máquinas de Turing.

Algunos de los cursos posteriores tendrán algo de teoría, pero no serán tan intensivos en teoría, como los compiladores y las clases de IA. Pueden ser mucho trabajo, pero no tanto por la parte teórica.

Las matemáticas discretas también se requieren casi siempre, pero eso generalmente es más introductorio y no debería ser un gran problema (es una colección de técnicas como lógica, prueba de teoremas, gráficos, redes, etc.) y si tiene un fondo matemático razonable ganó No seas tan malo. Hacer bien las matemáticas discretas es una buena preparación para los cursos posteriores que tienen algo de teoría. También puede estudiar Matemáticas concretas, si desea una comprensión más profunda.

Gracias por el a2a.