Um pouco de Ruby e Rails

Olá pessoal, meu nome é Vinícius Luiz e essa é minha primeira participação dentro da comunidade Ruby. Resolvi montar esse material por que é a forma que tenho de fixar melhor o que to aprendendo. Comecei a poucos o estudo de Ruby e de Rails, esse pouco gostaria de compartilhar com mais alguém então por que não com todos? Nesse artigo não vou me aprofundar em uma aplicação Rails até por que não disponho de tanto conhecimento assim. Vou falar um pouco sobre RoR, sua instalação, atualização e, logicamente, falarei um pouco sobre Ruby (nessa ordem). Serei bastante direto e meus exemplos serão para Windows e Linux, por isso.

O que é RoR?

RoR é um acrônimo para RubyOnRails, ta certo?. Esse, na realidade, é um poderoso framework open-source de desenvolvimento web criado para construir, de forma muito rápida, aplicações web de alta qualidade. É bastante simples de instalar, seu único pré-requisito é o próprio Ruby instalado e configurado na máquina local, ai o resto é resto.

Como disse, o RoR precisa do Ruby por isso, pra inicio de conversa vamos instalar o Ruby que é uma linguagem de programação assim como java, dotnet, python, etc… Se você for usuário Microsoft, abaixo tem um link pra baixar um instalador da linguagem Ruby, o one-click install, no windows. Nele não existe segredo, é só ir pressionando próximo até aparece o fechar e pronto “Ruby funcionando!”.

http://rubyinstaller.rubyforge.org/wiki/wiki.pl

Para facilitar o entendimento desse micro-artigo, vou trabalhar com o windows XP e a distribuição Ubuntu do Linux. Os exemplos serão mostrados em ambos os sistemas operacionais, até por que uso ambos.

Continuando, pra quem usa linux a instalação do Ruby é meio diferente, mesmo assim, sem mistério. Como disse, eu uso Ubuntu, mas acredito que seja o mesmo para as demais distribuições por isso, faça o seguinte. Abra um terminal e digite:

sudo apt-get install ruby

Esse comando instala e configura o Ruby como se fosse o one-click install do windows, muito fácil ne mesmo?.

Agora que temos o Ruby instalado, basta fazer o mesmo com o Rails por isso vamos da seguinte maneira. Novamente, será exibido os passos para Ubuntu e posteriormente Windows, digite no terminal os comandos seguintes:

[Linux Ubuntu]

sudo gem install rails -y
sudo gem install sqlite3-ruby
sudo apt-get install libopenssl-ruby1.8

[Windows XP]

gem install rails -y
gem install sqlite3-ruby

Aguarde um tempinho (não se preocupe caso aparente que o comando não respondeu ou esta demorando um pouco, o sistema esta catalogando todas as dependências necessárias para o download, terminando, será exibidos a listagem com o que ta sendo instalado) e pronto. Muito complicado né mesmo? O primeiro comando instala o RoR com todas as suas dependências (pra isso o –y, em futuras versões do Ruby esse parâmetro não será necessário). O segundo comando instala um adaptador que vai possibilitar nossa aplicação conversar com um banco sqlite3 (é possível baixar o adaptador sem o banco está instalado, mas o sistema só vai rodar se encontrar o banco por isso instale-o também). O último comando só vale pra Linux, ele vai instalar a biblioteca openssl usada pelo mongrel para iniciar o serviço, quando não tem, da pau.

DICA: Se você usa proxy pra acessar a internet, no Windows precisa configurar uma variável para que o RubyGems possa baixar as gems. Faça o seguinte:

a) acesse as propriedades de meu computador;
b) depois avançado>variáveis de ambiente;
c) nela você vai criar uma variável chamada HTTP_PROXY e o valor dela devera ser http://<ip_proxy>:<porta_proxy>

d) abra novamente o terminal para que a modificação tenha efeito e pronto.

