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

sexta-feira, 10 de junho de 2016

Génio das linguagens de programação ou mero indivíduo problemático

 Sem disciplina alguma ninguém irá muito longe. Para perceber o que outro diz são necessárias regras de gramática e não violar as regras da lógica booleana, sem discursos contraditórios.
 Novas informações não são perigosas, porque ninguém o vai censurar por causa disso. É incrível como as ferramentas estão constantemente a mudar no mundo da informática e como estamos constantemente a aprender. É importante salientar que perceber as utilidades e limitações do conhecimento é o que faz avançar o conhecimento. Cada pessoa deve ter a sua utilidade, enquanto sociedade que somos.
 Se ele apontou limitações, eu poderia não discuti-las ao pormenor, mas deveria tornar-se o indicio de novas linguagens de programação, que compensam as limitações existentes no paradigma orientado a objectos. Nesse aspecto e se consegue criar alternativas seria a pessoa ideal para arranjar emprego em muitas firmas dessa área da informática (desenvolvimento de linguagens de programação).
 Será mais alguma pessoa para perder a cabeça? É melhor que não, que saiba o que está a dizer, mas que acima de tudo não passe despercebido.

Coloco isto aqui também por parecer confuso.

Link: http://www.smashcompany.com/technology/object-oriented-programming-is-an-expensive-disaster-which-must-end


Ver também:
http://osicode.blogspot.pt/2016/05/knowledge-simulator-10.html

terça-feira, 10 de maio de 2016

Construindo um regulamento à lei do transístor

Valores


 A vida imita o xadrez como dizia Garry Kasparov no título de um livro, da mesma forma que outras frases deveriam ser válidas.
A disciplina é o oposto da anarquia.
A humildade é outro valor.
A perseverança é algo importante tanto para um programador como para um líder.
Veja as páginas 2 e 3 do livro “Programação com classes em C++”, segunda edição actualizada, da editora FCA, do autor Pedro Guerreiro .






https://images.portoeditora.pt/getresourcesservlet/image?EBbDj3QnkSUjgBOkfaUbsOO1PkcorE7ouH4GdCRFtw72Xsr1%2Fcg16nqgJxLv%2FUyO&width=440
Excertos interessantes na forma de pensar dessas páginas
“A disciplina é uma das qualidades fundamentais de um programador, seja em que linguagem for. Um programador indisciplinado, mesmo que genial, é de pouca utilidade para uma equipa de desenvolvimento de software. Ora o C++ é uma linguagem boa para cultivar a disciplina na programação.”
“A linguagem C++, por ser complexa, ensina-nos a ser humildes, a aceitar as nossas limitações, a respeitar os outros, a nunca partir do principio de que programar é fácil. A humildade é outra das qualidades fundamentais de um programador.”
“O C++ é bom para educar a perseverança. A linguagem é difícil e só chegaremos ao fim se formos teimosos, corajosos perseverantes. Caso contrário, ficaremos talvez com umas “luzes”, mas não programaremos verdadeiramente em C++.”
Não posso negar os meus fundamentos base, senão estaria a mentir e isso poria em causa este blog.
Humildade implica ainda ter vontade de aprender e estar sempre aberto a novas experiências.
Se a humildade é um valor tão importante, basta ver como isso justifica a importância de estatutos nas universidades ou definição de cargos em empresas, por que os indivíduos passam a conhecer os seus próprios limites.

SuperHanoi 3.0

Jogo das torres de Hanói renovado com capacidades de resolução eficazes.
Por um propósito!
Esperemos ver um dia destes.

sábado, 7 de maio de 2016

Jogo da cobra

O famoso jogo da cobra, que conheci aos 13 anos num jogo de Tetrix e que tantas horas passei a jogar no telemóvel a preto e branco aos 15/16 anos. A primeira versão que desenvolvi era em Turbo Pascal. No Verão em que andava tirando código de condução (ainda os carros não conduziam sozinhos) traduzi à mão para C, ignorando a existência de tradutores de código. Lol.

