sábado, 6 de agosto de 2016

Boa Crítica à lei do zero



Boa critica! Espero que percebam o fundamento que quero transmitir.
 Peguemos na linguagem “assembly” do universo, mais concretamente a lei do movimento zero e as máquinas resultantes dela, mas essa máquinas sem garantia como referido pela GPL. Tive a coragem de explicar devidamente o problema a um engenheiro mecânico (coisa que muitos não foram capazes de saber fazer, sabe-se lá o motivo). Ele próprio teve muita dificuldade em perceber, mas percebeu. O conselho que ele me deu para as minhas tentativas é que o mais provável é que ande muito menos que um foguetão para a mesma quantidade de energia, mas não quis dizer que nunca poderia andar.
 Por isso leis são leis e não se discutem, como dizia o meu primo, que estudou filosofia e ao qual pelo mérito de tal pensamento, devia ser uma coisa que todos deviam dar valor pela moral e ética tanto estudada nessa área. Claro que sei os inconvenientes como o atrito gerar calor e o calor poder derreter as peças a grande velocidade, danificando a própria máquina e saber por aí a fora tudo que daí resulta. Estudei física.
 Posso adiantar ainda mais noutros aspetos.
 Imaginem se graças à manipulação campo de Higgs a qualidade é superada em todos os aspectos. Nunca se sabe a partir de mim. Ou vejam o funcionamento do Cubli no Youtube.
 Voltando à questão do tal blog em geral. A questão de programar coisas no mundo físico é complicada; mesmo eu fazendo também parte de uma civilização do tipo zero, a maioria das pessoas é incapaz de aceitar certa ordem de idéias (uma possibilidade).
 Isto devia ser algo que ao menos coubesse na cabeça de toda a gente se é que percebem o que estou a dizer: a noção de excelência técnica que nem sempre é fácil entre outras.

O tal blog: http://lingassemblydouniverso.blogspot.pt/

Corrente materialista aplicada à informática

 
É típico dos cientistas focarem-se em explicações com base no mundo material. A informática é uma ciência.

Razão vs Informação

Razão?
Será que isso existe mesmo?
Pouca gente sabe o que é a razão. Muito pouca.
A maioria dos seres humanos guiam-se muito mais pela informação do que pela razão.
Podia começar com uma palestra sem fim típica de um desses grandes filósofos, mas prefiro as coisas pelo rigor da simplicidade. Foco no essencial e no que me interessa.
Razão precisa de pensar, pensar precisa de um método, um método é um conjunto de passos, um programa é um conjunto de passos e um programa é informação.
Vejam como a filosofia entra na informática e a informática na filosofia.

Já agora por pensar numa conclusão minha acerca de um tal curso: a razão é o oposto da obsessão, pelo que o professor estava errado. Nem toda a gente tem razão como ele diz, porque há métodos que não justificam os meios. Ao fazer-se o estado de arte de uma tese, estamos a constatar até que ponto o ou os métodos justificam os meios. Apesar disso, ele gozava com a obsessão de certas pessoas. Que cada um siga o seu caminho e obrigado a ele, por proporcionar um excelente sentido de humor. Só devemos fazer coisas com que sejamos capazes de as justificar devidamente e é aí que entra o verdadeiro sentido da razão.

Em 01/05/2015, o primeiro ministro de Portugal, falou que devemos ser metódicos, o que é muito bom.

Resposta Para Tudo 1.0

A minha “primeira aplicação pronta” no AppStore da Apple.
Vale a pena experimentar, vai ver que vai gostar.
Vale mais que um dicionário, com o que se pode fazer com ela ao expandir.
Prefiro ver o reconhecimento de factores como algo típico de qualquer profissão para que se possa tentar resolver problemas, a partir daí dá para perceber que é preciso cultura geral, algum raciocínio e que ninguém sozinho é capaz de criar experiência para todo e todo o tipo de verbo.
Verbos como o imaginar são impossíveis de criar qualquer tipo de experiência associada.
A aplicação ensina-nos a ser humildes, aceitando as nossas limitações. Ensina-nos a ser disciplinados, jogando com as regras da experiência. Ensina-nos a ser perseverantes, buscando alternativas (se não tenho o que é preciso para fazer isto, então terei o que é preciso para fazer outra).