Continuando, vamos testar nosso ambiente. Uma forma bastante simples e pratica de fazer isso, por sinal muito parecida com a do java (javac), é digitando no terminal:

ruby -v
rails -v

Tanto pra Windows quanto Linux. O primeiro comando informa a versão do Ruby que esta instalada. O segundo informa a versão do Rails que foi baixada. Os dois comandos respondendo direitinho prova que ta tudo certinho com nossos passos até então (qual quer problema reveja os passos novamente).

Bom, como já temos os dois prontos, podemos fazer um teste mais rigoroso criando uma aplicação de demonstração para ver a coisa no vera mesmo.

Criando um Demo em Rails

Antes de tudo, você que usa Windows precisa realizar mais um passo chato configurando o Ruby na variável Path do sistema. Acesse as propriedades de Meu Computador, avançado>variáveis de ambiente e acrescente a seguinte instrução dentro da variável path.

C:\ruby\bin

O endereço tem de ser o da instalação do Ruby, coloque a unidade C: por que é o padrão da instalação. Após isso, feche o terminal para que ele re-carregue todas as configurações e pronto.

Crie em algum lugar uma pasta para centralizar seus projetos (isso não é um pré-requisito, mas deixa seu ambiente de trabalho mais organizado). Abra novamente o terminal de comandos (se você ainda estiver com o terminal anterior aberto, poderá usá-lo), por ele acesse a pasta de projetos Rails recém criada e digite:

rails Demo

Rails é o comando que vai criar sua aplicação, ele pede somente um parâmetro que é justo o nome do aplicativo. Esse comando instrui o Rails a criar um sistema web, note que ele não cria uma estrutura vazia. Isso acontece por que Rails segue uma serie de convenções para facilitar a vida de quem vai produzir sistemas. Uma dessas convenções é justamente a padronização do ambiente da aplicação por pastas especificas que ele próprio (RoR) se encarrega de gerenciar. Logicamente, você tem livre arbítrio para seguir suas próprias convenções e não as dele (RoR), só fique ciente que esse será um trabalho a mais que terá e você precisara gerenciar isso. Agora podemos acessar o demo e iniciar nosso primeiro sistema web digitando (a partir da pasta do projeto):

[Linux Ubuntu]
script/server

[Windows XP]
ruby script/server

Note que em um ambiente Windows, precisamos referenciar a variável de sistema Ruby. Agora vamos aponte o browse para o seguinte endereço:

http://localhost:3000

Se tudo correr direitinho, será exibido a pagina de boas vindas do projeto.

Como faço para atualizar meus projetos RoR?

Em vista de tudo pronto e funcionando, é bastante comum que você (programador) queira sempre esta com a versão mais atual de seu framework preferido. Com RoR não é diferente, mas existe uma condição para que isso ocorra. Alguns recursos do Ruby precisam se encontrar atualizados, por exemplo, RoR é instalado a partir de um gerenciador de pacotes do Ruby chamado RubyGems, ele se encarrega de verificar e baixar todas as dependências do RoR incluindo RDoc e, por ai vai. RubyGems é um recurso do Ruby muito usado, por isso sempre é bom da uma atualizada nele até por que versões mais recentes dos pacotes gems sempre irão pedir a versão mais atual do RubyGems e isso inclui RoR. A boa notícia é que fica fácil atualizar seus recursos depois RubyGems está pronto pra isso, basta certificar-se de que o sistema será atualizado corretamente a partir dos comandos:

[Linux Ubuntu]
sudo gem update –system
sudo gem install rails
sudo gem update rake
sudo gem update sqlite3-ruby

[Windwos XP]
gem update –system
gem install rails
gem update rake
gem update sqlite3-ruby

Novamente, tanto Linux quanto Windows. O primeiro comando atualiza o próprio sistema RubyGems (que é exigido pela versão mais recente do RoR) como já mencionado. O segundo comando instala Rails mais recente com todos os novos recursos. O terceiro comando atualiza a ferramenta Rake (um construtor de aplicações Ruby similar ao make do Linux). Por fim, o último comando vai atualizar o adaptador sqlite3 que foi instalado (você pode ter vários adaptadores, um para cada banco preferido seu).

Novamente, a execução dos comandos pode levar um tempinho para ser concluído, não se preocupe caso não aparece nenhum texto de imediato. Quando estiver finalizado, você poderá listar todas as gems instaladas usando o comando:

gem list

Esse é um comando do Ruby por isso pode ser rodado a qualquer instante. Existe um outro que possibilita você ler a documentação de todas as gems instaladas:

gem server

Executando essa instrução acima, você estará iniciando um servidor web na porta 8808 que dará acesso à documentação das gems de instaladas. Você verá uma lista des gems com links para o RDoc web e uma breve descrição da gem. O endereço para o server é:

http://localhost:8808/

Depois que estiver com a versão mais recente de RoR, pode acontecer que algumas de suas aplicações não funcionem. Esse é um problema muito simples de resolver por tanto faça o seguinte:

a) Acesse a arquivo config/environment.rb de sua aplicação;

b) Altera o valor da variável RAILS_GEM_VERSION para a nova versão do RoR que você quer usar, tipo: de RAILS_GEM_VERSION = ‘2.0.0′ para RAILS_GEM_VERSION = ‘2.1.2’.

O Ruby!

Até esse momento vimos um pouco sobre RoR. Nada muito detalhado, mas com algumas informações fundamentas pra quem ta iniciando. RubyOnRails é um Framework muito poderoso que não seria capaz de fazer o que faz se não fosse a linguagem de programação Ruby. Ruby é uma linguagem tão boa que hoje já temos empresas grandes como a Sun investindo nela. Existe até um projeto pouco conhecido chamado JRuby (eu disse pouco?) que vem tomando espaço de uns outros menos barulhentos mas muito legais como o Groovy (pra quem quiser saber mais, abaixo segue um post com 33 pontos de comparação para essas linguagens), detalhe, não estamos aqui para falar disso por isso deixaremos esses discurções para quem sabe mais do assunto por tanto.

http://www.javafree.org/news/view.jf?idNew=3118

Quando instalamos o Ruby no computador para testar o RoR, junto com ele foi instalado um programinha muito bom para se testar código, o irb (interactive Ruby shell), que nos possibilita chama-lo e já ir colocando códigos e testando. Nada muito complexo, excelente pra quem ta iniciando assim como eu. Agora, antes de tudo, vamos fazer algumas modificações no ambiente para facilitar e dar um pouco mais de agilidade as nossas vidas (essa configuração só se aplica ao Linux pos não sei como fazer isso no Windows, mas quem souber e quiser contribuir, sinta-se a vontade para postar aqui).

Acesse o diretório de seu usuário na pasta /home/, por exemplo:

/home/vinicius/

Dentro digite:

sudo gedit .irbrc

Será exibido um documento em branco, nele acrescente a linha:

require ‘irb/completion’

Ok, a partir de agora seu irb possui suporte para auto-complemento usando a tecla de atalho tab, mas isso ainda não esta funcionando pos falta um passo a ser seguido. Procure a pasta onde o Ruby foi instalando, no meu pc ela fica em /etc/lib/ruby. Pelo terminal, a partir dela faço o seguinte, localizo a pasta 1.8.2 que possui os arquivos rb depois digito o comando:

Rdoc *.rb

Esse comando vai gera a documentação do Core do Ruby a partir dos arquivos rb. Após essa trabalheira toda, agora sim poderemos utilizar o irb com recursos de auto-complemento. Vamos fazer só um teste rápido pra validar o que fizemos, acesse o terminal e digite:

irb

String.<PRECIONE_TAB>

