Migliora il tuo craft, un progetto alla volta.
Vuoi diventare un bravo programmatore? Programma progetti significativi!
Filtri
Esplora i progetti
Sqrt
Implementa un algoritmo per il calcolo approssimato della funzione radice quadrata. Un esempio applicato di calcolo numerico, una fondamentale branca dell'informatica e della matematica applicata.
Printf
Impara a lavorare con le funzioni variadiche in C e riscrivi la funzione printf, utilizzata per effettuare delle stampe formattate in C, da zero, avendo a disposizione solo la system call write.
Simple Libc
L'obiettivo di questo progetto è l'implementazione di una piccola libreria di funzioni riprese dalla famosa libc. Imparare ad implementare le funzioni che diamo per scontato della libc è un ottimo modo per fare pratica con il linguaggio C.
CHIP-8 Emulator
Implementa il tuo primo emulatore CHIP-8, una macchina virtuale sviluppata da Joseph Weisbecker negli anni 70 per facilitare la scrittura di videogiochi sui primi microcomputers, come il COSMAC VIP. Un ottimo progetto per chi vuole imparare cosa significa scrivere un emulatore.
Maze Generator
Impara ad utilizzare la teoria dei grafi per generare e risolvere qualsiasi labirinto. Questo progetto mostra una interessante applicazione di nozioni algoritmiche e tecniche di rendering 2D.
Trusting Trust
Nel 1984 Ken Thompson rese popolare un'idea interessante: la costruzione di una backdoor auto-replicante da inserire in un compilatore C. L'obiettivo di questo progetto è mostrare come implementare in pratica questa idea lavorando con il compilatore tinyCC e un semplice programma di login.
Simple Operating System
Il sistema operativo è il programma che implementa le principali astrazioni per permettere alle applicazioni di funzionare correttamente. L'obiettivo di questo progetto è scrivere un semplice sistema operativo per l'architettura RISC-V.
Progetti in costruzione
LLM Inference Engine
Scrivi da zero il motore che fa parlare un Large Language Model: carica i pesi, trasforma il testo in token, calcola un transformer strato dopo strato e genera testo una parola alla volta. Nessun framework, solo Python e un po' di algebra lineare.
Simple Shell
Ogni programmatore esperto dovrebbe aver implementato almeno una volta una shell. La shell è il programma che interagisce con il sistema operativo per eseguire tutti i comandi di nostro interesse: processi, pipe, e il ciclo read-eval-print (REPL).
Simple Editor
Ogni programmatore esperto dovrebbe aver implementato almeno una volta un text editor. L'editor è il programma che utilizziamo ogni giorno per scrivere ed editare il testo. Senza editor non possiamo scrivere codice.
Simple Interpreter
Ogni programmatore esperto dovrebbe aver implementato almeno una volta un interprete. L'inteprete è quel programma che trasforma il testo in computazione. Esattamente come fa Python. Scrivere un interprete significa vedere come si implementa un linguaggio di programmazione interpretato.
Simple Compiler
Ogni programmatore esperto dovrebbe aver implementato almeno una volta un compilatore. Il compilatore è quel programma che trasforma il testo in un altro programma, che può poi essere eseguito. Esattamente come fa gcc. Scrivere un compilatore significa vedere come si implementa un linguaggio di programmazione compilato.