ruby

36

Upload: lais-berlatto

Post on 28-May-2015

366 views

Category:

Documents


2 download

DESCRIPTION

Apresentação sobre a linguagem de programação Ruby

TRANSCRIPT

Page 1: Ruby
Page 2: Ruby

Introdução

● A linguagem Ruby. ● Seu principal criador.

● Surgimento de seu nome.

Page 3: Ruby

Histórico

● Concebida.

Afirmação de Matsumoto: "Eu queria uma linguagem de script que fosse mais poderosa do que Perl, e mais orientada a objetos do que Python. É por isso que eu decidi desenvolver minha própria linguagem.". "Desenvolvedores querem criar a linguagem de programação perfeita. Eles querem poder dizer: “Veja, a minha linguagem é perfeita. Com ela você pode fazer qualquer coisa”. Mas é simplesmente impossível conceber uma linguagem perfeita. " ● Destinada.

Page 4: Ruby

Linguagens que influenciaram Ruby:

● Ada● CLU● Dylan● Eiffel● Lisp● Perl● Python● Scheme● Smalltalk

Ao projetar a linguagem, Matz reuniu os principais pontos de dessas linguagens, como: - As expressões regulares de Lisp;- O lambda calculus de Eiffel; - A orientação a objetos de Smalltalk;- A tipagem dinâmica de Perl; - E outras características provenientes de Python, Ada e CLU.

Page 5: Ruby

Versões - Por que novas versões?

Segundo a documentação da linguagem, as novas versões e realeses das mesmas vieram a acorrer desde a versão que popularizou a linguagem, Ruby 1.3, para corrigir certos bugs e acrescentar funcionalidades como:

● Problemas de compatibilidade entre versões. ● Alterações no núcleo da linguagem :

-Nova sintaxe e semântica; ● Exceções

Page 6: Ruby

Versões - Por que novas versões?

● Hash ● String

● Array

● Manipulação de Arquivos

● Biblioteca Regexp

● Simbolos

Page 7: Ruby

Versões - Por que novas versões?

● Integer ● Inclusão de novas bibliotecas como:

- RubyGems - Rake - Minitest - CMath - Prime - Ripper - Readline - RDoc

Page 8: Ruby

Versões - Por que novas versões?

Maior Problema : Vulnerabilidade de Segurança no Ruby

Estas vulnerabilidades foram descobertas por Drew Yao da Segurança de Produtos da Apple.● Algumas vulnerabilidades de segurança no Ruby permitem ataques

"denial of service (DoS)" ou execução arbitrária de código.● Vulnerabilidade DoS na biblioteca REXML

-Existe uma vulnerabilidade DoS na biblioteca REXML incluída na biblioteca standard do Ruby. Uma técnica de ataque conhecida como “XML entity explosion” poderá ser utilizada para terminar remotamente qualquer aplicação que faça parse de XML com a biblioteca REXML.

Page 9: Ruby

Versão Atual Ruby 1.9.2 Ruby 1.9.2, descrita como "quase compatível" com a versão 1.9.1, apresenta suporte a IPv6, melhorias na codificação de caracteres, uma classe Random com suporte a múltiplos geradores de números aleatórios e nova classe Time, que não sofre mais com o problema do ano 2038 [2] (falha na representação de data nos computadores, que poderia ocasionar erro em alguns programas). Houve também outras alterações, incluindo melhorias no regexp, remoção do diretório atual como variável global e novas implementações nas bibliotecas dl e psych. Entre outros progressos ocorridos estão os novos métodos adicionados à Array, Enumerable, Enumerator, File, Env, Digest e muitas outras classes.

Page 10: Ruby

O que é Ruby on Rails?

"É um framework de desenvolvimento web escrito na linguagem Ruby.Designado para tornar a programação de aplicações web mais

fácil, fazendo várias suposições sobre o que cada desenvolvedor precisa para começar."

Ele permite que você escreva menos código enquanto faz mais que muitas outras linguagens e frameworks. Desenvolvedores Rails mais experientes também dizem que ele torna o desenvolvimento de aplicações web mais divertido.

Page 11: Ruby

Novas versões

Ainda hoje, Matz é o responsável por todas as decisões não-consensuais do Ruby. Ou seja, qualquer divergência quanto à implementação de uma nova funcionalidade é resolvida pelo "ditador benevolente". Apesar desta "dependência", a comunidade é forte a ponto de sobreviver "caso o Matz seja atropelado por um ônibus espacial". Existem pessoas que estão tão inteiradas com o código quanto o próprio Matz. Diferentemente de outras tecnologias opensource, não existe uma empresa por trás de suas operações, bancando os custos. O projeto sobrevive de doações feitas pelos usuários satisfeitos e por empresas que conseguiram aumentar sua produtividade utilizando Ruby.

Page 12: Ruby

Exemplos de Sucesso

