sábado, 21 de novembro de 2009

Tentando uma aproximação

Aqui como em qualquer problema tem-se de pegar em algum lado para começar. Há que buscar a essência da natureza, saber aquilo que se quer com base no possível, ter em conta o avanço, aquilo que é esperado que o código faça ou o seu comportamento, ter medidas convenientes, o que há da computação, o que não há da computação, possibilidade de criar um modelo matemático tal como nos computadores, como pode-se medir o programa físico
Uma máquina como esta tem já quase tudo feito; só precisa de transformar, mas de forma limitada. Você pode transformar energia em massa ou um átomo noutro se obtiver recursos. Depois há um nível de controlo e descontrolo sobre o sistema. Ser descontrolado não significa não programável como é o caso do grau de automatismo. Exemplo de automatismo é a evolução da vida num
ambiente favorável. Para ter um ambiente favorável é só montar-lhe, quanto ao resto é esperar que ele faça o esperado.
Há dois níveis de programação: o de construção e o de mecanismo funcional. Uma vez tendo o primeiro, tem-se o segundo. O que complica tudo é uma vez dado o segundo, qual é o primeiro?
O que isto parece é um estudo de milhares de anos à frente. Mesmo assim o que se mete em causa é o conhecimento certo para fazer isto; ao qual se se questiona será possível sem um conhecimento quase que infinito por parte do programador, para criar a linguagem, ou o ambiente de programação.
Isto mais parece uma linguagem orientada ao paralelo ou ao infinitamente paralelo, onde se aplica o logicamente semelhante. A programação orientada ao infinitamente paralelo é diferente da orientado ao paralelo, pelo que a exigência de querer programar de modo infinito é ridícula. A única solução é implementar “fugas”.
Se basear-nos no principio de que um objecto influencia pontos infinitos tal como a força de gravidade da Terra sobre o universo, teremos uma linguagem orientada ao infinitamente paralelo. Mas temos de nos basear na existência e não na inexistência; no mínimo a trabalhar e funcional e não no mínimo não trabalhado sem API. Esta linguagem poderá ter muitas outras características como a execução em bloco de um objecto.
Cada objecto tem uma funcionalidade dinâmica, isto pode significar que uma pneu pode servir de tracção ou de amortecer o impacto; pelo que faz sentido.
Depois há a possibilidade de existir o infinitamente pequeno que torna a linguagem por um lado infinitamente de alto nível. Uma linguagem infinitamente de alto nível nunca teria todas as bibliotecas possíveis disponíveis num dado momento.
Não podemos esquecer dos desgastes.
Não existe propriamente um espaço núcleo e um espaço utilizador como no mundo virtual, existe sim zonas mais privilegiadas do que outras. Existe controlo de acesso como o caso se conseguir-se construir firewalls, um obstáculo... O que faz-se para autenticar é o programa físico fazendo um retrieve ao virtual e o virtual faz um send.
Depois disto tudo qual seria o melhor "máquina de Turing" para isto? Certamente podia haver focos, podia-se adoptar um lançamento com algo programado que funcionaria como uma função, assim como outros elementos onde ocorreria o mesmo. Se calhar não é tão possível como esta-se para aí a pensar.
Naturalmente basear-se há numa linguagem mais limitada do que a do ser humano ou no computador vulgar, excepto para processamento e gestão de informação normal dos computadores actuais. Basear-se há na observação feita pela inteligência artificial ao mundo físico: parcialmente observável, estocástico, dinâmico, contínuo e multi-agente. A outra gestão é a informação do universo. Fala-se aqui mais do nível estruturado numa busca de recursos, detecções, envio; do que propriamente gravar, bloquear, apagar. Além disso seria mais correcto dizer que vai buscar muito à razão limite das coisas. Tem-se ainda de saber o que é possível comunicar; sendo entre eles a repulsão, a pressão, a atracção, as simetrias, as assimetrias, limites, sustentação (manter imóvel o contacto, como por exemplo nos aviões é estabelecido limite em velocidade terra), etc. No fundo está relacionado com o atrito, momento linear, massas e cargas entre outros possíveis.
Falando agora de semelhanças entre os dois lados mais em concreto.
O trabalho da linguagem deste tipo só pode fazer transformações assim como no computador com o espaço de armazenamento.
As regras da CPU e de outros dispositivos de hardware não mudam para aquilo que é o código do programa, assim como há factos físicos que não conseguem-se alterar. Enquanto a velocidade do programa virtual depende do hardware e do número de passos dado o input, o programa físico depende de si mesmo e nada mais se pode fazer. A comunicação entre o virtual e o físico pode resultar numa optimização do físico face ao virtual ou vice-versa num código híbrido, sendo que os problemas podem ser consumo, velocidade, resistência (algo típico do mundo físico), capacidade de adaptação (como qualquer algoritmo), entre outros possíveis.
Imagine se esta classe de linguagens não tem passos ('instruções da família para'), sendo por um lado puramente reactiva.
Pode ser que toda a linguagem deste género precisa de considerar este tipo de tentativas de aproximação.

Licença GPL

Sem comentários:

Enviar um comentário