O que exatamente é computação?

20

Eu sei o que a computação é em algum sentido vago (é o que os computadores fazem), mas eu gostaria de uma definição mais rigorosa.

Dictionary.comAs definições de computação, computação, cálculo e computação são circulares, portanto, não ajuda.

Wikipediadefine computação como "qualquer tipo de cálculo que siga um modelo bem definido". Ele define cálculo como "o processo deliberado que transforma uma ou mais entradas em um ou mais resultados, com alteração variável". Mas parece que essa definição inclui muitas ações como cálculos, mesmo que não sejam tipicamente consideradas cálculos.

Por exemplo, isso não implicaria que, digamos, uma explosão de bomba seja um cálculo, com a entrada sendo o fusível aceso e a saída sendo a explosão?

Então, o que exatamente é computação?

Kelmikra
fonte
Essa é uma ótima pergunta clássica.
Ran G.
Duplicar ?
Raphael
@ Rafael Até onde eu sei, computação! = Um algoritmo. Talvez a execução de um algoritmo seja computacional.
Kelmikra
Para mim, "P é computável" == "Existe um algoritmo que resolve P" (para algum problema em P). Porém, isso pode ser resultado da minha perspectiva do TCS.
Raphael
@ Rafael Isso está perguntando o que é computação, e não o que significa para P ser computável.
Kelmikra

Respostas:

6

Talvez o problema aqui seja procurar uma definição altamente específica de um conceito muito geral. Não vejo o problema de ver praticamente tudo como um cálculo. Embora não pensemos nisso, tudo o que fazemos é expressável em termos da física das partes componentes, até pelo menos quarks zumbindo. Temos a mesma situação com o cálculo. Existem entradas, saídas e um processo (todos os quais podem ser triviais). Se eles são interessantes ou úteis como cálculos ou modelos de cálculo, é uma questão muito diferente.

A definição de trabalho mais forte que temos vem da (forte) Tese de Church-Turing, que afirma que todo modelo de computação fisicamente realizável possível não é mais poderoso do que uma Máquina de Turing. Se você acredita que isso é verdade, embora possamos ter muitas maneiras de expressar as coisas, finalmente podemos reduzir todos os cálculos a uma Máquina de Turing, fornecendo uma definição de computação como "qualquer coisa que possamos reduzir a uma Máquina de Turing".

Neste modelo, a bomba explosiva é uma computação. Não é amplamente aplicável (esperamos;)), mas podemos modelar de alguma maneira com uma Máquina de Turing (embora exista um argumento aqui sobre a natureza da saída e a equivalência com a saída da TM). Também não é um bom modelo de computação em geral, na medida em que parece improvável que o modelo de bomba em explosão seja Turing completo.

Luke Mathieson
fonte
2
Bastante fora de tópico, mas aposto que o modelo de bomba explosiva é Turing completo! Explosões poderiam desencadear outras explosões, que poderiam ser usadas para propagar sinais e fazer or-portões. A bomba b pode ser configurada para explodir em um determinado momento por meio de um dispositivo, mas uma bomba próxima pode desativar o dispositivo sem causar a explosão de b, o que permite que não sejam portões.
Kelmikra
@ Kyth'Py1k gosta de portões de dominó? Eu não acho que isso esteja completo porque você não pode fazer um loop indefinidamente, pois o "cálculo" sempre para com base no tamanho da máquina / campo minado
catraca
1
@ratchetfreak não ser restos dos bombas são feitos em novas bombas via nanobots neles e depois reposicionado ...
Kelmikra
4

Essa é a pergunta que Turing se propôs a resolver em seu famoso artigo de 1936, On numbers computable, com uma aplicação no Entscheidungsproblem , um trabalho no qual ele apresenta (o que ficou conhecido como) o modelo de máquina de Turing. Veja em particular a Seção 9.

O trabalho de Turing está no contexto de números computáveis . Existem outras noções de computação apropriadas para computar outros tipos de estruturas, e seu estudo faz parte da teoria da computação (também conhecida como teoria da recursão).

A principal diferença entre a noção comum de computação e o seu exemplo (uma bomba explosiva) é o que está sendo computado. O que está sendo computado por sua bomba explodindo? Outra diferença são os meios computacionais, mas pode-se imaginar uma engenhoca mecânica que usa bombas para calcular algo mais legítimo.

