Home > Corso di programmazione, GNU/Linux > Mini corso di programmazione/1: Il linguaggio dei computer

Mini corso di programmazione/1: Il linguaggio dei computer

Eccoci alla prima puntata del nostro mini-corso di programmazione. Iniziamo subito!

Che cos’è l’Informatica

Prima di affrontare il tema dei linguaggi di programmazione, è utile capire cos’è di preciso l’informatica. Il termine “Informatica” è una contrazione di una definizione più lunga: l’Informatica è infatti “la scienza che si occupa del trattamento automatico delle informazioni”.

Cosa significa?

Prima di tutto le informazioni sono i dati. Ad esempio un elenco di nomi di amici con il loro numero di telefono è un insieme di dati. Incominciamo a vedere come potremmo trattare questi dati. Ad esempio potremmo disegnare una tabella. Nella prima colonna metteremo i nomi, nella seconda i numeri di telefono, così:

NOME                           TELEFONO

Marco                           339 12345678

Giovanni                       348 9876543

Francesco                     335 7788996

Grazia                          333 58945830

Già solo il problema della memorizzazione in sé dei dati è un problema tipicamente informatico. Come si realizza questa tabella in un computer? E’ una delle domande a cui questo corso risponderà.

Oltre a memorizzare i dati, abbiamo bisogno di poter fare delle operazioni su di essi. Ad esempio dovremmo poter aggiungere altre righe, oppure cancellare quelle che già ci sono. E dobbiamo poter ricercare i dati presenti nella tabella, come facciamo ad esempio nella rubrica telefonica del cellulare. Potremmo anche avere bisogno di ordinare questa tabella, ad esempio in ordine alfabetico.

Ecco, l’informatica, fondamentalmente, è questo: far fare ad una macchina (cioè ad un automa, da cui il temine automatico nella definizione di Informatica) il lavoro che noi desideriamo su i nostri dati. Ed è qualcosa tutt’altro che banale. Come vedremo, infatti, i computer sono molto limitati e anche spiegare compiti semplici può essere piuttosto complicato.

Di per sé l’Informatica è stata – almeno ai suoi albori – considerata una branca della matematica. Tuttavia sarebbe più corretto considerarla, se non una nuova scienza a se stante, una branca della logica. La logica è imparentata con la matematica, ma non è la matematica. E l’Informatica non è altro che lo studio di come si fa a spiegare ad un oggetto stupido quale è un computer come eseguire compiti complessi. In altre parole come trasferire la nostra intelligenza e la nostra logica dentro un insieme di circuiti elettronici.

I numeri binari, il linguaggio dei computer

E’ ormai un luogo comune che i computer capiscano solo due cose: zero e uno. Ed è vero. Internamente i computer memorizzano ed elaborano le informazioni (cioè i dati) proprio come sequenze di zeri e uni.

Perché?

Fondamentalmente perché è il modo più semplice di farlo con l’elettricità. I computer funzionano con l’elettricità. La spia sul cruscotto si un’auto può essere accesa o spenta e già questo basta a sapere se, ad esempio, l’olio sta finendo o è tempo di fare benzina.

Costruire circuiti che comprendano solo “acceso” e “spento” è più semplice che costruire circuiti in grado di capire più valori intermedi.

E allora come si fa a memorizzare numeri più grandi? Ad esempio come si memorizza il numero 1976?

Già. Il mondo non è fatto solo di zeri e uni. Non ci sono solo bianco e nero, ma tante sfumature di grigio. Ed anche infiniti colori. Insomma il mondo è “analogico”, non “digitale”.

Ma i numeri sono in grado di rappresentare tanti tipi di informazione. Anche se magari dobbiamo limitarci a sole due cifre.

Riflettiamo un attimo su cosa significa il numero 1976 e come ci arriviamo. Incominciamo a contare da zero per arrivare a 1976:

Che noia! 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 …

Ferma, un attimo. Cosa è successo?

Cosa è successo? In che senso?

Intendo cosa è successo dopo il 9.

Dopo il 9 c’è il 10!

Sì ma è successa una cosa strana. Hai finito i numeri.

Ma i numeri sono infiniti!

Sì è vero. Sarò più preciso. Hai finito le cifre. Noi abbiamo 10 cifre, da 0 a 9. Per i numeri più grandi, come il 10, abbiamo bisogno di due cifre. E poi dopo il 99 abbiamo bisogno di tre cifre.

