📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Guia de Linguagens de Programação. Recomendado revisar antes de começar.
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
- ➡️ v1 (este): Saudação & Hello World · Ponto de Entrada · I/O · 38 Linguagens
- v2: Calculadora de IMC com Condicionais em 38 Linguagens
- v3: Manipulação de Arquivos e Estruturas em 38 Linguagens
- v4: Cliente HTTP & Consumo de JSON em 38 Linguagens
🎓 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.
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.
“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!’.”
| 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 |
| 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 |
# 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"
// 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);
}
No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:
cd multilang_saudacoes_38
# 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`
Entrada: ./saudacao "Dev"
Saída Esperada: "Olá, Dev! Bem-vindo ao Portal de Cursos!"
O diagrama abaixo sintetiza a organização dos artefatos, contratos e diretrizes arquiteturais na subpasta multilang/:
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
| 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 |
| 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 |
| 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 |
| 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 |
| 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 ✅ |