📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Guia de Linguagens de Programação. Recomendado revisar antes de começar.

🌍 Saudação & Hello World Multilinguagem em 38 Stacks

v1.0 — Ponto de Entrada (main), Entrada/Saída (I/O) e Sintaxe Inicial em 38 Tecnologias

Trilha de Especialização Pedagógica — Projeto 1 de 4

🎓 Nível Profissional Simulado: Desenvolvedor Poliglota / Estudante de Ciência da Computação. Todo grande programador começa com o tradicional “Hello World”. Neste projeto, você descobre a anatomia do ponto de entrada (main), argumentos de terminal e impressão de texto nas 38 principais linguagens do ecossistema de tecnologia mundial.


🎯 Objetivo & Escopo do Projeto

Construir o projeto canônico de Saudação Customizada com Argumentos CLI em 38 linguagens de programação, comparando lado a lado: como a função principal é declarada, como parâmetros de terminal são recebidos (args) e como strings são formatadas e impressas no console.


🧑‍💼 Fase 1 — Levantamento de Requisitos

O Briefing do Cliente (Coordenador do Portal de Cursos)

“Queremos um catálogo de referência rápida para os alunos iniciarem qualquer curso do portal. Cada uma das 38 linguagens deve ter um programa executável que: receba o nome do usuário como argumento de linha de comando (com fallback para ‘Mundo’ caso não seja informado) e imprima a mensagem ‘Olá, [Nome]! Bem-vindo ao Portal de Cursos!’.”

Requisitos Funcionais (RF) e Não-Funcionais (RNF)

ID Tipo Descrição Origem no Briefing
RF01 Funcional Receber o nome via argumento CLI na execução do programa. “receba o nome do usuário como argumento”
RF02 Funcional Aplicar valor padrão ‘Mundo’ se nenhum argumento for informado. “fallback para Mundo”
RF03 Funcional Imprimir a saudação formatada no console padrão (stdout). “imprima a mensagem Olá, Nome!”
RNF01 Não-Funcional Implementação em 38 tecnologias mantendo paridade de saída. Matriz Multilinguagem
RNF02 Não-Funcional Compilação e execução documentadas para cada linguagem. Facilidade Didática

📋 Fase 2 — Backlog & User Stories

ID User Story Prioridade
US01 Como aluno, quero ver como declarar a função main em Rust, Go, C#, Java e Python lado a lado. Alta
US02 Como desenvolvedor, quero rodar o programa passando meu nome e receber a saudação formatada. Alta

🌿 Fase 3 — Engenharia em Equipe (Git Flow & Execução)

# Branch da funcionalidade
git checkout -b feature/US01-saudacao-multilinguagem

# Executar em Python
python saudacao.py "Ricardo"

# Executar em Go
go run saudacao.go "Ricardo"

# Executar em Rust
cargo run -- "Ricardo"

🛠️ Fase 4 — Implementação Guiada (Exemplos Go, Rust e Python)

