6 x 9 = 42

“Ho sempre detto che c’era qualcosa di fondamentalmente sbagliato nell’universo…” (Arthur Dent)

Senza l’Aiuto di Nessuno

Posted by scardax su settembre 26, 2008

Mi sono reso conto che, stranamente, da quando ho aperto questo blog ho parlato molto poco di Informatica: tempo di rimediare, descrivendo uno degli aspetti più interessanti della progettazione di software.

Prima di tutto, qualche nozione basilare per cominciare: tutti i programmi che utilizzate sul Computer, siano essi Editor di Testo, Giochi, o anche il Sistema Operativo stesso, sono stati originariamente scritti in un qualche linguaggio di programmazione. Ognuno di questi linguaggi (come il Java, il C, il Lisp…) si compone di una serie di possibili istruzioni, ed il sorgente da cui proviene il programma non é altro che un file di testo con una lista ordinata di tali istruzioni. Questa viene poi passata ad un altro particolare programma, chiamato Compilatore, specifico per ogni linguaggio, che si occupa di trasformarlo in un eseguibile che gli utenti potranno utilizzare (esistono maniere diverse per questa traduzione, ma non vedo il bisogno di complicare il discorso).

Ora, supponiamo che, dopo aver imparato un qualche linguaggio (che chiameremo, tanto per essere originali, A), ci facciamo prendere la mano e decidiamo di crearne uno nuovo. Da quello che ho detto prima, risulta chiaro che “creare” un linguaggio di programmazione equivale a scrivere un compilatore adeguato, eventualmente con un libricino di istruzioni per usarlo correttamente (ma noi siamo esibizionisti: il linguaggio serve solo a noi, quindi niente istruzioni!). Per il momento, l’unica nostra possibilità é scrivere questo nuovo compilatore usando il linguaggio A, ritrovandoci cosi con un secondo compilatore adeguato al nuovo linguaggio, che chiameremo B (scommetto che lo immaginavate!).

Ma questo non ci é sufficiente: poiché il linguaggio A ci é diventato improvvisamente odioso, decidiamo di eliminarlo, cancellando il primo compilatore. Questo pero’ non é sufficiente: il secondo é ancora scritto in A! Ma la soluzione é semplice: scriviamo un nuovo compilatore per il linguaggio B, usando proprio… il linguaggio B! Due secondi di pausa per afferrare il concetto…

Adesso ci ritroviamo con due compilatori per lo stesso linguaggio, ma scritti in due linguaggi differenti: non ci rimane che cancellare il primo per eliminare ogni traccia di A. Riflettendoci un poco, tutto questo sa un po’ di magico: un programma che, per tradurre un linguaggio, utilizza “frasi” provenienti dallo stesso linguaggio: sembrerebbe un circolo senza fine! Questo succede poiché, sostanzialmente, abbiamo eliminato la “storia” di quel programma, che sembra improvvisamente nato dal nulla.

Possiamo ripetere questo processo di “nascita dal nulla”: pensiamo di voler introdurre, nel nostro linguaggio, nuove funzionalità che rendano più semplici alcune operazioni. Per farlo, dobbiamo modificare il codice sorgente del compilatore: una volta fatto questo, pero’, ci ritroviamo con un compilatore per un linguaggio B ampliato, e quindi possiamo riscrivere il sorgente del compilatore… usando le nuove funzionalità! Nuovamente si presenta questo circolo senza fine!

Un processo del genere viene chiamato “BootStrap“, che richiama alla mente l’immagine di una persona che si tira in piedi usando i propri stivali, ovvero solo le proprie forze. Altri esempi di questo processo potrebbero venire dalla Genetica, ma questo me lo riservo per un prossimo post! 🙂

Annunci

2 Risposte to “Senza l’Aiuto di Nessuno”

  1. Andrea P said

    Scard era ora te ne uscissi con qualcosa riguardante i nostri studi 😀
    Viva il linguaggio B! Che tra l’altro è l’anteato del C. 😛

  2. vfede said

    l’esempiù noto è quello dell’uomo che si alza tirandosi dai capelli, carina l’etmologia di bootstrap non la sapevo!

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

 
%d blogger hanno fatto clic su Mi Piace per questo: