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.
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"
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")