[image]https://leganerd.com/wp-content/uploads/LEGANERD_038525.jpg[/image]

[b]Inception[/b]: indubbiamente uno dei film più rilevanti di tutto il 2010. Nel bene o nel male la creazione di Nolan ha fatto parlare di sé ad oltranza.
Capolavoro della cinematografia moderna o pellicola overhyped per gente che crede di essere intelligente solo perché riesce a seguire una trama più complessa di quella di un cinepanettone? Beh, lo scopo dell’articolo non è stabilire questo.

[b]Lo scopo dell’articolo è spiegare la trama del film[/b], visto che una delle lamentele più comuni rivolte alla pellicola è proprio la complessità della sequenza degli eventi mostrati.

Ora, qual è il miglior modo di spiegare un film a un’intera lega di nerds?
Ci pensa [i]karthick18 [/i](chiunque egli sia) con un simpatico [b]programma da 1900 linee scritto in C che simula l’intera trama del film.[/b]

Come viene fatto ciò?
Ovviamente il tutto è spiegato nel codice stesso, che tra l’altro è corredato da abbondanti righe di commento.
Vale la pena di citare il problema dei filosofi a cena per avere da subito le idee un po’ più chiare.

[quote]
Cinque filosofi siedono ad una tavola rotonda con un piatto di spaghetti davanti, una forchetta a destra e una forchetta a sinistra. Ci sono dunque cinque filosofi, cinque piatti di spaghetti e cinque forchette.

Si immagini che la vita di un filosofo consista di periodi alterni di mangiare e pensare, e che ciascun filosofo abbia bisogno di due forchette per mangiare, ma che le forchette vengano prese una per volta. Dopo essere riuscito a prendere due forchette il filosofo mangia per un po’, poi lascia le forchette e ricomincia a pensare. Il problema consiste nello sviluppo di un algoritmo che impedisca lo stallo (deadlock) o la morte d’inedia (starvation). Il deadlock può verificarsi se ciascuno dei filosofi tiene in mano una forchetta senza mai riuscire a prendere l’altra. Il filosofo F1 aspetta di prendere la forchetta che ha in mano il filosofo F2, che aspetta la forchetta che ha in mano il filosofo F3, e così via in un circolo vizioso. La situazione di starvation può verificarsi indipendentemente dal deadlock se uno dei filosofi non riesce mai a prendere entrambe le forchette.[/quote]
(da wikipedia)

Risoluzioni di questo problema vengono solitamente scritte usando [url=http://it.wikipedia.org/wiki/Mutex]mutexes [/url]per le forchette e [url=http://it.wikipedia.org/wiki/Thread_(informatica)]threads [/url]per i filosofi. La stessa cosa viene fatta nel programma di inception: i mutexes vengono utilizzati per i vari livelli dei sogni, assieme ai sognatori lucidi.

L'[b]output del programma[/b] è a questo link http://gist.github.com/840077
Il [b]codice completo[/b] potete trovarlo all’indirizzo http://github.com/karthick18/inception

Fonte: http://thechangelog.com/post/3463797919/inception-the-movie-explained-through-c-code