Limitações de uma Turing Machine e suas implicações mesmo para humanos

 
Apesar da forma como a máquina de Turing foi considerada o modelo teórico dos computadores, acredito que nenhum modelo de pensamento possível consegue ultrapassá-la.
Acredito que todo o nosso pensamento está num cérebro e não noutra coisa qualquer.
O nosso cérebro é físico e com isso vêm todos os problemas associados a isso. Tanto os computadores como os nossos cérebro são governados pelas leis da física quântica (o universo é quântico), que determinam o comportamento da química, da física clássica e do electromagnetismo. Há equações da física que podem ser simuladas num computador.
Nenhuma máquina teórica (seja autómatos ou o que for) ou máquina real conseguiram ultrapassar a máquina de Turing.
Algo que esclarece as diferenças entre nós e os computadores é uma prova considerada por muitos de que os computadores podem falar como humanos: uma boneca virtual que engana pedófilos.
Se as limitações típicas do computador algum dia poderão aplicar-se a nós, então isso significa que os nível de desenvolvimento de software haverão graves problemas um dia?
Quando ocorrerão? Ninguém sabe! Talvez 100 anos. Qual o motivo dessa data? Por causa daqui a 40 pode haver um computador acessível mais potente que toda a raça humana. Qual o motivo de ainda não acontecer? Nós seres humanos somos muito mais complexos, quer ao nível da informação, ou a nível organizacional, ou por comunicam ou por hardware que um computador actual. Qual o motivo dessa data não ser mais cedo? Apesar de poder haver já computadores (são de grande porte) tão potentes como o cérebro humano, nós programadores beneficiamos ainda das vantagens conhecidas de modelos e técnicas próprias para organizar código ou que nos permitam ter uma boa noção de todo o seu funcionamento. Enquanto isso for possível não haverá problema.
Outro problema que tem a ver com ambientes não controlados ou capacidades de algoritmos é a adaptabilidade e flexibilidade criadas para um robot, ao qual não temos controlo. Mesmo para uma pessoa pode ser difícil ou impossível saber se uma dada situação vai ou não acabar. Um jogo tem a vantagem e ao mesmo tempo a desvantagem de ser um ambiente controlado que apesar disso ajuda a lidar com o nosso mundo, mas quanto ao nosso mundo nem sempre conseguimos o seu controlo absoluto. Isto que estou a dizer dá para entender que os EUA com a NSA ou muitas mais organizações nunca conseguirão controlar o mundo por completo, mas se o mundo fosse um jogo talvez.
Ao nível do bloqueio dos avanços científicos e do conhecimento que eventualmente possa fazer-nos falta até quando estaremos à espera da validação de uma fórmula matemática? Para um cientista não pode ser uma desculpa válida. O maior problema associado ao bloqueio dos avanços é de que forma estaremos dependentes das máquinas e o problema dessa dependência, ou qual será o valor desse impacto?
Um dia as limitações dos computadores irão evidenciar-se nos seres humanos por mais complexos que nós seres humanos formos.
Ao menos com os computadores conseguimos fazer muitas coisas de que de outra maneira seria impossível.

Knowledge Simulator - 1.0



Mais simples do que isto é impossível, mas faz um trabalho aparentemente muito complicado. Corre em tudo o que é sistemas Unix modernos como o Mac Os X,iOS, Linux, FreeBSD, Android ou um CP/M como o Windows Xp, etc.
Escolhi Java para que todos possam testar. Clique no ficheiro ‘Main.class’ para arrancar a aplicação. É simples e muito fácil de usar.
A idéia é afastar possíveis criticas que possam ser criadas enquanto não faço ou os outros não fazem uma coisa melhor (ao menos ainda tenho a patente do livro), passar da teoria à prática com uma ferramenta simples, para testar a idéia e assim ir ganhando alguma credibilidade.
Tive o azar de não encontrar uma licença apropriada e tentei falar com empresários da área de informática que aparecem no curso de gestão e empreendedorismo na Penha, mas sem qualquer sucesso.
Acredito que possa precisar de mais ferramentas auxiliares (como ferramentas para normalizar fórmulas de uma linguagem para outra) para um trabalho de qualidade superior.
Se podia acrescentar funções ao simulador? Claro que podia, mas não sou parvo ao ponto de trabalhar tudo para os outros e não ganhar nenhum.
Os caracteres convêm que sejam letras minúsculas ou maiusculas de a a z, espaço ou &.
Em que se baseia antes de usá-lo?
No meu livro “Uma lógica causa-efeito” (acessível a 20/04/2014), que aconselho a explorar principalmente o meu jogo de xadrez para perceber como funciona.
No video  que pus no Youtube: https://www.youtube.com/watch?v=ZWlR2yIU7-s (acessível a 05/08/2015).
Um exemplo de simulação: https://www.youtube.com/watch?v=CKZ2yGteWIc (acessível a 05/08/2015).