A instruição irb vai iniciar a execução do programa IRB. Quando, nele, digitamos o nome de uma classe do Ruby e chamamos o método methods da classe, é exibo um array contendo todos os métodos dessa classe. Se os passos feitos antes do inicio do irb funcionaram, nós poderemos escrever, por exemplo, o nome de uma classe qualquer mais o ponto e pressione o TAB duas vezes (bem como o exemplo acima) que os métodos serão exibidos lado a lado na tela.

Beleza, tudo certo para nosso pequeno Tour? Vamos esquecer um pouquinho o que vimos em RoR e nos focarmos no Ruby por isso, antes de mais nada, é preciso entender que em Ruby tudo é um objeto e quando eu falo tudo me refiro a tudo mesmo (ta bom, tem algumas exceções que fogem a regra tipo variável, mixin e blocos) por isso, qualquer coisa que se faça esta sendo feito em um objeto. Por exemplo, vamos criar um método e uma classe, hum!! Como criar um método e uma classe?

Como disse, o IRB é um ambiente de teste que possibilita testar tudo o que vem na cabeça por isso uma definição de método tipo:

def meu_nome
puts “vinicius luiz”
end

ou uma declaração de classe tipo:

class Teste1

end

São coisas totalmente aceitas dentro dele. Não se preocupe em “onde que ele ta pondo essas coisas” ou “quando vai precisar compilar”. Ruby é uma linguagem totalmente dinâmica por isso o que você escrever no IRB já estará pronto para uso.

Agora que temos uma definição de método e uma declaração de classe, vamos ilustrar so mais um pouquinho e não se preocupe se o que vir for meio estranho. Como disse, em Ruby tudo é muito simples inclusive declarações de classe. Class em si é um objeto por isso podemos criar outras classes da seguinte maneira (esse é um modo muito diferente do convencional):

Teste2 = Class.new

Isso não é um bicho de sete cabeças pra se entender correto? O que fizemos foi simplesmente criar uma classe nova instanciando ela do objeto Class, simples não?

Agora, temos um método que vai imprimir uma string “vinicius luiz” quando for chamado no irb. Como o irb e um objeto Object, o que estamos fazendo na realidade é uma chamada em Object, exemplo (agora segue uma lista):

meu_nome
self.meu_nome
Object.meu_nome

Note a primeira chamada não é mais segredo já a segunda e a terceira! Como você percebeu, o método criado na realidade foi enfiado (sutil não?) no objeto Object e como IRB herda Object, também acessa esse mesmo método novo. Até o momento não vimos nada complicado, mas temos uma terceira forma de se chamar essa mesma função, digite:

Kernel.meu_nome

Kernel? Mas quem e esse Kernel afinal? Calma, eu explico! Kernel é um modulo que pega os dados postos no IRB e coloca em Object. Qualquer método que esteja sendo criado no IRB (na realidade em qualquer lugar no ruby) ficara acessível através do contexto de qualquer classe, do Kernel ou de Object, deu pra entender isso? Humm, pêra ae! Eu disse qualquer classe?

Ta lembrado das classes criadas no inicio, agora é à hora de usá-las, vamos fazer o seguinte:

Teste1.meu_nome
Teste2.meu_nome

Antes de prosseguir, permita me fazer uma pergunta. “Quem nasceu primeiro, o ovo ou a galinha?”, ehhh, to brincando. Bom, continuando.

Como toda classe por padrão herda de um Objeto expecifico (e já estamos cansados de saber disso), em Ruby não é diferente por isso nossas classes também, visto que herdam do objeto Object, terão acesso à função meu_nome.

Como deu pra ver, tudo em Ruby é um objeto incluindo qualquer coisa pôs métodos, variareis, etc. definidos em qualquer lugar não são coisas dispersas em um espaço estático e acessível sem vinculação com nada. Tudo que for definido será inserido em Object que por sua vez deriva pro o IRB, pro Kernel e pra qualquer outro objeto.