Ti ricordi alle scuole elementari cosa diceva la maestra riguardo i numeri? Ad esempio il numero 25 come è composto?

Ehm…

E’ composto da 2 decine e 5 unità. Ti ricordi?

Ah sì certo.

Bene quindi le cifre assumono valori differenti a seconda di dove sono collocate. Il “2” nel nostro caso vale “20” cioè 2 decine, cioè 2 x 10. Il 5 vale 5 unità, cioè 5 x 1.

Sì sì, ora ricordo.

Bene. Questo è il motivo per cui il nostro sistema si chiama “decimale”. Perché è basato sul 10. Ora supponiamo che non esistano 2, 3, 4, 5, 6, 7, 8, 9. Ma solo 0 e 1. Incomincia a contare.

Ehm… no fallo tu.

D’accordo, allora: 0, 1, 10, 11, 100, 101, 110, 111

Uh! arrivi subito a 10!

Sì ma non è davvero “dieci”. E’ solo due. E anche qui vale lo stesso meccanismo. Ti faccio vedere. Prendiamo il numero 110. Partiamo da destra: 0 x 1 = 0. Bene. Poi: 1 x 2 = 2. Noti la differenza?

Sì lì prima dovevi moltiplicare per 10, col sistema umano.

Esatto. Invece qui moltiplico per 2. Andiamo avanti: 1 x 4 = 4. Perché ho moltiplicato per 4?

No lo so!

Ma perché 4 è 2 x 2, cioè “due alla seconda”. Se fosse stato un numero decimale che cosa ci sarebbe stato in quel posto?

Le centinaia.

Giusto. Quindi avresti fatto ?

1 x 100

Bravo. E che cos’è 100?

10 x 10, cioè 10 al quadrato.

Perspicace😉 Quindi abbiamo: 110(binario) =(0 x 1) + (1 x 2) + (1 x 4) = 0 + 2 + 4 = 6(decimale). E’ chiaro?

Sì sì.

Ragioniamo quindi sulle potenze di 2 che sono: 1 (cioè 2 elevato a 0), 2 (cioè 2 elevato a 1), 4 (cioè 2 elevato a 2), 8 (cioè 2 elevato a 3), 16, 32, 64, 128 … eccetera.

Domande?

Sì e le parole? Le lettere?

Ecco, buona domanda. Le lettere si rappresentano attraverso numeri. Si usa una convenzione e si dice per scrivere “A” memorizzeremo un certo numero, per scrivere “B” un altro numero. Ci sono varie convenzioni ma la più comune è il codice ASCII. Ad esempio nel codice ASCII la lettera A è il numero 65. Vuoi vedere?

Sì sì!

Ok allora installa il programma ghex dal gestore pacchetti. Poi apri l’editor di testo (gedit) e scrivi questo: ABC DEF GHI 1234567890 poi salva il file. Fatto?

F-Fatto!🙂 ma chi sei Muciaccia?

Sì e tu hai realizzato un file fatto in casa😀.

Ora apri ghex (menu Applicazioni > programmazione > editor esadecimale) e apri il file appena creato. Ti troverai di fronte ad una cosa così:

Ma io non vedo 65, vedo 41 42 ecc.

Sì ma se clicchi sul 41 sotto noterai che c’è una conversione in decimale e c’è scritto 65, se clichi su 42 c’è scritto 66.

Ok, ma 41, 42 che sono?

Sono numeri esadecimali. Ovvero in base 16. Le cifre vanno da 0 a F, ovvero: 0, 1, 2 .. 9, A, B, C, D E, F.

E perché si usa?

Perché è molto più semplice convertire da binario ad esadecimale che da binario a decimale. Per questo la notazione esadecimale viene spesso utilizzata come una sorta di “binario abbreviato”. Ad esempio per rappresentare 255 in binario si scrivono otto uno: 11111111, mentre in esadecimale si scrive FF.

Roba da programmatori e geek insomma

Sì esatto, ma faresti bene a impararlo.

Dimmi allora.

