¿Es la teoría de la computación el tema ‘inferior’ de la informática?

La teoría de la computación es la base de la informática y todo el trabajo que hacemos en los algoritmos (esa es el área de la teoría con la que suelo trabajar). Ahora para abordar su pregunta real. Realmente puedes meterte en la madriguera de un conejo donde está el verdadero “fondo”, como si profundizaras más, golpearías la lógica matemática y, a su vez, probablemente golpearías algunas áreas de la filosofía de la matemática. Por lo general, las personas compartimentan el conocimiento diciendo cosas como “Oh, esto es matemático” versus “Oh, esto es CS”, pero cuando llegas al fondo de CS, no hay tales líneas (aunque diría que tienes que entrar en una aplicación justa áreas para poder distinguir los dos muy claramente).

Recomiendo encarecidamente que no comience desde abajo y trabaje de abajo hacia arriba a menos que tenga una buena comprensión de las matemáticas en CS. La teoría de la computación no es un tema fácil, y creo que es más fácil abordarlo cuando aprendes algunos temas en un nivel superior, como las matemáticas que se usan comúnmente en CS antes de tocarlo. Cosas como sentirse cómodo con el diseño de Algoritmo, Matemática discreta e incluso cierta intuición sobre cómo la computación realmente se realiza con circuitos ayuda mucho. ¿Por qué? Muchas de las ideas que aprende en materias como la teoría de autómatas y la teoría del lenguaje formal son como un viaje al pasado hacia la evolución de lo que la computación es capaz de hacer matemáticamente. Naturalmente, avanza a la discusión de las máquinas de Turing y lo que podemos y no podemos diseñar algoritmos para resolver. Hasta que haya encontrado qué problemas resolvemos a través de algoritmos, la importancia significará casi nada.

Debo enfatizar que alguien aún puede aprender mucho (o al menos una introducción decente) de los temas de CS sin necesidad de profundizar en la teoría de la teoría de la computación, incluidas otras áreas de informática teórica. Por ejemplo, comúnmente aprenderá algunos algoritmos y estructuras de datos antes de comenzar a hacer análisis y luego pasar a estas preguntas más profundas.

Todo lo que diré es que generalmente no encuentra material introductorio sobre estos temas más profundos, por lo general, hasta un curso de 3er año en un programa universitario de Ciencias de la Computación por una razón.

Aprender cosas de abajo hacia arriba suele ser una idea bastante terrible.

Para aprender adecuadamente la informática de esa manera, tendrías que comenzar con el funcionamiento de un microprocesador a nivel de registro, lo que implicaría aprender cómo funcionan los circuitos lógicos, lo que implicaría aprender cómo funcionan las puertas lógicas, lo que implicaría aprender sobre los transistores. lo que implicaría un montón de química y probablemente teoría cuántica. ¡Dentro de 20 años, cuando haya aprendido todas esas cosas, no podrá hacer nada útil con una computadora!

No creo que aprender cualquiera de esas cosas le sea útil hasta MUCHO después de que haya aprendido a programar una computadora. La mayoría de los programadores en estos días nunca han aprendido a escribir código ensamblador, que está solo un nivel por debajo de los lenguajes de programación que usan. Simplemente no necesitas saber nada de eso.

Así que no estoy de acuerdo con tu premisa. Comience en un lugar intermedio que sea apropiado para lo que realmente está tratando de hacer en la vida.

Diría que el tema de fondo es la instrucción en cualquier estilo de moda de computación, marco, plataforma o arquitectura.

Eche un vistazo al catálogo de su departamento de informática durante los últimos 20 años y observe qué números de cursos se aplican a las materias y temas que cambian cada año.

Entonces no tome nada con esos números de curso porque esos son los reservados para cosas que el departamento no toma en serio.

Existe una moda en las plataformas informáticas que tiende a derivar entre las soluciones de tipo cliente y servidor y los modelos de cómputo en serie o en paralelo.

La razón por la que los cursos basados ​​en matemáticas más abstractos son más útiles es que duran más y tienen una gama más amplia de aplicaciones.

La informática teórica es útil porque encaja con muchos problemas en modelado matemático, teoría de optimización e investigación de operaciones.

Por ejemplo, la teoría de los autómatas va directamente a la simulación y los procesos estocásticos.

La teoría formal del lenguaje va directamente a la teoría del compilador y al procesamiento del lenguaje natural.

El teorema Iglesia / Turing, combinado con las ideas de Turing sobre IA, se vincula directamente con los problemas sobre las limitaciones de la Ciencia Cognitiva.

La complejidad computacional es útil porque se vincula con estructuras de datos, algoritmos y teoría de gastos generales.

Depende de cómo abordar el tema de la “informática”.

Tengo una licenciatura en ingeniería informática, y la asignatura “inferior” sería circuitos, diseño digital y arquitectura informática. Alguien con una primera introducción más matemática podría ver la teoría de la computación como los bloques de construcción del “primer principio”. Incluso entonces, puede elegir usar Turing Machine o Lambda Calculus como modelo de cálculo.

Teóricamente, todo se reduce a las matemáticas y la lógica. En la práctica, simplemente elige si el nivel de resumen es su punto de partida.

No necesita ningún otro material de CS para aprender teoría, pero también hay otros temas en CS que no requieren teoría (para comenzar).

More Interesting

¿Cómo puede una máquina lógica como una computadora generar un número aleatorio?

¿Por qué la gente cree que todos los teoremas sobre las máquinas de Turing son válidos cuando se habla de una computadora?

¿Podría la funcionalidad de una computadora digital ser duplicada por una computadora mecánica (con engranajes, ruedas, palancas, etc.)?

¿Cómo sirven las matemáticas como base para la informática teórica?

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

Cómo encontrar las soluciones integrales de ecuación usando un programa C / C ++ de manera eficiente, donde A, B, C, D y E son enteros, sabiendo que solo tiene una solución en enteros

¿Por qué es importante considerar las anotaciones asintóticas (como límite superior, límite inferior y límite estrecho)?

¿Cuánto conocimiento de matemáticas se requiere para ser un programador?

¿Cuáles son algunos proyectos simples de C ++ que puedo emprender que me ayudarán a comprender los vectores?

¿Por qué razón se prefieren los operadores de asignación compuesta aritmética al escribir códigos profesionalmente en Java?

¿La codificación está relacionada con las matemáticas?

¿Puedo convertirme en un buen científico de datos con programación pero no con habilidades matemáticas?

¿Es esto cierto? "Repetir es humano, repetir, divino". En caso afirmativo o no, ¿por qué?

Cómo hacer un simulador de máquina de turing para realizar la suma binaria

¿Qué significa esta notación de satisfacción de proposiciones compuestas para resolver un rompecabezas de Sudoku dado en matemáticas discretas?