No momento que estou escrevendo isso ainda sou um estudante da 42, e como uma escola que te ensina a programar, a 42 tem uma variedade de projetos, grande parte deles pode ser utilizado para experimentar as capacidades de uma linguagem de programação, por motivos óbvios eu não vou descrever o projeto inteiro, só o esperado, de resto:
"Por Thor, por Odin, use seu cérebro." -PDF 2013-2024
FT_Philosophers 🍴
Esse é bem simples, simplesmente resolva o problema do jantar dos filósofos, seu programa deve receber argumentos na chamada do programa:
- Número de filósofos;
- Tempo de vida em milissegundos;
- Duração de um jantar em milissegundos;
- Duração do sono deles em milissegundos;
- Opcionalmente o número de jantares de cada um;
O programa deve ter uma thread para cada filósofo e deve trabalhar com mutex (ou qualquer coisa similar na sua linguagem).
Outra opção é fazer o projeto com forks e semáforos.
FT_Minitalk 👂🗨️
Fazer uma simples comunicação entre 2 programas, um cliente que recebe um PID e uma string e deve enviar o texto dessa string para o servidor via sinais (SIGUSR1 e SIGUSR2 de preferência), e o servidor vai exibir seu PID, receber uma string por bits e imprimir essa string.
FT_Pushswap 🔄️⤴️⤵️
Um programa baseado na Torre de Hanói, onde você deve ordenar uma sequência numérica usando 2 stacks, como você só tem 2 "torres" ao invés de 3, você tem mais liberdade com os movimentos para a stack A e B, desde empurrar um número do topo da stack A para o topo da B e vice-versa, rotacionar eles 1 posição para baixo, rotacionar eles 1 posição para cima, até trocar os 2 números do topo da stack A ou B. A regra de números grandes não poderem ficar em cima de números pequenos é descartada por motivos óbvios.
FT_Minishell 🔥
Simplesmente recrie o bash... Não ele inteiro, mas sim:
- executar comandos baseados no
PATH
, caminho relativo e absoluto; - expandir variáveis de ambiente;
- refazer as builtins
env
,export
,cd
,echo
,pwd
,unset
eexit
; - lidar com
Ctrl+D
,Ctrl+\
eCtrl+C
; - redirecionamentos e heredoc;
- Histórico de comandos;
Para facilitar um pouco, você pode usar uma biblioteca de readline, aspas abertas podem ser um erro, a única opção de builtin que precisa ser feito é o -n
do echo
e o heredoc não precisa ser parte do histórico... De resto, boa sorte (você vai precisar).
FT_Solong 🕹️
Um simples jogo 2D onde o jogador deve coletar itens e depois ir até a saída. O programa deve ler o mapa a partir de um arquivo onde caracteres representam:
-
1
parede; -
0
espaço vazio; -
c
coletável; -
e
saída; -
p
posição inicial do personagem;
FT_Fdf 🪢
A simples renderização de um modelo de arame, o programa deve ler de um arquivo a configuração de cada ponto e vértice desse modelo, onde a posição horizontal e vertical no arquivo é igual à posição x e y e o valor de cada posição representa a altura no eixo z.
FT_Fractol ❄️
A renderização de fractais sendo só obrigatório o conjunto Mandelbrot e o conjunto Julia.
FT_Cub3d 🎮
Similar ao solong, porém a renderização é feita com raycasting, não há coletáveis nem saída e a posição inicial agora é representada por N
, S
, W
ou E
.
FT_Minirt 🩻
Renderização de objetos com luz e sombra com raytracing, os objetos são apenas uma esfera, um plano e um cilindro.
Um arquivo possui informações sobre cada objeto da cena, a posição da câmera, a rotação de cada objeto, a origem da luz, a força da luz ambiente e a direção da câmera.
FT_Irc 💬🗨️
Criação de um servidor que recebe e responde requisições do protocolo IRC.
FT_Webserv 🛜
Criação de um servidor que recebe e responde requisições do protocolo HTTP.
IN CONCLUSION
Existe mais um projeto que pode ser interessante, mas vou optar por ocultá-lo.
Escolhi os projetos anteriores por explorarem conceitos como threads, processos, bibliotecas gráficas, parsing e sockets, creio que esses são conceitos que toda linguagem deve permitir e logo te fazem explorar todas as capacidades de uma linguagem... Ou a falta delas.
Top comments (0)