DEV Community 👩‍💻👨‍💻

Cover image for Aprendendo Ruby como um Dev JavaScript parte 1
Emanuel Gonçalves for Codecasts

Posted on

Aprendendo Ruby como um Dev JavaScript parte 1

Fala Codecaster!! Trazemos para você mais um texto aqui na Publicação do Codecasts. Hoje o tema é Ruby. A motivação de trazer este conteúdo é devido ao fato de que recentemente eu tenho buscado estudar um pouco essa linguagem, mais a título de conhecimento. Sendo assim, como um Desenvolvedor Web que lida a mais de 2 anos com JavaScript, preferi traçar paralelos com a linguagem que mais amo, e de quebra solidificar o conhecimento passando ele a diante. Espero que esta série de textos possam te despertar a curiosidade a respeito dessa linguagem.

O que é o Ruby?

Bem, não é o foco deste texto trazer todo o conhecimento de Ruby e sua filosofia. É um texto mais prático. Porém, recomendo alguns conteúdos que podem ser úteis caso você queira aprender do zero a linguagem (como estou fazendo):

Executando um código Ruby

Bem, dedico uma seção aqui para deixar uma dica para você. Procure dar preferência, quando possível, a usar docker para execução de algumas coisas. Existem projetos, como o dockerize, em que você não precisa instalar nada na sua máquina para rodar um script, por exemplo. Foi o que eu fiz com o Ruby. Ele não vem instalado no Linux, e não gostaria de instalá-lo. Portanto, fiz uso o Docker. Segue os passos:

# num terminal zsh
docker run --name ruby_exec -v $(pwd):/home --rm -i -t -w=/home ruby:slim ruby <script>
Enter fullscreen mode Exit fullscreen mode

Para facilitar sua vida, você pode criar uma função no ZSH. Eu, por exemplo, criei uma chamada ruby, que ficou assim:

# em seu .zshrc
function ruby() {
  docker run --name ruby_exec -v $(pwd):/home --rm -i -t -w=/home ruby:slim ruby $1
}
Enter fullscreen mode Exit fullscreen mode

Dessa forma eu só digito no terminal ruby script.rb e pronto, ele vai executar o script Ruby para mim.

Criando uma aplicação de terminal para cálculo de IMC

Bem, o objetivo aqui é abordar:

  • Saída padrão de dados usando puts ou print
  • Entrada padrão de dados usando a função gets
  • Criação de sua própria função usando def
  • Entendendo a estrutura condicional

Antes de mais nada, gostaria de convidá-lo a acessar o repositório meu de estudos com ruby. O código para este texto é o imc.rb.

Saída de dados padrão

Bem, como o texto fala de um programador com background em JavaScript aprendendo Ruby, sabemos que em JavaScript a principal forma de saída é o famoso console.log. Em Ruby, aprendemos que há duas formas principais de mostrar um dado na tela:

  • puts: printa e pula uma linha
  • print: só printa o dado na tela, sem pular linha
puts "Hello World"
Enter fullscreen mode Exit fullscreen mode

Entrada padrão de dados

Em JavaScript, dependerá de onde estamos executando nosso código. Qual o contexto? Se for Node.js, por exemplo, teremos que capturar a entrada do usuário de uma forma não muito simples. Existem bibliotecas que nos ajudam nisso, prompts é uma delas.

Já com Ruby, podemos fazer um simples gets, atribuindo para uma variável, que conseguimos capturar um input do usuário.

# uso o print para que o promp para o usuário digitar o nome
# apareça no final da linha
print "Qual o seu nome: "
nome = gets
Enter fullscreen mode Exit fullscreen mode

Criando sua própria função

Para que eu consiga calcular o IMC, eu preciso da altura e peso da pessoa. Quando aprendemos a programar, aprendemos que código repetitivo colocamos em funções. Pois bem, precisamos criar uma função para mostrar um pergunta ao usuário e depois capturar a informação que ele digitar.

Com JavaScript, podemos criar funções de inúmeras formas, com função nominal, função anônima ou arrow functions. Já com Ruby, utilizamos a palavra reservada def, bem semelhante ao Python:

def get_user_input(msg)
    print msg
    return gets
end
Enter fullscreen mode Exit fullscreen mode

É importante notar que em Ruby usamos o conceito de método, portanto, ao fazer suas pesquisas, se atente a essa nomenclatura.

Condicionais

Por fim, a última parte da nossa abordagem é a categorização. Sabemos que o IMC possui categorias. Estaremos usando como referência Wikipedia.

Para tanto, a decisão tomada foi criar uma função que retorna uma categoria a partir do IMC. Veja como ela ficou:

def categorize(value)
    if (value < 17)
        return "Muito abaixo do peso"
    end

    case value
    when 17.1...18.49
        return "Abaixo do peso"
    when 18.5...24.99
        return "Peso normal"
    when 25...29.99
        return "Acima do peso"
    when 30...34.99
        return "Obesidade I"
    when 35...39.99
        return "Obesidade II (severa)"
    else
        return "Obesidade III (mórbida)"
    end
end
Enter fullscreen mode Exit fullscreen mode

Algumas coisas nos chamam a atenção em comparação com JavaScript:

  • O não uso de chaves {} para delimitar blocos. Isso ocorre pelo uso da identação
  • O uso da expressão end para delimitar, também, o fim de um bloco de código
  • E o range de dados, para delimitar um valor inicial e um valor final. Lindo demais :)

Conclusões finais

Como dito, o objetivo deste texto é proporcionar uma experiência muito prática e até superficial a respeito da linguagem Ruby em comparação com JavaScript. Espero que possa ser de auxílio em algum nível.

Por fim, não deixe de conferir o código completo no meu repositório.

Até a próxima!

Top comments (0)

This post blew up on DEV in 2020:

js visualized

🚀⚙️ JavaScript Visualized: the JavaScript Engine

As JavaScript devs, we usually don't have to deal with compilers ourselves. However, it's definitely good to know the basics of the JavaScript engine and see how it handles our human-friendly JS code, and turns it into something machines understand! 🥳

Happy coding!