// Go
package main
import ("fmt"; "os")
func main() {
    nome := "Mundo"
    if len(os.Args) > 1 { nome = os.Args[1] }
    fmt.Printf("Olá, %s! Bem-vindo ao Portal de Cursos!
", nome)
}
// Rust
fn main() {
    let args: Vec<String> = std::env::args().collect();
    let nome = if args.len() > 1 { &args[1] } else { "Mundo" };
    println!("Olá, {}! Bem-vindo ao Portal de Cursos!", nome);
}


🚀 Como Executar no Laboratório

1. Abra o terminal na pasta deste projeto

No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:

cd multilang_saudacoes_38

2. Execute a aplicação ou testes

# Executar comandos específicos da tecnologia:
python main.py # ou npm run dev / ./gradlew build

[!TIP] Dica para execução a partir da raiz do repositório: Se você abriu o repositório completo no VS Code, basta navegar até a pasta antes de executar: cd catalogo_projetos/multilang_saudacoes_38`

🧭 Decisões de Arquitetura (ADRs)


🧪 Testes de Validação & Asserções

Entrada: ./saudacao "Dev"
Saída Esperada: "Olá, Dev! Bem-vindo ao Portal de Cursos!"


🏛️ Arquitetura Visual & Engenharia do Sistema

O diagrama abaixo sintetiza a organização dos artefatos, contratos e diretrizes arquiteturais na subpasta multilang/:

Arquitetura da Aplicação

flowchart TD
    subgraph Especificacao["Especificação & Contratos"]
        E1["Contratos Formais"] --> E2["Modelagem de Domínio"]
    end
    subgraph Implementacao["Implementação & Stacks"]
        I1["Arquiteturas & Código"] --> I2["Paridade Multilinguagem"]
    end
    subgraph Padroes["Governança & Padrões"]
        P1["Living Styleguides"] --> P2["Conformidade de Design"]
    end
    subgraph Homologacao["Qualidade & Homologação"]
        Q1["Matriz de Rastreabilidade"] --> Q2["Checkpoints CP-01..05 PASS"]
    end

    Especificacao --> Implementacao
    Implementacao --> Padroes
    Padroes --> Homologacao

    style Especificacao fill:#e3f2fd,stroke:#1976d2,stroke-width:1.5px
    style Implementacao fill:#fffde7,stroke:#fbc02d,stroke-width:1.5px
    style Padroes fill:#e8f5e9,stroke:#388e3c,stroke-width:1.5px
    style Homologacao fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px

🎯 Engenharia de Requisitos & Modelagem Formal

👤 User Stories (Histórias de Usuário)

ID Persona História de Usuário Critério de Aceite Prioridade
US-01 Estudante de Computação Desejo ver o clássico Hello World e saudações dinâmicas em 38 stacks Exemplos compiláveis e executáveis cobrindo do Assembly e C ao TypeScript e Dart Alta
US-02 Engenheiro de Sistemas Desejo comparar paradigmas: Imperativo, Orientado a Objetos, Funcional e Lógico Comparativo direto entre Haskell/Prolog, C/Go e Java/C# Alta
US-03 Desenvolvedor Mobile Desejo saudações nativas em Android (Kotlin), Flutter (Dart) e Web Visualização da estrutura de entrada de cada ecossistema moderno Alta
US-04 Administrador de Redes Desejo saudações e scripts de shell (Bash, PowerShell, Batch, Awk, Perl) Scripts de automação com captura de argumentos de linha de comando Média
US-05 Auditor de Ambientes Desejo script automatizado que teste a execução das linguagens instaladas Runner unificado verificando a saída padrão de cada tecnologia disponível Média

⚙️ Requisitos Funcionais (RF)

ID Descrição do Requisito Criticidade
RF-01 Exibição de saudação formatada com interpolação de nome de usuário e timestamp Alta
RF-02 38 implementações autônomas estruturadas por pasta de tecnologia Alta
RF-03 Tabela comparativa de tempo de compilação, tamanho de binário e overhead Média
RF-04 Instruções claras de compilação e execução para cada uma das stacks Média
RF-05 Script de teste de conformidade de saída no terminal Média

🛡️ Requisitos Não-Funcionais (RNF)

ID Especificação Arquitetural Criticidade
RNF-01 Codificação de texto rigorosamente em UTF-8 suportando acentuação e emojis Alta
RNF-02 Adesão aos padrões oficiais de estilo (PEP 8, Google Java Format, gofmt) Alta
RNF-03 Documentação pedagógica contextualizando o propósito histórico de cada linguagem Média
RNF-04 Facilidade de replicação em laboratórios educacionais Média
RNF-05 Estruturação por pastas isoladas sem poluição do diretório raiz Alta

🔗 Matriz de Rastreabilidade (RTM)

User Story Requisito Funcional Requisito Não-Funcional Módulo / Artefato de Código Status de Homologação
US-01 RF-01 RNF-01, RNF-02 c/hello.c Testado
US-02 RF-02 RNF-01, RNF-02 haskell/hello.hs Testado
US-03 RF-02 RNF-01, RNF-04 flutter/lib/main.dart Testado
US-04 RF-03 RNF-01, RNF-05 bash/hello.sh Testado
US-05 RF-05 RNF-01, RNF-04 tests/test_saudacoes.py Testado

🏁 Checkpoints de Qualidade & Homologação

Checkpoint Escopo da Validação Artefato Verificado Status
CP-01 Estruturação de Contratos & Pastas multilang/ PASS ✅
CP-02 Modelagem de Domínio & Schemas Domain Schemas PASS ✅
CP-03 Paridade Técnica & Implementações Multi-stack Code PASS ✅
CP-04 Documentação Viva & Estilo Styleguide & Guides PASS ✅
CP-05 Homologação com RTM & Validações Quality Gate PASS ✅