Nessa altura era um jogo do caraças e hoje nada vale. Como vêm esta versão só usa caracteres e fiz-o, quando andava no secundário.

O lado melhor: apanha o dinheiro e não batas com a cabeça na parede!












Quem está farto deste jogo para começar recomendo jogos como o Push, que estava no Miniclip e em muitos telemóveis a preto e branco; ou o Sokoban (do mesmo género) do Linux, que para quem não vê bem aconselho a diminuir a resolução do ecrã. São jogos antigos que consistem em empurrar blocos e por-se a pau com certos obstáculos. O facto de não precisarem de inteligência artificial para o jogador humano jogar (precisam só para serem resolvidos pelo computador) torna-os ideais para começar.

O jogo da cobra que fartei-me e já não há paciência como deve perceber.



Foi o meu primeiro jogo a usar enumerações e isso é para mim e há de ser para outras pessoas, um grande avanço em termos de raciocínio lógico.

Ping And Pong

Este foi um trabalho em linguagem C das aulas de programação do 11º ano, ao qual tive uma excelente nota. Foi também uma versão dos primeiros jogos para computadores que corria numa Atari. Nessa altura era a preto e branco e não a cores e se calhar foi escrito em Assembly e não numa linguagem de alto nível como o C. Chamava-se Pong e era tudo obra de Nolan Bushnell.






O objectivo é fazer mover a raquete do lado esquerdo com as setas do teclado de forma a impedir que a bola saia do jogo.
O outro jogador é invencível e o tempo de jogo é infinito. Quanto mais tempo se aguentar, mas pontos obtém.
As pontas vermelhas da raquete simbolizam perigo e são importantes pelo facto de a bola seguir a equação de uma recta e como tudo é caracteres o jogador poder-se focar na parte azul para ser sempre possível controlar a bola. A bola até faz sombra sobre a mesa.
Tem algumas vidas para se aguentar e vários níveis de dificuldade.

sexta-feira, 6 de maio de 2016

Certa desmotivação

Não vou contar grande coisa para não arranjar certo tipo de problemas.

No entanto espero resolver.

Aviso

Posso não estar a colocar constantemente novas versões de jogos ou novos jogos na página.

Um atraso teve a ver com a ocupação nas aulas com muita teoria em muita coisa, ao qual tenho de agradecer ao professor José Valente de Oliveira por ter permitido fazer uma tese sobre o Pacman.

Uma pessoa tem de ganhar a vida.

Posso estar a pensar em como lucrar com os jogos ou relacionados. Só de me lembrar de um curso de C# poder custar 1440 euros, como boa parte desse dinheiro vai para o acesso à melhor documentação dos programas e como ainda se queixam do software livre e Open Source.

Tudo que possa fazer é difícil e já pus muito à borla pela web.

Posso estar a pensar em apresentar coisas a empresas.

Se estou a trabalhar para uma empresa que não faz jogos, então não vou pôr jogos, nem me arrisco a abusar com trabalhos extra para além da empresa, sobre risco de ser punido por isso.

Nem tudo impede uma explosão de novos assuntos no Osi code. Posso pôr links para a malta discutir o programa ou comprá-lo (defendo baixo custo) à empresa.

Apelo a vossa compreensão, podemos concluir que não têm nada que se queixar e há quem seja bem pior do que eu.

SimpleManagerDB

 

SimpleManagerDB, por que quem trabalha precisa de ser um empreendedor.

Nunca vou expor todos os detalhes por este meio.
A aplicação está relacionada com o curso de gestão e empreendedorismo do IEFP, 2ª fase, que tirei.
Se a universidade fala tanto sobre o facto dos portugueses serem desorganizados e isso é considerado um problema, então nada melhor que pôr a universidade à prova, pondo em prática o que se ensina lá. É preciso soluções para os nossos problemas e o SimpleManagerDB tenta ser uma prova disso mesmo.
Estava a pensar usar Prolog.NET para algo em específico, mas não tenho bem a certeza.
Bem, por algum motivo existe Primaveras, Verões e Outonos.

