Tecnologia, Programação e Hardware.

29.3.06

Novo desenvolvimento

Como se programa um software?
Vc sabe não é?
Eu creio que sim.
O desenvolvedor senta em sua messa. Talvez coloca uma musica para escutar e começa a
escrever.
Esta forma de programar em que todos estamos acostumados. Um desenvolvedor em seu mundo fazendo o seu trabalho.
Vocês já devem conhecer extreme programing (XP) que é uma metodologia de desenvolvimento onde um par de programadores senta e desenvolve o programa. Isso é um exemplo minimalista sobre XP. Mas esta é uma parte muito interessante. Aonde vc cria um ambiente de aprendizado entre as pessoas que não existiria se vc fosse desenvolver sozinho o programa.
Mas esta forma de desenvolvimento também traz problemas.
Tem que se ter os desenvolvedores no mesmo lugar, o que é muito incomodo principalmente para projetos open-source. Nestes projetos os desenvolvedores estão a muitos kilometros uns dos outros e é impossivel aplicar uma metodologia como esta.
Seria legal se existisse uma forma de utilizar este tipo de desenvolvimento em projetos aonde os desenvolvedores estão muito distantes. Algo do tipo uma programação comunitaria entre não apenas dois desenvolvedores mais varios ao mesmo tempo sendo um que escreve o código e outros que vão dando dicas e corrigindo erros. Una isso a uma linguagem que tenha uma curva de aprendizado estranhamente pequena e você vai ver o estrago que isso pode causar.
O problema com o software hoje em dia é que a visão dele não é para o aprendizado acelerado.
Acredito que conhecam o site Java Almanac. Ele é um exemplo de como se pode tornar as coisas mais simples para os programadores. Não adianta criar uma abstração sem que todos possam enteder ela completamente. E não adianta nada não existir formas de se chegar a esta abstração diretamente do problema em que se quer tratar. Por exemplo preciso de uma classe que converta Numeros para strings. Como vou chegar na resposta partindo apenas do conhecimento do meu problema? Sem ter que fuçar por bibliotecas ou perguntar a quem quer que seja.
Não estou falando de documentação, é algo mais abstrato que isso. É mais ou menos como dizer:
-Esta é minha entrada.
-Esta minha saida.
-Quem faz isso pra mim?

Não existem formar de se fazer algo tão complexo quanto isso sem uma comunidade muito forte.
E criando maneiras de unir a comunidade e fazer com que os neófitos entrem em contato com as pessoas certas é que se pode fazer coisas deste genero.
Mas porque implementar tudo isso em software em seu computador? Porque não implementar aonde você possa ter acesso direto conectado diretamente com a internet?
Porque não desenvolver diretamente na web?
Aonde vc pode ver o que outros estão fazendo em seu projeto preferrido e ler as discussões entre os desenvolvedores e como eles cooperam entre si.
Mudanças muito grandes as que proponho. Talvez um dia, nós ou outros implementaram algo assim.

26.3.06

News

Finalmente depois de alguns dias offline o site do guj voltou ao ar.
Foram perdidas varios posts e varios usuarios incluindo eu.
Já me cadastrei novamente. Mas ainda não se sabe se conseguiram recuperar as mensagens perdidas. O pior de tudo é que alguns tutoriais também foram perdidos.

Agora temos também um novo escritor de Ruby. Ta e dai?
Dai que ele é brasileiro e tem um blog que costumo ler sempre.
Gostaria de dar meus parabéns ao TaQ pelo livro.
Tenho visto o tutorial dele a muito tempo e vejo como o tutorial foi melhorando.
Fico imaginando que o livro deve estar muito bom.

Estou tentando entender o código do vraptor 2 para poder colaborar com o projeto de alguma forma. Mas é dificil ler codigo de outras pessoas, tenho que aprender a fazer isso.

24.3.06

Linguagens de Programação

Em quantas linguagens vocês já programaram?
Quanto tempo gastaram lendo documentos, exemplos e refazendo as partes que não estavam muito bem entendidas.
Quanto tempo vai demorar pra alguém conseguir criar uma linguagem em que vc possa ser especifico quando quiser e geral quando não quiser se preocupar com detalhes?
E como vamos ensinar esta linguagem a quem não a conhece da forma mais facil e rápida possivel?
Mas e se os detalhes específicos não puderem ser excluidos?
Vamos pensar na realidade.
Existe alguma linguagem que se aproxime disso?
Eu não conheço.
A linguagem em si pode ser ensinada para muitas pessoas. Mas todo o conjunto de bibliotecas
já não é possivel de se dominar por apenas uma delas.
E a linguagem sem nenhuma biblioteca não é absolutamente nada.
O que tornam as linguagens o que elas são é suas bibliotecas e como se aprende a utilizar elas.
Mas tornar o aprendizado das bibliotecas mais fácil depois de um grande crescimento não é mais possivel. Algo que devia existir é uma forma geral de acessar recursos. Não importa se é um arquivo, um objeto, um monitor, um hd, uma placa de vídeo, um mouse.
Seja o que for tem que existir uma forma uniforme de acessar estes recurso. Algo que não exiga mais do que 2 linhas de código.
Alem de tornar o acesso de recursos mais facil temos que tornar as abstrações dos programadores também mais entendiveis.
O que uma determinada classe de um sistema faz?
Como vou saber isso sem ler o código? Ou de que forma vou ler o código e entender o que aquilo faz mesmo sendo complexo?
Que assuntos dos conhecimentos humanos tenho que entender para entender o que esta escrito?
Que outra parte do sistema tenho que entender antes de compreender esta parte?
E como vou achar este conteudo na opinião do escritor?
Talvez isso não seja possivel. Unir documentação e programação de uma forma pratica.
Mas seria interessante. Se tudo for seguido da melhor forma possivel.
O que proponho é tentar focar a criação de uma nova linguagem de programação em aprendizado e facilidade, sem que seja afetado eficiência e especificidade.
É como tentar tornar amigos gato e cão. Uma tarefa muito dificil.

Outra coisa que talvez seja legal de se ver é uma linguagem focado no espacial e não em um plano 2d cheio de palavras.
Tivemos uma evolução de milhares de anos para tratar da melhor forma possivel todo tipo de padrão visual e poderiamos utilizar todo este potêncial para alguma coisa util.
Algo como os jogadores de xadrez fazem, reconhecem um padrão e sabem a proxima jogada.
Talvez seja possivel fazer isso com linguagens de programãção. O programador experiente bate o olho e só com uma olhada já sabe com uma acuidade impressionante o que esta acontecendo.
Isso também acontece com programadores experiêntes hoje mas o grau disso é bem menor.
São apenas ideias. Talvez um dia elas funcionem em algumas linguagem talvez não.
Espero ver isso algum dia, ou eu mesmo implementar algo assim.
Ou quem sabe já esteja sendo feito em algum lugar.

22.3.06

Primeiro Post !!!!

Ola!!!

Neste blog novo vc's vão ver o que ando inventando com computação em geral e escrever alguns pontos de vista que tenho sobre estes assuntos.
Gosto de programar em java e é muito provável que vocês iram ver algum código em java por aqui.
Vou escrever também sobre tecnologia em geral e sobre as ultimas novidades.
Talvez vc's devem estar se perguntando:

-Mas que diabos de titulo de blog estranho!!!

Inti na mitologia inca é o deus sol e quilla a deusa lua.
Eu usei este titulo pq eu gosto da união dos dois nome, soa diferente.
Um abraço a todos.