Boas simulações!!

Basadur



 Costumo aprender e procurar coisas da minha área em livros, revistas e Internet; mas também pesquiso e estudo temas de liderança. O próprio estudo da liderança ensina-me a focar e muito na minha área que é a informática.
 O Basadur applied creativity era uma das coisas que há muito suspeitava que existia, encontrei e com base nisso criei uma aplicação em C#, que todos podem usar no Windows. Se as aulas podem não ser suficientemente credíveis, então nada mau acrescentar qualquer coisa que seja ao portofólio e que mais ainda?
 Se achas que não percebo, então é muito provável que te enganes a ti mesmo.
 Se passas a vida a tentar convencer os outros a aceitar as coisas como são, então é a tua vez de aceitar as coisas como são.
 O botão concluir verifica os dados inseridos antes de poder concluir seja o que for.
 Esteja ciente que cada uma das palavras expostas neste teste podem não ter o significado esperado (preferível pesquisar primeiro). Por exemplo divergir em psicologia é arranjar mais soluções para o mesmo problema, enquanto que em matemática isso acontece quando o erro de uma função aumenta afastando-se de uma solução ou quando os valores afastam-se do objeto de estudo alvo. Convergir em matemática significa aproximar-se de algo que pode ser um ponto, uma solução, etc.

Disponível em:
http://osicode.esy.es

Higgs versus uma humilde mas super tese

Higgs construiu um modelo matemático.
A minha tese “Uma arquitectura de subsunção com capacidades adaptativas preditivas para o pacman” usa o algoritmo de Bierman.
O algoritmo de Bierman é um modelo matemático.
O algoritmo de Petroska é um modelo matemático.
Se Petroska é equivalente a Bierman, então há modelos matemáticos equivalentes.

Do modelo de Higgs surge a possibilidade de um equivalente em muitos pormenores, pelo que quem ainda acredita em 3 dimensões pode ser que algum dia consiga provar isso?

Fica a questão em aberto, por não saber o que os físicos são capazes ou não de perceber ou fazer perceber.

Linux e qual o futuro que eu lhe daria

Eu defendo que o Linux deve migrar aos poucos o seu código de C para C++ devido às vantagens do paradigma orientado a objetos e por causa de outras inovações que vão sendo criadas no C++ como expressões lambda.

Investir no OpenCL por causa da pobreza da linguagem C, ou seja criar outro C melhor?

Acho uma perda de tempo e que esse esforço devia ser totalmente concentrado no melhoramento das características do C++. O C++ já é esse C melhor que o C.

Um exemplo bom da comunidade de software livre em termos de mudança do C para o C++ é o Blender 3D. Com essa mudança deve-se aprender os erros e coisas boas que acontecerem nessa aplicação que continha código esparguete difícil  de perceber e de evoluir. Mesmo que o C++ seja difícil há maneiras de o tornar mais simples como libertar o objecto da memória quando o count reference chega a zero ou lançar excepção quando o new falha.

Outra grande vantagem do C++ face ao C é um compilador de C++ também compilar código em C.

Quanto ao futuro da maioria das aplicações em geral é dificil de perceber e existem outros paradigmas da programação como orientado a agentes ou orientado a aspectos entre outro possíveis.



O kernel Linux não deve a meu entender seguir o paradigma orientado a agentes e deve beneficiar de um kernel totalmente monolítico e erradicar qualquer computation overhead  típico na comunicação entre os agentes.



