Uma das principais razões pelas quais eu acho fascinante e vale a pena estudar a teoria da computação (“meu” ramo da ciência da computação teórica) é a seguinte: ela nos fornece uma maneira de investigar algumas questões filosóficas profundas (e às vezes intrigantes).
Um dos fundadores da teoria da computação, Alan Turing, tentou definir o significado de "calcular uma função" para um ser humano equipado com um pedaço de papel, fornecendo uma descrição matemática do processo. Eu não sou o único a pensar que ele foi extremamente bem-sucedido, e as máquinas de Turing provaram ser um modelo preciso de muitos outros processos de computação.
Agora que possuímos uma classe de objetos matemáticos que descrevem cálculos, podemos realmente provar teoremas sobre eles, tentando descobrir o que pode ser calculado e como ele pode ser calculado; descobriu-se imediatamente que muitas funções perfeitamente legítimas não podem ser computadas e que podem ser classificadas de acordo com um grau de desconformidade (algumas funções são apenas "mais desconfortáveis" que outras).
Alguns outros, os primeiros geralmente identificados com Juris Hartmanis e Richard E. Stearns, tentaram descrever matematicamente o que significa uma função (resp., Um problema) ser difícil ou fácil de calcular (resp., Resolver). Existem várias medidas de complexidade segundo as quais a dureza dos problemas pode ser descrita; o mais comum é quanto tempo precisamos para resolvê-los. Alan Cobham e Jack Edmonds foram bem sucedidos na identificação de uma noção razoável de "computação eficiente".
Dentro da estrutura de complexidade computacional, agora podemos provar alguns resultados que são consistentes com nossa noção intuitiva de computação. Meu exemplo favorito é o teorema da hierarquia de tempo: se tivermos mais tempo para calcular, podemos resolver problemas mais difíceis.
O problema central aberto da teoria da complexidade, P vs NP , é apenas uma formalização de outra questão filosoficamente significativa: é realmente mais difícil resolver um problema do que verificar se uma suposta solução está realmente correta? Acredito que vale a pena perguntar e responder a esta pergunta, independentemente de seu significado prático.