quarta-feira, 4 de maio de 2016

Há casos em que a sucessão é efeito

Também há muitos casos em que a sucessão não é efeito e outros em que isso acontece com uma dada probabilidade. Resta saber métodos que comprovem ou rejeitam essa hipótese para uma dada situação.
Os casos em que a sucessão é efeito são inúmeros. O nosso mundo é composto por leis como acontece na física, na química e não só.
Cada ser humano tem a sua capacidade de previsão, que pode ser feita de inúmeras maneiras. Os computadores também têm uma capacidade de previsão, embora elaborada de maneira diferente dos humanos. Algumas delas nos seres humanos são com base numa sequência de acontecimentos sucessivos ao qual fazemos ligações, tal como os conceitos que aprendemos. A capacidade de fazer ligações entre os conceitos é uma forma de inteligência segundo muitos peritos.

A sabedoria popular diz que as ultimas noites do mês de Agosto no Algarve indicam se o Inverno vai ser muito chuvoso ou não. O que quero dizer com isto é que para algo acontecer tem já de haver alguma coisa que acontecesse antes nem que isso seja o seguinte. Sem calor a água não aquece. Se a água não aquece, então não evapora. Se a água não evapora, então não há nuvens. Se não há nuvens, então não chove. Então como deve ser essas tais noites para o inverno ser muito chuvoso no Algarve? Frias e húmidas, mas apesar de não deixar a curiosidade em branco, esta resposta não é a mais importante para a conclusão.

Então que dizer do Cristiano Ronaldo, que só precisa de analisar o chuto para saber para onde a bola vai e não precisa de olhar depois para a bola no ar para saber aonde vai.
Então os computadores? Já que é assim tão notório e verídico, há alguma estratégia AI, que explore este principio?
Há sim senhor!

O ms pacman é um exemplo onde o movimento dos fantasmas também pode ser previsto, embora seja difícil. A sucessão (posições actuais dos fantasmas, posições anteriores dos fantasmas, posição actual do pacman, posições anteriores do pacman) é efeito (próximas posições do fantasma a prever). Há um algoritmo que modela o comportamento em tempo real chamado RLS… Mais? Isso foi possível de concluir na tese “Uma arquitectura de subsunção com capacidades preditivas adaptativas para o Pacman”. O maior problema de tal estratégia para tentar apurar se a sucessão é efeito são as limitações do modelo linear usado (ou modelo ARX como foi referido).
Basta haver uma série de factores que condicionem o movimento do elemento a mover-se para ser possível modelar o seu comportamento ou basta os elementos terem um comportamento pré-definido, mesmo com uma componente aleatória. A componente aleatória vai determinar o erro. Quanto maior a componente aleatória, mais falível o método será. A dimensão do erro depende do jogo e depende da situação.
Outro problema é saber dar valor a quem descobre o que possa estar mal e reconhecer os problemas que isso resolve. Compreendo que possa ser confuso para a maioria das pessoas por ser uma noção difusa. Todas as noções difusas têm um tanto verdadeiro e um tanto falso e a noção de a sucessão ser efeito ou não, não é excepção. O professor doutor José Valente de Oliveira conhecia este método por ser da área de lógica difusa e a sua qualidade pode justificar o seu uso.

MinLine 1.0 for iOS

When complexity show us a simple look.
You found a mathematical game very simple to play. To try is a pleasure.
You will develop and agilize your mind. Swap the numbers of lines in order to simplify patterns.
The goal is to diminish the number of vertical, or horizontal lines which split the groups with different images. If you swap the line, then you will swap the respective column.
You can choose several factors of complexity such as the number of different images, the number of lines, or the number of level or all can be chosen randomly. You have at all around some hundreds of levels, always different.
Enjoy it!