O paradigma orientado a aspectos é típico da linguagem D (evoluiu do C++), mas não pode ser seguido pelo kernel Linux, cujo os seus programadores têm de preocupar-se e muito em gerir a memória do sistema e o D faz uso do garbage colector tal como o Java.

Há quem diga que a maioria das aplicações vai ser server-side, mas são só aplicações e não estamos a falar de Kernel. Qualquer computador hoje em dia precisa de um Kernel tal como um intel esteja ele a correr kerneis como windows, Mac os x, Linux, freeBSD ou outro qualquer.

Por um futuro mais gerível

Não ser previsível é um factor surpresa, para haver vitória em modo competitivo, como foi o caso do jogador português Quaresma no jogo contra a Arménia.
Fora disso e em muitas situações do dia-a-dia devíamos esforçar por um futuro mais previsível.
Um dos truques é não haver dúvidas acerca das crenças, seguindo as crenças, outro truque é não ignorar os outros, etc. É suposto a universidade ser uma fonte de conhecimento de ponta.
Posso dizer ainda que procuro ser flexível.
No entanto, o modelo de pensamento BDI falha com pessoas do tipo surreal.

Ser ou não ser líder versão 1.0



Ser líder pode transformar-se em muita coisa seja para o bem ou para o mal tanto de nós como dos outros à nossa volta. Esta aplicação não irá testar aptidões técnicas (isso seria arrogância), mas considera várias questões gerais abordadas por psicólogos da área de comportamento organizacional.
Devem ser postas em causa, quando alguém pretende estabelecer liderança. Acredito que haja dificuldades em pôr em prática. No entanto em informática está demonstrado que antes de dividir um trabalho em várias partes para ser feito por um coletivo, ter a idéia já muito bem estruturada com um diagrama ou outro modelo de uma ferramenta qualquer ajuda e muito.
O botão concluir avalia as suas respostas e com base nessa informação irá dar-lhe o aviso antes que seja tarde demais.
Referência: http://fspac.ubbcluj.ro/comunicare/wp-content/uploads/2014/04/Leadership-Matrix-Self-Assessment-Questionnaire.pdf     (acessível em 19/04/2014)
Como vê não é por mim que não fica acessível. Fica é mais acessível.
Disponível em:
http://www.osicode.esy.es

Damas não dominadas num tabuleiro NxN






  Os problemas das torres de Hanói e N rainhas não dominadas num tabuleiro NxN são muito importantes para os iniciantes em inteligência artificial e para quem gosta de jogos.
 Todos os que já programaram robots ou jogos deviam conhece-los.


















 Quem sabe programar algoritmos genéticos tem de conhecer o puzzle das N rainhas não dominadas num tabuleiro NxN e tão abordado nesta web. Permite por exemplo saber a importância da representação de um indivíduo na velocidade do algoritmo.
 Um problema que há é saber qual o tamanho do espaço de solução, ou seja, quantos casos possíveis podem os indivíduos assumir(isso exige à partida saber probabilidades e estatísticas). Outro menos problemático para muitos é saber já programar. Outro problema é saber quanto posso ter de esperar para ter o melhor resultado de todos, por isso e por outras é melhor começar pelo mais fácil.
 Acredito que algo esteja mal, mas não de todo, no ensino dos algoritmos genéticos na universidade onde andei. O código está tal e qual o desenvolvido numa das versões em Python do famoso e prestigiado Carlos Mira Fonseca, que foi meu professor.
 Aprender algoritmos genéticos como deve ser exige muito tempo e dedicação. Começar pelo Sudoku, ou alguns problemas simples de xadrez, ou o subindo colinas,… E ir treinando. Muito mais tarde poderá ir para o mais complicado para resolver certos problemas de otimização NP, aprendendo e aplicando métodos de cálculo como o método de Newton, ou aprendendo mais algoritmos como o algoritmo húngaro para serem usados em conjunto com os algoritmos genéticos que se quer desenvolver,… Ir ganhando noção aos poucos do que isso é, onde se pode usar, qual o motivo de se puder usar e o que resulta com isso.
 Deve ter notado que comecei por debaixo e fui subindo, mas não é tudo.
 Já imaginou a quantidade de coisas (não é tudo) que se resolvem com os algoritmos genéticos, incluindo coisas que muitos pensam não ser para os computadores e os problemas que muitas vezes se criam por causa disso? Algo que faz pensar nisso é a seguinte frase que defendo: o sucesso das teorias de Darwin na informática são a prova de que Deus é o maior engenheiro informático de sempre. Não é por isto que sou religioso, mas é minha obrigação respeitar e muito estas coisas.
 A ileteracia informática só traz problemas a tudo e mais alguma coisa.


