Leia no novo blog
Uma coisa que não podemos esquecer é a busca constante pela nova versão da LibFácil. Quando eu programava em Clipper, um amigo apelidou nossa biblioteca de FazTudo, porque tínhamos quase tudo pronto naquela biblioteca.
O tempo passou e continuo a procurar uma nova versão da LibFácil, seja em Java, C#, Python ou Ruby. É interessante o esforço que um programador realiza em busca de novas bibliotecas. Muitas vezes, eu já perdi mais tempo procurando uma nova biblioteca do que se tivesse implementado do zero. Faz parte do risco, mas normalmente a recompensa de uma biblioteca é maior estabilidade e hoje no mundo do Open Source, podemos contar com atualizações diárias, comunidades para resolver bugs e intermináveis downloads, tutoriais e sites de como fazer.
Mas achar a LibFácil não é fácil. Eu participo do grupo Python Brasil, uma lista de discussão sobre Python e são frequentes as buscas por bibliotecas gráficas: GTK, QT, Wx... o mesmo para jogos onde temos a PyGame e a Pyglet. Em Delphi é a mesma coisa, com um agravante: componentes.
Não que tudo isso seja ruim, mas o excesso de opções tem lá suas desvantagens. Um exemplo, escolher a linguagem e o conjunto de bibliotecas para se escrever uma nova aplicação Web. Há tantas opções que a escolha se torna um trabalho hercúleo. J2EE, Ruby on Rails, Django, tecnologias Microsoft, Zope e os milhares de quase frameworks PHP, gerenciadores de site e Wikis mágicos que encontramos por aí.
Eu mesmo estou em busca da LibFácil para sites e descobri uma forma bem interessante de escolher a biblioteca para o serviço, no caso, sites Web com banco de dados, os antigos sistemas agora chamados de aplicações web :-) Uma vez que a Web é a nossa plataforma, uma forma de pensar neste tipo de problema é ver as opções de hospedagem. Qualquer aplicativo web hoje precisa de um servidor seguro e rápido, tanto em relação a banda de Internet quanto em processamento. Hospedagem nos EUA hoje é quase de graça, mas nem tanto. Se você escolher J2EE ou Python prepare-se para gastar mais. A maioria dos sites que encontrei só disponibilizam hospedagem em Python ou Java com hosts dedicados... aí a coisa fica muito cara. Mas a questão é a LibFácil.
Antes de começar a desenvolver o sistema, temos que escolher o banco de dados, a biblioteca de mapeamento objeto-relacional, o framework, etc, etc, etc. E cada uma destas questões é respondida por uma biblioteca diferente. O número de camadas de abstração cresce assustadoramente, tornando as aplicações mais simples lentas, mesmo em computadores com recursos absurdos como temos hoje. Essa semana estive discutindo sobre o uso de XML ou YAML em nossos sistemas :-) Porém, a decisão é sempre tomada em relação a maturidade das bibliotecas YAML ou XML. Como eu odeio XML, fica mais fácil, mas nem sempre é assim.
No final, você usa umas 15 bibliotecas para fazer qualquer besteira. E cada uma delas é um novo mundo. Talvez esta seja a explicação de programadores profissionais não trocarem tão facilmente de biblioteca. Uma vez que aprendem ou dominam um conceito, ficam nele uns 10 ou 15 anos... por isso que ainda encontro gente com saudades de Visual Basic ou Clipper. Era tão simples naquela época. Você instalava o compilador e já estava pronto para quase tudo, mas já existiam bibliotecas e componentes comerciais... mas era mais fácil. A vida com Delphi ou .Net não facilita muito as escolhas também. Eu uso o novo Delphi 2007 para Win32 e ele vem com umas 4 ou 5 formas diferentes de acesso ao banco de dados. Eu achei pouco e ainda instalei uma outra forma... e por ai vai. Felicidade deste tipo só encontrei em J2ME.
A busca da LibFácil às vezes nos desvia dos problemas reais. Eu já vi muitos desenvolvedores modificarem um problema simplesmente para poder utilizar a biblioteca que mais gostam. Quem trabalha com Java acha XML a coisa mais natural do mundo, Perl é lindo, Python é perfeito. É por isso que eu defendo uma certa independência entre quem desenvolve a solução e quem determina a arquitetura de tudo isso. Quem nunca viu formulários de aplicações Delphi completamente irritantes, tudo para usar os controles DataAware e facilitar a vida do programador :-)
E a busca da LibFácil do momento continua. Viva o Google e a Internet. A procura não termina jamais !
Novo Blog
Novo endereço
https://blog.nilo.pro.br
domingo, 2 de março de 2008
terça-feira, 1 de janeiro de 2008
SamScript e o profissional de informática
Leia no novo blog
Acordei hoje pensando no que um profissional de informática deve saber. Pensando no que já aprendi nesses anos, cheguei a conclusão que a linguagem mais importante é o SamScript ou a língua do tio Sam.
Sem inglês, o que você pode aprender? Ok, há exceções, pessoas talentosas e meio mágicas que conseguem aprender tecnologia de ponta sem saber inglês, mas não lembro o nome de nenhuma dessas pessoas, por mais que eu tente. Esperar o livro em português não vale, demora pelo menos dois anos.
Não precisa falar ou escrever, embora ajude bastante quando você tem problemas. Imagine aqueles erros incompreensíveis... Google neles ! Mas aposto que o número de respostas em português será pelo menos 10x menor que em inglês. Alguns arranham com espanhol, mas na verdade o número de publicações em inglês é surpreendente. Ler em inglês é fundamental.
Bom, para ajudar, visite o Mango Languages. O site é muito bom e o preço é melhor ainda (grátis). Esses sites grátis são um mistério para mim, mas não precisa entender disso para acessá-lo.
Como a ano está começando, aproveite para considerar aprender SamScript, a linguagem realmente importante na informática, depois dela tudo fica muito mais fácil.
Acordei hoje pensando no que um profissional de informática deve saber. Pensando no que já aprendi nesses anos, cheguei a conclusão que a linguagem mais importante é o SamScript ou a língua do tio Sam.
Sem inglês, o que você pode aprender? Ok, há exceções, pessoas talentosas e meio mágicas que conseguem aprender tecnologia de ponta sem saber inglês, mas não lembro o nome de nenhuma dessas pessoas, por mais que eu tente. Esperar o livro em português não vale, demora pelo menos dois anos.
Não precisa falar ou escrever, embora ajude bastante quando você tem problemas. Imagine aqueles erros incompreensíveis... Google neles ! Mas aposto que o número de respostas em português será pelo menos 10x menor que em inglês. Alguns arranham com espanhol, mas na verdade o número de publicações em inglês é surpreendente. Ler em inglês é fundamental.
Bom, para ajudar, visite o Mango Languages. O site é muito bom e o preço é melhor ainda (grátis). Esses sites grátis são um mistério para mim, mas não precisa entender disso para acessá-lo.
Como a ano está começando, aproveite para considerar aprender SamScript, a linguagem realmente importante na informática, depois dela tudo fica muito mais fácil.
domingo, 30 de dezembro de 2007
Que venha 2008
Bom, em Novembro não publiquei nada... dezembro não pode ficar assim também.
Todo mundo faz planos para o ano novo, todo ano. Nem sempre conseguimos fazer o que planejamos, mas planejar já é parte do bom caminho.
Em 2007, muitas coisas boas aconteceram por aqui. Nós finalmente terminamos toda a documentação da mudança, minha filha nasceu, terminei o mestrado... tudo num só ano. Para 2008 fica a aventura de criar uma nova empresa, continuar estudando estatística e matemática, programar muito e quem sabe terminar o livro de programação em Python, publicar pelo menos um artigo científico... Claro, isso tudo nos meus planos. Mas com certeza no final de 2008 ainda restarão algumas coisas por fazer :-) E isto faz parte do ano novo. Momento de repensar a vida e continuar tocando o barco.
Eu continuo pesquisando otimização de transferências em redes de alta latência, acho que virou um vício. Daí o aprofundamento em estatística e matemática. Continuo pensando em processamento paralelo e ainda acho que redes e processamento paralelo tem muito em comum. Espero que em 2008 apareçam novas soluções para resolver este tipo de problema, embora ache que soluções melhores só em 2010...
Em 2008, provavelmente vou poder testar o poder das GPUs para processamento paralelo, claro que isso é desculpa para comprar um novo monstro para os jogos :-), mas é também muito interessante. Uma das coisas que você tem de resolver quando diminuem suas horas diárias de TV é o que fazer com tanto tempo livre. Na dúvida, jogue WOW... é meu passa-tempo, destruidor de tempo livre preferido.
Um feliz e próspero ano novo a todos !
Todo mundo faz planos para o ano novo, todo ano. Nem sempre conseguimos fazer o que planejamos, mas planejar já é parte do bom caminho.
Em 2007, muitas coisas boas aconteceram por aqui. Nós finalmente terminamos toda a documentação da mudança, minha filha nasceu, terminei o mestrado... tudo num só ano. Para 2008 fica a aventura de criar uma nova empresa, continuar estudando estatística e matemática, programar muito e quem sabe terminar o livro de programação em Python, publicar pelo menos um artigo científico... Claro, isso tudo nos meus planos. Mas com certeza no final de 2008 ainda restarão algumas coisas por fazer :-) E isto faz parte do ano novo. Momento de repensar a vida e continuar tocando o barco.
Eu continuo pesquisando otimização de transferências em redes de alta latência, acho que virou um vício. Daí o aprofundamento em estatística e matemática. Continuo pensando em processamento paralelo e ainda acho que redes e processamento paralelo tem muito em comum. Espero que em 2008 apareçam novas soluções para resolver este tipo de problema, embora ache que soluções melhores só em 2010...
Em 2008, provavelmente vou poder testar o poder das GPUs para processamento paralelo, claro que isso é desculpa para comprar um novo monstro para os jogos :-), mas é também muito interessante. Uma das coisas que você tem de resolver quando diminuem suas horas diárias de TV é o que fazer com tanto tempo livre. Na dúvida, jogue WOW... é meu passa-tempo, destruidor de tempo livre preferido.
Um feliz e próspero ano novo a todos !
sábado, 27 de outubro de 2007
One Laptop per Child
Leia no novo blog
Eu me tornei professor por acidente. No colégio, como era bom em matemática, sempre ensinava alguém... depois a coisa foi ficando mais séria. Comecei a ensinar matemática particular ainda no primeiro grau... aos 18 anos eu já era instrutor de cursos de programação. Acho que no primeiro curso eu ensinei Clipper :-)
Em 1994, virei professor de lógica e técnica de programação e também de linguagens de programação I e II. Professor de algoritmos, Cobol e C. Desde então passei a me interessar seriamente por educação e a me impressionar com a velocidade que as pessoas aprendem. Confesso que ensinar a programar não é fácil, aprender também não. Com um pouco de prática se melhora, mas nunca fiquei contente... continuo procurando novas formas de ensinar programação. Nos últimos anos, eu ensinei Python. Uma linguagem que gosto muito e uso no meu dia a dia.
Esta semana também caí por acidente na página do projeto One Laptop per Child. Eu já escutei muito sobre este projeto e resolvi ler um pouco mais. A comunidade técnica sempre reclama que não se pode fazer quase nada com o tal notebook entre outras coisas. Eles procuram desenvolvedores para a plataforma, que é Linux, mas rodando em uma máquina muito enxuta para os padrões de hoje. Não resisti, baixei a imagem e fiquei testando. Lembrei dos dias negros do Linux ao tentar configurar o teclado belga no X. Fazia tempo que não tinha tanto trabalho para configurar uma coisa tão besta. Depois de ignorar o texto da Wiki do projeto e de rodar o Qemu corretamente, a imagem funcionou com rede, mas ainda sem som. Bem, o som ainda não está funcionando, mas eu não conseguia mais esperar para testar o Invasores no OLPC, ou na imagem dele. E não é que funcionou sem alterar uma só linha!
Mais um ponto para o Python. Também, o OLPC é baseado no Fedora, mas usa uma interface gráfica diferente, o Sugar. Ainda estou resolvendo alguns problemas com o tamanho da tela do jogo, mas mesmo não rodando em tela cheia, o jogo funciona sem problema algum. Eu vou fazer um release só para o OLPC em breve.
Voltando ao OLPC, eles precisam de kits de programação, incluindo a criação de jogos simples. Como os fontes do Invasores são em português, tomara que ajude alguém a entender como fazer um jogo extremamente simples.
Algumas pessoas tem criticado o OLPC, resumindo o projeto a tecnologia do notebook. Mas lendo a wiki deles, percebe-se que a tecnologia é o foco atual, mas o objetivo do projeto é proporcionar uma melhor educação a milhões de excluídos. Muitos estão preocupados com problemas mais sérios, como a falta de professores nas escolas, energia elétrica e água potável. Isso também é real e muito importante. Minha única crítica é a busca incessante por balas de prata. O OLPC não pretende e nem vai resolver todos os problemas do mundo. Este projeto é mais uma contribuição, outras ações devem ser realizadas para melhorar a vida de todos.
Eu me identifiquei com o projeto, porque uma vez, conversando com amigos, nos perguntamos quantos talentos se perdiam com a miséria. Imagine só: você um gênio da programação, mas o único equipamento a que você tem acesso é um carrinho de mão. Qual é chance de por acidente descobrir seu talento? Quantos matemáticos, químicos, físicos e biólogos não perdemos com estas faltas de oportunidade?
Um computador para cada criança dará uma chance para milhares de crianças conhecerem a Internet, textos, sons e gráficos. Isto por si só já justificaria o projeto para mim. Se apenas 0,1% das crianças que receberem o notebook mudarem de vida, significa que precisaríamos de 1000 notebooks para salvar uma criança. Calculando os custos disso, vejamos US$250,00 x 1000,00 = US$250.000,00. Um quarto de milhão para integrar ou reaproximar uma pessoa da sociedade moderna. Uma pessoa com acesso a educação e trabalho pode reverter o ciclo de pobreza de várias gerações, eu já vi isso ocorrer várias vezes no Brasil. Eu também acredito que consigamos um sucesso bem maior que 0,1%. Para mim, muito promissor. Ainda que muitos notebooks caiam no mercado negro, sejam roubados ou simplesmente danificados em curto espaço de tempo, acredito que será uma marca na vida dessas crianças.
Uma coisa que deixou preocupado é a falta de Internet no Brasil. Os últimos números que li, traziam algo como 14 ou 20 milhões de internautas no país. Embora este número venha crescendo, ainda demonstra nosso atraso e má distribuição de renda. Quantas escolas públicas temos com acesso à Internet? Na década de 90, o problema era ter telefone. Agora é conseguir Internet. Em Manaus, a situação é crítica. Ainda se vendem planos de 200 ou 300Kb/s como banda larga. Precisamos urgentemente de Internet nas escolas. O OLPC sem Internet vai ficar bem limitado, mas isso não invalidará os possíveis ganhos do projeto. Precisamos de mais educação e de mais acesso a Internet. Um grande país tem grandes problemas. Meu sonho megalomaníaco é de transformar o Amazonas em uma nova Índia :-)
Como disse, não resolverá todos os problemas do mundo, mas é um esforço positivo. É muito importante criticar, visões diferentes sempre são bem-vindas. Só não esqueça que o projeto é sobre crianças e educação. O laptop é só um detalhe.
Eu me tornei professor por acidente. No colégio, como era bom em matemática, sempre ensinava alguém... depois a coisa foi ficando mais séria. Comecei a ensinar matemática particular ainda no primeiro grau... aos 18 anos eu já era instrutor de cursos de programação. Acho que no primeiro curso eu ensinei Clipper :-)
Em 1994, virei professor de lógica e técnica de programação e também de linguagens de programação I e II. Professor de algoritmos, Cobol e C. Desde então passei a me interessar seriamente por educação e a me impressionar com a velocidade que as pessoas aprendem. Confesso que ensinar a programar não é fácil, aprender também não. Com um pouco de prática se melhora, mas nunca fiquei contente... continuo procurando novas formas de ensinar programação. Nos últimos anos, eu ensinei Python. Uma linguagem que gosto muito e uso no meu dia a dia.
Esta semana também caí por acidente na página do projeto One Laptop per Child. Eu já escutei muito sobre este projeto e resolvi ler um pouco mais. A comunidade técnica sempre reclama que não se pode fazer quase nada com o tal notebook entre outras coisas. Eles procuram desenvolvedores para a plataforma, que é Linux, mas rodando em uma máquina muito enxuta para os padrões de hoje. Não resisti, baixei a imagem e fiquei testando. Lembrei dos dias negros do Linux ao tentar configurar o teclado belga no X. Fazia tempo que não tinha tanto trabalho para configurar uma coisa tão besta. Depois de ignorar o texto da Wiki do projeto e de rodar o Qemu corretamente, a imagem funcionou com rede, mas ainda sem som. Bem, o som ainda não está funcionando, mas eu não conseguia mais esperar para testar o Invasores no OLPC, ou na imagem dele. E não é que funcionou sem alterar uma só linha!
Mais um ponto para o Python. Também, o OLPC é baseado no Fedora, mas usa uma interface gráfica diferente, o Sugar. Ainda estou resolvendo alguns problemas com o tamanho da tela do jogo, mas mesmo não rodando em tela cheia, o jogo funciona sem problema algum. Eu vou fazer um release só para o OLPC em breve.
Voltando ao OLPC, eles precisam de kits de programação, incluindo a criação de jogos simples. Como os fontes do Invasores são em português, tomara que ajude alguém a entender como fazer um jogo extremamente simples.
Algumas pessoas tem criticado o OLPC, resumindo o projeto a tecnologia do notebook. Mas lendo a wiki deles, percebe-se que a tecnologia é o foco atual, mas o objetivo do projeto é proporcionar uma melhor educação a milhões de excluídos. Muitos estão preocupados com problemas mais sérios, como a falta de professores nas escolas, energia elétrica e água potável. Isso também é real e muito importante. Minha única crítica é a busca incessante por balas de prata. O OLPC não pretende e nem vai resolver todos os problemas do mundo. Este projeto é mais uma contribuição, outras ações devem ser realizadas para melhorar a vida de todos.
Eu me identifiquei com o projeto, porque uma vez, conversando com amigos, nos perguntamos quantos talentos se perdiam com a miséria. Imagine só: você um gênio da programação, mas o único equipamento a que você tem acesso é um carrinho de mão. Qual é chance de por acidente descobrir seu talento? Quantos matemáticos, químicos, físicos e biólogos não perdemos com estas faltas de oportunidade?
Um computador para cada criança dará uma chance para milhares de crianças conhecerem a Internet, textos, sons e gráficos. Isto por si só já justificaria o projeto para mim. Se apenas 0,1% das crianças que receberem o notebook mudarem de vida, significa que precisaríamos de 1000 notebooks para salvar uma criança. Calculando os custos disso, vejamos US$250,00 x 1000,00 = US$250.000,00. Um quarto de milhão para integrar ou reaproximar uma pessoa da sociedade moderna. Uma pessoa com acesso a educação e trabalho pode reverter o ciclo de pobreza de várias gerações, eu já vi isso ocorrer várias vezes no Brasil. Eu também acredito que consigamos um sucesso bem maior que 0,1%. Para mim, muito promissor. Ainda que muitos notebooks caiam no mercado negro, sejam roubados ou simplesmente danificados em curto espaço de tempo, acredito que será uma marca na vida dessas crianças.
Uma coisa que deixou preocupado é a falta de Internet no Brasil. Os últimos números que li, traziam algo como 14 ou 20 milhões de internautas no país. Embora este número venha crescendo, ainda demonstra nosso atraso e má distribuição de renda. Quantas escolas públicas temos com acesso à Internet? Na década de 90, o problema era ter telefone. Agora é conseguir Internet. Em Manaus, a situação é crítica. Ainda se vendem planos de 200 ou 300Kb/s como banda larga. Precisamos urgentemente de Internet nas escolas. O OLPC sem Internet vai ficar bem limitado, mas isso não invalidará os possíveis ganhos do projeto. Precisamos de mais educação e de mais acesso a Internet. Um grande país tem grandes problemas. Meu sonho megalomaníaco é de transformar o Amazonas em uma nova Índia :-)
Como disse, não resolverá todos os problemas do mundo, mas é um esforço positivo. É muito importante criticar, visões diferentes sempre são bem-vindas. Só não esqueça que o projeto é sobre crianças e educação. O laptop é só um detalhe.
domingo, 9 de setembro de 2007
De volta à Azeroth
Tudo ia muito bem, mas depois da monografia sobrou muito tempo para outras coisas. Resolvi voltar à Azeroth. Depois de um mega download de mais de 500 MB, lá estava eu pronto para jogar novamente.
De cara, descobri que havia sido expulso do minha antiga guilda, ok. Eles não faziam raid, nos denominávamos uma guilda para ganking :-) Não prestavam pra muita coisa, mas era divertido perturbar a Horda. Todo fim de semana tinha raids às bases inimigas... inútil, mas divertido.
Bom, como fui expulso e também como não consigo mais lembrar o nome da guilda anterior, daí pode-se deduzir a importância que eles tinham para mim... resolvi procurar outra guilda. Desta vez, uma guilda que realmente funcionasse, que fizesse raids mais produtivas e me ajudasse a chegar no level 70, sem stress. Parece muito. Encontrei uma guilda portuguesa e lá estou eu agora no "Quinto Império". Com este post vai ficar mais fácil lembrar o nome da guilda, caso eu esqueça novamente.
Continuei seguindo o guia de leveling que os amigos enviaram... falando nisso, enviem o guia de 60 à 70, pois o que tenho acaba ainda no 60. No primeiro dia já achei um rogue maldito que resolveu me matar umas 3 vezes seguidas. Certas coisas são fáceis de esquecer, mas meu ódio aos rogues voltou bem rápido. Resolvi aproveitar o rested bônus, pois não jogava há meses... passei do 45 pro 47... estou indo bem. Fiquei muito irritado com o tempo de vôo dos passarinhos, mais uma prova de que WOW é passa-tempo mesmo! Ou melhor acaba-tempo. Deveria vir com avisos na embalagem, mas fazer o quê?
Esqueci que árvore de talentos estava seguindo e as magias do felino também... mas jogando essas coisas voltam a mente. Nem das minhas teclas de acesso rápido eu lembrava... muito tempo... Meu filho começou a perguntar o nome dos lugares e eu esqueci de muita coisa! Como pude fazer isso :-) Se não fosse o guia de leveling, eu realmente estaria perdido.
Um aviso para Horda: se tiver alguém com pouca honra no Spinebreaker, pode procurar o Predak, hunter, 47, fácil de matar :-) Agora ninguém mais da Horda ficará sem honra!
De cara, descobri que havia sido expulso do minha antiga guilda, ok. Eles não faziam raid, nos denominávamos uma guilda para ganking :-) Não prestavam pra muita coisa, mas era divertido perturbar a Horda. Todo fim de semana tinha raids às bases inimigas... inútil, mas divertido.
Bom, como fui expulso e também como não consigo mais lembrar o nome da guilda anterior, daí pode-se deduzir a importância que eles tinham para mim... resolvi procurar outra guilda. Desta vez, uma guilda que realmente funcionasse, que fizesse raids mais produtivas e me ajudasse a chegar no level 70, sem stress. Parece muito. Encontrei uma guilda portuguesa e lá estou eu agora no "Quinto Império". Com este post vai ficar mais fácil lembrar o nome da guilda, caso eu esqueça novamente.
Continuei seguindo o guia de leveling que os amigos enviaram... falando nisso, enviem o guia de 60 à 70, pois o que tenho acaba ainda no 60. No primeiro dia já achei um rogue maldito que resolveu me matar umas 3 vezes seguidas. Certas coisas são fáceis de esquecer, mas meu ódio aos rogues voltou bem rápido. Resolvi aproveitar o rested bônus, pois não jogava há meses... passei do 45 pro 47... estou indo bem. Fiquei muito irritado com o tempo de vôo dos passarinhos, mais uma prova de que WOW é passa-tempo mesmo! Ou melhor acaba-tempo. Deveria vir com avisos na embalagem, mas fazer o quê?
Esqueci que árvore de talentos estava seguindo e as magias do felino também... mas jogando essas coisas voltam a mente. Nem das minhas teclas de acesso rápido eu lembrava... muito tempo... Meu filho começou a perguntar o nome dos lugares e eu esqueci de muita coisa! Como pude fazer isso :-) Se não fosse o guia de leveling, eu realmente estaria perdido.
Um aviso para Horda: se tiver alguém com pouca honra no Spinebreaker, pode procurar o Predak, hunter, 47, fácil de matar :-) Agora ninguém mais da Horda ficará sem honra!
sexta-feira, 3 de agosto de 2007
Multitarefa e Multiprocessamento
Leia no novo blog
Ao começar a escrever este post, lembro que julho foi um mês realmente atarefado, sem novos posts no JungleCoders. Mas foi um mês onde voltei a ler sobre as questões de hoje sobre multiprocessamento. Alguns anos atrás, havia menos processadores que usuários :-) Era a época dos computadores de grande porte ou mainframes.
Com a chegada do processador pessoal, iniciou-se a época do um para um, porém eram máquinas pequenas, com sistemas operacionais simples. Embora houvesse um processador por usuário, não havia sistema operacional, muito menos recursos no hardware, para suportar a troca de tarefas. Isso claro, para computadores pessoais, pois já existiam os super-micros e sistemas operacionais mais completos, como o Unix entre muitos outros. Com a evolução do Microsoft DOS e do próprio IBM PC, programadores começaram a se utilizar das interrupções de hardware para simular o multiprocessamento, eram os anos dos programas TSR (Terminate and Stay Resident). Quem nunca usou programas como Norton Guides ou Sidekick? Mas os mais populares eram os tais reloginhos que ficam no canto superior da tela. Todo programador DOS tinha que implementar um... Ok, o Mingo pode dizer que o Amiga já tinha multitarefa de verdade, mas poucos felizardos tiveram acesso a estes sistemas.
Para salvar a linhagem do IBM PC, surgiu o Intel 80286. Mas o pobre DOS continuava monotarefa, exceto pelos TSRs... A IBM lançou o OS/2 e renovou as esperanças de um sistema multitarefa para pobres mortais. Para empresas, o Novell Netware e variantes de Unix já existiam. Com a chegada do Intel 80386 a coisa ficou realmente séria e o Windows 3.0 começou a convencer que a multimídia seria o futuro. O novo sistema permitia que vários aplicativos rodassem ao mesmo tempo, mas não podiam ser mal comportados. Se uma tarefa resolvesse tomar conta do sistema operacional para si... descobríamos que se tratava de multitarefa cooperativa... era o fim. Novas versões do OS/2 surgiram com um novo termo, a tal multitarefa preemptiva. Com a preemptividade, o sistema operacional podia recobrar o controle da máquina, mesmo que uma das tarefas não contribuísse muito para isso.
Bom, o OS/2 nunca pegou realmente para usuários domésticos, sendo relegado a pequenos feudos corporativos e segundo lendas urbanas sobrevivendo até hoje em bancos. O Windows 95 trouxe a preemptividade para os sistemas da Microsoft e para nós, pobres usuários. O grande problema é que às vezes o sistema operacional travava... deixa isso pro passado :-) O sistema foi se estabilizando e agora temos outros tipos de problema. Máquinas domésticas passaram a ter 2 ou 4 processadores e sistemas como Windows XP e Linux têm dado conta da tarefa de utilizar os recursos destas máquinas, mas com uma restrição: se a aplicação é desenvolvida com um só thread, esta não pode ser distribuída para mais de um processador :-( Pode parecer pouca coisa, mas se você não tomar cuidado por ter a aplicação rodando mais lentamente numa máquina com dois processadores.
A grande questão hoje é como escrever programas para este novo mundo? Agora temos vários processadores para nossas aplicações, porem programar com threads ainda é muito difícil. Algumas pessoas acreditam que há necessidade de mudarmos a forma que programamos hoje. Outros acreditam em compiladores inteligentes, capazes de decidir que partes do código podem ou não ser executadas em paralelo. Apesar de não parecer grande problema, a Intel sinalizou que já possui processadores com 80 núcleos no laboratório. Imagine um dia ter uma máquina dessas e ter seu pobre programa rodando a apenas 1/80 do poder total da máquina :-) ?
Como nada é aceito por todos ao mesmo tempo, já existem várias abordagens para este problema. Uma delas é utilizar outras linguagens de programação, com paradigmas diferentes como Erlang ou Haskell. Meu pobre Python está longe disso. Segundo o Guido, a solução é utilizar vários processos e morar na casa mal assombrada dos IPC (Inter-process Communication). Pelo pouco que sei, Ruby anda pior ainda neste quesito. Java, C/C++/C# (*.net) estão bem, mas toda a dor de múltiplos threads fica para o programador.
Uma luz vem do mundo dos jogos, pois os processadores gráficos das placas de vídeo possuem mais de 30 pipelines. Rodando a mais de 500 MHz, estes processadores ficam sem uso quando não estamos jogando, um poder de processamento desperdiçado. Tanto a NVidia quanto a ATI prometeram publicar os compiladores para suas GPUs, mas já avisaram que a forma de programar é diferente.
Quem já trabalhou com IPC e threads sabe que o pode ser feito, mas não de graça. Como os softwares tem se tornado cada vez mais complexos, como resolveremos a questão de criar softwares capazes de aproveitar os recursos de multiprocessamento de nossas máquinas? Eu particularmente acredito na utilização de linguagens com novos paradigmas que propiciam a abstração dos threads, mas no fundo desejo que algo de novo surja na área de compiladores e que todos nós possamos continuar a programar como sempre programamos. Como nem só os computadores são multitarefas, eu resolvi acrescentar o estudo deste tipo de problemas a minha já enorme lista :-) Talvez eu troque meu sistema operacional...
Ao começar a escrever este post, lembro que julho foi um mês realmente atarefado, sem novos posts no JungleCoders. Mas foi um mês onde voltei a ler sobre as questões de hoje sobre multiprocessamento. Alguns anos atrás, havia menos processadores que usuários :-) Era a época dos computadores de grande porte ou mainframes.
Com a chegada do processador pessoal, iniciou-se a época do um para um, porém eram máquinas pequenas, com sistemas operacionais simples. Embora houvesse um processador por usuário, não havia sistema operacional, muito menos recursos no hardware, para suportar a troca de tarefas. Isso claro, para computadores pessoais, pois já existiam os super-micros e sistemas operacionais mais completos, como o Unix entre muitos outros. Com a evolução do Microsoft DOS e do próprio IBM PC, programadores começaram a se utilizar das interrupções de hardware para simular o multiprocessamento, eram os anos dos programas TSR (Terminate and Stay Resident). Quem nunca usou programas como Norton Guides ou Sidekick? Mas os mais populares eram os tais reloginhos que ficam no canto superior da tela. Todo programador DOS tinha que implementar um... Ok, o Mingo pode dizer que o Amiga já tinha multitarefa de verdade, mas poucos felizardos tiveram acesso a estes sistemas.
Para salvar a linhagem do IBM PC, surgiu o Intel 80286. Mas o pobre DOS continuava monotarefa, exceto pelos TSRs... A IBM lançou o OS/2 e renovou as esperanças de um sistema multitarefa para pobres mortais. Para empresas, o Novell Netware e variantes de Unix já existiam. Com a chegada do Intel 80386 a coisa ficou realmente séria e o Windows 3.0 começou a convencer que a multimídia seria o futuro. O novo sistema permitia que vários aplicativos rodassem ao mesmo tempo, mas não podiam ser mal comportados. Se uma tarefa resolvesse tomar conta do sistema operacional para si... descobríamos que se tratava de multitarefa cooperativa... era o fim. Novas versões do OS/2 surgiram com um novo termo, a tal multitarefa preemptiva. Com a preemptividade, o sistema operacional podia recobrar o controle da máquina, mesmo que uma das tarefas não contribuísse muito para isso.
Bom, o OS/2 nunca pegou realmente para usuários domésticos, sendo relegado a pequenos feudos corporativos e segundo lendas urbanas sobrevivendo até hoje em bancos. O Windows 95 trouxe a preemptividade para os sistemas da Microsoft e para nós, pobres usuários. O grande problema é que às vezes o sistema operacional travava... deixa isso pro passado :-) O sistema foi se estabilizando e agora temos outros tipos de problema. Máquinas domésticas passaram a ter 2 ou 4 processadores e sistemas como Windows XP e Linux têm dado conta da tarefa de utilizar os recursos destas máquinas, mas com uma restrição: se a aplicação é desenvolvida com um só thread, esta não pode ser distribuída para mais de um processador :-( Pode parecer pouca coisa, mas se você não tomar cuidado por ter a aplicação rodando mais lentamente numa máquina com dois processadores.
A grande questão hoje é como escrever programas para este novo mundo? Agora temos vários processadores para nossas aplicações, porem programar com threads ainda é muito difícil. Algumas pessoas acreditam que há necessidade de mudarmos a forma que programamos hoje. Outros acreditam em compiladores inteligentes, capazes de decidir que partes do código podem ou não ser executadas em paralelo. Apesar de não parecer grande problema, a Intel sinalizou que já possui processadores com 80 núcleos no laboratório. Imagine um dia ter uma máquina dessas e ter seu pobre programa rodando a apenas 1/80 do poder total da máquina :-) ?
Como nada é aceito por todos ao mesmo tempo, já existem várias abordagens para este problema. Uma delas é utilizar outras linguagens de programação, com paradigmas diferentes como Erlang ou Haskell. Meu pobre Python está longe disso. Segundo o Guido, a solução é utilizar vários processos e morar na casa mal assombrada dos IPC (Inter-process Communication). Pelo pouco que sei, Ruby anda pior ainda neste quesito. Java, C/C++/C# (*.net) estão bem, mas toda a dor de múltiplos threads fica para o programador.
Uma luz vem do mundo dos jogos, pois os processadores gráficos das placas de vídeo possuem mais de 30 pipelines. Rodando a mais de 500 MHz, estes processadores ficam sem uso quando não estamos jogando, um poder de processamento desperdiçado. Tanto a NVidia quanto a ATI prometeram publicar os compiladores para suas GPUs, mas já avisaram que a forma de programar é diferente.
Quem já trabalhou com IPC e threads sabe que o pode ser feito, mas não de graça. Como os softwares tem se tornado cada vez mais complexos, como resolveremos a questão de criar softwares capazes de aproveitar os recursos de multiprocessamento de nossas máquinas? Eu particularmente acredito na utilização de linguagens com novos paradigmas que propiciam a abstração dos threads, mas no fundo desejo que algo de novo surja na área de compiladores e que todos nós possamos continuar a programar como sempre programamos. Como nem só os computadores são multitarefas, eu resolvi acrescentar o estudo deste tipo de problemas a minha já enorme lista :-) Talvez eu troque meu sistema operacional...
sexta-feira, 15 de junho de 2007
Linguagens, teclados e Ruby
Hoje, pela segunda vez esta semana, eu li um texto que me chamou a atenção sobre a hipótese de Sapir-Whorf, isto é, a maneira que a linguagem pode influenciar o comportamento e a forma de pensar das pessoas. Eu fiz um paralelo entre linguagens de programação e teclados.
Lendo sobre Ruby, fiquei observando os inúmeros símbolos e a freqüência que estes são utilizados na linguagem. Para um pobre coitado como eu, que usa um teclado Belga no trabalho e um teclado Francês em casa... os símbolos importam muito. O criador da linguagem Ruby, Yukihiro Matsumoto , utilizava provavelmente um teclado Japonês. Ok, é parecido com o teclado QWERTY ocidental... mas fica aqui meu registro quanto aos símbolos e linguagens. Lembro que li anteriormente um texto sobre como a @ foi escolhida como símbolo do e-mail e como alguns símbolos foram escolhidos no FORTRAN devido ao reduzido teclado da época (1956~1957) e depois usados por outras linguagens. Uma página que encontrei e que ilustra a dureza daqueles tempos pode ser vista aqui.
O "Mat" não teria utilizado tantos pipes("|") se estivesse usando um teclado francês ou belga :-). Eu estou estudando Ruby novamente devido ao RubyOnRails. Ando tendo novas idéias para sites e francamente, escrever em PHP está fora de questão. Eu continuo programando em Python. Eu acho Python uma linguagem muito mais clara que o Ruby, fora meu vício com a identação e meu ódio a chaves (antes mesmo de utilizar teclados estranhos) e end qualquer coisa. Talvez uma busca mais demorada no Google pudesse indicar outro framework para aplicativos web em Python. Mas meu problema de usar o Python para esta tarefa é que eu não quero utilizar vários frameworks, criando um monstro ainda maior, eu quero instalar um pacote único. Resolver o problema. Com Python, eu teria que utilizar vários pacotes com nomes de bichos e frutas que eu não sou doido suficiente para usar. Existem alternativas em Python amadurecendo, mas ainda longe do que eu posso obter hoje com o Rails.
Com certeza existe arte na programação, mas eu preciso testar algumas idéias rapidamente. Quando estas idéias são novos sites, fica claro que o belo cede lugar para o rápido, funcional e seguro. Eu poderia fazer alguma coisa em Java, mas eu estou realmente tentando diminuir a complexidade desta tarefa, reduzindo o número de frameworks no meu futuro site.
O César ainda não escreveu sobre Ruby e eu acho que não vou conseguir convencê-lo a escrever nada mesmo. Então vou aproveitar a necessidade e postar aqui um pouco do que vi diferente em Ruby.
Voltando a hipótese de Sapir-Whorf, fico analisando a forma como as pessoas pensam pela linguagem de programação que elas mais se identificam. É fácil, basta lembrar de um programador C++ e de um programador Java. Programadores em Visual Basic, Python, Perl ou PHP também invocam lembranças diferentes a minha mente. Embora todos sejam profissionais, sempre tem algo no comportamento destes que marca nossa lembrança, como uma característica e até mesmo como um novo estereótipo. Alguns programadores gostam de trabalhar com coisas difíceis ou coisas que os outros consideram difíceis.
Esses padrões de comportamento são também visíveis quando você aprende uma nova língua estrangeira. Quem nunca teve vontadade de dizer que o programa está correndo ?
Lendo sobre Ruby, fiquei observando os inúmeros símbolos e a freqüência que estes são utilizados na linguagem. Para um pobre coitado como eu, que usa um teclado Belga no trabalho e um teclado Francês em casa... os símbolos importam muito. O criador da linguagem Ruby, Yukihiro Matsumoto , utilizava provavelmente um teclado Japonês. Ok, é parecido com o teclado QWERTY ocidental... mas fica aqui meu registro quanto aos símbolos e linguagens. Lembro que li anteriormente um texto sobre como a @ foi escolhida como símbolo do e-mail e como alguns símbolos foram escolhidos no FORTRAN devido ao reduzido teclado da época (1956~1957) e depois usados por outras linguagens. Uma página que encontrei e que ilustra a dureza daqueles tempos pode ser vista aqui.
O "Mat" não teria utilizado tantos pipes("|") se estivesse usando um teclado francês ou belga :-). Eu estou estudando Ruby novamente devido ao RubyOnRails. Ando tendo novas idéias para sites e francamente, escrever em PHP está fora de questão. Eu continuo programando em Python. Eu acho Python uma linguagem muito mais clara que o Ruby, fora meu vício com a identação e meu ódio a chaves (antes mesmo de utilizar teclados estranhos) e end qualquer coisa. Talvez uma busca mais demorada no Google pudesse indicar outro framework para aplicativos web em Python. Mas meu problema de usar o Python para esta tarefa é que eu não quero utilizar vários frameworks, criando um monstro ainda maior, eu quero instalar um pacote único. Resolver o problema. Com Python, eu teria que utilizar vários pacotes com nomes de bichos e frutas que eu não sou doido suficiente para usar. Existem alternativas em Python amadurecendo, mas ainda longe do que eu posso obter hoje com o Rails.
Com certeza existe arte na programação, mas eu preciso testar algumas idéias rapidamente. Quando estas idéias são novos sites, fica claro que o belo cede lugar para o rápido, funcional e seguro. Eu poderia fazer alguma coisa em Java, mas eu estou realmente tentando diminuir a complexidade desta tarefa, reduzindo o número de frameworks no meu futuro site.
O César ainda não escreveu sobre Ruby e eu acho que não vou conseguir convencê-lo a escrever nada mesmo. Então vou aproveitar a necessidade e postar aqui um pouco do que vi diferente em Ruby.
Voltando a hipótese de Sapir-Whorf, fico analisando a forma como as pessoas pensam pela linguagem de programação que elas mais se identificam. É fácil, basta lembrar de um programador C++ e de um programador Java. Programadores em Visual Basic, Python, Perl ou PHP também invocam lembranças diferentes a minha mente. Embora todos sejam profissionais, sempre tem algo no comportamento destes que marca nossa lembrança, como uma característica e até mesmo como um novo estereótipo. Alguns programadores gostam de trabalhar com coisas difíceis ou coisas que os outros consideram difíceis.
Esses padrões de comportamento são também visíveis quando você aprende uma nova língua estrangeira. Quem nunca teve vontadade de dizer que o programa está correndo ?
sexta-feira, 1 de junho de 2007
The Internet Divide
Leia no novo blog
Impressionante como as coisas voam...
Eu lembro quando consegui fazer meu modem de 2400 bps funcionar com a Connect or Die BBS... fim dos 80, início dos anos 90. Eu quase chorei quando vi os pequenos caracteres coloridos aparecendo no meu micro. Dureza, pois 2400 bps é algo realmente lento, mas na época era normal ter 1200 bps. Mesmo uma página em modo texto demorava para chegar, mas compensava. Pior era acordar meia noite, pois a BBS do Mingo só podia funcionar nesse horário. Estamos no Brasil dos monopólios, linhas telefônicas eram patrimônio e o Mingo havia negociado o telefone da família de meia noite às 06:00.
E só tinha uma linha. A conexão máxima era limitada a uma hora por dia e regras de upload/download ratio eram aplicadas (você tinha que enviar coisas para poder baixar...).
Imagens em 320x200... com incríveis 256 cores. Infelizmente eu ainda não tinha VGA... e sim uma placa EGA com monitor CGA colorido. Uma combinação que eu fiz questão de esquecer como consegui fazer. Mas o monitor fazia 640x200 e a placa fazia algo como 16 cores. Na verdade, a placa fazia até 640x350... mas meu pobre monitor não aguentava tudo isso.
Depois veio a BitNet e outro amigo que programava batches FTP de uma tal de Internet na Universidade Federal (a conexão lá era de alucinantes 9600 bps) para baixar alguns arquivos mais interessantes. Em 1994, já usávamos modems de 14400 bps, mas sofríamos com os inúmeros raios. Até hoje eu desligo o micro se escutar um trovão e evito usar em dia de chuva. Meu tio conseguiu comprar uma hora de Internet na Mandic BBS em São Paulo... tinha que pagar o interurbano, mais US$30,00 por hora se não me engano. Nosso objetivo era baixar um programa de engenharia naval, que ele vira num revista inglesa. O problema é que o arquivo era enorme... coisa de 250 Kb. Demoramos várias horas para baixar o programa, mas incrivelmente ele veio da Inglaterra para nossos disquetes.
Hoje, fui informado que estão vendendo Internet a 50 Mb/s na França. Fico imaginando as possíveis aplicações de tanta banda e rio lembrando do que passamos para baixar os pequenos arquivos. No Japão, parece que a coisa está ainda melhor. Mas 50 Mb/s já é muita coisa.
Lembrando do Pirataria pra quê, eu valorizo mais meu tempo. Tudo que me passa inicialmente pela cabeça seria baixar grandes quantidades de arquivos MP3, DVD, coleções com 1200 livros e coisas do gênero. Ai lembro de experiências anteriores, com bandas e volumes menores e no que resultou... e desisto da idéia.
O que realmente me preocupa é o Internet Divide. Em alguns lugares do Brasil já temos Internet realmente rápida, mas a grande maioria não consegue chegar em 1 Mb/s. Lembro dos dias na selva, ano passado. Eu brigava para ter um pobre ADSL de 600 Kb/s funcionando. Quando o canal funcionava, até que era bom para navegar. Ruim para baixar arquivos. Quando tinha um problema, pode ter certeza que era algo como 1 semana tendo raiva.
Esses tipos de restrições limitam nosso uso de Internet. O Internet Divide fica cada vez mais claro e a distância de países ricos também.
Eu acompanho meus filhos usando a Internet hoje. Nada de páginas estáticas! Eles querem vídeos e músicas on-line. Eu lembro que isso era realmente difícil na Selva. Para ver vídeo, tinha que baixar tudo primeiro. Até os banners hoje passam vídeos. Não esqueço da minha filha, de cabeça baixa esperando a página em Flash do site da Barbie carregar. O botão de reload/refresh era algo que ela já sabia usar.
Mas o grande problema com o Internet Divide é que não seremos incluídos nas próximas ondas de tele-trabalho e de outsourcing. Quando eu trabalhava no Brasil, lembro de reuniões onde tínhamos que explicar nossas latências de 400 ms... coisa inimaginável nos EUA ou na Alemanha. Já na época, isso impedia o uso de VoIP. O Skype melhorou isso, mas sempre estamos atrás. Quando a Internet deixará de ser encarada como artigo de luxo e sim com a mesma importância da energia elétrica?
Eu vim de uma cidade de 1.5 milhões de habitantes, mas estrangulada de todas as formas em relação a Internet. Além do isolamento geográfico natural, fomos excluídos do mundo digital de primeira linha.
Olhando para o presente, entendo como ficamos para trás em outras ondas de desenvolvimento. Demoramos para ter escolas para todos. Demoramos para entender que um país precisa ter políticas sérias para poder crescer. Ainda não exploramos nosso imenso potencial humano. Gente excluída pela pobreza e pela ignorância.
Internet não é luxo. Internet não é tudo. Mas Internet é muito importante. A velocidade de um canal e seu preço podem decidir entre instalar um novo negócio em uma cidade ou país. Negócios geram emprego e riqueza. O acesso a informação deveria ser encarado mais seriamente.
Impressionante como as coisas voam...
Eu lembro quando consegui fazer meu modem de 2400 bps funcionar com a Connect or Die BBS... fim dos 80, início dos anos 90. Eu quase chorei quando vi os pequenos caracteres coloridos aparecendo no meu micro. Dureza, pois 2400 bps é algo realmente lento, mas na época era normal ter 1200 bps. Mesmo uma página em modo texto demorava para chegar, mas compensava. Pior era acordar meia noite, pois a BBS do Mingo só podia funcionar nesse horário. Estamos no Brasil dos monopólios, linhas telefônicas eram patrimônio e o Mingo havia negociado o telefone da família de meia noite às 06:00.
E só tinha uma linha. A conexão máxima era limitada a uma hora por dia e regras de upload/download ratio eram aplicadas (você tinha que enviar coisas para poder baixar...).
Imagens em 320x200... com incríveis 256 cores. Infelizmente eu ainda não tinha VGA... e sim uma placa EGA com monitor CGA colorido. Uma combinação que eu fiz questão de esquecer como consegui fazer. Mas o monitor fazia 640x200 e a placa fazia algo como 16 cores. Na verdade, a placa fazia até 640x350... mas meu pobre monitor não aguentava tudo isso.
Depois veio a BitNet e outro amigo que programava batches FTP de uma tal de Internet na Universidade Federal (a conexão lá era de alucinantes 9600 bps) para baixar alguns arquivos mais interessantes. Em 1994, já usávamos modems de 14400 bps, mas sofríamos com os inúmeros raios. Até hoje eu desligo o micro se escutar um trovão e evito usar em dia de chuva. Meu tio conseguiu comprar uma hora de Internet na Mandic BBS em São Paulo... tinha que pagar o interurbano, mais US$30,00 por hora se não me engano. Nosso objetivo era baixar um programa de engenharia naval, que ele vira num revista inglesa. O problema é que o arquivo era enorme... coisa de 250 Kb. Demoramos várias horas para baixar o programa, mas incrivelmente ele veio da Inglaterra para nossos disquetes.
Hoje, fui informado que estão vendendo Internet a 50 Mb/s na França. Fico imaginando as possíveis aplicações de tanta banda e rio lembrando do que passamos para baixar os pequenos arquivos. No Japão, parece que a coisa está ainda melhor. Mas 50 Mb/s já é muita coisa.
Lembrando do Pirataria pra quê, eu valorizo mais meu tempo. Tudo que me passa inicialmente pela cabeça seria baixar grandes quantidades de arquivos MP3, DVD, coleções com 1200 livros e coisas do gênero. Ai lembro de experiências anteriores, com bandas e volumes menores e no que resultou... e desisto da idéia.
O que realmente me preocupa é o Internet Divide. Em alguns lugares do Brasil já temos Internet realmente rápida, mas a grande maioria não consegue chegar em 1 Mb/s. Lembro dos dias na selva, ano passado. Eu brigava para ter um pobre ADSL de 600 Kb/s funcionando. Quando o canal funcionava, até que era bom para navegar. Ruim para baixar arquivos. Quando tinha um problema, pode ter certeza que era algo como 1 semana tendo raiva.
Esses tipos de restrições limitam nosso uso de Internet. O Internet Divide fica cada vez mais claro e a distância de países ricos também.
Eu acompanho meus filhos usando a Internet hoje. Nada de páginas estáticas! Eles querem vídeos e músicas on-line. Eu lembro que isso era realmente difícil na Selva. Para ver vídeo, tinha que baixar tudo primeiro. Até os banners hoje passam vídeos. Não esqueço da minha filha, de cabeça baixa esperando a página em Flash do site da Barbie carregar. O botão de reload/refresh era algo que ela já sabia usar.
Mas o grande problema com o Internet Divide é que não seremos incluídos nas próximas ondas de tele-trabalho e de outsourcing. Quando eu trabalhava no Brasil, lembro de reuniões onde tínhamos que explicar nossas latências de 400 ms... coisa inimaginável nos EUA ou na Alemanha. Já na época, isso impedia o uso de VoIP. O Skype melhorou isso, mas sempre estamos atrás. Quando a Internet deixará de ser encarada como artigo de luxo e sim com a mesma importância da energia elétrica?
Eu vim de uma cidade de 1.5 milhões de habitantes, mas estrangulada de todas as formas em relação a Internet. Além do isolamento geográfico natural, fomos excluídos do mundo digital de primeira linha.
Olhando para o presente, entendo como ficamos para trás em outras ondas de desenvolvimento. Demoramos para ter escolas para todos. Demoramos para entender que um país precisa ter políticas sérias para poder crescer. Ainda não exploramos nosso imenso potencial humano. Gente excluída pela pobreza e pela ignorância.
Internet não é luxo. Internet não é tudo. Mas Internet é muito importante. A velocidade de um canal e seu preço podem decidir entre instalar um novo negócio em uma cidade ou país. Negócios geram emprego e riqueza. O acesso a informação deveria ser encarado mais seriamente.
sexta-feira, 11 de maio de 2007
Um lugar chamado Brasil
Comecei a aceitar que vim de uma terra desconhecida. É interessante saber que muitas pessoas desconhecem o Brasil, não só internamente, mas principalmente no exterior.
No supermercado até se acham guias de viagens ao Brasil, mas a viagem já é outra história. É intrigante, pois conseguimos esconder um país com quase 200.000.000 de habitantes, o quinto maior do mundo.
Eu sempre observo a origem das coisas que compro aqui. Já consigo comprar limão do Brasil e uvas sem caroço, produzidas na Bahia.
Ah, sempre tem camarão no Carrefour, vindo do Brasil é claro. Inclusive, camarão aqui é mais barato que na selva. Eu não entendo de logística, mas Manaus sempre foi cara por ser longe de tudo. Agora, como é que conseguem enviar camarão para a Bélgica, pagando-se sabe lá que taxas e fretes. Não deve ser fácil, pois o produto se estraga facilmente... mesmo convertendo para Reais, aqui é mais barato: compro o quilo por €6,00. E não é micro-camarão, mas camarões médios. Mistério :-)
Mas se sair do Brasil é complicado, voltar é mais difícil ainda. Vôos só via Paris, Londres, Lisboa ou Frankfurt. Pacote turístico, difícil de achar. Eu consigo passar uma semana em hotel de luxo na República Dominicana, mas barato que ir para São Paulo e dormir no aeroporto... O produto Brasil é muito mal vendido. Indisponível, caro ou perigoso. Vou ignorar o turismo sexual.
Além dos pacotes turísticos escassos, nossos produtos não são bem identificados. Eu aposto que boa parte do café daqui vem do Brasil, mas nesses casos a embalagem só identifica a marca. Quando o café é da Colômbia ou Equador a coisa muda.
Cada vez mais aceito que vim de um lugar realmente distante :-) A língua portuguesa é minha vingança por não falar francês corretamente, ainda. Como muitos não estão acostumados a ouvir e como o sotaque do brasileiro soa suave para eles, fica parecendo um dialeto de alguma língua próxima do francês. Eles tentam entender, mas demoram para perceber que é outra língua.
Poucos tem noção de nossa cultura. Eu achava que isso só acontecia nos EUA. Para americano, tudo é América Latina, logo deve-se falar espanhol e assim vai. Mas na Europa se tem este tipo de problema também. Andei viajando a trabalho por aqui e vi que a situação não muda muito.
Eu acredito que a resposta para isso é o tamanho real do Brasil. Nosso país é grande, mas não consome proporcionalmente e ainda estamos engatinhando em termos de comércio mundial. Claro, tolos os estrangeiros que ignorarem o Brasil para investimentos, com certeza ainda somos uma mina de outro. Mas esse "desconhecimento" da população em geral é porque falhamos em vender nossa cultura.
Exemplos típicos de documentários sobre o Brasil:
a) Samba e Bossa nova: normalmente antigos ou focando a pouca roupa das meninas do Samba.
b) Pobreza urbana e rural: de todo tipo. Eu estava lendo umas páginas sobre um jornalista inglês. Ele viajou para Manaus e claro identificou o "filé" da cidade.
c) Destruição da Amazônia. Nessa época de revival da ecologia, isso fica cada vez mais presente. Somos os destruidores da maior floresta que sobrou no mundo, porque os outros já destruíram as suas... até nisso ficamos por último. Mas desta vez, ficar por último ou com a última floresta é motivo de orgulho.
Nada contra mostrar nossa realidade, mas esta é composta de pessoas pobres e de outras pessoas também. Existe o Brasil industrial, o Brasil da tecnologia, etc. Acho que estou exagerando, afinal, ninguém é obrigado a entender de geografia e principalmente do país dos outros.
Meu desejo é que o Brasil começasse a vender mais para o exterior e que a riqueza fosse melhor distribuída. Mais negócios, maior o interesse em conhecer o Brasil. Mas para isso acontecer, teríamos que tirar 100.000.000 de brasileiros da linha de pobreza. Consumimos pouco pois muita gente é pobre. O mercado é grande em números, mas modesto em poder de compra. Muita gente ainda trabalha para tentar comer, quando trabalha.
Na verdade, somos nós brasilieiros que não enxergamos o próprio país. Aceitamos a pobreza absoluta em nossa volta e muitas vezes a ignoramos. Lembro de uma favela bem atrás do Studio5. Crianças ricas, comendo a pipoca de ouro do Cinemark e ao atravessar a rua: crianças pobres, olhando. A violência só aumenta, principalmente no quesito crueldade. O que será que fizemos de errado?
O problema é grave. Uma prova disso é pegar o site de uma grande empresa americana. Digamos, a Best Buy. Procure um loja da Best Buy em um raio de 50 Km. Provavelmente várias lojas aparecerão. Faça o mesmo com outras grandes lojas no Brasil. Exclua Rio e São Paulo e veja como a distribuição é diferente. Vazio de consumo.
Sempre melhoramos, isso é verdade. Mas por que o México e outros países da América Latina estão melhorando mais rápido?
No supermercado até se acham guias de viagens ao Brasil, mas a viagem já é outra história. É intrigante, pois conseguimos esconder um país com quase 200.000.000 de habitantes, o quinto maior do mundo.
Eu sempre observo a origem das coisas que compro aqui. Já consigo comprar limão do Brasil e uvas sem caroço, produzidas na Bahia.
Ah, sempre tem camarão no Carrefour, vindo do Brasil é claro. Inclusive, camarão aqui é mais barato que na selva. Eu não entendo de logística, mas Manaus sempre foi cara por ser longe de tudo. Agora, como é que conseguem enviar camarão para a Bélgica, pagando-se sabe lá que taxas e fretes. Não deve ser fácil, pois o produto se estraga facilmente... mesmo convertendo para Reais, aqui é mais barato: compro o quilo por €6,00. E não é micro-camarão, mas camarões médios. Mistério :-)
Mas se sair do Brasil é complicado, voltar é mais difícil ainda. Vôos só via Paris, Londres, Lisboa ou Frankfurt. Pacote turístico, difícil de achar. Eu consigo passar uma semana em hotel de luxo na República Dominicana, mas barato que ir para São Paulo e dormir no aeroporto... O produto Brasil é muito mal vendido. Indisponível, caro ou perigoso. Vou ignorar o turismo sexual.
Além dos pacotes turísticos escassos, nossos produtos não são bem identificados. Eu aposto que boa parte do café daqui vem do Brasil, mas nesses casos a embalagem só identifica a marca. Quando o café é da Colômbia ou Equador a coisa muda.
Cada vez mais aceito que vim de um lugar realmente distante :-) A língua portuguesa é minha vingança por não falar francês corretamente, ainda. Como muitos não estão acostumados a ouvir e como o sotaque do brasileiro soa suave para eles, fica parecendo um dialeto de alguma língua próxima do francês. Eles tentam entender, mas demoram para perceber que é outra língua.
Poucos tem noção de nossa cultura. Eu achava que isso só acontecia nos EUA. Para americano, tudo é América Latina, logo deve-se falar espanhol e assim vai. Mas na Europa se tem este tipo de problema também. Andei viajando a trabalho por aqui e vi que a situação não muda muito.
Eu acredito que a resposta para isso é o tamanho real do Brasil. Nosso país é grande, mas não consome proporcionalmente e ainda estamos engatinhando em termos de comércio mundial. Claro, tolos os estrangeiros que ignorarem o Brasil para investimentos, com certeza ainda somos uma mina de outro. Mas esse "desconhecimento" da população em geral é porque falhamos em vender nossa cultura.
Exemplos típicos de documentários sobre o Brasil:
a) Samba e Bossa nova: normalmente antigos ou focando a pouca roupa das meninas do Samba.
b) Pobreza urbana e rural: de todo tipo. Eu estava lendo umas páginas sobre um jornalista inglês. Ele viajou para Manaus e claro identificou o "filé" da cidade.
c) Destruição da Amazônia. Nessa época de revival da ecologia, isso fica cada vez mais presente. Somos os destruidores da maior floresta que sobrou no mundo, porque os outros já destruíram as suas... até nisso ficamos por último. Mas desta vez, ficar por último ou com a última floresta é motivo de orgulho.
Nada contra mostrar nossa realidade, mas esta é composta de pessoas pobres e de outras pessoas também. Existe o Brasil industrial, o Brasil da tecnologia, etc. Acho que estou exagerando, afinal, ninguém é obrigado a entender de geografia e principalmente do país dos outros.
Meu desejo é que o Brasil começasse a vender mais para o exterior e que a riqueza fosse melhor distribuída. Mais negócios, maior o interesse em conhecer o Brasil. Mas para isso acontecer, teríamos que tirar 100.000.000 de brasileiros da linha de pobreza. Consumimos pouco pois muita gente é pobre. O mercado é grande em números, mas modesto em poder de compra. Muita gente ainda trabalha para tentar comer, quando trabalha.
Na verdade, somos nós brasilieiros que não enxergamos o próprio país. Aceitamos a pobreza absoluta em nossa volta e muitas vezes a ignoramos. Lembro de uma favela bem atrás do Studio5. Crianças ricas, comendo a pipoca de ouro do Cinemark e ao atravessar a rua: crianças pobres, olhando. A violência só aumenta, principalmente no quesito crueldade. O que será que fizemos de errado?
O problema é grave. Uma prova disso é pegar o site de uma grande empresa americana. Digamos, a Best Buy. Procure um loja da Best Buy em um raio de 50 Km. Provavelmente várias lojas aparecerão. Faça o mesmo com outras grandes lojas no Brasil. Exclua Rio e São Paulo e veja como a distribuição é diferente. Vazio de consumo.
Sempre melhoramos, isso é verdade. Mas por que o México e outros países da América Latina estão melhorando mais rápido?
segunda-feira, 30 de abril de 2007
Do Jaca ao Java
Leia no novo Blog
Em Python your Life, eu disse que não gostava de Java. E realmente não gostava.
Conheci Java no Internet World 1996, no Rio de Janeiro :-) Minha última visita a cidade maravilhosa. Solteiro, com algum dinheiro no bolso... ah... Copacabana e os barzinhos do Rio... putz, lembrei que já em 96 eu deixei o relógio em casa, com medo de assaltos. Mas o Rio é lindo.
Bem, a Sun apresentou o Java e principalmente as diferenças entre o Java e o JavaScript. Eu tinha um pequeno provedor em Manaus e usávamos um servidor Sun. Eu sofria para escrever os programas do provedor em C++, lembro que passei 2 semanas para achar os arquivos binários do GCC para microSparc... viva o Google (naquela época o melhor era o AltaVista). O Java era grátis e o compilador da Sun custava uns US$3.000,00 (sem os manuais...), me apaixonei por Applets e por um bom tempo Java era só Applets.
Mas para mim, a linguagem nunca fora nada mais que um C++ disfarçado. Eu não tinha problemas com ponteiros, até achava normal trabalhar com eles e ter seg faults aqui e ali :-)
O problema é que na época eu não via nada além disso. Por que fazer algo em Java se eu já tinha minhas bibliotecas em C e C++? Não era tão claro para mim as vantagens de ser multiplaforma. E Java 1.0 ninguém esquece... No Windows, eu tinha o Delphi e no Linux tinha também o C/C++, era só recompilar. Para mim, o Java ficou sendo uma forma legal de enriquecer home pages com applets ou de deixar meus CGIs mais lentos que em C/C++.
O tempo passou e a linguagem Java se popularizou. EJB, Java 2, Hibernate e Tomcat foram aparecendo. Mas nesta época eu já não estava mais programando e sim gerenciando. Perdi o desenvolvimento do Java.
Só considerei Java seriamente no Desktop depois de ver o Eclipse e sua biblioteca.
Depois começamos a fazer programas para um cliente no exterior, usando Java e o BEA. Comecei a gostar, mas realmente fiquei preocupado quanto a produtividade dos programadores, precisava de muito framework para fazer algo funcionar. Programador Java não ganha pouco, graças a Deus :-) Haja máquina e dinheiro com licenças... um estagiário começou a trabalhar com Tomcat e o tigre comeu o pobre rapaz :-) Não foi um recomeço amigável. Nesta época eu comecei a chamar Java de Jaca. Era grande e ninguém conseguia comer sozinho :-)
Ano passado, eu comecei a desenvolver um aplicativo novo para Web, usando Ajax e múltiplos Threads. Adivinhem que linguagem eu escolhi para desenvolver meu pequeno monstro? Java. Fiquei impressionado com as melhorias do Java 5, principalmente com templates e operações com lista. A biblioteca da linguagem também é excelente, fora o Eclipse com seu preço amigável. Criei o servidor e este passa muito bem. Inclusive, migrei alguns utilitários de baixo nível escritos em Visual C++ e .Net para Java. Semana passada instalei o servidor pela primeira vez no Linux e ficou muito bom, não precisei alterar nada. Troquei o banco de dados de MySQL para Firebird 1.5 e depois para o Firebird 2.0. Não precisei mudar quase nada, graças ao Hibernate.
Ok, o servidor usa uns 47 MB de Ram só para ele... mas um pente de 512 MB custa uns €30,00. Eu custo bem mais caro. Entre comprar o pente e perder meus cabelos debugando código reentrante em C++... prefiro comprar o pente :-)
Já estou usando o Java 6, não precisam ficar preocupados.
Assim fiz as pazes com o Java. Desculpas aos pobres coitados que quiseram vender Java para mim antes, dou o braço a torcer. Vocês tinham razão. Mas que era uma Jaca, era.
Em Python your Life, eu disse que não gostava de Java. E realmente não gostava.
Conheci Java no Internet World 1996, no Rio de Janeiro :-) Minha última visita a cidade maravilhosa. Solteiro, com algum dinheiro no bolso... ah... Copacabana e os barzinhos do Rio... putz, lembrei que já em 96 eu deixei o relógio em casa, com medo de assaltos. Mas o Rio é lindo.
Bem, a Sun apresentou o Java e principalmente as diferenças entre o Java e o JavaScript. Eu tinha um pequeno provedor em Manaus e usávamos um servidor Sun. Eu sofria para escrever os programas do provedor em C++, lembro que passei 2 semanas para achar os arquivos binários do GCC para microSparc... viva o Google (naquela época o melhor era o AltaVista). O Java era grátis e o compilador da Sun custava uns US$3.000,00 (sem os manuais...), me apaixonei por Applets e por um bom tempo Java era só Applets.
Mas para mim, a linguagem nunca fora nada mais que um C++ disfarçado. Eu não tinha problemas com ponteiros, até achava normal trabalhar com eles e ter seg faults aqui e ali :-)
O problema é que na época eu não via nada além disso. Por que fazer algo em Java se eu já tinha minhas bibliotecas em C e C++? Não era tão claro para mim as vantagens de ser multiplaforma. E Java 1.0 ninguém esquece... No Windows, eu tinha o Delphi e no Linux tinha também o C/C++, era só recompilar. Para mim, o Java ficou sendo uma forma legal de enriquecer home pages com applets ou de deixar meus CGIs mais lentos que em C/C++.
O tempo passou e a linguagem Java se popularizou. EJB, Java 2, Hibernate e Tomcat foram aparecendo. Mas nesta época eu já não estava mais programando e sim gerenciando. Perdi o desenvolvimento do Java.
Só considerei Java seriamente no Desktop depois de ver o Eclipse e sua biblioteca.
Depois começamos a fazer programas para um cliente no exterior, usando Java e o BEA. Comecei a gostar, mas realmente fiquei preocupado quanto a produtividade dos programadores, precisava de muito framework para fazer algo funcionar. Programador Java não ganha pouco, graças a Deus :-) Haja máquina e dinheiro com licenças... um estagiário começou a trabalhar com Tomcat e o tigre comeu o pobre rapaz :-) Não foi um recomeço amigável. Nesta época eu comecei a chamar Java de Jaca. Era grande e ninguém conseguia comer sozinho :-)
Ano passado, eu comecei a desenvolver um aplicativo novo para Web, usando Ajax e múltiplos Threads. Adivinhem que linguagem eu escolhi para desenvolver meu pequeno monstro? Java. Fiquei impressionado com as melhorias do Java 5, principalmente com templates e operações com lista. A biblioteca da linguagem também é excelente, fora o Eclipse com seu preço amigável. Criei o servidor e este passa muito bem. Inclusive, migrei alguns utilitários de baixo nível escritos em Visual C++ e .Net para Java. Semana passada instalei o servidor pela primeira vez no Linux e ficou muito bom, não precisei alterar nada. Troquei o banco de dados de MySQL para Firebird 1.5 e depois para o Firebird 2.0. Não precisei mudar quase nada, graças ao Hibernate.
Ok, o servidor usa uns 47 MB de Ram só para ele... mas um pente de 512 MB custa uns €30,00. Eu custo bem mais caro. Entre comprar o pente e perder meus cabelos debugando código reentrante em C++... prefiro comprar o pente :-)
Já estou usando o Java 6, não precisam ficar preocupados.
Assim fiz as pazes com o Java. Desculpas aos pobres coitados que quiseram vender Java para mim antes, dou o braço a torcer. Vocês tinham razão. Mas que era uma Jaca, era.
Assinar:
Postagens (Atom)