Você encontrou um jogo matemático muito simples de usar. Experimente e vai gostar.
Acaba por ser mais um puzzle para agilizar e desenvolver a sua mente. Troque os números das linhas de forma a simplificar padrões. Se trocar uma linha, então trocará a respectiva coluna.
O objetivo é diminuir o número de linhas horizontais ou verticais que separam imagens diferentes umas das outras. Se as imagens forem iguais, então não há necessidade de separá-las com uma linha. A mesma linha serve para o puzzle inteiro.
Pode optar por vários fatores de complexidade como número de imagens diferentes, quantidade de linhas ou o número do nível ou pode escolher tudo de forma aleatória. Tem cerca de centenas de níveis, sempre diferentes.
Divirta-se!

Idéias para uma DeathStar












Será que numa civilização do tipo I, uma vez controlando o planeta onde habitam, ele se torna numa DeathStar?
Poderia ser a maneira mais fácil de o conseguir, juntamente com muito conhecimento, engenharia e infra-estruturas criadas.
Os maiores obstáculos seriam estabilidade planetária (sem conflitos internos,…), abundância de materiais para o desenvolvimento tecnológico e mentalidades.
Parece-me (outras pessoas não sei) impossível fazer do planeta Terra uma DeathStar, portanto para o conseguir teremos de mandar pessoas selecionadas para Marte ou até mesmo para fora do sistema solar.

A verdadeira espiritualidade

Espiritualidade é lidar com intuição. A intuição é algo que faz parte do lado direito do cérebro humano e serve para resolver problemas. Só isso e mais nada.
Normalmente este conceito está associado a muitas asneiras e eu não sou ninguém para julgar quaisquer Deuses.
Sou um ser materialista e gosto de uma boa interface e de um bom manual que sejam intuitivos.

VillasDB

Não revelo mais detalhes por este meio.
Encontra-se feita e acabada.

O engraçado

Não estou a gozar com ninguém, pelo mesmo motivo que os Chat Bots fazem-nos rir.
Mesmo que a sociedade seja negativa com tais atitudes, algo que tenho a dizer em minha defesa é por ser um tema típico de pensadores para pensar.
Não falta por aí pessoas a queixarem-se de forma directa ou indirecta, que não tiveram ou não têm noção das consequências e passam a vida a lamentarem-se disso. Há um pormenor muito bom neste tipo de circunstâncias: ao dizerem isso estão a aceitar as suas próprias limitações, mesmo não o sendo frequente de todo.
Com base nisso há outros problemas. Peguemos na lógica inconfundível e inquestionável por detrás das anedotas sobre génios que realizam desejos. Com base nisso e para começar, só para não ser muita coisa, formulamos a seguinte pergunta: o que é para si a definição de ideal?




Vai encontrar esta e muito mais…
Outro problema é que há pessoas que são mesmo ruins.

Alguns puzzles com que passei horas e horas a jogar

Estes puzzles são bons desafios para usar inteligência articial ou para resolver sem ajuda do computador.
klotski, um puzzle poláco com que passei horas a resolver, jogando efernizadamente com o rato. Lembro de usar uma versão para Windows e outra para Linux.


O Tetravex ficou muito melhor com as cores aplicadas a cada triângulo do quadrado. Não deixa de ser apelativo.


Sudoku, um problema NP-completo!


Tetris cujo o melhor jogador possivel, torna-se um problema NP-completo!


E estes excelentes jogos são os puzzles que mais me vêm à cabeça. Experimente!

Armamento incremental no mundo da informática

Nada melhor que uma equipa bem treinada com alguma frequência no mundo de desenvolvimento de software. A área de engenharia de software também tem o seu papel no mundo de desenvolvimento de software.
As actualizações de software são importantes. Recomendo o uso de firewalls. Deve-se ter cuidado com o que se descarrega e por onde se navega, bem como usar um bom browser como o Mozilla.
Código de segurança e código de ataque, até quando deixarão de crescer?
Eis alguns assuntos mais fáceis de explicar.

