Spostati dal Patch Tuesday: è l'Ada Lovelace Day! Intelligenza dei dati PlatoBlockchain. Ricerca verticale. Ai.

Passa al Patch Tuesday: è il giorno di Ada Lovelace!

Il secondo martedì di ogni mese è il giorno regolare di Microsoft per gli aggiornamenti di sicurezza, ancora conosciuto da quasi tutti con il suo soprannome non ufficiale di "Patch Tuesday".

Ma lo è anche il secondo martedì di ottobre Il giorno di Ada Lovelace, celebrando Ada, contessa di Lovelace.

Ada è stata una vera pioniera non solo dell'informatica, ma anche dell'informatica, e ha dato il suo nome al linguaggio di programmazione Ada.

La lingua Ada, in modo intrigante, è emersa da un progetto del Dipartimento della Difesa degli Stati Uniti volto a "debabelizzare" il mondo della codifica governativa, in cui ogni dipartimento sembrava preferire una lingua diversa, o un dialetto linguistico diverso, rendendolo più difficile, più costoso e meno affidabili per farli lavorare insieme.

Ada aveva numerose caratteristiche sintattiche volte a migliorare la leggibilità ed evitare errori comuni. A differenza dei commenti in C, che iniziano con /* e corri fino al prossimo */, forse molte righe dopo, Ada semplicemente ignora qualsiasi cosa dopo -- su una riga qualsiasi, quindi i commenti non possono essere eseguiti accidentalmente oltre il previsto. Invece di racchiudere tutti i blocchi di codice multilinea tra parentesi ondulate ({...}, conosciuto anche come bretelle), Ada ha un terminatore univoco per ogni tipo di blocco multilinea, ad es end record, end loop ed end if. Sospettiamo che Ada Lovelace avrebbe applaudito la chiarezza del suo omonimo linguaggio, ma il linguaggio Ada non ha mai preso piede e la sintassi delle parentesi ondulate di C ha in gran parte vinto la gara, con Python forse l'unico linguaggio a parentesi non ondulate in uso diffuso. Le parentesi ondulate sono un aspetto vitale di C, C++, C#, Go, Java, JavaScript, Perl, Rust e molti altri linguaggi popolari.

L'era di Ada Lovelace

Potresti essere sorpreso di scoprire, dato quanto il nome di Ada sia fortemente associato agli inizi dell'informatica, che visse nella prima metà del diciannovesimo secolo, molto prima che esistesse qualsiasi cosa che attualmente riconosciamo come computer, o anche calcolatrice .

(Ada morì di cancro all'utero nel 1852 a soli 36 anni.)

Ma sebbene i computer nel loro senso moderno non esistessero nel 1800, loro quasi fatto.

Ecco come è quasi successo.

Charles Babbage, nei primi anni del 1800, ideò notoriamente un dispositivo di calcolo meccanico chiamato Motore di differenza che potrebbe, almeno in teoria, risolvere automaticamente equazioni polinomiali di sesto grado, ad esempio trovando valori per X che soddisfino:

aX6 +bX5 +cX4 +dX3 +ex2 + fX + g = 0

Il governo del Regno Unito era interessato, perché un dispositivo di questo tipo poteva essere utilizzato per creare tabelle matematiche accurate, come radici quadrate, logaritmi e rapporti trigonometrici.

E qualsiasi macchina abile nei calcoli trigonometrici sarebbe utile anche per calcolare cose come le tabelle di artiglieria che potrebbero rivoluzionare la precisione dell'artiglieria a terra e in mare.

Ma Babbage aveva due problemi.

In primo luogo, non è mai riuscito a raggiungere la precisione ingegneristica necessaria per far funzionare correttamente il Difference Engine, perché prevedeva un numero sufficiente di ingranaggi ad incastro che il gioco (minuscole ma cumulative imprecisioni che portavano a "sciatta" nel meccanismo) lo avrebbero bloccato.

In secondo luogo, sembra aver perso interesse per il Difference Engine quando si è reso conto che era un vicolo cieco: in termini moderni, puoi pensarlo come una calcolatrice tascabile, ma non come un tablet o un laptop.

Quindi Babbage è andato avanti con il design di un dispositivo ancora più complesso che ha soprannominato il Motore analitico, che potrebbe risolvere problemi scientifici molto più generali di un tipo di equazione polinomiale.

Forse non sorprende, anche se purtroppo con il senno di poi. il governo non era particolarmente interessato a finanziare il progetto più avanzato di Babbage.

Dato che non era riuscito a costruire il meccanismo necessario per un risolutore di equazioni molto più semplice, che possibilità aveva un computer gigante, alimentato a vapore e multiuso, di fornire risultati utili?

Il circuito congressuale europeo

In una curiosa svolta della cooperazione internazionale e multilingue, Babbage si è recato in Italia per tenere una conferenza sulla promozione del suo motore analitico.

Tra il pubblico c'era un ingegnere militare di nome il capitano Luigi Menabrea, che fu così ispirato a collaborare con Babbage per produrre un documento del 1842 che descriveva la macchina.

Nonostante fosse italiano, Menabrea pubblicò il suo articolo in francese...

…ed è stata poi Ada Lovelace a tradurre l'articolo di Menabrea in inglese.

Su sollecitazione di Babbage, Ada aggiunse anche una serie di Note del Traduttore, che si è rivelato non solo più del doppio del rapporto originale di Menabrea, ma anche più intrigante, spiegando diverse importanti caratteristiche di quello che oggi chiameremmo un computer multiuso.

Walter Isaacson, nel suo libro di ottima leggibilità Gli innovatori, pubblicato nel 2014, descrive come Ada “esplorò quattro concetti che avrebbero avuto risonanza storica un secolo dopo, quando finalmente nacque il computer”:

  • Ada ha riconosciuto che l'Analytical Engine, a differenza del Difference Engine, era davvero un dispositivo multiuso, perché potrebbe non solo essere programmato per fare una cosa, ma anche, e relativamente facilmente, essere riprogrammato per svolgere un compito completamente diverso.

Nelle stesse parole di Ada (questa era un'epoca in cui la letteratura scientifica aveva ancora un contatto con la letteratura un po' più di quanto forse non lo sia oggi):

Il Difference Engine non può in realtà (come già in parte spiegato) altro che aggiungere; e ogni altro procedimento, non eccettuato quello di semplice sottrazione, moltiplicazione e divisione, può esser compiuto da esso solo nella misura in cui è possibile, con giudiziose disposizioni e artifici matematici, ridurli a una serie di addizioni. Il metodo delle differenze è, infatti, un metodo delle addizioni; e poiché include nei suoi mezzi un numero maggiore di risultati ottenibili per semplice addizione, rispetto a qualsiasi altro principio matematico, è stato scelto molto opportunamente come base su cui costruire una macchina addizionatrice, in modo da dare ai poteri di tale macchina la gamma più ampia possibile. Il motore analitico, invece, può aggiungere, sottrarre, moltiplicare o dividere con uguale facilità; ed esegue ciascuna di queste quattro operazioni in modo diretto, senza l'aiuto di nessuna delle altre tre. Questo fatto implica tutto; ed è appena necessario sottolineare, ad esempio, che mentre il Difference Engine può semplicemente tabulare, ed è incapace di svilupparsi, il motore analitico può tabulare o sviluppare.

  • Ada si rese conto che il motore analitico non si limitava alla codifica e al calcolo con i numeri. Sebbene digitali e basate sulla capacità di eseguire calcoli numerici, queste operazioni digitali, ha spiegato, potrebbero in teoria rappresentare proposizioni logiche (come diamo per scontato oggi in if ... then ... else ... end if dichiarazioni), note musicali e così via.

Come dice Ada:

[La macchina analitica] potrebbero agire su altre cose oltre al numero, se si trovassero oggetti le cui relazioni fondamentali reciproche potrebbero essere espresse da quelle della scienza astratta delle operazioni, e che dovrebbero essere anche suscettibili di adattamenti all'azione della notazione operativa e del meccanismo di il motore. Supponendo, ad esempio, che le relazioni fondamentali dei suoni acuti nella scienza dell'armonia e della composizione musicale fossero suscettibili di tale espressione e adattamenti, il motore potrebbe comporre brani musicali elaborati e scientifici di qualsiasi grado di complessità o estensione. L'Analytical Engine è un'incarnazione della scienza delle operazioni, costruita con particolare riferimento al numero astratto come oggetto di tali operazioni.

  • Ada ha escogitato il concetto di riutilizzare parti di quelli che oggi chiamiamo programmi. In questo senso si può dire che abbia inventato il concetto di subroutine, comprese le subroutine ricorsive (funzioni che semplificano la soluzione scomponendo un calcolo in una serie di sottocalcoli simili, e quindi chiamandosi).
  • Ada per prima cosa ha affrontato utilmente la domanda "Le macchine possono pensare?" Questo è un problema che ci preoccupa da allora.

La connessione Frankenstein

Il padre di Ada (anche se non l'ha mai incontrato) era il famigerato poeta Lord Byron, che trascorse in modo memorabile una vacanza piovosa in Svizzera scrivendo storie dell'orrore con i suoi amici letterati Percy e Mary Shelley.

Gli sforzi di Byron e Percy Shelley in questa amichevole competizione di scrittura sono completamente dimenticati oggi, ma il romanzo seminale di Mary Shelley Frankenstein; o, Il moderno Prometeo (pubblicato nel 1818) è popolare e rispettato fino ad oggi.

La storia di Frankenstein ha esplorato notoriamente i dilemmi morali che circondano quella che oggi potremmo chiamare intelligenza artificiale. (Frankenstein, non dimenticare, è stato lo scienziato che ha condotto l'esperimento, non l'IA emersa dal progetto.)

Ada, tuttavia, non sembrava condividere le preoccupazioni distopiche dell'amico di suo padre sui motori analitici, o addirittura sui computer in generale.

Ha offerto il parere, nella sua parte finale Note del Traduttore, quella:

Il motore analitico non ha alcuna pretesa di originare nulla. Può fare tutto ciò che sappiamo come ordinargli di eseguire. Può seguire l'analisi; ma non ha potere di anticipare alcuna relazione o verità analitica. La sua provincia è di aiutarci a mettere a disposizione ciò che già conosciamo. Questo è calcolato per effettuare principalmente e principalmente, naturalmente, attraverso le sue facoltà esecutive; ma è probabile che eserciti un'influenza indiretta e reciproca sulla scienza stessa in un altro modo. Poiché, distribuendo e combinando in modo tale le verità e le formule dell'analisi, affinché possano diventare più facilmente e rapidamente suscettibili alle combinazioni meccaniche del motore, le relazioni e la natura di molti soggetti in quella scienza sono necessariamente gettate in nuove luci, e più approfondito. Questa è una conseguenza decisamente indiretta, e alquanto speculativa, di tale invenzione.

Poco più di 100 anni dopo, quando Alan Turing ha notoriamente rivisitato la questione dell'intelligenza artificiale nel suo stesso articolo Macchinari e intelligenza informatica, e ha presentato il suo ora famoso Test di Turing, lo ha soprannominato L'obiezione di Lady Lovelace.

Cosa fare?

La prossima volta che ti ritrovi a scrivere codice come...

   -- Una cosa strana: la funzione Ackermann. -- Ricorsivo calcolabile, ma non primitivo! -- (Non puoi scriverlo con i semplici cicli for --, ma puoi essere sicuro che finirà, -- anche se richiede moooolto tempo.) local ack = function(m,n) if m == 0 then return n+1 end if n == 0 then return ack(m-1,1) end return ack(m-1,ack(m,n-1)) end

...ricorda che le subroutine ricorsive di questo tipo sono nate tutte nell'immaginazione scientifica di qualcuno che sapeva come dovrebbe essere un computer e come sarebbe probabilmente stato, ma visse (e purtroppo morì molto giovane) 100 anni prima di qualsiasi dispositivo del genere esisteva per lei da hackerare per davvero.

L'hacking su computer reali è una cosa, ma l'hacking intenzionale su computer immaginari è, al giorno d'oggi, qualcosa che possiamo solo immaginare.

Buona giornata di Ada Lovelace!


Timestamp:

Di più da Sicurezza nuda