[OT] ASCII

  • Creatore
    Topic
  • #44298
    lorenzo.pantieri
    Partecipante
      Up
      0
      Down
      ::


      Ciao a tutti.

      ASCII

      Il “codice standard americano per lo scambio di informazioni” è un sistema di codifica dei caratteri a 8 bit (di cui uno usato come bit di parità) proposto nel 1961 e comunemente impiegato nei calcolatori.

      Così nell’Arte.

      Mi fa notare però un lettore (Marco Coppola, che ringrazio):

      La voce ASCII è errata, come puoi verificare facilmente in quanto l’ASCII, prendendo la definizione originale, senza considerare le estensioni, è sì un codice a 7 bit, ma l’ottavo (per essere precisi il bit di peso alto, MSB) è sistematicamente a 0 e non viene usato come parità. D’altronde, trasmettendo in asincrono, come ad esempio attraverso una seriale, l’utilizzo o meno della parità dipende da come viene caratterizzata la seriale e non dalla codifica dei dati che stai trasmettendo e la parità (eventuale) viene trasmessa dopi i biti di dati e prima del (dei) bit di stop.

      Wikipedia afferma:

      ASCII è l’acronimo di American Standard Code for Information Interchange (ovvero Codice Standard Americano per lo Scambio di Informazioni).

      È un sistema di codifica dei caratteri a 7 bit (in realtà, di solito si aggiunge un 8º bit, usato come bit di parità, per rilevare eventuali errori) comunemente utilizzato nei calcolatori, proposto dall’ingegnere dell’IBM Bob Bemer nel 1961, e successivamente accettato come standard dall’ISO (ISO 646). Per non confonderlo con le estensioni a 8 bit proposte successivamente, questo codice viene talvolta riferito come US-ASCII.

      Alla specifica iniziale basata su codici di 7 bit fecero seguito negli anni molte proposte di estensione ad 8 bit, con lo scopo di raddoppiare il numero di caratteri rappresentabili. Nei PC IBM si fa per l’appunto uso di una di queste estensioni, ormai standard di fatto, chiamata extended ASCII o high ASCII. In questo ASCII esteso, i caratteri aggiunti sono vocali accentate, simboli semigrafici e altri simboli di uso meno comune. I caratteri extended ASCII sono codificati nei cosiddetti codepage.

      Come correggere la voce dell’Arte?

      Ovviamente, potrei cavarmela molto semplicemente così:

      ASCII

      Il “codice standard americano per lo scambio di informazioni” è un sistema di codifica dei caratteri proposto nel 1961 e comunemente impiegato nei calcolatori.

      ma bisogna vedere se si perde qualcosa di importante. Gli altri punti dell’Arte in cui si parla di bit sono questi:

      TeX vide la luce nel 1982, e da allora ha subito costanti aggiornamenti e miglioramenti, tra cui quello del 1989, che gli ha permesso di supportare caratteri a 8 bit e multilingue.

      La codifica utf-8 (Unicode Transformation Format, 8 bit) è una realizzazione di Unicode che per rappresentare i caratteri usa gruppi di byte in numero variabile da uno a quattro.

      In mancanza di istruzioni specifiche, LaTeX impiega i font Computer Modern, che contengono solo i 128 caratteri del vecchio sistema ASCII a 7 bit.

      Grazie mille,
      L.

    Visualizzazione 10 filoni di risposte
    • Autore
      Risposte
      • #44299
        Up
        0
        Down
        ::

        Ciao a tutti.

        ASCII

        Il “codice standard americano per lo scambio di informazioni” è un sistema di codifica dei caratteri a 8 bit (di cui uno usato come bit di parità) proposto nel 1961 e comunemente impiegato nei calcolatori.

        Così nell’Arte.

        Mi fa notare però un lettore (Marco Coppola, che ringrazio):

        La voce ASCII è errata, come puoi verificare facilmente in quanto l’ASCII, prendendo la definizione originale, senza considerare le estensioni, è sì un codice a 7 bit, ma l’ottavo (per essere precisi il bit di peso alto, MSB) è sistematicamente a 0 e non viene usato come parità. D’altronde, trasmettendo in asincrono, come ad esempio attraverso una seriale, l’utilizzo o meno della parità dipende da come viene caratterizzata la seriale e non dalla codifica dei dati che stai trasmettendo e la parità (eventuale) viene trasmessa dopi i biti di dati e prima del (dei) bit di stop.

        Wikipedia afferma:

        ASCII è l’acronimo di American Standard Code for Information Interchange (ovvero Codice Standard Americano per lo Scambio di Informazioni).

        È un sistema di codifica dei caratteri a 7 bit (in realtà, di solito si aggiunge un 8º bit, usato come bit di parità, per rilevare eventuali errori) comunemente utilizzato nei calcolatori, proposto dall’ingegnere dell’IBM Bob Bemer nel 1961, e successivamente accettato come standard dall’ISO (ISO 646). Per non confonderlo con le estensioni a 8 bit proposte successivamente, questo codice viene talvolta riferito come US-ASCII.

        Alla specifica iniziale basata su codici di 7 bit fecero seguito negli anni molte proposte di estensione ad 8 bit, con lo scopo di raddoppiare il numero di caratteri rappresentabili. Nei PC IBM si fa per l’appunto uso di una di queste estensioni, ormai standard di fatto, chiamata extended ASCII o high ASCII. In questo ASCII esteso, i caratteri aggiunti sono vocali accentate, simboli semigrafici e altri simboli di uso meno comune. I caratteri extended ASCII sono codificati nei cosiddetti codepage.

        Come correggere la voce dell’Arte?

        La voce di Wikipedia dice, nel secondo capoverso, una stupidaggine. Non esiste un ASCII esteso che sia uno “standard di fatto”. Nei primi PC IBM esisteva appunto questa estensione, ma presto la metà alta venne usata per le varie “code pages”. Quella estensione non si usa più da tempi biblici (secondo la scala dell’informatica).

        La tua descrizione va bene, basta togliere il tecnicismo impreciso sulla parità e mettere 7 bit invece di 8. La cosa importante da menzionare è che le varie estensioni a codici a 8 bit e anche UTF-8 mantengono invariata la parte “bassa”.

        Ciao
        Enrico

      • #44300
        Up
        0
        Down
        ::

        Ciao a tutti.

        ASCII

        Il “codice standard americano per lo scambio di informazioni” è un sistema di codifica dei caratteri a 8 bit (di cui uno usato come bit di parità) proposto nel 1961 e comunemente impiegato nei calcolatori.

        Così nell’Arte.

        Mi fa notare però un lettore (Marco Coppola, che ringrazio):

        La voce ASCII è errata, come puoi verificare facilmente in quanto l’ASCII, prendendo la definizione originale, senza considerare le estensioni, è sì un codice a 7 bit, ma l’ottavo (per essere precisi il bit di peso alto, MSB) è sistematicamente a 0 e non viene usato come parità. D’altronde, trasmettendo in asincrono, come ad esempio attraverso una seriale, l’utilizzo o meno della parità dipende da come viene caratterizzata la seriale e non dalla codifica dei dati che stai trasmettendo e la parità (eventuale) viene trasmessa dopi i biti di dati e prima del (dei) bit di stop.

        Wikipedia afferma:

        ASCII è l’acronimo di American Standard Code for Information Interchange (ovvero Codice Standard Americano per lo Scambio di Informazioni).

        È un sistema di codifica dei caratteri a 7 bit (in realtà, di solito si aggiunge un 8º bit, usato come bit di parità, per rilevare eventuali errori) comunemente utilizzato nei calcolatori, proposto dall’ingegnere dell’IBM Bob Bemer nel 1961, e successivamente accettato come standard dall’ISO (ISO 646). Per non confonderlo con le estensioni a 8 bit proposte successivamente, questo codice viene talvolta riferito come US-ASCII.

        Alla specifica iniziale basata su codici di 7 bit fecero seguito negli anni molte proposte di estensione ad 8 bit, con lo scopo di raddoppiare il numero di caratteri rappresentabili. Nei PC IBM si fa per l’appunto uso di una di queste estensioni, ormai standard di fatto, chiamata extended ASCII o high ASCII. In questo ASCII esteso, i caratteri aggiunti sono vocali accentate, simboli semigrafici e altri simboli di uso meno comune. I caratteri extended ASCII sono codificati nei cosiddetti codepage.

        Come correggere la voce dell’Arte?

        Ovviamente, potrei cavarmela molto semplicemente così:

        ASCII

        Il “codice standard americano per lo scambio di informazioni” è un sistema di codifica dei caratteri proposto nel 1961 e comunemente impiegato nei calcolatori.

        ma bisogna vedere se si perde qualcosa di importante. Gli altri punti dell’Arte in cui si parla di bit sono questi:

        TeX vide la luce nel 1982, e da allora ha subito costanti aggiornamenti e miglioramenti, tra cui quello del 1989, che gli ha permesso di supportare caratteri a 8 bit e multilingue.

        La codifica utf-8 (Unicode Transformation Format, 8 bit) è una realizzazione di Unicode che per rappresentare i caratteri usa gruppi di byte in numero variabile da uno a quattro.

        In mancanza di istruzioni specifiche, LaTeX impiega i font Computer Modern, che contengono solo i 128 caratteri del vecchio sistema ASCII a 7 bit.

        Grazie mille,
        L.

        alle mie conoscenze risulta che l’ottavo bit era effettivamente utilizzato come controllo di parita’ all’inizio, modalita’ poi abbandonata con l’asincrono.
        io quindi modificherei la frase semplicemente con

        ASCII

        Il “codice standard americano per lo scambio di informazioni” è un sistema di codifica dei caratteri a 8 bit (di cui uno inizialmente usato come bit di parità) proposto nel 1961 e comunemente impiegato nei calcolatori.

        ringrazio anch’io la segnalazione, ho insegnato erroneamente ai miei studenti di fondamenti di informatica che quel bit e’ per la parita’ alla stessa maniera dell’Arte 🙂

      • #44301
        Up
        0
        Down
        ::

        La tua descrizione va bene, basta togliere il tecnicismo impreciso sulla parità e mettere 7 bit invece di 8. La cosa importante da menzionare è che le varie estensioni a codici a 8 bit e anche UTF-8 mantengono invariata la parte “bassa”.

        Provo a dire la mia. Bisogna distinguere fra tabella di
        corrispondenza numero-carattere e rappresentazione di quel numero su un
        calcolatore.

        ASCII è una codifica cioè una corrispondenza tra numeri e lettere che contempla 128
        posizioni. Allo stesso modo, per esempio, Unicode è una “grande tabellona” che lega
        ogni numero a un carattere. Il numero totale di posizioni non deve avere per forza
        una relazione con i byte (e infatti il numero totale di caratteri Unicode non ce l’ha).

        Poi si passa dalla semplice “tabella di corrispondenza”, all’uso
        che se ne fa di questa tabella in particolari situazioni.
        Prendiamo un dispositivo per cui è naturale usare i bit.
        Il numero minimo di bit necessari a rappresentare 128 numeri è 7.
        Alcuni dispositivi penso possano effettivamente usare 7 bit per ogni “lettera”.

        Un PC moderno però ne usa comunque 8 di bit, lasciando il primo a zero.
        Infatti se creo un file e uso solo caratteri ASCII, ho esattamente la corrispondenza
        n lettere = n byte.

        Una cosa analoga accade con Unicode. La rappresentazione in bit dell’Unicode
        è dettata dall’UTF scelto.

        La sostanza di tutto questo discorso è per dire che sì, l’ASCII lo si può definire
        una codifica a 7 bit perché 7 bit è il numero minimo per rappresentare 128 posizioni,
        ma in pratica nei PC attuali ogni carattere ASCII occupa 8 bit.
        Altrimenti non si spiegherebbe la corrispondenza con i primi 128 caratteri dell’Unicode
        in UTF8, che appunto usano un byte.

        Ciao ciao.
        Fra

      • #44302
        lorenzo.pantieri
        Partecipante
          Up
          0
          Down
          ::


          Grazie a tutti. A questo punto, scriverei

          ASCII

          Il “codice standard americano per lo scambio di informazioni” è un sistema di codifica dei caratteri a 7 bit proposto nel 1961 e comunemente impiegato nei calcolatori.

          Riguardo agli altri enunciati

          TeX vide la luce nel 1982, e da allora ha subito costanti aggiornamenti e miglioramenti, tra cui quello del 1989, che gli ha permesso di supportare caratteri a 8 bit e multilingue.

          La codifica utf-8 (Unicode Transformation Format, 8 bit) è una realizzazione di Unicode che per rappresentare i caratteri usa gruppi di byte in numero variabile da uno a quattro.

          In mancanza di istruzioni specifiche, LaTeX impiega i font Computer Modern, che contengono solo i 128 caratteri del vecchio sistema ASCII a 7 bit.

          ho ancora dei dubbi, però.
          1. Quali sono i “caratteri a 8 bit” che TeX è stato in grado si rappresentare dopo il 1989?
          2. Come fa la codifica UTF-8 a essere a 8 bit pur occupando un gruppo di byte da uno a quattro?
          3. Qual è il “vecchio sistema ASCII” che compone il sistema dei caratteri Computer Modern?

          Grazie ancora,
          L.

        • #44303
          Up
          0
          Down
          ::

          1. Quali sono i “caratteri a 8 bit” che TeX è stato in grado si rappresentare dopo il 1989?

          dovrebbe essere la latin-1

        • #44304
          Up
          0
          Down
          ::

          ASCII
          Il “codice standard americano per lo scambio di informazioni” è un sistema di codifica dei caratteri a 7 bit proposto nel 1961 e comunemente impiegato nei calcolatori.

          lascia stare i bit perché dopo ti incarti; scrivi che sono 128 caratteri da zero a 127, che è la cosa corretta.

          TeX vide la luce nel 1982, e da allora ha subito costanti aggiornamenti e miglioramenti, tra cui quello del 1989, che gli ha permesso di supportare caratteri a 8 bit e multilingue.

          lascia stare 8bit; scrivi che ha esteso i caratteri gestiti a 256

          La codifica utf-8 (Unicode Transformation Format, 8 bit) è una realizzazione di Unicode che per rappresentare i caratteri usa gruppi di byte in numero variabile da uno a quattro.

          potenziale mostruosità: Unicode Transformation Format, 8 bit
          ????
          da wikipedia
          UTF-8 encodes each character (code point) in 1 to 4 octets (8-bit bytes),
          with the single–octet encoding used only for the 128 US-ASCII characters.
          Otteti è il termine corretto, byte è ambiguo :
          ci sono byte da 6bit.
          wiki dice: “in questo contesto un byte è un otteto, ovvero 8bit”

          ho ancora dei dubbi, però.
          1. Quali sono i “caratteri a 8 bit” che TeX è stato in grado si rappresentare dopo il 1989?

          domanda priva di senso

          2. Come fa la codifica UTF-8 a essere a 8 bit pur occupando un gruppo di byte da uno a quattro?

          non hai capito utf-8

          3. Qual è il “vecchio sistema ASCII” che compone il sistema dei caratteri Computer Modern?

          TeXBook ?

          Fai attenzione a queste cose, al meeting europeo c’é gente che non perdona…

        • #44305
          Up
          0
          Down
          ::

          ho ancora dei dubbi, però.
          1. Quali sono i “caratteri a 8 bit” che TeX è stato in grado si rappresentare dopo il 1989?
          2. Come fa la codifica UTF-8 a essere a 8 bit pur occupando un gruppo di byte da uno a quattro?
          3. Qual è il “vecchio sistema ASCII” che compone il sistema dei caratteri Computer Modern?

          Aggiungo qualcosa a quanto scritto da Luigi. Anche TeX (versioni 1 e 2) poteva gestire font con 256 caratteri. L’idea iniziale di Knuth era di riempire la metà superiore con caratteri accessibili per mezzo di legature (qualcosa come “o/” per ottenere “ø”).

          Se guardi le appendici del TeXbook, ti accorgi che all’epoca dello sviluppo di TeX si facevano strada vari modi di riempire anche la parte “non stampabile” della prima metà del codice ASCII: cominciava a sentirsi molto meno la necessità di riservare spazio per codici di comunicazione, dal momento che non si usavano più le telescriventi. Da qui la decisione di Knuth di affidarsi solo alla parte “sicura”, cioè i 95 caratteri “stampabili” del codice ASCII: questa deve essere identica in ogni realizzazione di TeX, che altrimenti non passa il “trip test”.

          Con la revisione per il passaggio da TeX 2 a TeX 3, Knuth si rese conto che le lingue europee dovevano avere accesso completo a 256 caratteri chiamandoli “per nome”. Ma non c’è alcuna convenzione fissa sotto, a parte quella sui 95 caratteri stampabili che devono “corrispondere a sé stessi”. A TeX non interessa minimamente come venga rappresentato sullo schermo l’ottetto “C5: se, interpretando i token, incontra quell’ottetto come istruzione di composizione, TeX inserisce il carattere che sta al posto “C5 nel font in uso. Quale carattere venga fuori è una scelta di chi ha programmato il font.

          Con il meccanismo dei font virtuali non sarebbe troppo difficile adattare un font codificato in modo qualsiasi così da farlo coincidere con la codifica ISO-8859-1 o quella preferita (a 8 bit, ovviamente). Gli sviluppatori di LaTeX hanno deciso per un’altra strada, separando la “codifica di input” dalla “codifica di output”: mantenere collezioni di font per tutte le codifiche in uso sarebbe un lavoro immane.

          Facciamo un esempio. Supponiamo che l’utente scelga come codifica di input la ISO-8859-1 (alias latin1) e come codifica di output la T1. LaTeX legge il file latin1.def che si occupa di rendere attivi tutti gli ottetti della metà alta (cioè li fa comportare come se fossero comandi con la barra rovescia davanti); così il carattere che sullo schermo è rappresentato come “à” diventa un comando: “caro TeX, componi una “. Di fatto l’istruzione “à” viene tradotta in un altro comando che fa parecchie cose: (1) guarda la codifica di output in uso; (2) decide se corrisponde a un carattere presente nel font; (3) se il carattere c’è lo fa produrre a TeX; (4) se il carattere non c’è, guarda se esiste una “definizione di default”; (5) se questa c’è viene eseguita; (6) se non c’è si spedisce un messaggio di errore.

          Siccome è presente nella codifica di output T1, viene effettivamente prodotto il carattere corrispondente. Nella OT1, invece, non c’è e la definizione di default è equivalente a “\`a” di Plain TeX, cioè viene sovrapposto alla “a” l’accento grave.

          Attenzione: “\`a” in LaTeX non produce necessariamente “sovrapponi alla a un accento grave”; infatti anche il significato di \` dipende dalla codifica di output in uso in modo che “\`a” esegua gli stessi comandi che sarebbero eseguiti incontrando .

          Ciao
          Enrico

        • #44306
          Up
          0
          Down
          ::

          Fai attenzione a queste cose, al meeting europeo c’é gente che non perdona…

          ..valido anche per sottoscritto…

          1) errata c’é — corrige c’è
          2) errata otteto — corrige ottetto

        • #44307
          lorenzo.pantieri
          Partecipante
            Up
            0
            Down
            ::


            Innanzitutto ringrazio Luigi e Enrico per i preziosi interventi. Alla fine, tutto questo dettaglio sui bit non è necessario all’utente “medio di LaTeX” (e, di conseguenza, al lettore dell’Arte), quindi sono per semplificare il tutto. Tanto più che l’argomento è complesso, e il rischio di commettere imprecisioni alto (l’Arte rinuncia in partenza all’obiettivo della completezza, ma vuole essere corretta, oltre che semplice). L’unica eccezione devo farla quando introduco “UTF-8”: lì il mio lettore può chiedersi che cosa significa quell’8, e devo per forza accennarlo.

            ASCII

            Il “codice standard americano per lo scambio di informazioni” è un sistema di codifica dei caratteri proposto nel 1961 e comunemente impiegato nei calcolatori.

            TeX vide la luce nel 1982, e da allora ha subito costanti aggiornamenti e miglioramenti, tra cui quello del 1989, che gli ha permesso di supportare un maggior numero di caratteri (anche di lingue non latine).

            La codifica UTF-8 (Unicode Transformation Format, 8 bit) è una particolare realizzazione di Unicode in grado di gestire 256 caratteri.

            In mancanza di istruzioni specifiche, LaTeX impiega i font Computer Modern, che contengono un numero di caratteri relativamente ristretto.

            Aspetto le vostre correzioni.

            Un caro saluto,
            L.

          • #44308
            Up
            0
            Down
            ::


            Questa affermazione

            La codifica UTF-8 (Unicode Transformation Format, 8 bit) è una particolare realizzazione di Unicode in grado di gestire 256 caratteri.

            non è corretta, UTF-8 è un metodo di codifica dell’intera tabella Unicode (fino a 1.114.112 caratteri), la ragione dell’8 è piuttosto tecnica e difficile da riassumere in breve, come puoi vedere dall’articolo di wikipedia.

            Ciao
            Matteo

          • #44309
            lorenzo.pantieri
            Partecipante
              Up
              0
              Down
              ::

              Questa affermazione

              La codifica UTF-8 (Unicode Transformation Format, 8 bit) è una particolare realizzazione di Unicode in grado di gestire 256 caratteri.

              non è corretta, UTF-8 è un metodo di codifica dell’intera tabella Unicode (fino a 1.114.112 caratteri), la ragione dell’8 è piuttosto tecnica e difficile da riassumere in breve, come puoi vedere dall’articolo di wikipedia.

              Ti credo. In mancanza di proposte migliori, modificherò quell’enunciato in un semplice:

              La codifica UTF-8 (Unicode Transformation Format, 8 bit) è una particolare realizzazione di Unicode.

              Grazie mille,
              L.

          Visualizzazione 10 filoni di risposte
          • Devi essere connesso per rispondere a questo topic.

          Go to top