http://www.osicode.esy.es

Jogo do Galo e algumas variantes

É um jogo que já mete nojo de fazer nesta Internet, mas que serve para experimentar algoritmos como o minimax com corte alfa-beta, que já não vale a pena explicar. Vendê-lo é impensável com tanta oferta livre.

Vale a pena explicar a interface geek, que apesar de ser linha de comandos é fácil de mexer e pode-se tornar atraente para várias pessoas. Mostrar que uma GUI não é tudo e que se pode fazer muita coisa com a tabela ascii! Os meus primeiros jogos eram assim já no secundário. A universidade ensina outras coisas melhores como a tão importante inteligência artificial com o minimax com corte alfa-beta.





















Este é um exemplo de execução no modo de jogo 5x5. Nos modos de jogo 4x4 e 5x5 o utilizador tem de fazer uma linha de 4 para ganhar.

no modo de jogo 3x3 é preciso fazer uma linha de 3 para ganhar. Escolha um número com o teclado para jogar e prima mudança de linha ou ENTER.

Há ainda a hipótese de jogar contra outro. Digam as jogadas pelo Skype e insiram cada um para depois jogarem um contra o outro.Pode notar a existência de 2 línguas (português e inglês).

As opções permitem mudar de modo de jogo e língua. Se quer ser nerd pode sempre editar os ficheiros de configuração, mas não aconselho a ninguém fazer isso.

Se há outros algoritmos para o jogo do Galo?

A resposta é sim: negamax, negascout, negascout com memória, SSS* e MTD-f.



Só se usa variantes do minimax?

Não! É possível usar o algoritmo de Monte Carlo seguinte disponível em vários jogos do CIG do IEEE.

Como o jogo é discreto não há necessidade de discritizar o espaço com foi no caso do pacman. A ideia é montar vários planos de jogo que são guardados num ficheiro para o programa poder competir com o jogador humano. Pretende-se que o algoritmo simule vários jogos com a seguinte estratégia:



1. Coloca uma marca X ou O de todas as opções disponíveis usando um número aleatório.

2. Repete o passo 1 para os jogadores X e O alternativamente. Quando não existe posições para colocar uma marca. ou um jogador ultrapassou uma dada profundidade, o jogo acaba.

3. Associa pontos ao fim do jogo (tipicamente dando 1 ponto para o vencedor e zero pontos para o perdedor)

4. A pontuação média é determinada pela repetição dos passos 1 até 3 várias vezes.



As melhores jogadas (determinadas por uma fórmula da entropia) servem para expandir os nós na árvore que têm mais sucesso nas simulações e assim o algoritmo vai melhorando a sua estratégia. Aconselho a introduzir uma melhoria inspirada no A* para delimitar o número de nós gerados aleatoriamente. O A* é famoso pela sua introdução de heurísticas numa árvore de procura, o que tornará o jogo mais atractivo para um hard core gamer.

Room of Death


Detalhes de desenvolvimento

Usa um algoritmo de geometria computacional para detetar linhas cruzadas e se assim for perde uma vida. A linguagem é C e a biblioteca é o OpenGL. Foi pena ter perdido umas notas sobre bosses, que criei em papel.


Interação do utilizador

Mova o rato sobre a janela de forma a mover a sua nave.

Clique com o botão esquerdo do rato para disparar contra a caveira.



Perigos no nível


Cuidado com as chamas vindo dos cantos do quarto.

Cuidado com os limites do quarto, por causa que as 4 barras atacam.

4 barras atacam a sua nave periodicamente vindo das paredes.


Resistência do boss

Precisará 20 tiros certeiros para derrubar o boss.


Preview do Jogo