SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
Ruby
Introdução
●A linguagem Ruby.
●Seu principal criador.
●Surgimento de seu nome.
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.
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.
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
Versões - Por que novas versões?
●Hash
●String
●Array
●Manipulação de Arquivos
●Biblioteca Regexp
●Simbolos
Versões - Por que novas versões?
●Integer
●Inclusão de novas bibliotecas como:
- RubyGems
- Rake
- Minitest
- CMath
- Prime
- Ripper
- Readline
- RDoc
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.
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.
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.
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.
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.
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.
Linguagens influenciadas por Ruby
● Falcon
● Fantom
● Groovy
● Ioke
● Nu
Características
● Sua programação.
● Linguagem Free.
● Recursos Nativos.
● Possui o framework Ruby on Rails.
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.
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
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.
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
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.
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.
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 duplasn" a = %
Q{nIsto é uma string de aspas duplasn} a = %
{nIsto é uma string de aspas duplasn} a = %
/nIsto é uma string de aspas duplasn/ a =
<<BLOCO Isto é uma string de aspas duplas
BLOCO
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 é,
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.
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.
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.
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.
Tipos de Dados
§ Object
§ Numeric
§ Integer
§ Fixnum
§ Bignum
§ Float
§ String
§ Symbol
§ Array
§ Hash
§ Regexp
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"
Tipagem Dinâmica
system("title Tipagem Dinamica")
puts "nTIPAGEM DINAMICAnn"
x=10
puts x.class
x=1.1
puts x.class
x=3000000000
puts x.class
x="a"
puts x.class
x=true
puts x.class
x=false
puts x.class
system("pause")
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")
Operadores
Métodos
def hello_world
puts "Hello World"
end
Exemplo: Fatorial
system("title Fatorial")
puts "nnFATORIALnn"
def fatorial(number)
if (number == 0)
return 1
else
return number * fatorial(number - 1)
end
end
puts "nDigite um numero: "
n = gets()
puts fatorial(n.to_i)
system("pause")
Classes
system("title Numero Maior")
class Maior
def initialize(numero1, numero2)
@n1 = numero1
@n2 = numero2
end
def maior()
if @n1 > @n2
puts "Primeiro Numero Maior"
elsif @n2 > @n1
puts "Segundo Numero Maior"
else
puts "Numeros Iguais"
end
end
end
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")

Weitere ähnliche Inhalte

Was ist angesagt?

Aula 7 - Modelos de Ciclo de Vida.pptx
Aula 7 - Modelos de Ciclo de Vida.pptxAula 7 - Modelos de Ciclo de Vida.pptx
Aula 7 - Modelos de Ciclo de Vida.pptxALEXANDRELISBADASILV
 
Aula UML - Unified Modeling Language
Aula UML - Unified Modeling LanguageAula UML - Unified Modeling Language
Aula UML - Unified Modeling LanguageCloves da Rocha
 
Apresentação modelagem de_negócio_rup
Apresentação modelagem de_negócio_rupApresentação modelagem de_negócio_rup
Apresentação modelagem de_negócio_rupJarbas Pereira
 
Lógica de Programação - Estrutura de repetição
Lógica de Programação - Estrutura de repetiçãoLógica de Programação - Estrutura de repetição
Lógica de Programação - Estrutura de repetiçãoWesley R. Bezerra
 
Processo Unificado(RUP)
Processo Unificado(RUP)Processo Unificado(RUP)
Processo Unificado(RUP)elliando dias
 
Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)Gercélia Ramos
 
Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e TkCarlos Campani
 
Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2Eder Samaniego
 
Como extrair métricas do Trello
Como extrair métricas do TrelloComo extrair métricas do Trello
Como extrair métricas do TrelloElton Minetto
 
Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Mariana Camargo
 
Apresentação - Ciência da Computação e Sistemas de Informação
Apresentação - Ciência da Computação e Sistemas de InformaçãoApresentação - Ciência da Computação e Sistemas de Informação
Apresentação - Ciência da Computação e Sistemas de InformaçãoElvis Fusco
 

Was ist angesagt? (20)

Aula 7 - Modelos de Ciclo de Vida.pptx
Aula 7 - Modelos de Ciclo de Vida.pptxAula 7 - Modelos de Ciclo de Vida.pptx
Aula 7 - Modelos de Ciclo de Vida.pptx
 