Ecco, per convertire da binario ad esadecimale è semplice: si prendono le cifre binarie 4 alla volta e si convertono (anche a mente, è semplice) in decimale. Poi bisogna ricordare che 10 = A, 11 =B, 12 = C, 13 = D, 14 = E, 15 = F. Esempio: 0111 1100. Allora: 0111 = 2 + 4 + 1= 7; 1100 = 8 + 4 = 12 = C.

Non mi sembra così semplice…

E’ una questione di allenamento. Il trucco delle 4 cifre però fa risparmiare un sacco di tempo. L”importante è ricordare A = 10, B = 11, ecc. Invece a 0 a 9 decimale ed esadecimale coincidono. Una volta raggiunto l’allenamento necessario la conversione è molto veloce. Un’altra notazione che si usa è quella ottale, cioè in base 8. Ad esempio il comando chmod che serve per cambiare i permessi di un file usa la notazione ottale. In questo caso le cifre si prendono a tre a tre.

Mi sto confondendo …

Te lo mostro. Ricordi che i permessi dei file sono lettura, scrittura esecuzione?

Sì … più o meno…

Ok, sono dei bit. Bit vuol dire “binary digit” cioè cifra binaria. Il primo bit è R (read, lettura), il secondo W (write, scrittura), il terzo è X (eXecution, esecuzione). Ognuno di questi permessi è applicabile al padrone del file (user), al gruppo (group), e agli altri (others). Quindi in pratica abbiamo tre triplette di numeri binari, 9 in totale. Quindi per dare tutti e tre i permessi a tutti daremo 111-111-111. In ottale, ma anche in decimale, 111=7, quindi diventa 777.

Ok ma anche in decimale…

Eh no in decimale 111111111=511. Non hai modo di prendere le cifre a tre a tre o a quattro a quattro come per l’esadecimale.

Ah ok, un altro trucchetto da nerd🙂

Sì può o meno.

Ma ancora non hai spiegato come si programma… io voglio imparare il C.

Il C è uno dei linguaggi più vicini al modo di ragionare dei computer. E quindi bisogna capire come ragionano i computer, per capire bene il C.

Va bene… e allora come ragionano i computer?

Be’ questo sarà proprio l’argomento della prossima lezione. Nel frattempo, con la calcolatrice di GNOME (o di KDE) divertiti a fare le conversioni. Ma c’è un’ultima cosa da dire. Nella schermata di Ghex ad un certo punto c’è un “20” esadecimale (cioè 32 decimale). E’ lo spazio tra “ABC” e “DEF”.

Giusto, anche lo spazio è un carattere.

Bene, ma vai avanti dopo le lettere. Guarda come è rappresentato 1234567890.

Sì vedo… c’è 31 esadecimale… come mai? Non doveva essere solo 1?

E no. Perché noi abbiamo scritto “1” nel senso del carattere “1” non del numero. Non ci interessa fare calcoli con un editor di testo. Per noi in quel momento “1234567890” non è un numero, ma una serie di caratteri.

Ok… ma potevamo rappresentarlo come numero… aspetta faccio la conversione…. sarebbe: 499602D2 in esadecimale.

Sì ma se avessi scritto 01234?

Veniva .. vediamo … 4D2

Ok ora riconvertilo.

Viene 1234

E lo zero?

Vabe’ lo zero all’inizio non conta…

Sì, se stai facendo un’addizione. Ma se quello fosse il prefisso di un numero di telefono? I prefissi dei telefoni fissi iniziano con 0.

Azz… hai ragione

Quindi come vedi, a volte i numeri vanno trattati come caratteri, perché non sono oggetti di calcolo, ma solo simboli che ci interessa mantenere così come sono. Ecco che ti ho spiegato cos’è un tipo di dato, un concetto che ritroveremo nel C e sarà molto importante capire come trattarlo.

Bene … vedo che lo 0 è “30”… poi c’è 0A, cioè 10… che significa?

E’ l’a-capo. In Unix l’a-capo è solo 0A, con Windows è 0A 0C, due caratteri. Un esempio di come Microsoft abbia sin dall’inizio rotto la compatibilità del formato dei dati con i sistemi precedenti. Uno dei modi più efficaci per sfruttare la sua posizione e mantenerla, rendendo difficile passare da un sistema ad un altro proprio a causa dei formati di dati incompatibili.

Capito…. ho imparato un sacco di cose oggi

