APRESENTAÇÃO RUBY Alunos • • • • Luís Gustavo T. Cordeiro Jhonatan C. Morais Guilherme S. Pinheiro Octávio Richter HISTÓRICO Desenvolvida no Japão em 1995, por Yukihiro "Matz" Matsumoto. • Linguagem de script. • Mais poderosa do que Perl, e mais orientada a objetos do que Python. Uniu partes das suas linguagens favoritas: • Perl, Smalltalk, Eiffel, Ada e Lisp. Equilibra a programação funcional com a programação imperativa. IDEAIS DO CRIADOR • “Tento tornar o Ruby natural, não simples” • “O Ruby é simples na aparência, mas muito complexo no interior, tal como o corpo humano.” Matz Por que esse nome? • O nome “Ruby”, foi decidido durante uma sessão de batepapo online entre Matsumoto e Keiju Ishitsuka antes de sua utilização. Inicialmente foram propostos dois nomes: “Coral” e “Ruby” • Matsumoto escolheu Ruby por ser a pedra zodiacal de um de seus colegas. Totalmente livre. Não somente livre de custos, mas também livre para utilizar, copiar, modificar e distribuir. CRESCIMENTO Lista de discussão em inglês chamada Ruby-Talk • principal lista de correio para a discussão sobre a linguagem Ruby subiu para uma média de 200 mensagens diárias. O primeiro livro em inglês, Programming Ruby, liberado gratuitamente para o público, ajudou no processo de adoção de Ruby por falantes do inglês. • Por volta de 2005, o interesse pela linguagem Ruby subiu em conjunto com o Ruby on Rails, um framework de aplicações web popular escrito em Ruby. Eleita Linguagem de Programação do Ano em 2006 ÍNDICE TIOBE Position Position Programming Ratings Delta Dec 2012 Dec 2011 Language Dec 2012 Dec 2011 1 2 C 18.696% +1.64% A 2 1 Java 17.567% +0.01% A 3 5 Objective-C 11.116% +4.31% A 4 3 C++ 9.203% +0.95% A 5 4 C# 5.547% -2.66% A 6 6 PHP 5.541% -0.46% A 7 7 (Visual) Basic 5.174% +0.42% A 8 8 Python 3.848% +0.36% A 9 9 Perl 2.174% -0.30% A 10 11 Ruby 1.728% +0.23% A 11 10 JavaScript 1.321% -0.88% A 12 12 0.977% -0.27% A Delta in Position Status Delphi/Object Pascal 13 13 Lisp 0.949% -0.23% A 14 16 Pascal 0.894% +0.16% A 15 35 Visual Basic .NET 0.889% +0.53% A 16 17 Ada 0.648% +0.02% B 17 22 MATLAB 0.608% +0.07% B 18 21 Lua 0.601% +0.05% A-- 19 19 Assembly 0.580% +0.02% B 20 14 PL/SQL 0.574% -0.23% B PRINCIPAIS CARACTERÍSTICAS Estrutura Geral: • • • • Linguagem interpretada; Orientada à objetos (“tudo” é objeto); Portável; Trabalha com herança, classes, métodos, polimorfismo e escalonamento; • Sintaxe relativamente simples e de fácil compreensão PRINCIPAIS CARACTERÍSTICAS •Métodos: – Possibilidade de dinamicamente expandir os parâmetros; – Pode retornar qualquer tipo; PRINCIPAIS CARACTERÍSTICAS •Variáveis: – Referencias para objetos (não existe ponteiros); – “Não” possuem tipo; – Não precisam ser declarados antes de serem utilizados; – Atribuição de valor é feita através de referencias; PRINCIPAIS CARACTERÍSTICAS Gerenciamento de Memória: • Feito automaticamente pelo próprio interpretador; • Acontecem poucos erros ou travamentos; PRINCIPAIS CARACTERÍSTICAS Threads: • Não há necessidade de uma biblioteca externa; • Implementação ocorre em nível de usuário; • Criação de novos processos é feita pelo método da classe Kernel; • Sincronização é feita através do mutex; PRINCIPAIS CARACTERÍSTICAS •Flexibilidade: – Permite aos seus utilizadores alterar partes da linguagem; – Partes essenciais podem ser removidas ou referenciadas à vontade; – Acrescentar partes as já existentes; JAVA WEB X RUBY ON RAILS •Produtividade e curva de aprendizado; • Simplicidade; • Manutenção; • Internacionalização (UTF-8); • Aplicativos de suporte; • Funções adicionais (bibliotecas); • Manipulação de dados; • Suporte ao longo prazo. DIFERENÇAS DA LINGUAGEM Java Ruby Definição de métodos Entre “{}” “end” Utilização de bibliotecas “import” “require” Parâmetros de métodos Entre “()” Parêntesis opcionais Atributos Privados, protegidos, públicos privados Orientação a objetos Variáveis primitivas e de instância Tudo é objeto Instanciação x = new X(); x = X.new Construtor Nome da classe initialize Tipagem Estática Dinâmica Condições Expressões lógicas Tudo é verdadeiro, exceto false e nil Sobrescrita Apenas métodos Métodos e operadores Encapsulamento Classes encapsuladas Classes abertas DIFERENÇAS DA LINGUAGEM • • • • • Final de linha Enums Char Acesso de atributos Nome de métodos PRESENÇA DE RUBY NO MERCADO • Ruby e suas tecnologias são utilizadas por grandes corporações em diversos tipos de aplicações, destinadas por exemplo, a telefonia, gerência de sistemas e redes, portais corporativos, comércio eletrônico, redes sociais e até mesmo robótica. PRESENÇA DE RUBY NO MERCADO • Segundo informação do site Workingwithrails, grandes empresas brasileiras como Rede Globo, Grupo Abril, Locaweb, e gigantes internacionais como BBC, AOL, Amazon, Groupon entre outras utilizam a tecnologia Ruby on Rails em suas organizações. RUBY GEMS • Gerenciador de pacotes de Ruby. • Disponibiliza um formato padrão para a distribuição de programas e bibiliotecas Ruby, são os pacotes denominados “gems”. • Tem como fonte padrão o seu site oficial (rubygems.org), no site há espaço para desenvolvedores cadastrados disponibilizarem suas bibiliotecas para toda comunidade. RUBY ON RAILS • Framework livre de desenvolvimento web. Permite desenvolvimento rápido e fácil de aplicações, seguindo o padrão de arquitetura MVC (Model-View-Controller). Tem sido a maior razão para o sucesso de Ruby na web. JRUBY Implementação da linguagem Ruby para plataforma Java • • • • Roda sobre a JVM Threads Nativas JIT (Just-in-time compiler) Garbage colector • • • • Possibilidade de utilizar bibliotecas e classes Java Jar's, servlets, hibernate, JDBC, etc. Suporta Rubygems Suporta Rails UTILIZAÇÃO DE JAVA COMO PLATAFORMA REFERÊNCIAS • http://www.dotlib.com.br/i/4768a22a0d58da3cfa71294e40ed6229.pdf • http://www.ruby-lang.org • http://pt.wikipedia.org/wiki/Ruby_(linguagem_de_programa%C3%A7 %C3%A3o) • http://www.tryruby.org • http://www.slideshare.net/Belighted/ruby-vs-java • http://www.urubatan.com.br/ruby-on-rails-x-java-web/ • http://www.pardontheinformation.com/2008/09/java-vs-ruby-on-railsit-is-dead-heat.html • http://jruby.org/ • http://rubyonrails.com.br • http://rubygems.org/ • http://www.youtube.com/watch?v=5b3qd2VMLws