15 marzo 1679, scusate l'errore di battitura
________________________________________
Da: nexa <nexa-boun...@server-nexa.polito.it> per conto di Daniela Tafani 
<daniela.taf...@unipi.it>
Inviato: mercoledì 8 maggio 2024 16:40
A: 380°; nexa@server-nexa.polito.it
Cc: alessandro marzocchi
Oggetto: [nexa] Leibniz e il calcolatore binario (was Re: sul linguaggio (was 
Re: Articolo sui LLMs...))

Caro 380°,

grazie molte di aver condiviso la spiegazione.

Ne approfitto per ricordare uno straordinario testo di Leibniz del 15 marzo 
1769, De Progressione Dyadica
(Massimo Mugnai lo ha citato sabato scorso, nel corso di una sua relazione su 
"Pensare è calcolare", alla Scuola Normale)

Huiusmodi calculus fieri posset per machinam. Hoc modo potest sane facillime et 
sine
punctis; sit si pyxis perforata ita ut foramina aperiri et claudi possint, 
aperta in locis
respondentibus ipsis 1 clausa manens in locis respondentibus ipsis 0. Per loca 
aperta
deponat cubulos vel orbiculos in crenas per alios nihil, et ita promota et de 
columnis in
columnas transportata, ut multiplicatio postulat crenae repraesentent columnas 
nec
possit orbiculum ex una crena in aliam ire nisi postea mota machinula ubi 
globuli effluent
omnes in sequentem crenam, demto semper uno qui in foramine manet. Si quidem per
portam transire vult solum nam res ita institui potest, ut dum semper simul 
effluant
necessario, alioqui non effluent

Qui si trova la scansione del manoscritto e una traduzione in francese:
https://archive.org/details/69LeibnizDiadica

Ce type de calcul pourrait également être réalisé avec une machine (sans roues),
de la manière suivante certainement très facilement et sans effort. Avec une
boîte munie de trous, qui peuvent être ouverts et fermés. Ils sont ouverts ou
fermés aux places qui correspondent avec une petite roue à 2 dents.
Les trous sont ouverts à l'endroit qui correspond à 1 et restent fermés à 
l'endroit
qui correspond à 0. Par les trous ouverts, tomberont des petits cubes ou des
billes dans des rigoles, et rien au travers des trous fermés. La boite est 
décalée
de colonne en colonne, comme la multiplication l'exige.
Les rigoles représentent les colonnes, et aucune bille ne devrait pouvoir sortir
d'une rigole vers l'autre, à moins d’un mouvement de la machine.

Un saluto,
Daniela
________________________________________
Da: nexa <nexa-boun...@server-nexa.polito.it> per conto di 380° via nexa 
<nexa@server-nexa.polito.it>
Inviato: mercoledì 8 maggio 2024 16:03
A: alessandro marzocchi
Cc: nexa@server-nexa.polito.it
Oggetto: Re: [nexa] sul linguaggio (was Re:  Articolo sui LLMs...)

Buongiorno,

abbiamo avuto un breve scambio privato con Alessandro nel quale mi ha
chiesto un chiarimento in merito al "linguaggio macchina"

Alessandro mi permetto di rispondere (a quello che può essere reso
pubblico, ovviamente) qui in lista perché credo che questi concetti non
facciano ancora parte della cultura generale, mi perdonino gli eruditi
in lista!

io ho scritto:

>> [...] la cosa è molto tecnica e un po' complessa (ma non
>> complicata) ma c'è una differenza _costitutiva_ tra il cosìddetto
>> "linguaggio macchina" - l'unico che comprendono i calcolatori, quello
>> "binario" - e i "linguaggi di programmazione" progettati e usati da gli
>> umani per scrivere il software "sorgente" che poi viene trasformato in
>> "binario"
>>
>> anche linguisticamente parlando questa differenza deve essere compresa
>> in tutti i suoi risvolti, altrimenti facciamo fatica a capirci

> Non è per niente semplice capire i millemila tecnicismi, nella mia
> ignoranza vorrei capire le differenze fra "linguaggio macchina" - "binario"
> - "linguaggi di programmazione" - "sorgente".
> Intuisco quello che scrivi, ma c'è un bel salto fra intuire e capire,
> intanto domando: "linguaggio macchina" - "binario", sono sinonimi, ho
> capito bene oppure no?

sì, hai capito bene :-)

come saprai la CPU può "riconoscere" solo 0 e 1 perché i circuiti
elettronici possono distinguere solo tra "passa corrente" o "non passa
corrente" e (re)agire di conseguenza

