"Um repositório agnóstico de linguagem para dominar o Pensamento Computacional, explorando desde os fundamentos universais até aplicações em sistemas, ciência de dados e segurança."
Bem-vindo ao meu espaço dedicado à exploração dos pilares da computação. Este projeto nasceu da paixão por entender como diferentes linguagens de programação abordam os mesmos problemas fundamentais, servindo como uma "Pedra de Roseta" para desenvolvedores, estudantes e entusiastas da tecnologia.
A abordagem deste repositório é focada na comparação e no entendimento profundo, seguindo três princípios-chave:
- 🧠 Foco no Conceito, Não na Sintaxe: Cada exercício é centrado em um conceito ou problema fundamental. A meta é primeiro entender o "quê" e o "porquê", antes de mergulhar no "como" de cada linguagem.
- 📚 Rosetta Stone Didática: Para cada problema, você encontrará implementações em múltiplas linguagens. Isso permite uma comparação direta de paradigmas, performance e detalhes técnicos, acelerando o aprendizado.
- 💡 Aprendizagem Progressiva e Contextual: A estrutura guia o aprendiz desde os fundamentos da alfabetização digital e algoritmos universais até a aplicação desses conceitos em nichos do mundo real, como programação de sistemas, análise de dados e segurança da informação.
O conteúdo está organizado em módulos temáticos progressivos. Cada pasta de exercício e cada subpasta de linguagem dentro do 00-Language-Playground/ contém seu próprio README.md com a descrição do problema, exemplos e desafios/dicas.
Seu verdadeiro ponto de partida para a jornada no pensamento computacional. Aqui, estabelecemos as bases essenciais para a alfabetização digital e o letramento tecnológico, garantindo que os conceitos universais sejam compreendidos antes de qualquer código.
- Matemática Discreta Essencial: Conjuntos, relações, funções e combinatória aplicados à computação.
- Lógica de Programação: Proposições, tabelas verdade, inferência lógica e raciocínio algorítmico.
- Álgebra Booleana: Operadores lógicos (AND, OR, NOT, XOR), portas lógicas e sua aplicação em circuitos e código.
- Representação Algorítmica: Diagramas de fluxo, fluxogramas (visualização de processos) e pseudocódigo (linguagem de design de algoritmo).
Seu ponto de partida prático com a sintaxe! Aqui você encontrará exemplos rápidos e didáticos da sintaxe básica e das características idiomáticas de cada linguagem, perfeito para um "kickstart" ou para revisar conceitos fundamentais.
A base da lógica e eficiência. Aqui exploramos os algoritmos clássicos de ordenação, busca e programação dinâmica que formam o alicerce de qualquer desenvolvedor.
As formas de organizar e gerenciar dados. Implementações de listas, pilhas, filas, hashmaps, árvores e grafos, e as trade-offs de cada uma.
Mergulhando no controle direto de hardware e recursos do sistema operacional. Tópicos incluem gerenciamento de memória, concorrência, I/O e conceitos para sistemas embarcados.
Aplicando o pensamento computacional para modelar, simular e extrair insights do mundo. Inclui análise estatística, simulações numéricas e processamento de dados.
Foco em interação, automação e criatividade. Abrange desde o processamento de texto e consumo de APIs até creative coding e síntese de áudio.
Explorando o lado da segurança. Implementações de criptografia básica, ferramentas de análise de rede e técnicas de hacking ético para fortalecer a defesa de sistemas.
- Comece pelos Fundamentos: É altamente recomendável começar em
00-Digital-Literacy-Fundamentals/para construir uma base sólida no pensamento computacional, antes de escrever qualquer código. - Acesse o Playground: Se você é novo em alguma linguagem ou quer revisar a sintaxe, vá para
00-Language-Playground/para um guia rápido de sintaxe. - Escolha um Módulo: Navegue pela estrutura acima e comece por um módulo que te interesse. Recomendo começar com
01-Algoritmos-Universaise02-Estruturas-de-Dadospara os fundamentos após a alfabetização digital. - Leia o Problema: Dentro de cada pasta de exercício, leia o
README.mdpara entender o objetivo, os requisitos e os exemplos. - Tente Resolver Sozinho: Antes de olhar as soluções, tente implementar o algoritmo na sua linguagem de preferência.
- Compare e Aprenda: Analise as implementações nas diferentes linguagens. Observe as diferenças de sintaxe, as bibliotecas padrão utilizadas e como cada paradigma resolve o problema.
Este é um projeto vivo e colaborativo. Suas contribuições são muito bem-vindas!
- Novas Implementações: Adicione uma solução em uma linguagem que ainda não está presente em um exercício.
- Novos Exercícios: Tem uma ideia para um problema interessante? Abra uma issue para discutirmos!
- Melhorias: Corrija bugs, melhore a documentação ou adicione mais testes.
Por favor, leia o arquivo CONTRIBUTING.md para mais detalhes sobre os padrões e o processo de contribuição.
Este repositório explora e compara uma vasta gama de linguagens, organizadas por seus nichos de aplicação primários:
- Programação de Sistemas, Backend & Concorrência:
C++,Rust,Go,C#,Java,Elixir - Scripting, Ciência de Dados & Automação:
Python,Ruby,R,Julia,Lua - Desenvolvimento Web, Frontend & Mobile:
JavaScript,TypeScript,PHP,Dart - Paradigmas Funcionais & Acadêmicos:
Haskell
Este repositório é distribuído sob a licença MIT. Sinta-se à vontade para usar, modificar e distribuir o conteúdo.