Aula UML - Unified Modeling Language
Aula UML - Unified Modeling LanguageAula UML - Unified Modeling Language
Aula UML - Unified Modeling Language
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Apresentação modelagem de_negócio_rup
Apresentação modelagem de_negócio_rupApresentação modelagem de_negócio_rup
Apresentação modelagem de_negócio_rup
 
Lógica de Programação - Estrutura de repetição
Lógica de Programação - Estrutura de repetiçãoLógica de Programação - Estrutura de repetição
Lógica de Programação - Estrutura de repetição
 
Processo Unificado(RUP)
Processo Unificado(RUP)Processo Unificado(RUP)
Processo Unificado(RUP)
 
Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)
 
Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e Tk
 
Projeto de Software
Projeto de SoftwareProjeto de Software
Projeto de Software
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2
 
Como extrair métricas do Trello
Como extrair métricas do TrelloComo extrair métricas do Trello
Como extrair métricas do Trello
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
 
Linguagem C - Ponteiros
Linguagem C - PonteirosLinguagem C - Ponteiros
Linguagem C - Ponteiros
 
Programação Estruturada e Orientada a Objetos
Programação Estruturada e Orientada a ObjetosProgramação Estruturada e Orientada a Objetos
Programação Estruturada e Orientada a Objetos
 
UML - Diagrama de Pacotes
UML - Diagrama de PacotesUML - Diagrama de Pacotes
UML - Diagrama de Pacotes
 
Lógica Computacional
Lógica ComputacionalLógica Computacional
Lógica Computacional
 
Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }
 
Apresentação da UML
Apresentação da UMLApresentação da UML
Apresentação da UML
 
Apresentação - Ciência da Computação e Sistemas de Informação
Apresentação - Ciência da Computação e Sistemas de InformaçãoApresentação - Ciência da Computação e Sistemas de Informação
Apresentação - Ciência da Computação e Sistemas de Informação
 

Ähnlich wie Ruby

Ruby: Simples e Expressivo - Women Techmakers João Pessoa
Ruby: Simples e Expressivo - Women Techmakers João PessoaRuby: Simples e Expressivo - Women Techmakers João Pessoa
Ruby: Simples e Expressivo - Women Techmakers João PessoaWomen Techmakers João Pessoa
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Linguagen..
Linguagen..Linguagen..
Linguagen..essa
 
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfsilo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfAmlieOGalaxias
 
Entendendo um pouco melhor o que é Ruby
Entendendo um pouco melhor o que é RubyEntendendo um pouco melhor o que é Ruby
Entendendo um pouco melhor o que é Rubycodeland
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfAndreiaCristinaFlore
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO IOs Fantasmas !
 
UM ESTUDO SOBRE METAPROGRAMAÇÃO: AS LINGUAGENS DE PROGRAMAÇÃO PYTHON E RUBY
UM ESTUDO SOBRE METAPROGRAMAÇÃO: AS LINGUAGENS DE PROGRAMAÇÃO PYTHON E RUBYUM ESTUDO SOBRE METAPROGRAMAÇÃO: AS LINGUAGENS DE PROGRAMAÇÃO PYTHON E RUBY
UM ESTUDO SOBRE METAPROGRAMAÇÃO: AS LINGUAGENS DE PROGRAMAÇÃO PYTHON E RUBYLucas Furtado de Oliveira
 
Prazer,Ruby On Rails
Prazer,Ruby On RailsPrazer,Ruby On Rails
Prazer,Ruby On RailsAlberto Leal
 
Palestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço FilhoPalestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço Filhorafarubert
 
Apresentação de ruby parte 5
Apresentação de ruby parte 5Apresentação de ruby parte 5
Apresentação de ruby parte 5Wende Mendes
 
aula03-introprogy.pptx
aula03-introprogy.pptxaula03-introprogy.pptx
aula03-introprogy.pptxbrayankedroksi
 

Ähnlich wie Ruby (20)

Ruby: Simples e Expressivo - Women Techmakers João Pessoa
Ruby: Simples e Expressivo - Women Techmakers João PessoaRuby: Simples e Expressivo - Women Techmakers João Pessoa
Ruby: Simples e Expressivo - Women Techmakers João Pessoa
 
Ruby
RubyRuby
Ruby
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Introdução ao Ruby on Rails
Introdução ao Ruby on RailsIntrodução ao Ruby on Rails
Introdução ao Ruby on Rails
 
Ruby and Rails
Ruby and RailsRuby and Rails
Ruby and Rails
 
Linguagen..
Linguagen..Linguagen..
Linguagen..
 
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfsilo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
 
Entendendo um pouco melhor o que é Ruby
Entendendo um pouco melhor o que é RubyEntendendo um pouco melhor o que é Ruby
Entendendo um pouco melhor o que é Ruby
 
Isc aula 7
Isc   aula 7Isc   aula 7
Isc aula 7
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
 
A Linguagem Ruby
A Linguagem RubyA Linguagem Ruby
A Linguagem Ruby
 
Java modulo 01 - Introdução
Java modulo 01 - IntroduçãoJava modulo 01 - Introdução
Java modulo 01 - Introdução
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
UM ESTUDO SOBRE METAPROGRAMAÇÃO: AS LINGUAGENS DE PROGRAMAÇÃO PYTHON E RUBY
UM ESTUDO SOBRE METAPROGRAMAÇÃO: AS LINGUAGENS DE PROGRAMAÇÃO PYTHON E RUBYUM ESTUDO SOBRE METAPROGRAMAÇÃO: AS LINGUAGENS DE PROGRAMAÇÃO PYTHON E RUBY
UM ESTUDO SOBRE METAPROGRAMAÇÃO: AS LINGUAGENS DE PROGRAMAÇÃO PYTHON E RUBY
 
Prazer,Ruby On Rails
Prazer,Ruby On RailsPrazer,Ruby On Rails
Prazer,Ruby On Rails
 
Palestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço FilhoPalestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço Filho
 
Apresentação de ruby parte 5
Apresentação de ruby parte 5Apresentação de ruby parte 5
Apresentação de ruby parte 5
 
aula03-introprogy.pptx
aula03-introprogy.pptxaula03-introprogy.pptx
aula03-introprogy.pptx
 

Mehr von Laís Berlatto

Cucumber - Um breve Review
Cucumber - Um breve ReviewCucumber - Um breve Review
Cucumber - Um breve ReviewLaís Berlatto
 
Testes de usabilidade
Testes de usabilidade Testes de usabilidade
Testes de usabilidade Laís Berlatto
 
Specificationby example
Specificationby example Specificationby example
Specificationby example Laís Berlatto
 
Aplicação de técnicas de processamento de linguagem natural para ferramenta P...
Aplicação de técnicas de processamento de linguagem natural para ferramenta P...Aplicação de técnicas de processamento de linguagem natural para ferramenta P...
Aplicação de técnicas de processamento de linguagem natural para ferramenta P...Laís Berlatto
 
Programação Diversitária
Programação DiversitáriaProgramação Diversitária
Programação DiversitáriaLaís Berlatto
 
Cucumber: um breve review
Cucumber: um breve reviewCucumber: um breve review
Cucumber: um breve reviewLaís Berlatto
 
Specification By Example: Estudo de caso em uma software house
Specification By Example: Estudo de caso em uma software houseSpecification By Example: Estudo de caso em uma software house
Specification By Example: Estudo de caso em uma software houseLaís Berlatto
 
Data encryption standard DES & 3DES
Data encryption standard DES & 3DESData encryption standard DES & 3DES
Data encryption standard DES & 3DESLaís Berlatto
 
Como o Cucumber Funciona
Como o Cucumber FuncionaComo o Cucumber Funciona
Como o Cucumber FuncionaLaís Berlatto
 
Histórico da informática
Histórico da informáticaHistórico da informática
Histórico da informáticaLaís Berlatto
 
Especificações da ISO para gestão de Segurança da Informação
Especificações da ISO para gestão de Segurança da InformaçãoEspecificações da ISO para gestão de Segurança da Informação
Especificações da ISO para gestão de Segurança da InformaçãoLaís Berlatto
 
Modelos de Previsão para sistemas de turbulência
Modelos de Previsão para sistemas de turbulênciaModelos de Previsão para sistemas de turbulência
Modelos de Previsão para sistemas de turbulênciaLaís Berlatto
 

Mehr von Laís Berlatto (20)

Cucumber - Um breve Review
Cucumber - Um breve ReviewCucumber - Um breve Review
Cucumber - Um breve Review
 
Testes de usabilidade
Testes de usabilidade Testes de usabilidade
Testes de usabilidade
 
Specificationby example
Specificationby example Specificationby example
Specificationby example
 