Acho que da pra dizer que o Kernel no ruby seria como o java.lang do java (corrijam me se estiver errado). Uma biblioteca importada por padrão, com métodos acessíveis sem a necessidade de informar o nome de sua classe.

Conclusão

Bom pessoal, falei um pouco de RoR, sua instalação, atualização e algumas outras pequenas configurações que existem pra serem feitas nos diferentes ambientes testados. Acho que não teve muita coisa nova pos o que mostrei já deve ta mais que batido.

Pode acontecer deu ter me equivocado? Pode sim, sem nenhum problema por isso me corrigirem se for o caso pos como disse no inicio, esse material foi pra fixar mais as idéias.

Estudem Ruby, não se prendam somente em RoR, RoR, RoR. É um bom framework? Sim, com toda certeza um dos melhores, mas Ruby a meu ver é muito mais essencial pra quem ta iniciando. Existem materiais excelentes na internet, quem poder e quiser baixar, eles estão ai aos milhares por isso, colocarei só um aqui pra vocês.

http://rapidlibrary.com/index.php?q=ruby+way

Existem alguns livros nacionais muito legais como “Ruby: desvendando a linguagem” (esse particularmente eu aconselho) e outros mais. Agora, quem quiser postar alguma coisa, sou todo ouvidos hehehehe.

Linguagem de Programação! Conhecendo para melhor Escolher!

Linguagem de Programacao

Linguagem de Programacao

Meu nome e Isaac Guerra, sou programador a vários anos e sempre tenho me deparado com as mesmas dúvidas sobre linguagens de programação!! E o que sempre me incomoda é tentar saber, qual é a melhor? Talvez você também se sinta pressionado a sempre estar mudando de linguagem para acompanhar o mercado ou para integrar uma equipe diferente, mais no fim o sempre se pergunta qual é a melhor linguagem pra você.

Talvez seja melhor definirmos quais sao pontos importantes para uma linguagem ser boa, ou, o que realmente é importante para uma boa linguagem de programação.

Para entendermos bem sobre requisitos de linguagem seria interessante voltar-mos e vermos um pouco da história das linguagem, para levantarmos onde e quando o que usamos hoje se tornou padrão.

No começo quando criaram os primeiros computadores a valvulas, eles processavam alguns programas simples, e esses programas eram escritos diretamente em suas memórias e só continham 0s e 1s, isso mesmo não se escreviam programas, e sim binarios que seria processados diretamente nos processadores. Isso com certeza era muito ruim, pois se alterassem qualquer bit, o resultado dava errado, sem falar no tempo que se levava para se escrever um programa. Aqui ja notamos que teria que haver um meio termo entre a linguagem binária, que o computador entende, e a linguagem humana que nos entendemos, e esse meio termo é que nos chamamos de linguagem de programação, e desde então estamos tentando encontrar a lingagem ideal para ser transformarmos pensamentos em bits.

Neste momento o que tinhamos para apoiar o programador eram alguns microcódigo internos no processador (RISC, CISC), que realizavam rotinas mais complexas diminuindo assim a extensão do programa, bem mais chamar microcódigo é muito complicado, é quase como escrever binários, entao criaram os primeiros programas de apoio que serviam para montar as chamadas de microcódigos, os chamados montadores(Assembly), acredite os montadores eram revolucionários e ajudaram em muito as coisas.

Ainda que ja tivéssemos os montadores o processo de escrever um programa era muito complexo, pois tudo era feito pelo programador, tipo, se vc quisesse esvrever algo na memória RAM tinha que ir na memória achar um espaço vago, e depois escrever, ou seja, tinha que gerenciar todo o Hardware, isso era muito complexo e um programa ficava quase que 99% de codigo para gerencia Hardware e 1% com o foco fim ou seja o programa.

