sábado, 13 de dezembro de 2008

ROBOCODE





Robocode foi criado por Matthew Nelson da IBM como parte do seu trabalho na AlphaWorks em 2001 e em 2005 foi hospedado no SourceForge tendo sua versão opensource desde a versão 1.0.7.

Basicamente o jogo se trata de tanques(virtuais) escritos em Java, que batalham em uma arena até que um saia vencedor.Apesar de serem tanques, o jogo não possui sangue, nem politica e funciona como ambiente de aprendizado de POO e Java exemplificando conhecimentos como classes, instancia de classes, eventos, sobrescrita ded metodos e passagem de mensagens alem de varios conceitos de Inteligencia Artificial como Algoritmos Geneticos(JGAP), Agentes e outras tecnicas.

Primeiramente para instalar o Robocode, é necessario ja possuir o jdk 1.6 instalado. Após se certificar sobre a instalação, baixe o Robocode ,tendo como resultado um arquivo do tipo robocode-setup-x.y.z.jar, onde .jar é a extensão de arquivos utlizadas pelo Java, semelhante ao .zip;
Pois bem, para instalar, vc deve digitar o seguinte comando no terminal:



No WinXP/Vista o aplicativo criara um icone desktop, ja em plataformas _NIX como Ubuntu ou OpenSolaris 2008.11 você deve proceder da seguinte forma:






Para ter uma primeira impressão do jogo, clique em Battles e logo após em New como mostrado abaixo:


Starting a new battle by selecting New in the Battle menu

Então aparecera a tela de nova batalha, onde você deve escolher seus robos e as opções da batalha. Para essa batalha, tentaremos testar RamFire, Crazy and Tracker. Insira os robos clicando 2 vezes sobre seus nomes ou selecionando os robos (+CTRL) e clicando em ADD .

Image:NewBattleDialog.png

Se você ja possui algum conhecimento em programação, principalmente em Java, ou em AI, ou mesmo que você seja totalmente noob, vasculhe o codigo dos robos sample para ganhar alguma experiencia e exercitar sua criatividade!!

Neste jogo existem combates de 1X1,Melee e em Times, onde existem uma series de robos que são mais fortes, mas nao possuem radar, possuindo um lider que passa msagens sobre posição dos alvos e coordena seus ataques.


Neste link, você fará o download de um pdf que exemplifica boa parte do conhecimentos iniciais, como metodos basicos , arquitetura do jogo e arquitetura dos tanques.



Para mais informações:

  1. Site Oficial
  2. Robocode Wiki
  3. Robocode Repositorio(baixe outros guerreiros)
  4. Artigos AlphaWorks(alguns truques e dicas)
  5. Tutorial(Meu primeiro robo!!)

Marcadores:

quinta-feira, 11 de dezembro de 2008

JRUBY




Vendo um pouco a historia do Ruby MRI em C

Ruby é uma Linguagem de Programação interpretada, com Tipagem dinamica e Tipagem forte sendo totalmente orientada a objetos(Tudo é objeto no Ruby), com várias semelhanças com Perl, Python e Smalltalk.

Projetada tanto para a programação em grande escala quanto para codificação rápida, tem um suporte a orientação a objetos simples e prático. A linguagem foi criada pelo japonês Yukihiro Matsumoto(MATZ), que aproveitou as melhores idéias das outras linguagens da época criando uma linguagem boa pra ter no seu canivete desenvolvedor, gerando produtividade, redução no tempo total de desenvolvimento e logico mais dinheiro!!.

Esta linguagem possui vastos repositórios de bibliotecas disponíveis em sites como Ruby Forge e Ruby Application Archive (RAA). Existe, ainda, uma ferramenta bastante útil para instalação de bibliotecas, chamada RubyGems. O projeto mais famoso desenvolvido em Ruby é o meta-framework Rails ou simplesmente Ruby on Rails.


JRuby The Power of JVM

JRuby é uma implementação em Java do interpretador Ruby(MRI) que esta sendo continuamente desenvolvida pelo JRubyTeam e o JRuby é opensource e esta sobre uma licença tripla:CPL/GPL/LGPL.

JRuby é severamente integrado com a JVM e linguagem Java permitindo armazenar o interpretador em qualquer aplicação Java com total acesso entre Java e Codigo Ruby e com essa interoperabilidade, quem ganha somos nós desenvolvedores, ja que contamos com o poder do Java em muitas situações(JDBC, JAVA EE 5/6, Java Threads, Swing, FreeTTS...).

