Voltar aos Cursos
AI035 Professional

Programando Ruby: O Guia dos Programadores Pragmáticos (Segunda Edição)

Uma referência abrangente e tutorial para a linguagem de programação Ruby, cobrindo sintaxe básica, design orientado a objetos, recursos avançados como reflexão e threading, e uma referência completa da biblioteca para a versão 1.8.

4.9
45.0h
515 estudantes
0 curtidas
Inteligência Artificial
Começar a Aprender

Visão Geral do Curso

📚 Resumo do Conteúdo

Uma referência abrangente e tutorial para a linguagem de programação Ruby, cobrindo sintaxe básica, design orientado a objetos, recursos avançados como reflexão e threading, e uma referência completa da biblioteca para a versão 1.8.

Domine a arte da programação elegante e poderosa com o guia definitivo da linguagem Ruby.

Autor: Dave Thomas, Chad Fowler, Andy Hunt

Agradecimentos: Revisores da lista de discussão Ruby, Yukihiro Matsumoto (Matz), Chad Fowler, Kim Wimpsett e a comunidade Pragmatic Programmers.

🎯 Objetivos de Aprendizagem

  1. Instalar e configurar o ambiente Ruby usando diversos métodos (binário, fonte ou CVS) e utilizar ferramentas interativas como irb e ri.
  2. Aplicar as convenções de nomes do Ruby e os princípios orientados a objetos para definir métodos e gerenciar variáveis.
  3. Manipular dados usando arrays básicos, hashes e expressões regulares.
  4. Definir e implementar hierarquias de classes usando herança única, super e mixins.
  5. Controlar a visibilidade de objetos e a integridade dos dados usando Controle de Acesso (Público, Privado, Protegido) e Atributos.
  6. Construir classes container robustas (por exemplo, SongList) integradas com Testes Unitários.
  7. Implementar lógica numérica usando diversas bases (hexadecimal, octal, binária) e utilizar iteradores numéricos para fluxo de controle.
  8. Criar strings complexas usando interpolação, heredocs e diversos formatos de delimitadores.
  9. Utilizar Faixas como "interruptores" na lógica condicional e como testadores de intervalos.
  10. Definir e invocar métodos usando listas de argumentos flexíveis (operador splat), argumentos baseados em hash ("chave-valor") e conversões block-to-proc.

🔹 Lição 1: Cap. 1-2: Fundamentos e Começando com Ruby.new

Visão Geral: Esta lição oferece uma introdução abrangente ao ecossistema Ruby, cobrindo métodos de instalação desde distribuições binárias até compilação a partir do código-fonte e uso de controle de versão. Os alunos explorarão a sintaxe fundamental do Ruby, destacando sua natureza puramente orientada a objetos, convenções de nomeação e construtos centrais de programação como contêineres, estruturas de controle e blocos.

Resultados de Aprendizagem:

  • Instalar e configurar o ambiente Ruby usando diversos métodos (binário, fonte ou CVS) e utilizar ferramentas interativas como irb e ri.
  • Aplicar as convenções de nomes do Ruby e os princípios orientados a objetos para definir métodos e gerenciar variáveis.
  • Manipular dados usando arrays básicos, hashes e expressões regulares.

🔹 Lição 2: Cap. 3-4: Classes, Objetos, Variáveis e Contêineres

Visão Geral: Esta lição explora os mecanismos fundamentais do sistema orientado a objetos do Ruby, focando como os objetos mantêm estado por meio da herança e como a cadeia de busca de métodos opera. Ela transita para a implementação prática de contêineres usando Arrays e lógica semelhante a Hash, finalizando com uma análise profunda da arquitetura única de blocos do Ruby — abrangendo iteradores, fechamentos (closures) e gerenciamento de recursos.