Neste momento vieram a linguagem de Primeira Geração que tinham como objetivo essas facilidades de genciamento de memória, outros periféricos. Escrever um programa com a obrigação de cuidar do hardware ficou mais facil, mais ai veio um complicante, a multiprogramação, ou seja varios programas rodando no mesmo hardware, bem neste momento nao era mais suficiente pois alem de gerenciar o hardware tinha que conciliar o acesso ao hardware com outros programas.

Foi quando criou-se uma camada de software que tem por objetivo gerenciar e assumir a responsabilidade de controlar o acesso ao Hardware, o Sistema Operacional(Linux, Unix, BSD, etc). Neste momento a programação ficou bem mais simples, pois essa camada apoia o Programador, onde, quando ele precisa de um espaço na memoria RAM basta pedir ao S.O. e ele realiza toda a complexa tarefaz de falar com o Hardware, e assim é com todos outros perifericos(Video, Impressora, Rede, etc) ai ficou fácil bem mais fácil, onde escrever um programa e quase que totalmente focar no objetivo fim, ou seja as funcionalidades do programa.

Até neste momento o ato de programar era pura e simplismente criar procedimentos que seriam executados pelo processador, sendo assim todos os programas nada mais eram que um monte de procedimentos, e as linguagens de programação davam condições de se escrever esses procedimentos, uma das facilidades era dar nomes aos procedimentos para depois poder chamalo pelo nome, isso é legal, outra coisa que as linguagem fazim bem era, poder nomear endereços de memória e depois chama-las pelo nome.

Foi quando um dia alguem pensou que poderia organizar melhor os procedimentos, bem a ideia nao mudou e sim mudou a organização das coisas, ainda tinhamos procedimentos nomeados, e areas de memoria nomeadas, entao criaram o objeto, um objeto nao e um procedimento a ser processado, nem tao pouco uma area de memoria a ser acessada, e sim um estrutura organizacional que juntaria em si procedimentos e memória. Por fim um programa conteria muitos objetos e os objetos conteriam os procedimentos e as variaveis, e um se comunicaria com outros por meio de menssagens. Bem parecido com o mundo real, Nasceu ai a Programação Orientação a Objetos. Muito mais complicado, mais no fundo a mesma coisa. Bem mais neste mesmo período os programadores estavam preocupados com outro problema e nao deram muita bola para a POO.

O mundo assistia a primeira onda de informatização, ja tinhamos computadores capazes de processar grandes volumes de dados e aplicações multiprocessadas, com multiusuarios, etc. E o problema era guardar grande volumes de dados de maneiras persistente, foi quando nasceu os primeios programas destinados a gerencia de dados persistentes, os SGBDs. Com isso programar ficou ainda mais facil pois ja nao nao tinhamos que se preocupar com codigos de maquina, ja nao era necessário se preocupar com acesso a hardware, agora nao era mais necessário se preocupar com guarda e busca de dados persistentes. E assim o mundo ficou por mais de uma decada, sem muitas novidades.

Nesse meio tempo nasceu várias alternativas, criaram-se impérios em Software, porém no mundo da programaçao nada de muito novo acontecia, era tudo procedimetnos nomeados, e areas de memória nomeadas, guadando dados em SGBDs onde quase tudo era feito para rodar sobre um S.O(ruindows). O problema de deixar o S.O. cuidar do acesso ao hardware e que se o S.O for ruim a aplicaçao que funciona sobre ele também será ruim, outro problema é que se a aplicaçao faz chamada as funóes do S.O ele fica altamente dependente dele, e isso foi foi o que motivou a próxima mudança no mundo do Software.

Um empresa gigante na área de Hardware(SUN) queria que as aplicaçoes rodassem em qualquer hardware ou S.O, foi quando nasceu uma nova plataforma com esse Objetivo(JAVA), essa plataforma era composta por alguns modulos, um a camada de abstraçao entre a Plaicaçao e o Sistema Operacional(VM), um interpretador RunTime, Um gerenciador de Memória(GC), Um compilador e uma Linguagem para ele(JAVA) e por fim uma biblioteca cheia de funçoes prontas(JDK). Bem para melhor funcionamento dessa estrutura ele buscaram um paradigma de programaçao que apoiasse essa filosofia, e acharam o Orientaçao a Objetos, que ja existia porém nao era muito usada.