Outro ponto é se as noções clássicas de computação se aplicam ao que hoje percebemos como computação - ou seja, a interação bidirecional entre o computador e o usuário. Essa é uma crítica comum feita contra o noção clássica de computabilidade, embora a interação possa ser modelada usando as ferramentas da teoria da computação (não é apenas o que você aprende em sala de aula).

Yuval Filmus
fonte
Claro que uma explosão é uma computação. "Computa" exatamente a transformação unitária que descreve a explosão. BTW, muitas vezes os físicos que conheci ficaram "chateados" quando você diz que (digamos) algum portão quântico calcula um unitário, em vez de evoluí-lo, ou transforma o sistema físico de acordo (" o portão pega uma caneta e um papel e calcula o unitário "?) :)
Ran G.
Li a seção nove de "Em números computáveis, com um aplicativo para o problema Entscheidung", mas isso realmente não pareceu ajudar. Embora eu não tenha lido completamente, parecia estar lançando as bases para as máquinas de Turing. Você está dizendo que computação é algo que pode ser modelado como uma ação feita por uma máquina de Turing? Se sim, quase tudo não seria uma computação? Por exemplo, as explosões de bombas podem ser modeladas como uma máquina de Turing, de modo que as posições, velocidade e tipos das partículas quânticas das partículas circundantes sejam codificadas como binárias.
Kelmikra
"O que está sendo calculado por sua bomba explodindo?" A mudança nos estados das partículas que cercam a bomba de acordo com as leis da física está sendo computada.
Kelmikra
"Outro ponto é se as noções clássicas de computação se aplicam ao que hoje percebemos como computação - ou seja, interação bidirecional entre o computador e o usuário". Eu não acho que isso é exatamente o que é considerado computação. Os robôs autônomos são considerados cálculos, mesmo que não precisem interagir com os usuários.
Kelmikra
Aqui está uma idéia: a computação é o processo de gerar resultados para ajudar na inferência feita por otimizadores (por exemplo, pessoas e robôs). Como é isso?
Kelmikra
1

ABxAyBxAx

xxyxy

t=0t=1

Conclusão: qualquer mapeamento define uma computação. Qualquer "dispositivo" que transforma uma entrada na saída correspondente, executa ("calcula") essa computação específica.



(1) podemos estender a discussão para esses tipos de cálculos, o que fará sentido quando você pensar em funções que não são recursivas, mas eu prefiro não ir lá.

Tocou.
fonte
O problema com esta definição é que ela não corresponde à forma como a palavra "computação" é realmente usada. Os PCs são vistos como fazendo cálculos, enquanto, digamos, os explosivos não são.
Kelmikra
IMHO um mapeamento é exatamente o que uma computação não é. Eu acho que você confunde sintaxe e semântica. Claramente, você entende o mapeamento como uma relação de entrada e saída, por mais definida que seja. Por todos os meus livros, isso é semântica. A computação é o meio usado para realmente obter a saída correspondente a alguma entrada através de uma sequência de etapas. Embora você possa dizer que qualquer cálculo define um mapeamento (mesmo que sintático), acho errado considerar que um mapeamento define um cálculo, a menos que você explique cuidadosamente que está entrando em hipercomputação, o que parece um pouco além da questão.
babou
Devo esclarecer o espírito da minha resposta (percebo que não está assim redigido): o mapeamento em si não é um cálculo. O processo de conversão de uma entrada em uma saída é um cálculo desse mapeamento específico (função). O que eu estava tentando transmitir é que o processo específico é relevante, qualquer processo desse tipo é uma computação (mesmo que seja muito abstrata, por exemplo, um "oráculo").
G.
1

Não tentarei definir o que é uma computação, que foi bem feita por Luke Mathieson e Yuval Filmus.

No entanto, pensar em um dispositivo explosivo como uma computação me leva a uma questão secundária importante: se a explosão é uma computação, então o que ela calcula? Diferente de uma representação do dispositivo depois que ele explodiu.

O que pretendo é que possamos definir com bastante precisão o que consideramos uma computação e até o que pode ser visto (inventado?) Como um. Podemos descrever uma computação. Mas podemos dizer o que é computação?

