Houve tentativas de criar contêineres de objetos que pesquisam programas válidos por componentes compatíveis com fiação automática? [fechadas]

5

Espero que este post não seja muito "Fringe" - tenho certeza que alguém irá simplesmente matá-lo se for:)

Três coisas me fizeram querer falar sobre isso agora:

  1. O desacoplamento está na vanguarda do design.
  2. O TDD inspira a ideia de que não importa como um programa venha a existir, desde que funcione.
  3. Ver com que frequência o padrão do adaptador é aplicado para atingir (1).

Tenho quase certeza de que isso foi tentado a partir de uma lembrança de leitura sobre o ano 2000 ou algo assim. Se eu tivesse que adivinhar, era talvez sobre e versão anterior do framework Java Spring. Nessa época, não estávamos tão distantes dos dias em que a crença era de que os programas de computador poderiam exibir um comportamento emergente útil. Acho que o artigo dizia que não funcionava, mas não dizia que era impossível.

Eu me pergunto se, desde então, foi considerado impossível ou simplesmente uma ilusão devido a uma falsa suposição de similaridade entre um cérebro e uma CPU. Eu sei que essa ilusão existiu porque eu tive um estágio em 1996, onde eu programava redes neurais que supostamente iriam exibir "danos cerebrais".

AINDA, depois de tudo isso, estou sentado esta manhã e não consigo abalar a idéia de que deve ser possível ter um método de programação para permitir que componentes autônomos se encontrem, tentar colaborar e seus resultados avaliados em relação a um conjunto de resultados desejados.

    
por Aaron Anodide 14.04.2012 / 22:43
fonte

1 resposta

1

Aviso: Eu não sou um pesquisador, apenas um desenvolvedor interessado.

A resposta curta é Sim, isso foi feito, pelo menos com serviços da Web e com requisitos de fórmulas, e não testes.

Suponho que sua pergunta signifique ", já que existem vários algoritmos e existe um conjunto de testes, um programa pode tentar combinar esses algoritmos tentando aleatoriamente passar nos testes?"

Concordo com a afirmação de Charles E. Grant de que uma vez que você comece a criar aleatoriamente programas, você se deparará com o Problema de Interrupção (é impossível determinar se existe um loop infinito em um programa), então isso pode ser um problema, mas pode ser superado criando metodicamente o programa, não aleatoriamente.

Da mesma forma, sempre que você começar a fazer a pergunta "podemos automatizar isso geralmente?" é muito provável que você se aproxime de AI-complete. Em outras palavras, qualquer problema suficientemente complexo requer uma inteligência em nível humano para resolver. Para contornar isso, você precisa limitar o escopo da sua pergunta. Por exemplo, pode um programa automaticamente ...

  1. gera código com base nos requisitos? A NASA fez uma extensa pesquisa em geração de código, mas a especificação formal exigida é tão difícil quanto a codificação. Isso remonta a pelo menos 1971, chamado "Automatic Program Synthesis"
  2. combine os serviços da Web existentes com base nos requisitos (consulte "Composição de serviços da Web com valor agregado usando a síntese automática de programas")
  3. combinam serviços da web somente leitura (consulte Composição automática de serviços da Web de fornecimento de informações com base em reescrita de consulta )
  4. crie um programa para análise de dados estatísticos (consulte "AutoBayes")
  5. generaliza uma edição de texto (veja Avi Bryant às 27:01 que a roubou do MIT / MassEdit)
  6. cria regras para categorizar o texto? Veja abaixo.

Uma pergunta mais simples na computação é "considerando dois clusters de dados existentes, crie um filtro que possa categorizar novos dados com baixas taxas de erro". A categorização de texto, como Filtragem de spam, cai nesse domínio. Esta é uma área bem estudada e existem muitos algoritmos para resolver este problema. O RIPPER é um desses algoritmos, que cria o menor conjunto de regras que categorizam o texto com precisão, bem como a Restrição de Einstein: "Tudo deve ser mantido o mais simples possível, mas não mais simples".

Isso é tudo que eu pude encontrar / conhecer. Se alguém pudesse encontrar algo mais parecido com o que esta pergunta pede, eu ficaria muito interessado. Eu acho que o que você vai encontrar é que o programa resultante será tão bom quanto a sua entrada. A quantidade de "testes" que você teria que escrever seria tão grande, seria melhor escrever o programa.

PS: Eu tinha muito mais links, mas o stackexchange não me deixa postá-los: - (

    
por 14.05.2012 / 16:21
fonte