Infatti. Fermiamoci qui. Nella prossima lezione vedremo il linguaggio di programmazione più vicino al computer, l’Assembly. E parlando di Assembly vedremo perché è nato il C.

  1. juhan
    15 marzo 2010 alle 9:09

    Guiodic (o Guio o Guido o come) sei un maestro nato: pensa che l’ho capito anch’io🙂 Non vedo l’ora che arrivi la prossima lezione per cui lascia perdere tutto quello che dovresti fare e prepara il prossimo post😉

  2. Soldiesis7
    15 marzo 2010 alle 9:20

    Come inizio mi sembra molto buono…. credo che se a scuola insegnassero così (per quello che mi ricordo io dei miei ex insegnanti), sarebbe molto più facile imparare.

    Continua così! ;-D

  3. Maurizio
    15 marzo 2010 alle 9:29

    Veramente molto bello. Non vedo l’ora di leggere il seguito

  4. Alessandro
    15 marzo 2010 alle 10:02

    Guido mi approffondisci una cosa, perché microsoft decise di usare due caratteri HEX per rappresentare una new line (a capo), quando uno sarebbe stato sufficiente. Dici davvero solo per imporre i suoi standard?
    e anche un’ altra cosa ma che forse anticipa una cosa che dirai in futuro perché spesso l’ accapo viene codificato con \n, un abbreviazione ?

  5. Andrea
    15 marzo 2010 alle 10:16

    “Un esempio di come Microsoft abbia sin dall’inizio rotto la compatibilità del formato dei dati con i sistemi precedenti. Uno dei modi più efficaci per sfruttare la sua posizione e mantenerla, rendendo difficile passare da un sistema ad un altro proprio a causa dei formati di dati incompatibili.”

    Innanzitutto questa coppia di caratteri era utilizzata anche da sistemi antecedenti all’msdos e microsoft.

    Inoltre questa coppia di caratteri sono nati per identificare due operazioni distinte ereditate da macchine da scrivere, stampanti e così via. CR era il carriage return: ritorno carrello, e faceva in modo che la testina ritornasse ad inizio riga. Il LF (line feed) faceva avanzare di una riga il foglio.

    Il CR a video, veniva usato anche a video per aggiornare un contatore per esempio.

    Saluti

    • 15 marzo 2010 alle 11:03

      Hai perfettamente ragione, i due caratteri sono proprio nuova linea e ritorno carrello (come nelle stampanti e nelle telescriventi). Se la memoria non mi inganna, anche sui Commodore servivano due caratteri.
      Ma non è singolare che Unix che nacque quando ancora si usavano come terminali delle telescriventi e come output delle stampanti avesse superato 10 anni prima questa ridondanza nei file e negli stream in generale, mentre un s.o. che era nato sui personal computer no?
      Riflettici.

      E’ chiaro che se avessero voluto mantenere la compatibilità con il sistema allora più diffuso (Unix) l’avrebbero fatto.

      • Andrea
        15 marzo 2010 alle 11:39

        Io mi ricordo che Commodore usava solo il CR… Almeno quelli preistorici. Amiga aveva abbracciato la modalità alla unix usando solo l’LF.

        Comunque io penso che almeno per questo Microsoft non abbia voluto crearsi standard suoi per malizia/cattiveria. Leggi la sezione “History” in questa pagina di Wiki:
        http://en.wikipedia.org/wiki/Newline

        Microsoft ha seguito lo standard dal CP/M che era lo standard de facto per il personal computer fine anni ’70 (32KB di ram se non ricordo male il primo pc con CP/M che utilizzai :-|)

        Saluti

        • 15 marzo 2010 alle 13:09

          e allora sovrappongo i ricordi: in effetti ho usato il cp/m su un Commodore 128.

          • Andrea
            15 marzo 2010 alle 17:38

            Vero, il c128 poteva essere avviato in modalità CP/M. Che bella macchina era! All’epoca, nell’uso casalingo, dopo un bel periodo con il c64, ero passato all’msdos😦

  6. Shishimaru
    15 marzo 2010 alle 12:30

    grande! per me è stato un po’ più semplice visto che ho fatto elettronica a scuola pochi anni fa’,in terza! peccato che in quarta sono andato più sul “materiale”… silicio e così via. mi annoiavo un po’ in alcune lezioni.
    buon inizio😉

  7. filippo
    15 marzo 2010 alle 12:46

    Ottimo inizio! Non vedo l’ora di seguire la prossima lezione!
    Ancora grazie per il tempo che ci dedichi.

  8. Mattia
    15 marzo 2010 alle 15:03

    L’ho dovuto rileggere attentamente almeno 3-4 volte per capirci qualcosa eh, ma d’altronde per uno che nella vita ha deciso di fare tutt’altro, già è un passo avanti (però stasera almeno una ripassatina ce la do)😀
    Mi piace mi piace!

  9. giowck
    15 marzo 2010 alle 16:04

    comunque un altro motivo molto importante per cui si usa il codice binario é il fatto che permette di eliminare la sottrazione…

    http://it.wikipedia.org/wiki/Complemento_a_due

  10. alekseevic
    15 marzo 2010 alle 17:01

    Ma se chiamo i numeri di telefono che hai messo cosa succede?😛

    • 15 marzo 2010 alle 19:54

      boh, sono casuali, spero non esistano🙂

  11. lo!
    15 marzo 2010 alle 17:37

    mi spiace, ma hai fatto una pecca, anche se accettabile. il mondo NON è analogico, come dici te. almeno non questo mondo. ti faccio un esempio: una regola matematica dice che tra due punti ne esiste sempre uno in mezzo (detta semplicemente), quindi tra questo punto al centro e quello successivo ce ne è un altro, e poi un altro, ed un altro ancora, così all’infinito ( for (;;) {i++;} ok, potevo risparmiarmela :D). applichiamo questa legge alla realtà: prendiamo un foglio A4: esso misura in lunghezza 297mm, ma questa dimensione è digitalizzata, poichè in verità è un numero infito. quindi si può dire che il mondo è digitale, anche se non ce ne rendiamo conto. chiaro?😀

    • Nevicata
      15 marzo 2010 alle 19:11

      Perdonatemi l’intromissione, ma visto che si filosofeggia vorrei dire anche io la mia.
      Il mondo è analogico, secondo me, nello stesso modo in cui è analogica la lunghezza di 297 mm di un foglio A4.

      Conosci Zenone e i suoi paradossi?
      Il paradosso di Achille e la tartaruga?
      http://it.wikipedia.org/wiki/Paradosso_di_Achille_e_la_tartaruga
      Se questo paradosso fosse vero e applicabile alla nostra realtà, non potremmo mai spostarci dal punto A al punto B, nè ci sarebbe un delta T.

      Aggiungo inoltre che nell’istante t il suddetto foglio di carta è composto da x atomi. Analogico.

      Se proprio si vuol discutere sulla lunghezza desiderata e sulla lunghezza effettiva, allora entrano in gioco le tolleranze. M un millimetro è e rimante un millimetro, anche se possono esserci infiniti multipli e sottomultipli.

    • 15 marzo 2010 alle 19:55

      eh? e che c’entra?

    • 15 marzo 2010 alle 20:23

      E’ una nostra convenzione dare una larghezza standard, ma se perfettamente misurato non troverai mai un foglio lungo esattamente di 297mm. Se invece indichi i formati hai ragione a dire che sono finiti e quindi digitalizzabili senza perdita di informazione.

      Quindi noi in realtà cerchiamo di rendere finito o di trovare degli elementi comuni per raggruppare e, detto in gergo, quantizzare ciò che ci circonda di infinito.

      • Nevicata
        16 marzo 2010 alle 12:16

        Infatti ho parlato di tolleranza.
        I fogli A4, come qualsiasi altro “pezzo” prodotto dall’uomo, non hanno quasi mai le misure prestabilite, ed entra in gioco una tolleranza, nel caso del foglio, magari di più o meno 0,2 mm.

        Noi cerchiamo di standardizzare concetti che sono fuori dal nostro controllo, cerchiamo di imbrigliare un mondo analogico, fin troppo analogico per noi.

        Dire che la nostra realtà è digitale mi sembra assurdo, per giunta adducendo come motivazione il fatto che matematicamente una retta è composta da infiniti punti. Matematicamente è vero. Ma un segmento, composto da infiniti punti, misura x millimetri ed è composto da y atomi nell’istante t. Forse noi non riusciremo mai a determinare con precisione la sua misura reale nell’istante t, ma ciò non esclude che il segmento abbia la sua lunghezza precisa e analogica.

        Non credo si possa ridurre la complessità della realtà a un circuito aperto o chiuso.

        Tutto questo non per difendere guiodic, che non ha bisogno di nessun avvocato difensore, ma talvolta ho l’impressione che certe persone vengano “criticate” a priori.

        • 16 marzo 2010 alle 13:29

          Difatti appunto perché la retta è continua, non è digitale.

          • 16 marzo 2010 alle 13:52

            Io studio matematica, va detto come premessa… La retta non è “digitale”, nel senso che è continua? Ci può stare.
            Però al tempo stesso può essere rappresentata con un numero finito di parametri. Allo stesso tempo, a partire da un numero finito di parametri posso ottenere un qualcosa di continuo.

            Non confondiamo, vi prego, analogico e digitale con continuo e discreto. Sono due cose molto diverse. Il discreto può essere rappresentato tramite una successione (eventualmente una serie) di oggetti discreti e, viceversa, un qualsiasi oggetto discreto può essere rappresentato da una successione (magari una serie) di oggetti continui.

            “Continuo” e “Analogico” sono in un certo senso, se vogliamo, più vicini tra loro che “Discreto” e “Digitale”. Questi ultimi, infatti, si differenziano in maniera sostanziale per la necessaria finitezza del secondo.

            Un esempio molto semplice sono i numeri naturali. Quanti sono? Infiniti. Un computer può contarli tutti? No. Può contarne ciascuno, ovviamente, ma non può contarli tutti. Questa è la differenza tra discreto e digitale. Il primo non è necessariamente finito, il secondo sì.
            Questo vuol dire che il secondo è necessariamente un’approssimazione? No!
            Come ho detto, un computer può contare QUALSIASI numero naturale, ma non può contarli TUTTI.

            Con la totalità dei numeri naturali (che sono in biezione con gli interi, che sono in biezione con i razionali) posso rappresentare ESATTAMENTE qualsiasi funzione (continua, per semplicità), ad esempio con le trasformate di Fourier a coefficienti razionali. Posso farlo SEMPRE con un computer? No, perché sto richiedendo di usare TUTTI i naturali.

            Esistono funzioni che sono rappresentabili in maniera esatta da un computer? Sì.
            Ad esempio la generica retta Ax+By+C=0 posso riscriverla in funzione di 1 parametro e 4 coefficienti direttori come {x=at+b;y=ct+d}. Allora mi basta una 4-upla di parametri per descrivere nella sua totalità e in maniera univoca una retta del piano affine.
            Posso descriverle TUTTE in maniera esatta in questo modo con un computer? No. Ad esempio la retta sqrt(2)x+y=0 non è rappresentabile. Perché? Perché quella radice non è rappresentabile ESATTAMENTE con numeri razionali, ma solo come frazione infinita.

            Ripeto, questo NON VUOL dire che il discreto debba necessariamente approssimare. il FINITO deve approssimare, il DISCRETO, invece, può essere infinito.

            E questa non è filosofia, ma matematica😉

          • 16 marzo 2010 alle 18:47

            Un attimo. Una realtà continua può essere approssimata digitalmente ma non rappresentata del tutto. Quando digitalizzo un suono devo stabilire due parametri: la frequenza di campionamento e il numero di bit di ogni campione (vale a dire la quantizzazione). Ci sono varie tecniche per farlo ma tutte non possono prescindere dal fatto che devi trasformare una realtà continua (a prescindere dal fatto che sia limitata o meno) in un insieme di numeri che è finito e nessuno dei suoi elementi più essere infinito. Non solo, questi numeri non possono essere arbitrariamente precisi perché ho un numero limitato di bit.
            Quindi la digitalizzazione avviene su ben tre livelli di approssimazione.
            Tu citi i numeri naturali ma appunto essi non rappresentano in genere fenomeni fisici, se non indirettamente (certi casi di variabili adimensionali)

          • 16 marzo 2010 alle 20:41

            Condivido appieno tutto quello che hai scritto, tranne l’ultima frase🙂

            Qualsiasi numero reale può essere approssimato da una frazione continua, ovvero un numero razionale. I numeri razionali sono in biezione con i naturali (http://it.wikipedia.org/wiki/Numero_razionale#Numerabilit.C3.A0) e, quindi, ogni numero reale può essere rappresentato da una sequenza (eventualmente infinita) di numeri naturali.

            Quindi ogni fenomeno (fisico o meno, non mi pare il caso di disquisire sull’ontologia del mondo, anche perché in merito ho delle opinioni ben poco condivisibili) che può essere descritto da numeri reali può essere in realtà descritto da infinite serie di array con infiniti numeri naturali (e qui spunta 2^ω e l’eventuale ipotesi del continuo http://it.wikipedia.org/wiki/Ipotesi_del_continuo).
            Queste cose non le dico io, sia ben chiaro! Sembrano degli svarioni di un ubriaco, ma ci sono fior fior di studiosi di logica/computabilità/computazionalità/teorie dei modelli che le dicono e, soprattutto, che le hanno dimostrate nel secolo scorso😀

            Comunque, è per questo che dico che bisogna distinguere e fare attenzione alla differenza tra discreto e digitale. Non tutto ciò che può essere discretizzato può essere anche digitalizzato senza perdere informazione, ma certo guido tu su questo sei ben più informato di me, stavo solo dando il mio contributo da un punto di vista più matematico alla questione🙂

          • 16 marzo 2010 alle 21:40

            Il fatto che tu rappresenti un numero reale come divisione di due numeri naturali non inficia per nulla quello che ho scritto io.

            Tu citi i numeri naturali ma appunto essi non rappresentano in genere fenomeni fisici, se non indirettamente (certi casi di variabili adimensionali)

            Il numero rappresentato rimane reale, solo che lo rappresenti come una frazione. Ma il numero, vale a dire la quantità, rimane reale non diventa naturale. I fenomeni fisici in genere hanno valori continui, persino nel caso della meccanica quantistica (infatti i quanti possono avere una energia arbitraria, così come ci sono infinite frequenze, solo se ti riferisci ad un particolare fenomeno allora puoi prevedere che abbia una certa energia precisa perché sai, a priori, che ad esempio è stato generato da quel particolare fenomeno fisico).

          • 16 marzo 2010 alle 13:54

            EDIT: errata corrige.

            Non confondiamo […] Il discreto può essere rappresentato tramite una successione (eventualmente una serie) di oggetti discreti […]

            Ovviamente questa è una banalità.
            La frase corretta è questa:

            Non confondiamo […] Il continuo può essere rappresentato tramite una successione (eventualmente una serie) di oggetti discreti […]

  12. Lorenzo
    15 marzo 2010 alle 17:54

    Okteta al posto di ghex va anche bene, vero?

  13. 15 marzo 2010 alle 20:17

    Ottima trattazione! Complimenti😉

    Visto che avevo intenzione di fare delle piccola guide sulle GTK+ linkerò questa guida come punto di partenza.

  14. fede73
    15 marzo 2010 alle 20:40

    Grande Guido come sempre, attendo la prossima lezione.

  15. 15 marzo 2010 alle 21:31

    Attendo con fervore l’assembly *_* Ne ho sempre sentito parlare, ma (per fortuna?) non sono mai dovuto regredire più in giù del C di alto livello😛

    E io che pensavo che volessi fare una guida come tutte le altre, meno male che non deludi quasi mai!🙂

  16. ani_d
    16 marzo 2010 alle 10:09

    E io che pensavo di aver eliminato la matematica dalla mia vita con la laurea in Lettere. Ma chi me l’ha fatto fare di appassionarmi all’informatica? Mi sono persa con le conversioni… vado a rileggermela ancora e ancora

  17. thepaperboy
    17 marzo 2010 alle 10:23

    mi iscrivo al corso!

  18. -luk-
    17 marzo 2010 alle 14:24

    Ciao Guiodic,

    Una guida molto interessante, l’unica cosa che non ho capito è come riusciamo a contare o scrivere numeri in binario.
    Potresti spiegarmelo?

    Grazie🙂

    • 17 marzo 2010 alle 14:41

      non ho capito che intendi. Mi pare di avere spiegato proprio quello che chiedi. Cosa non è chiaro precisamente?

      • -luk-
        18 marzo 2010 alle 18:41

        praticamente non ho capito come faccio a trasformare un numero in binario.

        Es 3 = 11?Seguendo la guida di Ezo ho capito una mezza cosa ma quando devo trasformare numeri grandi tipo 3104? esiste una regola per far velocemente?

        Grazie

    • ezo
      17 marzo 2010 alle 19:48

      anche io come te ho avuto sempre difficoltà a capire come si conta e si scrive numeri binari (forse xrchè io sono tonto🙂 )
      leggendo questa guida(unpluggedteachers) è stata luce se gli vuoi dare anche tu un’occhiata.
      questo è il link.
      http://csunplugged.org/sites/default/files/books/unpluggedTeachersOct2009.it__0.pdf

      • -luk-
        18 marzo 2010 alle 18:42

        Grazie, una guida molto simpatica😀

        Inizio a ritagliare le carte😀

  19. Mattia
    18 marzo 2010 alle 22:47

    Ciao Guido, volevo farti una domanda, magari banale, ma detta da uno che di programmazione sa poco o niente.
    I computer “comprendono” SOLO il binario o anche l’esadecimale? non mi è chiaro esattamente.
    Ho capito che viene spesso usato l’esadecimale per motivi di praticità, ma il computer lo capisce o deve “convertirlo” in binario per forza?
    Inoltre: perchè qui l’a-capo è 0A mentre nell’altra mini-lezione (dove viene introdotto l’assembly) è 10?
    Saluti.

    • 18 marzo 2010 alle 22:49

      i computer capiscono solo il binario. l’esadecimale è usato per motivi di praticità.

      0A (esadecimale = 10 (decimale)

      • Mattia
        19 marzo 2010 alle 0:22

        ok grazie mille, ciao😉

  20. errante
    1 maggio 2010 alle 13:46

    Guiodic davvero un’ottima guida per chi inizia.complimenti.Devo però sottolineare: “Prima di tutto le informazioni sono i dati.” Non è concettualmente perfetta la definizione.I dati sono dei simboli(eventualmente in sequenza) senza significato e di per se non costituiscono informazioni. le informazioni invece sono dei dati che hanno subito un processo di interpretazione e un siginificato lo hanno. Infatti le informazioni sono costitute da una coppia proprietà:valore. Ad Esempio:
    02050608 <—Dato
    numero di telefono = 02050608 <—Informazione
    Saluti…

    • 1 maggio 2010 alle 15:51

      e vabe’, su, non è un corso di teoria dell’informazione.

      • errante
        1 maggio 2010 alle 23:03

        hai ragione, però una sfumatura ogni tanto non guasta.😉

  21. matteo
    27 settembre 2012 alle 10:35

    Ciao Guido, complimenti per il tuo tutorial. Ho letto delle tue competenze e sto cercando il parere di un tecnico! SI tratta di un nuovo linguaggio Leonardo hlc, che pare sarà in presentazione a smau. Non se ne sa molto, se non per il sito http://www.leonardo-hlc.it/ che rimane un po’ sul vago, senza dire le applicazioni pratiche del prodotto. Credi possa essere una cosa valida? Grazie e complimenti Matteo

  22. 28 gennaio 2014 alle 21:42

    I used to be suggested this blog by my cousin.
    I’m now not positive whether this submit is written by means of him as no
    one else know such special approximately my problem. You’re wonderful!
    Thanks!

  23. 15 aprile 2014 alle 1:39

    com offers extensive documentation, a lot of interaction, and even human contact, however they tend not to hold your hand.
    Nobody desires to see his very own business failing.
    It may be figured that white label SEO include a 3rd party who resells
    a legal contract involving IT expert or consultant, SEO professional and end user.

  24. 19 giugno 2014 alle 5:26

    I was suggested this blog by my cousin. I’m not sure whether this post is written by him as no one else know such detailed about my trouble.
    You are incredible! Thanks!

  25. 1 luglio 2014 alle 7:42

    Fairly nice post. I simply stumbled upon your current weblog plus desired to express that I’ve absolutely relished surfing around your current web site posts. At any rate I am registering to ones feed and that i we imagine you generate again quickly!

  26. 14 ottobre 2014 alle 8:10

    I think that is one of the such a lot vital information for
    me. And i am satisfied studying your article. However want to remark on some basic issues, The website style
    is wonderful, the articles is really excellent :
    D. Just right job, cheers

  1. 21 dicembre 2014 alle 21:26

Lascia un commento

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 cliccano Mi Piace per questo: