Um amigo meu, sem conhecimentos de programação, fez-me esta pergunta e achei interessante.
Eu acho que não é possível, porque exigiria uma inteligência artificial realmente avançada capaz de analisar o texto de um problema, pensar em uma solução e programá-lo. Só de pensar em uma máquina capaz de programar uma calculadora simples parece-me bastante avançado.
Mas talvez eu esteja errado e gostaria de saber o que você acha disso e se você tem conhecimento de algum artigo / pesquisa sobre o assunto, ou se ele já existe ou se existe a possibilidade de selecionar uma especificação e obter a máquina para auto-programar para esta "especificação?"
Respostas:
Joel realmente respondeu a isso alguns anos atrás . O significado real de "ensinar uma máquina a programar por si só" é "ensinar uma máquina a obter uma especificação e criar um programa que corresponda a essa especificação". E com isso em mente:
A única maneira de contornar isso seria produzir um computador sapiente real com intuição suficiente para fazer todo o preenchimento de lacunas que você e eu fazemos automaticamente, o tempo todo, ao produzir software ... nesse caso, você acabaria com um computador que se programa tanto quanto com um desenvolvedor humano. ;)
fonte
Claro, nós fazer isso tudo o tempo (para subconjuntos extremamente limitado de problemas). É bastante trivial imaginar dar mais um passo ou dois e vincular algo como Siri à entrada desses geradores de código (ou algo como Wolfram Alpha) que, por sua vez, escreve código e resolve seu problema. Eu esperaria que algo já exista em algum lugar para fazer as coisas mais básicas.
O problema de escrever software complexo para empresas não é criar um programa para escrever o código - é escrever um programa para obter os requisitos.
fonte
Acho que a resposta de @Mason Wheeler mantém a ideia principal. É assim:
A entropia de Shannon do jogo da velha é realmente pequena. Então, chamamos tic-tac-toe de um jogo "resolvido" ou "determinístico". Não é realmente interessante quando você passa a escola primária. Damas tem uma entropia mais alta, se você considerar a entropia de todos os jogos possíveis que pode jogar. Mas as damas também são um jogo "resolvido" ou "determinístico". Se você se mover primeiro, você deve vencer ou empatar. O xadrez tem uma entropia muito, muito maior, mas nenhum ser humano venceu os melhores jogadores de computador desde 2006. Então, de certa forma, os computadores dominam o xadrez de uma maneira que os humanos não conseguem. Big Blue analisou a wikipedia e depois jogou Jeopardy contra jogadores humanos, e venceu-os profundamente.
Qual é o próximo? Qual é a entropia de um romance, ou os sonetos de Shakepeare?
Da mesma forma, no espaço de programação, o que provavelmente surgirá é um conjunto crescente de competências. O Prolog solucionou um conjunto de problemas no computador em que você configurou o problema e o computador resolveu a resposta. Alguém provavelmente encontrará classes de problemas simples de programação que um computador poderá satisfazer etc. Então, alguém desenvolverá isso para produzir "personalização sob demanda" em algum espaço problemático. E por aí vai.
Eu acho que a pergunta se transforma: quanto tempo leva uma IA para dominar uma determinada quantidade de entropia ... e quantos recursos de computação são necessários? Eu acho que é inimaginável que um computador não possa dominar a entropia dominada pelo melhor cérebro humano - não há nada mágico no cérebro - mas a questão é: quantos núcleos você precisa e quantos séculos serão necessários para chegar lá?
Mas ... um computador será capaz de fazer meu trabalho? Inconcebível!
fonte
É difícil responder porque, assim como a inteligência artificial, uma vez que tenhamos conseguido isso, será porque teremos escrito um programa que o fará. E os críticos dirão: "Bem, esta máquina não está realmente se programando! Apenas segue exatamente o programa que você deu!"
Bem, sim. Tudo o que conseguiremos realizar com computadores, faremos dando a ele algum programa e ele será executado. Se isso é um argumento contra, então não podemos realizar nada. E, no entanto, em algum momento, as pessoas pensavam que um xadrez jogando computador seria obviamente inteligente. Agora eles podem, e sabemos exatamente como, e não pensamos que isso seja inteligente. Submarinos ainda não sabem nadar.
Então - considere alguns exemplos.
Desde décadas, temos geradores de analisadores . Você fornece a descrição de um idioma, ele é processado e o resultado é o código para um analisador desse idioma. Sabemos exatamente como é feito, mas isso não é um programa de computador?
Segundo - editores que informam que você cometeu um erro (erro de sintaxe, variável inexistente, etc.). Ele não programa nada, mas pode dizer que você fez algo errado. É muito apenas na superfície.
Idiomas nos quais você pode simplesmente clicar e arrastar os controles da interface do usuário, e o código que realmente os fará funcionar é gerado automaticamente.
Compiladores JIT. Software que pode reconhecer pontos ativos no software atualmente em execução e substituir alguns deles por código compilado altamente otimizado, otimizando-se efetivamente enquanto é executado. Penso que este é um exemplo do que pode parecer ser uma máquina programada em si, até que você saiba exatamente como isso acontece, e acaba fazendo o que o programador mandou, como sempre.
Jogo geral. Esse é um campo interessante de pesquisa, no qual os pesquisadores escrevem programas que podem ler descrições das regras dos jogos, que os programas jogam um contra o outro. Portanto, em vez de um programa do jogo da velha ou um programa de xadrez, esses são programas que lêem as regras do jogo da velha ou do xadrez ou algum novo jogo criado no local e podem ser jogados. O programa não está programando sozinho, mas joga xadrez sem que as regras do xadrez tenham sido codificadas. Houve um tempo em que isso seria claramente considerado como o computador ensinando algo a si mesmo.
Demos vários pequenos passos na direção geral.
Mas não consigo pensar em nenhum programa que se reescreva com base nos resultados de execuções anteriores ou que reconheça rotinas obsoletas ou ineficientes em seu próprio código. Acho que um dia teremos isso, e não consideraremos nada de especial, pois será apenas um recurso do compilador mais recente ...
fonte
Não no momento nem no futuro próximo, porque você precisa de toda a incrível complexidade do cérebro humano para criar um programa. E mesmo assim, esses cérebros precisam ser altamente treinados para fazê-lo adequadamente, e mesmo assim nem todos são capazes de executar a tarefa, embora se possa argumentar que, com tempo suficiente, você pode treinar alguém para programar.
Eu entendi da maneira como você formulou sua pergunta que você não está falando sobre tarefas simples emuladas.
Você solicitou artigos e este artigo do Science Blogs sobre Developing Intelligence responde a essa pergunta de várias maneiras.
fonte