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.