i comandi (e i dati) in notazione binaria sono una sequenza di uni e
zeri e vengono spesso rappresentati in notazione esadecimale (numeri a
base 16 invece che 2)... perché viene comodo.

il linguaggio macchina è una piccola sequenza di comandi e parametri
espressa in formato binario o esadecimale che viene eseguita dal
processore; i comandi che un processore piò eseguire sono molto
semplici, tipo somma, dividi, confronta, memorizza (ma lo fa a velocità
stratosferiche).  Un programma binario è una enorme sequenza di codici
binari (codici e dati a quel punto sono praticamente indistinguibili).

tutto quello che "succede" dentro un computer, compresa l'interazione
con l'ambiente esterno attraverso i cosiddetti i dispositivi di
input/output come tastiera/mouse, monitor, ecc. dipende solo ed
esclusivamente da quel numero enorme di piccole sequenze di comandi e
parametri espressi in linguaggio macchina.  Come corollario, data
l'enorme complessità del sistema, è praticamente impossibile verificare
cosa succede /dentro/ la macchina anche si ha accesso a tutto il suo
codice in linguaggio macchina; in altre parole, a quel punto (binario)
la macchina è una "black box".

tornando al linguaggio, ne esiste uno di programmazione a basso livello,
l'assebly, in cui i codici operativi (numerici binari) e i parametri
sono sostituiti da istruzioni mnemoniche per rendere più semplice ai
programmatori (umani) sviluppare e fare debugging di programmi che
funzionano _direttamente_ senza bisogno di essere "tradotti" se non con
una banale tabella di conversione nel corrispondente codice binario.
L'assembly quindi è un linguaggio di programmazione a "basso livello",
livello che sale man mano che i linguaggi diventano /simbolici/, come
Fortran, C, Python fino al Lisp.

a causa della complessità della programmazione in assembly, tale
linguaggio viene usato solo ed esclusivamente per pochissimi programmi
per i quali è indispensabile accedere direttamente alla CPU o ad altro
hardware.

per approfondimenti sul linguaggio macchina puoi partire da qui:
https://it.wikipedia.org/wiki/Linguaggio_macchina

la prima e _fondamentale_ conseguenza di tutto ciò espresso sopra è che
tutti programmi scritti in linguaggi di programmazione (assembly a parte
per i motivi detti prima) _devono_ essere "tradotti" in linguaggio
macchina e la traduzione è effettuata per mezzo di altri... /programmi/,
che a loro volta sono stati scritti in un linguaggio di programmazione e
"tradotti" da alti... /programmi/; e così via fino al primo programma
che è stato scritto direttamente in assembly (da un essere _umano_).

tutto quello che "succede" dentro un calcolatore è _determinato_ da
questo lunga /catena/ (supply chain) di "traduzione" da linguaggi di
programmazione ad alto livello a linguaggio macchina, processo che viene
chiamato "bootstrappable builds" [1].

[...]

> quel che ho capito è che la macchina intende soltanto 0 / 1, tutto il
> problema ma proprio tutto nasce da qui,

sì, nasce tutto, ma proprio tutto da qui :-)

> come tradurre umano in zerounese e viceversa.

solo una piccolissima parte "dell'umano" può essere espressa in un
linguaggio di programmazione, anche il più completo dei linguaggi di
programmazione, il Lisp, è estremamente limitato nelle sue capacità di
"esprimere l'umano" (o meglio, è molto ma molto ma molto complesso
raggiungere un simile livello di espressività [2]).

le sole cose che si possono esprimere per essere eseguite da un
calcolatore sono quelle possibili coi linguaggi di programmazione ad
alto livello (o anche in assembly, ma in /rare/ occasioni)

il "viceversa" invece è _lettarelmente_ impossibile: non esiste un modo
per tradurre lo zerounese in umano, cioè nel linguaggio di
programmazione ad alto livello usato per generare lo zerounese

capisci perché, /linguisticamente/ parlando, è importante partire da
queste basi per sviluppare tutto il resto del dibattito?

[...]

spero di non essere stato troppo tecnico ma nemmeno troppo all'acqua di
rose :-)

un caro saluto, 380°



[1] https://bootstrappable.org/

[2] la ricerca iniziale sull'Intelligenza Artificiale si è spesa molto
sulla possibilità di sviluppare Intelligenza Artificiale per mezzo di
rappresentazioni simboliche di alto livello
https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence

--
380° (Giovanni Biscuolo public alter ego)

«Noi, incompetenti come siamo,
 non abbiamo alcun titolo per suggerire alcunché»

Disinformation flourishes because many people care deeply about injustice
but very few check the facts.  Ask me about <https://stallmansupport.org>.

Reply via email to