Agora sim Programar ficou mais simples ainda, ja nao precisavamos nos preocupar com codigo de maquina, nem acesso ao hardware, nem persistencia de dados, agora uma aplicaçao poderia ser rodada em qualquer Hardware ou S.O, tinhamos também um Avanço na gerencia de memória com o “Garbage Colector” diminuindo a preocupaçao com o uso da memória RAM, tinhamos uma infinidade de codigo pronto disponívem no “Development Kit”, e o que restou para o desenvolvedor era apenas digitar poucos códigos, ai o mundo ser tornou muito chato para o progamador.

Neste mundo certinho, cinza, rapidamente germinou a cultura de transformar o ato de programar em um processo de simples engenharia, quadrado, pobre e sem brilho, foi quando mudou-se o foco do programa para o projeto, e criaram-se várias formas de escrever projetos de software(UML, etc) e por fim a documentaçao ficou rapidamente varias grandesas mariores que o proprio software, e o programador se tornou apenas um mero digitador sem grande importancia, as linguagem de programaçao(JAVA. etc) apoiaram os engenheiro e massacravam os programadores com seus, tipos e interfaces, tornado um programa um amontoado de regras que inibiam a criatividade do programador.

Bem chegamos nos dias atuais, e podemos pensar em alguns pontos que sao importantes par uma linguagem de programação.

Memória: Gerencia de memória não é tão importante estar sob responsabilidade do programador, pois hoje temos o Sistema Operaciona gerenciando o Hadware, e o Garbage Colector que gerencia o uso da propria memória. Sendo assim ao criar um variavel nao e tao importante dizer que tipo ela será, a linguagem pode fazer isso dinamicamente, sem problemas.

Hadware: É interessante que a linguagem tenha uuma infriestrutura que possibilite a execuçao em qualquer hardware, usando ou nao uma estrutura de Maquina Virtual.

Procedimentos: É notorio que o Paradigma de Orientaçao a Objetos e melhor que o Procedural, onde os procedimentos pertencem a um objeto. Porém, é interessante essa estrutura não seja tao rigida ao ponto de dificultar a programaçao, é bom que se possa criar metodos coletivos, individuais, staticos e também que se possa em tempo de execuçao criar métodos para suprir alguma necessidade desconhecida, é legal também a possibilidade de criar metods nao nomeados e dinamicos para suprir algo como programaçao dinamica.

Persistencia de Dados: Bem o Paradigma de Orientaçao a Objetos é muito bom na gerencia de procedimentos, porém não apoia em nada em persistencia de dados, e a integraçao com os antigos SGBDs e pessimo. Seria muito interessante que a Linguagem de programaçao possuíssem em sua infraestrutura a capacidade de Persistencia de dados, transparente e eficiente, que mantesse o acesso a dados totalmente na forma de objetos com uma boa infraestrutura de compartilhamento desses objetos(Algo como uma Gemstone Samlltalk).

Bibliotecas: Uma boa linguagem deve ter uma boa Biblioteca Objetos fundamentais para a funçoes mais massantes prontas porem é importante que esses Objetos sejam facilmente alterados e melhorados.

Criatividade: Por fim uma boa linguagem de programação apoia o programador em sua tarefa, pois a linguagem nada mais que que uma ferramenta para ser usada, a linguagem tem que ser simples, poderosa, deve apoia a criatividade do programador, deve ajuda-lo a encontrar possiveis falhas.

Bem na verdade exstem hoje algumas linguagem que suprem bem esses requisitos, cito smalltalk, ruby, Phyton, etc.

No fim temos que ter uma visao do que seria interessante  para o futuro, mais isso veremos em um outro artigo.