Exemplificações de o porquê Ruby encontra-se entre as 10 linguagens mais populares do mundo.

● Robótica Ruby foi usado no projeto MORPHA, implementando parte de uma funcionalidade de ativação de um robô da Siemens. ● Para Simulações:

A NASA utilizou Ruby; A Motorola fez uso de Ruby para gerar casos de teste e testar os mesmos.

Page 13: Ruby

Exemplos de Sucesso

● Administração de Sistemas Ruby foi usado em um componente para a captação de dados da Level 3 Communications. Um sistema de planejamento e capacidade Unix, que recolhe estatísticas de performance de cerca de 1700 servidores Unix espalhados pelo mundo.

● Telefônica A empresa Lucent faz uso de Ruby num produto de tecnologia 3G.

Page 14: Ruby

Linguagens influenciadas por Ruby

● Falcon ● Fantom ● Groovy ● Ioke ● Nu

Page 15: Ruby

Características

● Sua programação. ● Linguagem Free.

● Recursos Nativos.

● Possui o framework Ruby on Rails.

Page 16: Ruby

Características

● Existe interfaces para, por exemplo, Python, Perl e Java.

● É independente de plataforma, existindo, por exemplo, Java (JRuby) e .NET (Ruby.net e IronRuby).

● Altamente portável, podendo ser desenvolvido em Linux, Windows, Mac,

entre outros. ● Atualmente.

Page 17: Ruby

Legibilidade

● Ruby é mais voltada para a linguagem natural, com muitos dos seus comandos em inglês.

● Porém, existem várias formas de se resolver um mesmo problema em Ruby, podendo ser usada até a sintaxe do Python.

5.Times{print “Hello World!”} A leitura fica assim: Cinco vezes imprima Hello World!

● A legibilidade do código também é influenciada pela forma em que as variáveis são declaradas, podendo-se identificar facilmente o papel de cada uma.

local = "local"@instancia = 42@@classe = /f+/$Pi = 3.1415926

Page 18: Ruby

Redigibilidade

● Ruby possui uma maior preocupação com sua redigibilidade do que com a legibilidade.

● Por exemplo, enquanto Python possui 9 métodos para listas, Ruby possui 79, o que torna a resolução de algoritmos mais fácil, mas dificulta um pouco a legibilidade, principalmente por terceiros.

● O criador, ao ser entrevistado, disse que prefere dar opções ao programador, sendo possível programar ao estilo Python, em vez da forma criada para o Ruby.

Page 19: Ruby

Confiabilidade

● Ruby possui variáveis de tipos diferentes, porém, todas são classes e não é necessário declarar tipos.

● Como ponto positivo para a confiabilidade, Ruby possui tratamento para exceções, semelhante ao Java e Python, o que facilita no tratamento de erros.

● As palavras-chave para tratamentos de exceção são "begin", "rescue", "ensure" e "retry".

begin # -rescue UmTipoDeExcecao # - rescue OutroTipoDeExcecao # - else # outras exceções end

Page 20: Ruby

Eficiência

● Ruby faz uma concatenação eficiente de strings.● Apesar de fazer o mesmo que outras linguagens, como o PHP e o Java, por

exemplo, e em menos linhas, Ruby, em geral, é mais lenta que outras linguagens.● O famoso sote Twitter foi feito em Ruby, porém, devido aos grandes números de

acessos diários, foi trocado para o Java. Isto tornou o microblog 3x mais rápido.

Page 21: Ruby

Facilidade de Aprendizado

● A sintaxe do Ruby é fortemente influenciada pela sintaxe da linguagem Eiffel. ● Do ponto de vista do aprendizado, a sintaxe é muito simples, facilitando seu

aprendizado.● Desde sua criação até o ano 2000, era uma linguagem praticamente usada apenas no

Japão.● Em setembro de 2000, o primeiro livro em inglês, Programming Ruby, foi

impresso, sendo mais tarde liberado gratuitamente para o público, ajudando no processo de adoção de Ruby por falantes do inglês. Este fato ajudou a popularizar a linguagem no ocidente, e a auxiliar no aprendizado da linguagem por programadores novos ou já experientes em outras linguagens.

● O site da linguagem disponibiliza um tutorial intitulado "Ruby em vinte minutos", que mostra todas as principais funcionalidades da linguagem e permite que um programador saia escrevendo comandos básicos em pouquíssimo tempo.

Page 22: Ruby

Facilidade de Aprendizado

● Um ponto negativo para a aprendizagem de Ruby talvez seja a existência de múltiplos métodos para se escrever um mesmo comando. Exemplo:

● O próprio código da linguagem Ruby pode ser modificado, podendo gerar confusão em seu aprendizado.

● Necessita conhecimento prévio de orientação à objetos, senão pode se tornar mais trabalhoso ter que aprender o paradigma e a linguagem.

