Smalltalk – Busca por exemplo.

Provavelmente a funcionalidade que eu acho mais legal no Smalltalk é a busca de algum método sem saber o seu nome. Em outras linguagens (não conhecendo muito bem ela, é claro), eu sei que 2 elevado na 3 é igual a 8. Mas como traduzir isso para o programa? Algumas linguagens utilizam pow, outras **, outras expt e assim vai. E lá vamos nós procurar no manual. Mas antes apresentar o Finder, uma breve introdução.

Para começar, o ambiente de desenvolvimento em Smalltalk já é algo muito bom. Totalmente integrado e já vem com a linguagem. Ou será que é a linguagem que vem com o ambiente? Há bastante tempo eu testei o Squeak mas achei meio estranho. Como o objetivo era para o aprendizado infantil na área de programação, era muito lúdico para o meu gosto. Mesmo assim, vários projetos interessantes surgiram sob a plataforma. O Seaside foi um deles e talvez o mais importante. Outro foi o Croquet . Um tempo depois surgiu o Pharo. Apesar de baseado no Squeak, ainda estava no início do desenvolvimento e não dei muita atenção. Mas já está bem usável e justifica que se fale mais sobre ele. É o que será utilizado por mim em todos os exemplo. Se alguém deseja um comercial, a opção pode ser o VisualWorks. Para um aprendizado maior sobre a linguagem, existem diversos livros gratuitos que podem ser baixados (só lembre-se que podem existir algumas diferenças no ambiente de desenvolvimento e na implementação da linguagem). Pode ser interessante salientar que o Pharo roda no Linux, OS X e no Windows.

Mas vamos voltar ao que interessa. Diversas vezes, e não foram apenas meia dúzia, eu sabia o que queria mas não lembrava de como chegar lá. Como fazer para calcular 2 ao cubo naquela linguagem? Seria 2 ^ 3? ou 2 ** 3 ou era uma função do tipo pow(2,3)? No Pharo basta abrir a janela para localizar, selecionar exemplo, digitar os valores 2. 3. 8 e pronto. Ele retorna, entre outras opções, o raisedTo: que seria o método que eu invocaria em um número com o argumento 3 para retornar 8. Da mesma forma poderíamos procurar pelo método que retornaria o fatorial de 5 entrando com 5. 120 e obtemos factorial. A única observação é colocar um ponto para separar os valores. Um videozinho para facilitar a visualização.

=-=-=-=-=
Powered by Blogilo

Anúncios

O caduco sistema de versões das distribuições Linux.

Quando eu comecei a usar o Arch , ele estava longe das 10 primeiras posições no ranking do distrowatch . Ultimamente ele tem estado entre as 10 primeiras posições. Mas o que faria uma distribuição que é complicada de instalar (tem um instalador antiquado no modo texto e exige um certo conhecimento), teve a sua última ‘propaganda’ no distrowatch em 18/05/2010 (quase um ano) estar perto de distribuições conhecidas como openSUSE, Ubuntu e outras?

Não sei, mas se alguém perguntar qual a versão do Arch está rodando no seu computador, é bem provável que a resposta seja: "A última" ou "A da semana passada". O sistema de "Rolling release" permite que o usuário tenha sempre disponível a última versão do sitema operacional bem como dos programas.

Outro fato interessante é o pequeno número de repositórios. Basicamente o Community, Core, Extra são suficientes para ter todos os programas atualizados. Quem deseja alguns programas ainda mais recentes, pode utilizar os repositórios Testing. Também existe o repositório AUR que é mantido pelos usuários com programas ainda mais recentes ou inexistentes nos repositórios oficiais. De resto, apenas os espelhos espalhados pelo mundo.

Basta uma olhada no banco de dados dos pacotes disponíveis para atualização que veremos diversos com a data do dia. Na página de cada pacote ainda é possível indicá-lo como desatualizado. Dependendo da disponibilidade de quem mantém e outros fatores, é possível que ele seja atualizado no mesmo dia.

Ambiente gráfico? O usuário escolhe após a instalação. Um outro fator que poderia contribuir para uma baixa aceitação para a instalação da distribuição.

O sistema de instalação de pacotes, apesar de diversas opções e ser no modo texto (outro fator que poderia baixar a aceitação da distribuição) é bem simples e rápido. Aliado com as versões atuais dos programas permitia, por exemplo, instalar o LibreOffice pouco tempo depois de ter sido anunciado.

Uma distribuição Linux não tem muitos motivos para adotar o sistema de versões a não ser para propaganda, dar uma falsa ilusão de atualidade e/ou competição com sistemas proprietários. Quem não gosta ou precisa de versões atuais de, pelo menos alguns, programas? Aliado ainda ao fato do usuário necessitar instalar uma nova versão, o que pode ser complicado para o usuário doméstico e ele poderá ficar restrito a usar uma versão antiga do sitema operacional e programas.

Ah mas, alguém poderá dizer, e a estabilidade dos programas? Os bugs e falhas das novas versões? Bem, as novas versões também trazem correção de bugs e, é claro, as novas funcionalidades podem incluir novos problemas. Mas e daí? Para o usuário doméstico, é bem provável que as novas funcionalidades sejam melhores do que a possibilidade de ocorrência de problemas, que podem ser corrigidos em pouco tempo. Note que não estou falando de versões betas ou RC dos programas. Apenas as últimas versões.

O programa exiv2 do Maverick consta com 0.19. É uma versão de 30/12/2009. Ou seja, para quem possui uma câmera nova, ter a versão 0.19 ou não ter nada é a mesma coisa. Para quem usa o Arch, no dia 28/02/2011 já tinha acesso a versão 0.21.1 disponibilizada no dia 14/02/2011. Uma defasagem de 14 dias entre o lançamento e a disponibilidade. Diferente de outras distribuições onde a biblioteca já tem mais de um ano. No software livre, onde o desenvolvimento pode ocorrer diariamente, anos podem significar séculos de defasagem. Alia-se ao desenvolvimento também vertiginoso (obsolescência forçada) das câmeras fotograficas, as coisas complicam. Ah, mas eu não preciso do exiv2. Ok, outros podem precisar e, dizer para o usuário compilar, não é uma opção experta. De qualquer forma, foi apenas um exemplo. O mesmo acontece com programas diversos.

Para o usuário doméstico/final, o sistema de versões é apenas um complicador sem muito sentido. Pelo menos para o software livre. A openSUSE 11.4 já deu um passo no sentido de prover atualizações sem a necessidade de impor ao usuário baixar um CD/DVD com a nova versão para instalar. É claro que ainda falta muito mas já é um passo. Sem contar que a distribuição não necessita controlar e manter diversos repositórios com diversas versões dos programas que necessitam ser atualizadas para correções. Resumindo, bom para os dois lados.

Da mesma forma, não faz sentido a enorme quantidade de versões existentes. Alguns argumentam que é bom ter versões para uso específico, fato que também não faz o menor sentido. Qualquer um pode instalar uma versão do GNU/Linux e instalar os programas específicos para as suas necessidades. Basta um repositório com os programas necessários e um programa adequado para a instalação com modelos para as diversas áreas (científica, educacional, vídeo, imagem, desenvolvimento, etc., etc.). Mas o Eduardo Maçan já dizia que no software livre todos querem ser caciques, não deixando espaço para os índios.

Por enquanto, a maioria dos usuários devem se contentar com novas versões das suas distribuições favoritas onde a maior novidade são apenas as atualizações dos programas, mudança no papel de parede e cor das janelas.