Entendendo um pouco melhor o que é Ruby

17
Entendendo um pouco melhor o que é Ruby

description

Talk apresentada por Patrick Müller no encontro do GURU-RS de novembro de 2013, falando um pouco sobre o que é a linguagem de programação Ruby para quem ainda é iniciante.

Transcript of Entendendo um pouco melhor o que é Ruby

Page 1: Entendendo um pouco melhor o que é Ruby

Entendendo um pouco melhor o que é Ruby

Page 2: Entendendo um pouco melhor o que é Ruby

Antes de tudo….Por que aprender a programar?

❖ Salários altos comparado a outras áreas (mas baixos em comparação a outros países)

❖ É mais fácil conseguir empregos remotos

❖ Aprendizagem constante

❖ Desafios diários

❖ Divertido

Page 3: Entendendo um pouco melhor o que é Ruby

O que é Ruby?

❖ Criada por Yukihiro Matsumoto

❖ Ideia concebida em 24 de fevereiro de 1993

❖ Versão 1.0 lançada em 25 de dezembro de 1996

❖ Última versão estável (até 29/11/2013) é a 2.0.0-p353

❖ Orientada a objeto

❖ Inspirada no Perl e Python

❖ Open-Source

Page 4: Entendendo um pouco melhor o que é Ruby

Porque programar em Ruby?

❖ A simplicidade da linguagem afeta diretamente a produtividade diária do desenvolvedor

❖ Linguagem de fácil leitura

❖ Tudo é um objeto

❖ Interactive Shell. Os comandos podem ser testados direto em terminal, sem necessidade de escrever e “compilar" código para ver se deu certo

❖ Comunidade tem o instinto de ajuda, e é fácil conseguir soluções bem elaboradas

❖ Na versão 1.9+ o Ruby ganhou uma máquina virtual chamada YARV (Yet Another Ruby Virtual Machine) que proporcionou grande aumento de performance

Page 5: Entendendo um pouco melhor o que é Ruby

Porque programar em Ruby?

Exemplo de método (fig.1) e classe (fig.2)

fig.1

fig.2

Page 6: Entendendo um pouco melhor o que é Ruby

Interesting Ruby

❖ Em Ruby você não precisa declarar o tipo de variável explicitamente

❖ O uso de Meta-programação é fácil e faz parte da proposta da linguagem

❖ Sobre-escrever métodos é fácil

❖ Sem getter e setters escritos manualmente

❖ Parêntese é opcional

❖ Monkey Patch é de fácil implementação

Page 7: Entendendo um pouco melhor o que é Ruby

Interesting RubyEu não preciso criar setter e getters manualmente, pois o Ruby já tem métodos prontos no core da linguagem que fazem toda essa parte, bastante apenas eu passar um “Symbol”, que seria o “:velocity” e ele cria um getter e um setter para o meu atributo “velocity”, bastante apenas depois eu colocar “Car.velocity = 10”, no caso do setter, e “Car.velocity #=> 10” no caso do getter para ele exibir o valor que eu ordenei.

Page 8: Entendendo um pouco melhor o que é Ruby

Interesting RubyCaso eu precise de um método que faz a mesma coisa, só que com nomes diferentes, existem meta-métodos que servem exatamente para a escrita de meta-programação, e que auxiliam isso por padrão. Um exemplo é o método “define_method”, que como o próprio nome já diz “defina_método”.

Page 9: Entendendo um pouco melhor o que é Ruby

GEMs

❖ Abstraem funcionalidades básicas da aplicação para pedaços separados, podendo assim serem usados em qualquer novo projeto sem ter que duplicar código manualmente

❖ Ajudam a comunidade proporcionando funcionalidades que são úteis a mais de uma pessoa

❖ Criar GEMs ajudam no entendimento de como Ruby funciona e como implementar meta-programação

❖ São em geral GRATUITAS, apenas sendo pagas em casos muito específicos relacionadas a regras de negócio de um cliente, por exemplo

Page 10: Entendendo um pouco melhor o que é Ruby

Exemplo de um arquivo Gemfile

Page 11: Entendendo um pouco melhor o que é Ruby

Mas afinal, o que podemos fazer com Ruby?

❖ Cálculos complexos

❖ Scripts de teste

❖ Importação de dados para Bancos de Dados

❖ Automatização de tarefas

❖ Outras linguagens (Frameworks, assim como o Rails)

❖ APIs

❖ Parser de logs

❖ Trabalhar com protocolos diversos

❖ Ler e escrever arquivos em diversos formatos

Page 12: Entendendo um pouco melhor o que é Ruby

Mas afinal, o que podemos fazer com Ruby?

Page 13: Entendendo um pouco melhor o que é Ruby

Convenções e Boas Práticas

❖ Existe uma série de guias de como escrever código Ruby e de como organizá-lo para que outras pessoas entendam o que você quis dizer com aquilo.

❖ Como saber se estou usando boas práticas?Guidelines Plataformatec

❖ Sou obrigado a seguir um guia? Não, você não é, mas isso implica seriamente em qualidade de código e com a comunidade, pois uma GEM mal escrita ou código mal escrito afeta a produtividade de outra pessoa ou até mesmo da comunidade inteira

Page 14: Entendendo um pouco melhor o que é Ruby

Testes? Ein?

❖ Todo o código Ruby pode ser escrito acompanhado de testes, para que mesmo que você modifique o código no futuro, você saiba se ele ainda serve para o propósito o qual ele foi escrito, garantindo assim que seu projeto não sofra por falhas

❖ Existem diversas DSLs (Domain specific language) que são usadas para isso. No caso do Ruby on Rails o mais usado é o RSpec

❖ Existe boas práticas para testes? Sim, existem, para o RSpec em sí existe isso aqui >> Better Spec (For RSpec). Cada DSL pode ter seu próprio padrão de projeto e dai cabe a cada comunidade desenvolver suas próprias boas práticas

Page 15: Entendendo um pouco melhor o que é Ruby

Testes? Ein?Exemplo de um arquivo de "spec" para um Modelo do Framework Ruby on Rails usando-se o RSpec como DSL de teste. No caso abaixo está sendo validada a presença obrigatória dos atributos “user_id, video_id e note”. Logo mais abaixo, nas linhas 11 e 12 ele confere se existe uma relação entre a “avaliação (Avaliation)” e os modelos de “usuário(user)” e "video"

Page 16: Entendendo um pouco melhor o que é Ruby

O que diferencia um bom Rubysta de um mal Rubysta?

❖ Não fazer testes

❖ Não usar boas práticas

❖ Não ajudar a comunidade

❖ Criar GEMs fechadas

Page 17: Entendendo um pouco melhor o que é Ruby

That’s all Folks \o/

❖ twitter.com/patrickemuller

❖ fb.com/patrick.miiller

❖ github.com/mpatrick