A computação, como geralmente definida, é um jogo puramente sintático. É um jogo de estruturas físicas que estão sendo transformadas de acordo com regras precisas. Como nossa única ferramenta (até transformações padrão) para representar estruturas físicas é, em última análise, a sequência de símbolos, a computação acaba sendo definida como algum tipo de transformação formal em sequências de símbolos. Isso vale para máquinas de Turing, cálculo lambda, funções recursivas parciais e outros modelos menos populares. A palavra cálculo (como em lambda-calculus) na verdade reflete essa visão, pois, em latim, os cálculos são pequenas pedras usadas para representação.

Mas o que isso não diz é qual significado deve ser atribuído a essa sintaxe, o que ela representa. Aqui está o pouco que eu acho que entendo, pois não sou especialista em tais questões (então verifique-me). O problema é coberto pela teoria dos modelos .

Dado um sistema formal de representações, possivelmente associado a uma lógica (regras de axiomas e inferência) ou a um sistema de computação (regras de transformação), um modelo da teoria formal é uma estrutura matemática com componentes que seguem essas regras.

O mesmo cálculo, ou mais precisamente a mesma descrição de um cálculo, pode realmente ter muitos modelos correspondentes a entidades muito diferentes.

Por exemplo, um algoritmo GCD descreve uma computação. Mas pode ser interpretado em números naturais ou em polinômios.

Isso lembra a citação de Bertrand Russell :

A matemática pode ser definida como o assunto em que nunca sabemos do que estamos falando, nem se o que estamos dizendo é verdadeiro.

A situação é praticamente a mesma para computação. É um jogo formal, onde os movimentos podem ser entendidos de muitas maneiras diferentes. Mas, na verdade, existem laços profundos entre a matemática formalmente definida por sistemas axiomáticos e a teoria da computação.

A computação, a algorítmica, foi definida para resolver problemas matemáticos, e muitos dos conceitos modernos foram pensados ​​por lógicos que tentavam entender os mecanismos que nos permitem provar teoremas, partindo de axiomas e aplicando regras de inferência.

Portanto, voltando ao dispositivo de explosão, certamente pode ser interpretado como uma manipulação de uma representação, isto é, como um cálculo. Mas geralmente é muito difícil associar a ele qualquer outro significado que não seja ele próprio.

No entanto, isso nem sempre é verdade ou não era. O princípio da computação analógica baseia-se na idéia de que diferentes sistemas de representação podem ser usados ​​para cálculos relacionados de alguma maneira precisa. Em seguida, podemos calcular com um sistema para ter uma idéia do que o outro sistema (muito pesado para realmente usar, por exemplo, um universo :) calcularia na configuração correspondente.

babou
fonte
0

Eu gosto de responder a esse tipo de perguntas sobre terminologia em termos etimológicos.

Portanto, o cálculo vem da palavra latina compŭtus, que literalmente significa "cálculo".

Em idiomas latinos, como francês, italiano, espanhol ou português (entre outros), essa etimologia é compartilhada com "conto" (uma história) em francês compte / conte em espanhol cuenta / cuento em português conta / conto etc ...

Portanto, calcular é calcular e contar como esse cálculo foi feito.

Portanto, eu diria que a computação é o processo de usar regras matemáticas e lógicas para processar uma determinada informação, de modo que novas informações significativas sejam deduzidas dos dados originais, acompanhando como essas novas informações foram geradas (processador, memória, entrada e saída são os fundamentos envolvidos)

Luis Sieira
fonte
Em francês, um conto é "conte", "cuento" em espanhol. Enquanto "compte" é um cálculo ou uma conta, "cuenta" em espanhol. Não sei que, embora os homofones "compte" e "conte" compartilhem uma etimologia comum (não "h" afaik), mas essa etimologia comum parece estar confirmada na web. Então todo esse negócio de computabilidade é apenas contos?
babou
Je l'ai corrigé. Eu deveria não fazer este tipo de erros, mas eu ainda não sou tão bom escrevendo francês
Luis Sieira
Ou talvez contos sejam apenas cálculos. Você toma um monte de caracteres com uma determinada personalidade em algumas condições iniciais, eo resto da história é computado
Luis Sieira
"acompanhar como essas novas informações foram geradas (processador, memória, entrada e saída são os fundamentos envolvidos)." Isso não implica que algo não seja um cálculo, a menos que se mantenha o controle de seu uso de memória enquanto o faz? Isso não soa bem ...
Kelmikra