Logica e razionalità nella programmazione