Um grupo de pessoas do Hackerspace IFUSP teve a idéia de criar um grupo de estudos de computação de baixo nível. O objetivo é estudar linguagens, frameworks e técnicas relacionadas à programação próxima do hardware e à computação de alta performance.
De um ponto de vista utilitário, esses conhecimentos serão muito úteis a um futuro físico profissional que precise fazer simulações complexas ou analisar grandes volumes de dados. Também muito úteis a analistas de mercado financeiro e a programadores graças a um conhecimento íntimo da interface entre software e hardware.
O ponto de partida será a linguagem C++. É uma linguagem de médio nível que servirá de ponte para assuntos posteriores. Junto com o estudo da linguagem em si, estudaremos ferramentas associadas, como make, valgrind e gdb. Depois de estarmos confortáveis com C++, o grupo decidirá que caminho seguir. Existem várias opções:
- Abaixar ainda mais o nível e estudar Assembly e arquitetura de computadores.
- Estudar como hackear programas escritos em C/C++ e obter algum controle da máquina alvo (Exige Assembly)
- Estudar computação paralela, Pthreads, OpenMP, MPI e CUDA (Meu favorito)
- Estudar alternativas ao C++ que tentam corrigir os pontos fracos dela, como Rust (Meu segundo favorito)
- Estudar aplicações de C++ na física (ROOT e Geant4, por exemplo)
- Estudar aplicações de C++ na matemática (Álgebra Linear Computacional, BLAS, CuBLAS)
- Estudar os aspectos de baixo nível de linguagens de alto nível e como acelerá-las (Python é escrito em C por exemplo. Numba é um compilador de Python em C)
- Estudar Ethereum, Smart Contracts e Blockchain
- Inventar nossa própria linguagem de programação que compila para C/C++
- Estudar programação em bare metal e escrever um sistema operacional do zero (quem nunca) O primeiro passo é entrar no nosso grupo do telegram. Lá discutiremos dúvidas, as próximas etapas e compartilharemos materiais.
- Codecademy
- Learn CPP
- C++ Tutorial
- Codesdope
- Leet Code (Treino)
- Hacker Rank (Treino)
- C++ Primer by S. B. Lippman, J. Lajoie, B. E. Moo (Iniciantes) [Não confundir com o C++ Primer Plus que não é tão bom]
- C++ How to Program. Deitel (Iniciantes)
- Programming: Principles and Practice Using C++. Bjarne Stroustrup (Iniciantes)
- The C++ Programming language. Bjarne Stroustrup (Intermediário)
- Accelerated C++: Practical Programming, Andrew Koenig (Intermediário)
- Lista de Referências
- Baixem os Livros Aqui