O JRuby conta com a liderança de Charles Nutter,Thomas Enebo,Ola Bini and Nick Sieger, sendo e, Setembro de 2006,a SUN Microsystems chamaram Nutter e Enebo para trabalhar no JRuby fulltime!!!!

Em junho do ano seguinte,ThoughtWorks chama Ola Bini to work on Ruby and JRuby.

  1. Baixe o JRuby
  2. Descompacte o arquivo zip no seu diretorio home/user(ou qualquer outro!!)
  3. Coloque a pasta "home/user/jruby1.1.X/bin no PATH do sistema
  4. Verifique se esta funcionado , digitando no terminal: jruby -v







    No proximo post falarei mais sobre JRuby, A metodologia agil de desenvolvimento, convention over configuration, rails, mongrel cluster, jdbc pools, MARS, vaders e muito mais, nao percam!!

Marcadores:

CLOJURE






Introdução

Clojure foi desenvolvido por Rich Hickey, ábil programador e arquiteto tendo trabalhado em uma série de projetos com diversas tecnologias, incluindo LISP.

Então, o Clojure é uma linguagem dinamica com alvo na JVM que combina a forma de uso e a produtividade das linguagens scripts contando com um eficiente e robusto suporte a concorrencia (MULTITHREADED). Clojure é uma linguagem compilada, gerando bytecode para a JVM, mas ainda assim se mantem totalmente dinamico.Toda caracteristica suportada pelo Clojure tambem o é a nivel de execução (RUNTIME). Clojure possui fácil acesso aos mais diversos frameworks em Java(senão todos!!), com dicas de tipo opcionais e inferência de tipo, certificando que as chamadas ao Java não permitam reflexão. Clojure é um dialeto LISP e compartilha com o LISP a filosofia de codigo-como-dados e um poderoso sistema de macros.

Predominantemente o Clojure é uma linguagem funcional, e possui um rico conjunto de estruturas de dados que são imutáveis e persistentes.

Quando um estado mutável é necessario, Clojure oferece uma MEMÓRIA TRANSACIONAL DE SOFTWARE (STM), e um Agente de sistema reativo que garante limpeza, correteza em designs multitarefa. Clojure é uma combinação de facilidades de forma elegante, poderosa, pratica e claro, divertida de usar.

Apesar da JVM não possuir suporte á tail recursion stack, o Clojure possui um construtor de looping funcional utlizando recur/loop.

As estruturas de dados persistentes imutaveis funcionam de modo transacional, de forma que as novas versões assim como as antigas fiquem disponiveis mesmo após mudanças.A coleção desta forma tem sua performance garantida, alem de ser totalmente thread safe e ser pratica(ou seja, muito mais rapida que O(logn)!


Existem 5 caracteristicas fundamentais desta nova linguagem:
  • Novo dialeto LISP, não é igual a COMMON LISP ou SCHEME
  • Linguagem Funcional(ênfase em imutabilidade)
  • Suporte a alta concorrencia(coordenação de estado a nivel de linguagem
  • Design feito para a JVM(roda nativamente!)
Novo LISP
  • Tipagem e compilação dinamicas
  • Console Interativo(REPL-ReadEvalProgrammingLoop)
  • Load/Edit do codigo em programas rodando
  • Nucleo Reduzido
  • Sequencias
  • Abstração de sintaxe(Macros)
  • Não é OO
Tipos de Dados Atomicos
  • Inteiros com precisão arbitraria -1234567898765
  • Doubles 1.234
  • Bigdecimals 1.234M
  • Racionais 22/7
  • String "William"
  • Chars \a \b \c
  • Simbolos will java
  • Palavras chave :nuke :hiroshima
  • Booleans true false
  • Null nil
  • Expressões Regulares #"a*b"

Para mais informações:

Marcadores:

A ERA DA PARTICIPAÇÂO


Ola pessoal!!

O intuito deste blog é ser a fonte de consulta de muitos desenvolvedores e estudantes que assim como eu, tem certas duvidas de como fazer algo e saem navegando pelas wikis, blogs and site por slides, videos and hand on labs.

As tecnologias citadas nesse blog são de vanguarda, ou seja, possuem crescente envolvimento das empresas como a SUN, alem de uma vasta comunidade de desenvolvimento.

Amsterda Intelligence Technology Systems entra com o pé direito na Era da Participação trazendo conteudos de forma descontraida, e facilitando a iniciação e posterior criação de conteudo por parte daqueles que forem incentivados a aprender mais por este blog.

Sejam bem-vindos e deixem suas opiniões sobre os posts e mandem seu email com alguma pergunta ou sugestão.

Marcadores: