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>.