Aplicação de técnicas de processamento de linguagem natural para ferramenta P...
Aplicação de técnicas de processamento de linguagem natural para ferramenta P...Aplicação de técnicas de processamento de linguagem natural para ferramenta P...
Aplicação de técnicas de processamento de linguagem natural para ferramenta P...
 
E-business
E-businessE-business
E-business
 
Programação Diversitária
Programação DiversitáriaProgramação Diversitária
Programação Diversitária
 
Cucumber: um breve review
Cucumber: um breve reviewCucumber: um breve review
Cucumber: um breve review
 
Specification By Example: Estudo de caso em uma software house
Specification By Example: Estudo de caso em uma software houseSpecification By Example: Estudo de caso em uma software house
Specification By Example: Estudo de caso em uma software house
 
Bluetooth
BluetoothBluetooth
Bluetooth
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Data encryption standard DES & 3DES
Data encryption standard DES & 3DESData encryption standard DES & 3DES
Data encryption standard DES & 3DES
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Amostragem
AmostragemAmostragem
Amostragem
 
Estudo de caso
Estudo de casoEstudo de caso
Estudo de caso
 
Como o Cucumber Funciona
Como o Cucumber FuncionaComo o Cucumber Funciona
Como o Cucumber Funciona
 
Ética hacker
Ética hackerÉtica hacker
Ética hacker
 
Histórico da informática
Histórico da informáticaHistórico da informática
Histórico da informática
 
Especificações da ISO para gestão de Segurança da Informação
Especificações da ISO para gestão de Segurança da InformaçãoEspecificações da ISO para gestão de Segurança da Informação
Especificações da ISO para gestão de Segurança da Informação
 
Modelos de Previsão para sistemas de turbulência
Modelos de Previsão para sistemas de turbulênciaModelos de Previsão para sistemas de turbulência
Modelos de Previsão para sistemas de turbulência
 
Arm Cortex
Arm CortexArm Cortex
Arm Cortex
 

Ruby

  • 2. Introdução ●A linguagem Ruby. ●Seu principal criador. ●Surgimento de seu nome.
  • 3. 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.
  • 4. 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.
  • 5. 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
  • 6. Versões - Por que novas versões? ●Hash ●String ●Array ●Manipulação de Arquivos ●Biblioteca Regexp ●Simbolos
  • 7. Versões - Por que novas versões? ●Integer ●Inclusão de novas bibliotecas como: - RubyGems - Rake - Minitest - CMath - Prime - Ripper - Readline - RDoc
  • 8. 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.
  • 9. 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.
  • 10. 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.
  • 11. 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.
  • 12. 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.
  • 13. 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.
  • 14. Linguagens influenciadas por Ruby ● Falcon ● Fantom ● Groovy ● Ioke ● Nu
  • 15. Características ● Sua programação. ● Linguagem Free. ● Recursos Nativos. ● Possui o framework Ruby on Rails.
  • 16. 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.
  • 17. 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
  • 18. 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.
  • 19. 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
  • 20. 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.
  • 21. 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.
  • 22. 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 duplasn" a = % Q{nIsto é uma string de aspas duplasn} a = % {nIsto é uma string de aspas duplasn} a = % /nIsto é uma string de aspas duplasn/ a = <<BLOCO Isto é uma string de aspas duplas BLOCO
  • 23. 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 é,
  • 24. 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.
  • 25. 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.
  • 26. 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.
  • 27. 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.
  • 28. Tipos de Dados § Object § Numeric § Integer § Fixnum § Bignum § Float § String § Symbol § Array § Hash § Regexp
  • 29. 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"
  • 30. Tipagem Dinâmica system("title Tipagem Dinamica") puts "nTIPAGEM DINAMICAnn" x=10 puts x.class x=1.1 puts x.class x=3000000000 puts x.class x="a" puts x.class x=true puts x.class x=false puts x.class system("pause")
  • 31. 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")
  • 34. Exemplo: Fatorial system("title Fatorial") puts "nnFATORIALnn" def fatorial(number) if (number == 0) return 1 else return number * fatorial(number - 1) end end puts "nDigite um numero: " n = gets() puts fatorial(n.to_i) system("pause")
  • 35. Classes system("title Numero Maior") class Maior def initialize(numero1, numero2) @n1 = numero1 @n2 = numero2 end def maior() if @n1 > @n2 puts "Primeiro Numero Maior" elsif @n2 > @n1 puts "Segundo Numero Maior" else puts "Numeros Iguais" end end end
  • 36. 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")