sexta-feira, maio 20, 2005
A lista das coisas mais úteis quando trabalhando
Ajudem a escrever a lista:
1 - ANT e seus sabores (NANT??) (e o "make" tb)
2 - Expressões Regulares ("regular expressions are write only ")
Não me venham com J2EE, Jota-o-caramba, nem Dot-Net-o-escambau... Tou falando de coisas úteis ;D
quinta-feira, maio 19, 2005
[Off-topic] Wish list pessoal
Preciso anotar isso em algum lugar:
- Um globo de luz pro meu banheiro
- Uma mesa daquelas que aumenta pra colocar na sala de jantar
- Um par de controles tipo vídeo game para colocar no micro
- Um headset bem legal e grande
- Uma placa de vídeo 3D decente
- Um chuveiro mega-ultra-power
- Um fogão BOM
- Um gabinete de verdade pro meu micro
Putz... tem chão. :)
Sem falar que ainda tenho que colocar o MythTv direito no meu micro, tá com problema na resolução qdo eu coloco conectado na TV.
quinta-feira, maio 05, 2005
Pingos e "Vida Digital"
Ando brincando com programinhas evolutivos. Não, não... nada de algoritmos genéticos ou programação genética. Coisa bem mais simples, mas muito divertida.
O objetivo inicial era fazer um objeto capaz de reconhecer algo "bom" e algo "mau" segundo sua própria perspectiva. Fazer ELE decidir o que é bom e o que é ruim pra ele.
Para isso criei uns objetos que sabem comer uns aos outros, chamei eles de "Pingos". Cada pingo tem um valor de energia e um número meio doido (chamado "inteligência") para decidir se deve comer o outro pingo ou não. Qdo um pingo acumula energia demais ele se divide e seu valor de inteligência é randomicamente alterado em até 10%. Se ele fica sem energia (morre), eu tiro ele do sistema.
Botei os bichinhos pra rodar, com poucas iterações só sobraram os pingos que decidiam comer os pingos mais fracos e ignoravam os maiores.
Agora o objetivo é fazer com que os pingos consigam se coligar permanentemente pra ver se eles chegam a montar alguma estrutura mais complexa. Vamos ver.
Bom, o objetivo original foi alcançado. Cada pingo sabe reconhecer o que é "bom" e "mau" sob sua própria perspectiva. Como o sistema é baseado em sobrevivência, o conceito de "bom" e "mau" é necessariamente orientada a isso.
Items interessantes a se notar:
- Se eu "envelheço" os pingos, tirando um pouco de energia a cada ação, o sistema no geral enfraquece e o número de pingos vai diminuindo. Interessantíssimo pq demonstra que a lei de conservação de energia tb pode funcionar digitalmente. A diferença é que é muito simples retirar e adicionar energia de sistema digital. Uma simples cópia de pingos significa que eu adicionei energia no sistema.
- No começo, dividir-se era uma operação opcional dos pingos. O que acontecia era que eles iam comendo, comendo e acabava sobrando apenas UM com toda energia do sistema nele. Esse pingo sempre era um dos pingos da primeira geração. Qdo eu obriguei a se dividirem, a quantidade de pingos no sistema se estabilizou e os pingos passaram a ter uma vida média. Detalhe, qdo eu divido o pingo, um deles continua com a idade de antes. A parte interessante aqui é que colocar um número para "desestabilizar" o pingo (obrigando ele a se dividir se ficar muito grande) fez com o que sistema como um todo estabilizasse. É meio óbvio tb, mas é muito interessante.
- Não importa muito os números que eu uso ou a conta que eu faço, os pingos sempre se adaptam pra as melhores escolhas. Mas acho q se eu fizer uma conta de decisão melhor, os pingos conseguem evoluir mais rápido.
- No fundo no fundo, o mais interessante está sendo observar que leis "naturais" tb valem digitalmente.
quarta-feira, maio 04, 2005
Linguagem "estupidamente" tipada.
Tem horas que eu fico doido com Java.
A linguagem é razoavelmente boa, a quantidade de APIs é formidável. Mas sinceramente, tem horas que a tipagem estática é um porre.
Java não é "estaticamente tipada", ela é "estupidamente tipada".
Vale aquela máxima maravilhosa: "Tipagem estática é um jeito de tornar o compilador tão burro que vc tem que ficar lembrando pra ele toda hora DO QUE vc está falando."
(Parênteses)
ArrayList<String> list = new ArrayList<String>(); // Dá pra ser mais redundante, por acaso?
(Fecha a porcaria do parênteses)
Já disse: eu gostaria de opcionalmente tipada. Usa quem quer, quem não quer, não usa.
Linguagens para criar linguagens
A idéia de DSL (Domain Specific Languages: JetBrains e The Server Side) é excelente.
Porém, me pergunto se programação estruturada e programação orientada a objetos no final de contas não são exatamente um meio de vc criar uma linguagem específica para o seu negócio.
Se é assim... modelagem de negócio seria melhor se se transformasse em "modelagem de vocabulário". Hmmmm.... Dá o que pensar.
Tb dá o que pensar no próximo paradigma de desenvolvimento: vc programa uma "função" que tem propriedades e aceita determinadas interfaces para operar. Ei! Ei! Padrão COMMAND!!!!
Taí: Programação orientada a COMMANDs :)... Só precisava achar uma sintaxe interessante.
Assinar:
Postagens (Atom)