a = "\nIsto é uma string de aspas duplas\n" a = %Q{\nIsto é uma string de aspas duplas\n} a = %{\nIsto é uma string de aspas duplas\n} a = %/\nIsto é uma string de aspas duplas\n/ a = <<BLOCO Isto é uma string de aspas duplas BLOCO

Page 23: Ruby

Ortogonalidade

● O criador da linguagem Ruby acha que ortogonalidade pode ser algo ruim. ● Ele afirma que "características ortogonais, quando combinadas, podem explodir em

complexidade".● Isso quer dizer que foi-se aberto mão de parte da ortogonalidade em função da

simplicidade da linguagem.● Matsumoto optou por algo mais harmonioso do que ortogonal. Isto é,

Page 24: Ruby

Reusabilidade

● Por ter sua parcela de Orientação à Objetos, Ruby tem todas as suas variáveis como classes, o código é altamente reutilizável.

● Ruby também possui uma série de bibliotecas prontas, disponíveis em sites como Ruby Forge e Ruby Application Archive (RAA).

● As gemas - pacotes ou aplicações -, programas ou pedaços de programas são distribuídos através do gerenciador RubyGems. Esta é outra possibilidade de reuso na linguagem Ruby.

Page 25: Ruby

Modificabilidade

● No quesito manutenabilidade, utilizando Ruby teremos um código mais legível e de mais fácil manutenção e modificação, por sua orientação a objetos.

● Utilizando o Rails (Ruby on Rails, framework da linguagem) este quesito ainda melhora, e ganha de linguagens como o PHP.

● Porém, é possível escrever código script no Ruby, o que pode complicar sua manutenção futura.

Page 26: Ruby

Portabilidade

● Ruby é uma linguagem interpretada, o que, por si só, já garante uma alta portabilidade.

● Pode ser desenvolvida e rodar em sistemas operacionais diversos, como Linux, Windows e Mac.

● A linguagem implementa threads totalmente em nível de usuário, o que a torna independente de sistema operacional.

● Uma grande desvantagem de se utilizar threads em nível de usuário é que elas compartilham o escalonamento do processo ao contrário de threads de sistema que compartilham o processador com os outros processos.

● Usar threads em Ruby nunca faz o programa executar mais rápido, mas o torna mais lento por causa do custo da troca de contexto. Mesmo assim, permite a execução concorrente compartilhando um mesmo espaço de memória.

Page 27: Ruby

Custo

● Ruby é uma linguagem free, até mesmo para uso comercial.● Por ser altamente portável, o custo total do programa é diminuído. Esta

característica também implica em uma maior distribuição do programa.● A maior parte do seu custo se deve ao contratamento de programadores experientes.● Pode haver custos referentes ao treinamento de programadores Ruby.● Há baixos custos para manutenção, uma vez que a linguagem é altamente legível e

facilmente modificável por outros programadores, na maioria dos casos.

Page 28: Ruby

Tipos de Dados

§ Object § Numeric § Integer§ Fixnum § Bignum § Float § String§ Symbol § Array § Hash § Regexp

Page 29: Ruby

Tipagem Dinâmica

Ruby possui Tipagem dinâmica, mas forte. Isso significa que todas as variáveis devem ter um tipo (fazer parte de uma classe), mas a classe pode ser alterada dinamicamente.

st = String.new()

st = "Isto é uma string"

Page 30: Ruby

Tipagem Dinâmica

system("title Tipagem Dinamica")

puts "\nTIPAGEM DINAMICA\n\n"

x=10puts x.classx=1.1puts x.classx=3000000000puts x.classx="a"puts x.classx=trueputs x.classx=falseputs x.class

system("pause")

Page 31: Ruby

Variáveis

●Variáveis são referencias para objetos

system("title Referencia")

string = "ABC" copia_da_string = string

string[0] = "B"

puts "string: " + string + "\n" puts "copia_da_string: " + copia_da_string + "\n"

system("pause")

Page 32: Ruby

Operadores

Page 33: Ruby

Métodos

def hello_world puts "Hello World"end

Page 34: Ruby

Exemplo: Fatorial

system("title Fatorial")

puts "\n\nFATORIAL\n\n"

def fatorial(number) if (number == 0) return 1 else return number * fatorial(number - 1) endend

puts "\nDigite um numero: "n = gets()puts fatorial(n.to_i)

system("pause")

Page 35: Ruby

Classes

system("title Numero Maior")

class Maiordef initialize(numero1, numero2)

@n1 = numero1@n2 = numero2

end

def maior()if @n1 > @n2puts "Primeiro Numero Maior"elsif @n2 > @n1

puts "Segundo Numero Maior"else

puts "Numeros Iguais"end

endend

Page 36: Ruby

Exemplo: Maior entre Dois Números

puts "Digite o primeiro numero: "n1 = gets()puts "Digite o segundo numero: "n2 = gets()

n = Maior.new(n1.to_i,n2.to_i)n.maior()

system("pause")