Resultados de Aprendizagem:

  • Definir e implementar hierarquias de classes usando herança única, super e mixins.
  • Controlar a visibilidade de objetos e a integridade dos dados usando Controle de Acesso (Público, Privado, Protegido) e Atributos.
  • Construir classes container robustas (por exemplo, SongList) integradas com Testes Unitários.

🔹 Lição 3: Cap. 5: Domínio dos Tipos Padrão e Regex

Visão Geral: Esta lição fornece uma análise aprofundada dos tipos escalares principais do Ruby — Números, Strings e Faixas — e transita para o mundo poderoso das Expressões Regulares. Os alunos aprenderão como o Ruby trata automaticamente o estouro numérico, como manipular strings através de interpolação e delimitadores e como utilizar expressões regulares tanto como padrões funcionais quanto entidades orientadas a objetos para processamento de texto complexo.

Resultados de Aprendizagem:

  • Implementar lógica numérica usando diversas bases (hexadecimal, octal, binária) e utilizar iteradores numéricos para controle de fluxo.
  • Criar strings complexas usando interpolação, heredocs e vários formatos de delimitadores.
  • Utilizar Faixas como "interruptores" na lógica condicional e como testadores de intervalos.

🔹 Lição 4: Cap. 6-7: Lógica de Métodos e Controle de Expressões

Visão Geral: Esta lição explora a natureza flexível dos métodos do Ruby e o poder da programação baseada em expressões. Os alunos dominarão a definição de métodos com argumentos variáveis, a integração dinâmica de blocos e o uso de estruturas de controle avançadas como atribuição paralela e expressões case com correspondência de padrões. O conteúdo enfatiza que, no Ruby, quase tudo é uma expressão que retorna um valor, permitindo lógica concisa e legível.

Resultados de Aprendizagem:

  • Definir e invocar métodos usando listas de argumentos flexíveis (operador splat), argumentos baseados em hash ("chave-valor") e conversões block-to-proc.
  • Executar lógica complexa por meio de atribuições paralelas/aninhadas e expressões booleanas sofisticadas.
  • Implementar controle de fluxo usando condicionais baseados em expressões (if, unless, case) e modificadores de loop avançados (break, redo, next).

🔹 Lição 5: Cap. 8-9: Tratamento de Erros e Arquitetura Modular

Visão Geral: Esta lição aborda o gerenciamento robusto de erros e o design estrutural no Ruby. Explora a hierarquia de exceções e os mecanismos para lidar com erros (rescue, retry) ou controlar o fluxo entre escopos (catch, throw). Além disso, detalha como os Módulos facilitam a reutilização de código por meio de namespaces e mixins, a integração do módulo Enumerable e os mecanismos para incluir arquivos externos.

Resultados de Aprendizagem:

  • Implementar tratamento de erros resiliente usando a hierarquia da classe Exception e estruturas de controle não locais.
  • Construir bases de código modulares usando Módulos para namespace e Mixins para funcionalidades entre classes.
  • Aplicar o módulo Enumerable a classes personalizadas e resolver ambiguidades de nomes de métodos em ambientes com múltiplos módulos.

🔹 Lição 6: Cap. 10-11: Operações de Entrada/Saída e Concorrência

Visão Geral: Esta lição cobre os fundamentos do sistema de Entrada/Saída (I/O) do Ruby e seu modelo de concorrência. Os alunos aprenderão a gerenciar recursos externos por meio de objetos IO — incluindo arquivos, strings e sockets de rede — enquanto exploram programação multithread. O currículo passa da manipulação básica de arquivos para técnicas avançadas de sincronização (Monitores, Filas) e gerenciamento de processos externos para lidar com tarefas paralelas de forma eficiente.

Resultados de Aprendizagem:

  • Realizar operações de arquivo usando gerenciamento manual e baseado em bloco de recursos para garantir a integridade dos dados.
  • Processar fluxos de dados usando iteradores e a biblioteca StringIO para manipulação flexível de I/O.
  • Estabelecer comunicação de rede via sockets TCP e protocolos mais altos como HTTP.

🔹 Lição 7: Cap. 12-13: Testes, Depuração e Otimização

Visão Geral: Esta lição fornece um guia abrangente para garantir qualidade e desempenho do código em Ruby. Cobrem os princípios de testes unitários usando o framework Test::Unit, técnicas de depuração sistemática com o depurador Ruby e métodos para identificar gargalos de desempenho por meio de benchmarking e profiling. Os alunos aprenderão a estruturar testes, diagnosticar problemas comuns de lógica e otimizar código com base em dados empíricos.

Resultados de Aprendizagem:

  • Implementar testes unitários automatizados usando o framework Test::Unit e diversos tipos de afirmações.
  • Diagnosticar e resolver defeitos de código usando o depurador de linha de comando do Ruby e estratégias comuns de solução de problemas.
  • Analisar o desempenho do código usando o módulo Benchmark e o Profiler para identificar e corrigir gargalos de execução.

🔹 Lição 8: Cap. 14-16: O Ecossistema Ruby e Fluxo de Trabalho

Visão Geral: Esta lição explora o ambiente operacional do Ruby, focando como programas interagem com a linha de comando, gerenciam seu ambiente de execução e utilizam ferramentas interativas. Os alunos também aprenderão a documentar seu código usando RDoc e o sistema ri para criar documentação profissional, pesquisável e sistemas de ajuda integrados.

Resultados de Aprendizagem:

  • Controlar o comportamento de programas Ruby usando argumentos de linha de comando, variáveis de ambiente e métodos de término.
  • Otimizar o fluxo de trabalho do Interactive Ruby (irb) com prompts personalizados, conclusão automática de tabulação e gerenciamento de subsessões.
  • Gerar documentação estruturada usando marcação RDoc, lógica de hiperlinks e modificadores para produzir HTML e dados ri.

🔹 Lição 9: Cap. 17-18: Distribuição e Serviços Web

Visão Geral: Esta lição aborda os mecanismos essenciais para distribuir código Ruby e desenvolver aplicações baseadas na web. Explora o sistema RubyGems para gerenciamento de pacotes e controle de versão, a implementação de interfaces web via CGI e sistemas de template, e a integração de sistemas distribuídos usando SOAP e serviços web.

Resultados de Aprendizagem:

  • Definir e embalar bibliotecas Ruby usando a especificação Gem e Rake.
  • Desenvolver aplicações web dinâmicas usando cgi.rb para lidar com parâmetros de consulta, cookies e sessões.
  • Implementar sistemas de template (ERB, Amrita) para separar a lógica da aplicação da apresentação.

🔹 Lição 10: Cap. 19-20: GUI e Integração com Plataforma

Visão Geral: Esta lição aborda a construção de interfaces gráficas (GUIs) em Ruby usando a biblioteca Tk, desde a configuração básica de widgets até o gerenciamento avançado de canvas e rolagem. Além disso, explora a integração específica da plataforma no Windows, focando em benchmarks de desempenho para automação e o uso da biblioteca DL para se comunicar diretamente com DLLs do Windows.

Resultados de Aprendizagem:

  • Construir uma aplicação Ruby Tk funcional usando widgets e diversos gerenciadores de geometria (pack, place, grid).
  • Implementar elementos interativos por meio de vinculação de eventos e comunicação bidirecional de rolagem.
  • Traduzir documentação existente do Perl/Tk para código Ruby válido e utilizar a biblioteca DL para chamadas de API do Windows de baixo nível.

🔹 Lição 11: Cap. 21: Estendendo o Ruby (API em C)

Visão Geral: Esta lição explora a interface entre a linguagem Ruby e a linguagem C, focando como estender a funcionalidade do Ruby usando extensões em C e como incorporar o interpretador Ruby em aplicações em C. Os alunos aprenderão sobre a representação interna de objetos Ruby, o protocolo para envolver estruturas de dados em C e as ferramentas necessárias para construir e configurar essas extensões.

Resultados de Aprendizagem:

  • Entender e manipular o tipo VALUE do Ruby e objetos imediatos dentro de um ambiente C.
  • Implementar o protocolo de alocação e inicialização em múltiplos passos para classes Ruby com suporte em C personalizado.
  • Automatizar o processo de construção de extensões Ruby usando mkmf e extconf.rb.

🔹 Lição 12: Cap. 22: Especificação Completa da Linguagem

Visão Geral: Esta lição oferece uma análise técnica aprofundada da especificação da linguagem Ruby, cobrindo os blocos fundamentais necessários para o desenvolvimento profissional. Os alunos explorarão os matizes dos tipos de dados básicos do Ruby, as regras rigorosas que governam o escopo de variáveis e constantes e os mecanismos de expressões e argumentos de método.

Resultados de Aprendizagem:

  • Diferenciar entre diversos tipos básicos (Inteiros, Strings, Símbolos) e aplicar notações abreviadas como %w e %q.
  • Gerenciar o escopo de variáveis e a visibilidade de constantes nos níveis global, de classe, de instância e local.
  • Implementar fluxo de controle complexo usando expressões booleanas, declarações case e modificadores de loop.

🔹 Lição 13: Cap. 23-24: Tipagem por Pato e Invocação de Objetos

Visão Geral: Esta lição explora os mecanismos pelos quais o Ruby executa código por meio de invocação de métodos, definição de objetos e tratamento de erros, culminando na filosofia da "Tipagem por Pato". Os alunos aprenderão a definir interfaces flexíveis usando blocos e Procs e a implementar sistemas robustos usando os protocolos de exceção e coerção do Ruby.

Resultados de Aprendizagem:

  • Executar buscas de métodos complexas e manipular o comportamento de métodos usando super e alias.
  • Construir bases de código estruturadas usando definições de classes/módulos e declarações de atributos.
  • Implementar padrões de programação funcional usando blocos, fechamentos (closures) e objetos Proc.

🔹 Lição 14: Cap. 24-25: Objetos Avançados e Segurança

Visão Geral: Esta lição explora a arquitetura interna dos objetos Ruby, focando na relação sofisticada entre instâncias, classes e metaclasses. Os alunos dominarão o comportamento dinâmico por meio de classes específicas a objetos e técnicas de metaprogramação, enquanto aprendem a proteger aplicações usando os níveis seguros embutidos no Ruby e mecanismos de marcação de dados.

Resultados de Aprendizagem:

  • Mapear a estrutura interna de ponteiros (klass e super) que governam como classes e objetos interagem.
  • Implementar comportamento específico a objetos usando classes singleton e gerenciar estado por meio de variáveis de instância de classe.
  • Aplicar metaprogramação e congelamento de objetos para criar código robusto, imutável ou gerado dinamicamente.

🔹 Lição 15: Cap. 26-28: Reflexão e Biblioteca Padrão

Visão Geral: Este módulo explora as poderosas capacidades introspectivas do Ruby, permitindo que desenvolvedores inspecionem objetos e classes, chamem métodos dinamicamente e gerenciem serialização de objetos por meio de Marshaling e YAML. Também fornece uma referência abrangente e guia de aplicação para a Biblioteca Padrão do Ruby, cobrindo classes principais, protocolos de rede, armazenamento de dados e utilitários do sistema.

Resultados de Aprendizagem:

  • Implementar Reflexão: Use ObjectSpace, respond_to? e send para inspecionar e manipular objetos em tempo de execução.
  • Dominar Serialização: Aplique estratégias de Marshaling e YAML para persistir estados de objetos e facilitar comunicação com Distributed Ruby (DRb).
  • Utilizar a Biblioteca Padrão: Navegue e utilize módulos especializados para Rede (Net::HTTP), XML/Web (REXML, CGI) e Armazenamento de Dados (PStore, CSV, SDBM).