Técnicas de intrusão
1. keyloggers
2. sniffing
3. path transversal
4. SQL injection
5. Scanner
6. WEP cracker
7. Password cracker em geral
8. DNS Cache poison
9. Sites clonados

Respectivas técnicas de defesa
1. teclado virtual
2. Encriptação
3. implementação de mecanismos de autenticação em todos os ficheiros da página web
4. Escaping input (há outros mecanismos também)
5. Detectores de intrusão como o Snort, que também é um sniffer
6. Mudar para WPA2
7. Password forte
8. Pode limpar a cache dos ficheiros de DNS do browser e o ficheiro de DNS do sistema operativo tem de estar protegido contra escrita
9. Certified authority e verificar endereço no browser. O tópico anterior é importante.

O melhor é nunca deixar infectar o seu computador. Se tiver infectado temos 2 hipóteses para Windows e Linux. Uma vez tendo o computador doméstico infectado para remover malware no Windows, então nada melhor que o ComboFix. Uma vez tendo o computador doméstico infectado para remover malware no Linux, então nada melhor que o Trinity Rescue Kit.

Algumas boas práticas de segurança

Todas elas têm um contexto e servem de tópicos de pesquisa.
-Split DNS.
-Uso de VPNs como por exemplo Intranet ou VLANs.
-Definição de grupos de utilizadores e as suas respectivas permissões.
-Uso de standards de segurança como o ISO 27001 ou melhores ainda.

Resolvendo um equívoco das base de dados


Será um algoritmo de inteligência artificial algo assim tão fora do comum ou não adequado aos nossos problemas do dia-a-dia como é o caso das base de dados?
Existem várias questões e respostas para abordar acerca do assunto. Vamos então à principal e veremos diferenças existentes entre vários contextos para ver até que ponto há ou não problema com o assunto.
Que tem um algoritmo de inteligência artificial que os outros não têm?
Ambos são feitos de instruções da mesma natureza (programas de máquina de Turing e podem correr num processador RISC ou noutra linguagem).
Qual a maior vantagem em fazer previsões?
Embora nem sempre seja possível fazer previsões ou prever as coisas da maneira que queremos, o facto é que previsões existem e baseamo-nos nelas para construir o nosso raciocínio. Um exemplo de previsões pode ser a meteorologia que orienta os negócios de pescadores, agricultores e tantos outros possíveis. Existe algoritmos de inteligência artificial nesse sentido, mas com outros dados como alvo de estudo.
Então se o problema é mandarem em nós?
Qualquer informação que recebemos acaba por orientar tanto a nós como aos computadores. Nós seres humanos precisamos de informações precisas e devidamente justificadas para poder tomar decisões acertadas tal como os computadores. Os computadores têm a obrigação de nos informarem devidamente por mais complexos que sejam os cálculos por detrás do software e voltamos à mesma questão de instruções da mesma natureza tanto de um tipo de algoritmos ou como de outro.
Então se o problema é substituírem-nos?
Haverá sempre orientação humana, ou readaptação para sermos mais produtivos numa empresa. Isso é o que acontece com qualquer ferramenta.
Que fundamento têm antes de poderem ser usados nas base de dados?
Depois da criação da teoria por detrás, eles devem ser testados em jogos por serem ambientes sob-controlo, com regras bem conhecidas e com objetivos coerentes. O mundo real acaba por ser mais complicado, mas não impossível.
Agora não perca a sua oportunidade, porque se não é você que quer, haverá outro no seu lugar a aproveitar a ocasião. Existe exemplos na Web (da medicina às engenharias) para o ajudar a convencer, bem como técnicos de informática devidamente especializados para o assunto.

Alguns exemplos de aplicação de A.I.:

http://archive.ics.uci.edu/ml/datasets/Heart+Disease (visitado a 05/04/2016)
http://www.ebah.pt/content/ABAAAABasAL/trabalho-redes-neurais (visitado a 05/04/2016)