
[Musica]
okay, questo discorso riguarda l’errore
gestione e come costruiamo fault-tolerant
sistemi e quindi cosa è un fault-tolerant
sistema avremo il pensiero tollerante
il sistema giudiziario è tollerante ai guasti se lo fa
continua a lavorare anche se le cose lo sono
sbagliato
quindi potrebbe non fare tutto ciò che è supposto
fare ma non cadrà semplicemente in a
mucchio orribile sul pavimento e fermati
funziona bene e ho fatto questo
per molto tempo stavo per dire
lavorare come questo non è mai finito è
sempre in corso sono sempre
trovare modi migliori per farlo sono stato
facendolo per circa 35 anni
e non pensiamo se vediamo ancora
nuovi modi per attaccare il problema
l’hardware può fallire relativamente
Hardware non comune tenta di essere carino
affidabile una volta che funziona
funziona abbastanza spesso se fallisce fallisce
catastroficamente e non si può mettere
di nuovo in servizio software sull’altro
la mano fallisce moltissimo c’è molto di più
errori software e guasti hardware così
quindi se costruirai un
sistema fault-tolerant che devi prendere
conto del software come piuttosto che
errori hardware e errori hardware voi
puoi più o meno eliminarlo con
replica si potrebbe semplicemente replicare il
hardware più volte e la possibilità è
che una volta replicato che entrambi
fallire allo stesso tempo molto basso, quindi intendo
se hai qualche hardware e il
è probabile che fallisca in un dato momento
intervalli da dieci a meno tre loro
arrivare a molto e sono
indipendente la probabilità che entrambi facciano
fallire allo stesso tempo dieci al
meno sei e se ottieni un centinaio di lotti
dell’hardware la possibilità che falliscano tutti
nello stesso tempo è 10 a meno 300
è abbastanza basso in modo così fondamentalmente possiamo
rendere i sistemi affidabili come vogliamo
a condizione che possiamo replicarli e
fornito
okay indipendente, quindi ho intenzione di dare
solo una piccola panoramica di dove sono
venendo da e quello che penso a questo
roba e io considero quel difetto
la tolleranza non può essere raggiunta da un singolo
computer quindi non lo farò non litigherò
il caso riguardante la dimostrazione dei sistemi di tipo
sistemi per essere corretti e tutto il genere
di cose che sono completamente diverse
soggetto ho intenzione di discutere il caso
i computer possono fallire perché vengono colpiti
da un fulmine
o qualcosa del genere ero su un pannello
dibattito con Tony Hall dice che sì
non hai questo tipo di sistema che non puoi
Dimostrare la correttezza di questo no, ho detto sì
ma i teoremi della tua pratica non stanno andando
per aiutarti se i computer colpiscono
fulmine okay, quindi sto parlando
sistemi che possono essere colpiti da un fulmine sono
parlando di come costruiamo
sistemi fault-tolerant dai componenti
ciò può fallire e la mia visione della vita è
che non saremo mai in grado di
eliminare l’errore di fallimento è sempre
accadrà non potremo mai fare sistema
coerente ci sarà sempre
incoerenze nel sistema tutto il
è ora che viviamo con questo
sarà come un cancro o qualcosa del genere
quelle parti del sistema non funzioneranno
ma deve ancora funzionare per certo
misura nonostante il fatto che individuo
i componenti stanno fallendo, quindi il primo
la prima verità evidente è quella
non è possibile creare un sistema tollerante ai guasti
da un singolo computer e il motivo per
che è ovvio che il computer potrebbe
fallire hai solo un computer e basta
fallisce sei fregato niente che tu possa fare
su questo e quindi è necessario
diversi computer, naturalmente, se lo hai
ha due computer se entrambi falliscono
sei fregato che ne hai tre
computer se entrambi falliscono, ma tutti
fallire allo stesso tempo sei fregato ma
la probabilità di ciò va giù se
sono indipendenti bene così tanto
affermazione che devi avere diversi
i computer implicano un sacco di cose
implica che i tuoi programmi non saranno
concomitante perché ne hai diversi
computer in cui i programmi sono in esecuzione
nello stesso tempo e questo è ciò che chiamiamo
concorrenza
i programmi verranno eseguiti in parallelo
i programmi che scrivi sono distribuiti
programmi questi programmi sono le leggi
di fisica che dobbiamo prendere in considerazione
la quantità di tempo necessario da
messaggi di passare tra le macchine che
obbedisce anche a certe leggi logiche per cui
esempio in un sistema distribuito quindi io
inviare un messaggio a una macchina remota e io
non ottenere una risposta indietro non lo so
perché una delle due cose può accadere
il computer remoto può aver fallito o il
la rete di comunicazione può aver fallito
e non saprò mai perché, a meno che non lo faccia
ha più prove per quello che sta succedendo così
non possiamo violare queste leggi fisiche
questi sono intrinseci al problema se noi
prova a violarli e non a prestare attenzione
a voi conoscono le leggi della fisica che faremo
costruire sistemi che semplicemente non funzionano e io
detto questa mattina nella mia nota principale ricordo
in un sistema distribuito non si sa mai
come vanno le cose dai nodi remoti
sapere come erano l’ ultima volta che loro
te l’ho detto se ti chiedo quanto
soldi nel tuo conto bancario che mi dici
Ho $ 200 sul mio conto in banca tutti i
sai è l’ ultima volta che mi hai detto che è
$ 200
Non posso supporre che tu abbia ancora
$ 200 un minuto dopo, perché potresti
hanno trasferito denaro da quella
conto così previsto teniamo che
conto mentre scriviamo i nostri programmi
non entreremo in nessuna logica
enigmi e qualsiasi difetto va bene così dentro
questo è il passaggio dei messaggi di sistema
inevitabile è inevitabile perché lo abbiamo
ha due cose, come possono?
parlare tra loro senza l’invio
il messaggio che passa il messaggio è inevitabile
va bene così un messaggio che passa è in realtà
la base della programmazione orientata agli oggetti
Alan Kay ha detto che conosci la grande storia di
la programmazione orientata agli oggetti è il
messaggio che passa tutte queste classi
metodi che è il tipo di dati astratti che è
questo non è il fondamento di
programmazione di programmazione orientata agli oggetti
le lingue dovrebbero rendere questo ciò che intendo
questo significa parallela concorrenza
programmazione programmazione distribuita così
sicuro
rendi questo facile III barrato la parola
facile e sostituito con fattibile è
non è facile non è facile ma è fattibile
giusto così come sono i singoli computer
parte di quello che chiamo il piccolo problema
come i computer che sono interconnessi
lavorare insieme e i protocolli che
usano è quello che io chiamo il grande problema
e questo è il problema interessante io
non importa davvero come l’individuo
le cose funzionano ma a me interessa il sistema
nel complesso si comporta e in realtà voglio
allo stesso modo per programmare grandi sistemi
con più sistemi se avessi condiviso
sistema di memoria a cui non tendi se tu
non programmare con message party quando I
programmare una cosa su scala planetaria
i singoli processi inviano messaggi a
l’un l’altro non c’è altro modo di farlo
se ho un’applicazione con un nodo
in Svezia un altro in America sono di
corso inviando messaggi tra ciascuno
altro quindi se programò in quel modo su scala
perché non dovrei programmare allo stesso modo a
piccola scala quando sono tutti sullo stesso
processore il fatto se si utilizza condiviso
elaborazione della memoria e si prova e scala
fuori che non puoi perché il
Modifiche al modello di programmazione che non mi piacciono
che non mi piacciono due modi diversi di
programmazione come un modo di programmazione
in base al messaggio che passa un messaggio
il passaggio è ed ero come citare da
Alan Kay che ha inventato il termine di
programmazione orientata agli oggetti e in a
messaggio alla mailing list cigolante lui
ha detto che la grande idea è la messaggistica di grandi dimensioni
l’idea è la messaggistica e, naturalmente
la messaggistica ha una roba orientata agli oggetti
Tradizionalmente è stato fatto in modo errato I
direi che è l’unica opportunità
linguaggio nel mondo perché è il
solo uno che esegue correttamente la messaggistica
la messaggistica nelle chiacchiere è ad esempio
non inviare messaggi
è una chiamata di metodo mascherata e loro sono
in realtà sincrono non è molto buono
lì l’altra posizione di integrazione
con il cavallo Terry che comunica
processi sequenziali quindi compagnia aerea che è
una lingua che ho inventato è derivata da
il piccolo discorso e il Prolog influenzati da
idee da CSP e unifica l’idea
dalla programmazione concorrente con
programmazione orientata agli oggetti e
il programma funzionale è quel tipo di
unifica queste cose in un quadro che
rende facile capire, penso e
segue le leggi della fisica che ha
questo messaggio asincrono che passa I I
non sono d’accordo con persone come Tony Hoare
quando dicono che possiamo fare come puoi fare
la luce di passaggio dei messaggi sincroni
non viaggiare infinitamente veloce c’è il
ritardo di propagazione diventano i due sistemi
incoerente mentre il messaggio è
passando dopo che il messaggio è arrivato
può essere lì può essere coerente ma anche
ci sono molti teoremi che dicono
che non possono ed è stato progettato
Ellen è stato progettato per la programmazione
sistemi fault-tolerant e dovrei dire
ora non voglio dire che sono un’applicazione
ragazzo che ho inventato compagnia aerea per risolvere un
problema che non ho non ho iniziato
inventando un linguaggio di programmazione e
quindi trovare un problema per risolverlo era il
in un altro modo ho avuto un problema
risolvi quale rendere tollerante ai guasti
il sistema per Ericsson e io l’ho inventato
questo linguaggio chiamato Erlang e gentile
di diffusione in modo che controlli circa la metà del
le reti del mondo controlla cosa
Whatsapp è scritto in Erlang un sacco di
cose scritte in Elling non lo sai
ci sono in realtà scritti in Erlang e
tutte le reti Ericsson sono programmate
tutti i dati intelligenti sono quei dati intelligenti
impostare così tutto programmato lì come
quindi è una specie di lavoro e puoi
programma ogni sorta di cose in questo modo
costruzione di software fault tolerant bolle
giù per rilevare errori e fare
qualcosa quando ricevi un errore ma di
Certo che non vuoi farlo localmente
ricorda che ho detto che conosci il tutto
processo di mine potrebbe bloccarsi in modo davvero
quando si rileva un errore che si desidera risolvere
da qualche altra parte è come se io avessi
un attacco di cuore e tipo di cadere
qui non posso andare a correre fuori e prendere un
defibrillatore e
prova a ricominciare il mio cuore in
prima fila devo farlo per me tu
sappiamo che non possiamo correggere i nostri errori
non sarebbe fuori da qualcosa di malato
altrimenti deve aiutarci, quindi questa idea è
davvero fondamentale per Erlang e riguardo
errori bene i loro errori che possiamo rilevare
al momento della compilazione è grandioso
è davvero bello i loro errori che possiamo
rilevare in fase di esecuzione
è bello che siano i nostri che possiamo dedurre
dal comportamento del sistema non possiamo
in realtà li rilevano ma è un
invariante che ti abbiamo infranto, lo sai
cosa dovrebbe essere sempre verde ed è
risulta essere rosso sappiamo qualcosa
è andato storto ci sono riproducibili
errori questo è veramente bello se lo hai
errori riproducibili e non ci sono
errori riproducibili sono una specie di
nascondendo bug e cose del genere
due volte non si ripresenta mai più
in un certo senso è importante
non sono riproducibili, quindi cosa facciamo?
non fare niente bene non puoi riprodurli
l’importante è il sistema stesso
porta avanti e ripara se stesso e
continua a lavorare è molto bello se noi
in grado di riprodurre e farlo ma è più
importante che non macini a a
fermati e fermati, quindi stiamo cercando di fare
i sistemi che vogliono avviarlo funzioneranno
per sempre non sarà mai fermato così il
la filosofia è trovare metodi per dimostrarlo
software in fase di compilazione, se possibile
questo è tutto il tipo di cui abbiamo bisogno
sai dimostrare che il programma è
corretto si può programmare in ruggine e
cose del genere o qualsiasi altra cosa e forse
puoi dimostrarlo corretto ma anche
supporre che il software sia errato
ed è incoerente e che questi
gli errori si manifesteranno a
runtime e quindi dobbiamo fare qualcosa
sugli errori nel software che manifest
loro e il software ce ne sono molti
prove del fallimento del software è tutto intorno
noi ogni giorno abbiamo costruito sistemi che
sono così maledettamente complicati che nessuno
capisce come funzionano e falliscono
tutto il tempo nessuno capisce perché
sono diventati come sistemi biologici
e il meglio che possiamo sperare è quello una volta
il fallimento è stato un detective che possiamo
riavvia i sistemi che ricominceranno
giusto così provando l’auto consistenza di
i piccoli programmi non sono d’aiuto, quindi
che prove fanno i test dimostrano che il
il sistema è auto-coerente dimostrano
che il sistema è giusto no, ho spesso
trovato i programmi in cui si trovano i casi di test
non corretto e anche il programma
non corretto perché lui
Ho ottenuto ottimi casi di test quindi fondamentalmente a
digitare un sistema di tipi sta dimostrando che lì
non sono consistenze interne nel
sistema stesso non lo sta dimostrando
il programma risolve qualsiasi problema reale è
cose di miglioramento completamente indipendenti è
difficile e ho detto questo è più
quindi salterò su quello B Sì
piccole cose possono essere piccole cose
dimostrato di essere auto-consistente e di
Certo, se possiamo farlo è buono
Non sono contrario a farlo, ma grande
assemblee di piccole cose si comportano in
modi estremamente complicati che facciamo
non capisco la cosa migliore che facciamo
mettere invarianti controllare gli eventi sono
vero e se violiamo quelle invarianti
basta rinunciare e ricominciare, quindi abbi un
cronologia del mio coinvolgimento in tutto questo
tipo di cose e risale al 1980
quando ho iniziato a guardare
sistemi fault-tolerant perché ho ottenuto un
programmazione del lavoro Viking che era
Il primo satellite svedese ed è il
la prima volta ho saputo della colpa
tolleranza e i ragazzi hanno detto così così
cosa succede se ci sono difetti in
il software
bene le missioni finite
Non siamo in grado di concatenare è un satellite è
volando intorno alla terra il software è
sbaglio, sono buggin , non faccio niente
che funzionerà sì, va bene un 1985 mi sono trasferito a
Ericsson e ha iniziato a lavorare
qualcosa che è stato un sostituto di Plex
Plex con un linguaggio di programmazione che
Ericsson ha programmato tutti questi prodotti
dentro e sì
flex era basato su diverse idee
basato sul passaggio del messaggio
linguaggio di programmazione in realtà
orientato agli oggetti brutha orientato agli oggetti
l’hardware è uno dei primi veri
l’hardware orientato agli oggetti è la cosa
su tutto ciò era effetti con il
il linguaggio proprietario non è mai sfuggito
fuori Ericsson l’hardware che era
eseguito con hardware proprietario
che non è mai sfuggito al di fuori delle telecomunicazioni
mondo ma era altamente affidabile
processori duplicati specificati quando I
uniti nel 1985 per avere un tempo di inattività in
tre minuti all’anno e con penalità
clausola o qualche volta $ 50.000 se tu fossi
giù per più di tre minuti all’anno
quindi lo stiamo facendo negli anni ’80 e
questo era normale, così nel 1986 l’avrei fatto
tipo di orientato agli oggetti unificato
programmazione con funzione
Non ho davvero capito come
stupido aveva al momento qualcuno
sottolineato questo alcuni anni dopo e io
ho pensato di sì, suppongo di averlo fatto
in realtà non lo realizzò in quel momento
e abbiamo costruito diversi prodotti in Erlang
all’interno di Ericsson e nel 1998 una cosa divertente
successo che Ellen è stato messo al bando e così è stato
tipo di un po ‘ di preoccupazione al momento io
non mi piaceva davvero che eravamo infastiditi
su questo, ma una conseguenza di ciò fu
siamo riusciti a convincere l’ Ericsson
gestione bene se non si desidera utilizzare
Se li puoi vietare, potremmo anche
renderlo open source e quindi la ragione
che Ellen è diventato open source
trattare con bannato e per strano
coincidenza quattro giorni dopo che è stata fatta
in open source in realtà tutto il
laboratorio di scienze informatiche e il
società che è solo una di queste
coincidenze che la gente non sarà mai
in grado di spiegare e così abbiamo iniziato blu
coda a questa società e che è durata
circa tre anni ed è stato allevato da
Sistemi web Altium $ 150.000.000 e I
trasferito su sistemi web Alton e in
i sistemi web sono stati pubblicati per sei giorni
dopo che ci avevano comprato, fu comprato
da Nortel Networks e questo era nel
altezza alla televisione
questo era poco prima del boom delle telecomunicazioni
crash Nortel Networks era un’azienda che
formata perché stava acquistando
le piccole aziende come pazzi lo dico sul serio
acquistato in sistemi web per 80 miliardi
dollari che è dopo Ludacris e poi
Nortel Networks ha detto che lo erano
ritirato la loro dichiarazione finanziaria ha detto
hanno fatto e poi Nortel Networks
si è schiantato causando la crisi delle telecomunicazioni e
Sono stato licenziato, il che è stato abbastanza divertente e io
trasferito in sei Svezia per fare computer
scienza e ho ottenuto un dottorato di ricerca e sono andato
torna a Ericsson e durante questo periodo
diverse cose sono successe all’inizio
questo modello di compagnia aerea di calcolo questo
idea di costruire sistemi di memoria condivisa
i sistemi erano e generalmente un generale
le persone respinte hanno detto che non lo saranno
abbastanza efficiente principalmente l’efficienza noi
possiamo non possiamo costruire sistemi ci sono e
alla fine di quel periodo questo Ellingham
il modello di calcolo è stato ampiamente adottato
e accettato in molti diversi
i linguaggi di programmazione quindi è la base
di modelli di studiosi per le cose che
si verificano sono basati direttamente sul OTP
roba e questi vengono tutti dal
lavoro aereo originale e loro
le derivazioni ci sono così lui stava andando in bicicletta
la prima cosa bella piccolo satellite
bello giusto così tipi di sistemi
la tolleranza ai guasti è diversa
interpretazioni intendo un diverso
la quantità di ingegneria che ci sta andando è
costruiremo molto affidabile
sistemi intendo i sistemi che controllano
centrali nucleari il controllo delle armi
sistema per armi nucleari cose simili
che sono altamente affidabili
abbiamo sistemi affidabili forse
auto senza guidatore e cose loro
non importa se uccido poche persone
non daranno miliardi di dollari
persone milioni di persone se ne vanno
sbagliato intendo il the il distinto è
quanti milioni di persone uccidiamo se si
va male se la risposta o quanti
miliardi di dollari lo fa
sostituire il satellite intendo un satellite
lancio ti costa quello che è un satellite
lancio costa 500 milioni di dollari o
qualcosa del genere è molto
ingegneria in esso quindi è anche un costo
nella vita umana o nel sostituire questo
determina la quantità di ingegneria voi
inserendola fondamentalmente possiamo fare molto
sistemi affidabili
mettere un sacco di ingegneria in esso poi
abbiamo macchine senza conducente ne uccido alcune
la gente non importa a nessuno
ben oltre gli avvocati e gli avvocati
Avvocati ci divertiremo
abbiamo il tipo di cose affidabili
infastidisce le persone se falliscono e noi abbiamo
cose losche abbiamo appena mostrato un’ombra
tu sai cose che falliscono tutto il tempo
live streaming di musica da Spotify I
ascolta musica per un’ora basta fermarsi
per 30 secondi non lo so
avviso non scegliere sul telefono e
urlo il suo orribile che urlo
Spotify o io urlo ai miei occhi ma
nessuno lo sa, nessuno sa che non lo è
strumentato in modo che sappiamo se lo siamo
andando a strumentare ogni passo che potremmo fare
dire esattamente quale componente ha fallito
e in effetti quello che vedrei è il prossimo
generazione di computer che voi ragazzi
stanno per venire a costruire se tu
strumento tutti questi sistemi ad un legale
requisito quindi quando roba non funziona
non solo sappiamo perché non funziona noi
sapere esattamente chi è la colpa perché se
colleghi 20 cose insieme e
sono tutti fare tutti devono lavorare per
funziona e qualcosa va storto se
non sappiamo quale di quelle 20 cose
sono andate male e non sappiamo a chi
colpa e questa è la base di un contratto
giusto, quindi abbiamo bisogno di avere questa idea di
affidabilità del servizio nel consumatore
prodotti perché quello che abbiamo ottenuto oggi il nostro
sistemi che se funzionano sono meravigliosi
sono molto per te non è la mia TV , è molto
meglio della TV che avevamo negli anni ’60 o
TV analogiche anni ’70 ma l’affidabilità è
molto peggio se funziona è bello se lo fosse
non funziona nessuno sa perché riavviamo
non va bene e se è un computer
scienziati, gente del computer, vogliamo
rimediare
questa è la prossima grande cosa che dobbiamo risolvere
come possiamo creare un software che funzioni
ragionevolmente bene anche se ci sono errori
nel software
la risposta è leggere i miei pezzi
quindi è abbastanza facile davvero ci sono
sei regole e per salvarti leggendo il mio
tesi ci sono sei requisiti sul
proprietà di base come il sistema deve
deve sostenere la concorrenza
perché le cose stanno accadendo allo stesso modo
tempo deve incapsulare gli errori noi
non voglio che l’errore si propaghi
il sistema non vogliamo il fatto nostro
il sistema si arresta in modo anomalo per bloccare un altro sistema
dobbiamo scoprire che colpa siamo noi
dobbiamo identificarlo, dobbiamo cambiare
il codice aggiunge alcuni sistemi in esecuzione e noi
bisogno di una conservazione stabile dal tutto
La cosa si blocca quando la riavviamo
torna nella memoria stabile e guarda
perché è andato in crash quindi c’è un metodo
rilevare tutti gli errori e solo crash
immediatamente se non puoi fare qualcosa
prova a fare qualcosa di più semplice, quindi costruiamo
calcoli nelle gerarchie degli alberi
dove al più alto livello se il sistema
sta funzionando perfettamente farà esattamente
quello che dovrebbe far pagare tutto
cose che dovrebbe fare e se qualcosa
va storto abbiamo lasciato cadere quel requisito di
facendo funzionare tutto e riduciamo noi
rilassare le nostre esigenze e farlo fare
qualcosa di leggermente più semplice che non
facciamo in modo che facciamo qualcosa di uniforme
più semplice e così via e, si spera, il
il sistema funzionerà ancora
forse con funzionalità ridotta ma è così
non cadrà completamente così costruiamo
alberi di computazione e dovremmo
identificare il kernel di errore l’errore
il kernel di un sistema è quella parte che
deve essere corretto ok questo è ciò che l’errore
il kernel è tutto ciò che è l’altro codice
può essere errato non importa il
error kernel è la parte del sistema
deve essere corretto se è tutto sbagliato
le scommesse sono spente ma il kernel dell’errore
deve essere corretto in modo che il kernel di errore in
il nostro Lang è piuttosto piccolo è come 200
linee di codice
è tutto a un anello zero. L’ho scritto
anni fa, Harden e io pensiamo che sia mai esistito
stato cambiato , ma assicurati che sia così
giusto e intendo dire che è così semplice
deve avere ragione
famose ultime parole sì e costruiamo
cose in alberi civili e fondamentalmente
se la roba in basso fallisce
le cose più in alto intrappoleranno quegli errori
e fare qualcosa è questo è costruito
in cose come la stessa supervisione di Acker
alberi questo è da qualche elemento del cursore
tipi oceano e il sistema urlante
in sé va bene così tutte le cose lavora per
utilizzare Ericsson per l’ impostazione intelligente dei dati
è usato da Whatsapp sequestrato da sir CERN
ho trovato il bosone di Higgs con gli affari finiti
Ho trovato il bosone di Higgs che compra in a
il database che usa couchdb cisco net arriva
in Cisco gestito da Erlang, questo è
chiamato spina dorsale è la salute nazionale
Database di servizi in Gran Bretagna essi Chubb
ora Oracle e sostituito con un
database open source scritto in Erlang
risparmiando un sacco di soldi
cose come rabbitmq scritte in compagnia aerea
giusto quindi cos’è un errore come facciamo noi
scopri un arabo cosa facciamo se otteniamo
un errore vero quindi cos’è un errore bene
è una proprietà indesiderabile di a
il programma è qualcosa che blocca il
programma il valore che è e
deviazione corretta tra il desiderato
e comportamento osservato che trova il
programma di errore può trovare l’errore il
il programmatore può trovare l’errore quando
che stanno scrivendo il loro bene codice compilatore
sierra cosa dovresti fare
bene il sistema runtime trova un errore
errori aritmetici possiamo trovarli
dividere per zero di non un puntatore di numeri
errato era un voto senza senso in valori
che sono dichiarazioni switch senza senso
non si applicano ma cosa facciamo cosa facciamo
fare nel codice giusto quindi cosa dovremmo fare
fare quando il runtime trova un errore
potrei ignorarlo, non è una buona idea
potresti provare a sistemarlo tutto bene io
cambiato la vita prima o poi sì, lo sono
adesso sono davvero l’ultima volta
Li ho aggiornati oh oh, giusto no
il problema di provare a correggere gli errori è quello
peggiori le cose
non fai le cose meglio non farlo
importa che la regola missilistica non faccia
le cose peggiori non provano e sistemano le cose
schiantarsi immediatamente e assumere nel
architettura che non sarà qualcuno
la responsabilità altrui di risolvere il problema
perché costruiamo un’architettura gerarchica
tutto sommato è che il nostro software è
corretto se non è corretto sta andando
per schiantare qualcuno in questa supervisione
l’albero più in alto avremo il lavoro
di fissare quelle aree non nostre
responsabilità se è corretta così noi
crash immediatamente questo è in realtà
fondamentalmente riavviare il sistema quando a
il sistema fallisce, lo riavviamo ma quando lo siamo
facendo inchiodare quel riavvio sta prendendo un
microsecondo non sono stati presi due o tre
secondi o minuti o 30 secondi come in a
sistema operativo normale che riavvia il
sistema significa rilevare un processo ha
fallito e riavviarlo e così sarà
capita a velocità inferiori al microsecondo, quindi è così
piuttosto veloce proprio così oh così cosa dovrebbe
il programmatore era quello che c’è
programmatore quindi cosa fa un programmatore
quando non sanno cosa fare ignorano
Non è che non dovrebbe fare il login yeah
giusto scrivere in un file di registro che è molto
bene si e si schianta subito dopo
hai scritto nel file di registro e
dov’è il file di registro che abbiamo pagato
attenzione è molto stabile nella conservazione
bene grazie
staresti ascoltando bene
quindi in linguaggi di programmazione sequenziali
il singolo thread che si blocca non è ampiamente
praticato perché se ne hai preso uno solo
thread e si blocca che hai perso
tutte le cattive notizie, quindi qual è il grande
affrontare la concorrenza perché continuo a farlo
lassù su cuca ci sono
migliaia di linguaggi di programmazione e
sono tutti sequenziali e ci sono
tre nomi di programmazione in pratica quello
sono prevalenti parallelamente c’è a
conferenza abbiamo fondamentalmente solo compagnia aerea con a
nome diverso e un fronte diverso
ingresso e questo pony Pony carina
freddo
e poi c’è un carico di accademici
la lingua non è mai nessuno usa mi dispiace
non mi è piaciuto, quindi questo è un
programma sequenziale un processo va bene questo
è un sequenziale morto questo è un
programma sequenziale che si è arrestato in modo anomalo
niente che tu non abbia niente questo è un
programma parallelo okay questo è un parallelo
programma ora guarda Kathy questo è un
programma parallelo quando uno di questi
i processi si bloccano, aspetta un attimo, no
vederlo uno di quei processi, se tu
indietro giusto se puoi vederlo apparire
lì vedi ma quando vado avanti io
significa che non ti accorgi
hey go è quello che si è schiantato così noi
potrebbe tornare così Ellen ha questo contenuto
processi collegati collegati cos’è un link a
i collegamenti sono fatti in tempo reale quando tu
quando mostri graficamente cosa fa
significa che il link significa che se questo processo
muore questi altri processi stanno andando a
ricevi un messaggio che ti dice che il
processo è morto quindi posso immaginare se il
il processo di lettura fallisce quindi il blu
processo di lettura dei processi non ha il blu
i processi avranno un errore
messaggi che è un meccanismo di collegamento
inventato da Mike Williamson non l’ho fatto
inventalo
quindi, perché concomitante, ho detto quella colpa
Torrance è impossibile su un computer
e scalabile e poi questo è una specie di
divertente, okay, abbiamo appena detto colpa
la tolleranza è possibile impossibile su uno
computer e ben scalabile è impossibile
su un computer bene è una specie di
parzialmente vero, puoi scalare un po ‘
un po ‘ e ti sei riempito
quel computer una volta raggiunto il
i confini di quel computer non puoi
scala più devi passare a 2 o
3 4 4 5 6 7 10
lo scalabile è nel computer è
impossibile su un computer e qualcosa
altrimenti la sicurezza è molto promettente
impossibile perdere la sicurezza domestica è
molto difficile su un computer se
qualcuno ottiene un virus in quel computer
lì non hanno un virus o una cosa
in questo computer la ragione è questa
sono isolati, quindi possiamo fare
sistemi affidabili isolando il
componenti la mia banca aveva in una scatola dal mio
banca quando appiccico una carta in esso vado a
il sito Web e invia una sfida
Effettuato scrivo il codice della sfida
nella mia piccola scatola e attaccare la carta
è un altro numero più stretti e io tipo
quello indovina che cosa quella piccola scatola il
banca mi ha dato che non hanno mai inviato un
correzione del software a differenza di Apple a differenza di Google
non devono inviarmi correzioni di bug
per sicurezza ogni 10 giorni perché il
l’ultimo era sbagliato quindi perché è questo
software affidabile probabilmente solo perché
è una piccola cosa piccola e nessuno può
parla con lui non è collegato al
Internet e come comunica
il mio altro computer attraverso un out-of-band
metodo attraverso i miei occhi e le mie dita
è così che comunichiamo un po ‘
il numero viene visualizzato sullo schermo e io digito
nel mio computer così è in realtà
abbastanza difficile da hackerare che ha bisogno di a
drone sai un pò piuttosto rendi minuscolo
piccoli droni sulla dimensione di una zanzara
che si trova di mia spalla e guardarlo
quello che sto facendo e poi potresti hackerare
ma è difficile, quindi la sicurezza lo è
molto difficile su un computer e giusto
In realtà voglio lo stesso modo di programmare
Non voglio due modi diversi per farlo
programma non voglio un modo per programmare
sistemi locali e un altro modo di programmare
sistema distribuito Voglio solo un modo
fare tutto così questo è il mio caso per
concorrenza perché hai tutto questo
e dovrei dire bene solo tu lo sai
il mondo è
concurrent in realtà siamo una stanza con a
centinaia di persone o qualcosa siamo tutti
siamo tutti separati ma non di un tipo
una sorta di cervello unito di un gemello siamese con
un centinaio di cervello è collegato insieme a noi
inviare messaggi il messaggio è un suono noi
capire se i messaggi ricevuti sono
non essere chiesto ma hai sentito?
il mio messaggio cosa sono due più due
sì, vedi improvvisamente so che ha avuto il
messaggio e ha risposto perché sale
lui una sfida lui ha risposto rapidamente
bene in modo che possiamo rilevare gli errori come facciamo noi
rilevare errori Oh Harry per tutti i tipi di
I modi in cui lo facciamo per il tempo che ho
per finire Oh comprese le domande giuste
John me no coniglio su per dieci minuti e
nessuna domanda o guerra come cinque minuti
vedremo vedremo Devo solo parlare
ci sono un po ‘di aritmetica
errori di errori silenziosi e mortali dove
il programma non si arresta ma fornisce
un risultato errato questi sono orribili
e ci sono errori di errori rumorosi che
causare il crash del programma che amiamo rumoroso
errori odiamo gli errori silenziosi e mortali
errori silenziosi cose chiamate quiet non in
numeri
Oh, sono queste cose fantastiche
cose che hai mai visto in questo tipo di attesa
un momento
un silenzio ho ottenuto così ho un film cosa
un momento vediamo cosa succede è
si suppone che suoni il film, non è vero?
lo fa fa qualcosa
succede ma non c’è suono oh oh il
HDMI spegni l’audio questo è un razzo
Immagino cosa succedera ‘a posto io ho solo
ho cinque minuti
oh è meglio con il suono è a
la vista diceva che era un errore in un
programma Eider la linea rossa è l’errore
si blocca errori di programmazione silenziosi perché
sono silenziosi perché il programma
non sa che c’è un errore, quindi lo farei
Fai notare che l’ aritmetica è una bella cosa
fonte di errori silenziosi mi sono imbattuto
questo esegue il riquadro completo che è molto bello
questa è una formula calcolare trecento
e trenta tre virgola sette cinque volte
più largo il sei più alcune cose e groppa
questo tizio si chiama groppa quindi è così
il nome dell’autore ha scritto un articolo
su questo e ha dimostrato che se lo sei
eseguendo la precisione a 32 bit ottieni un punto
sette due e se lo fai in 64 bit
precisione che ottieni se lo fai dentro
128 precisione ottieni questo se tu
la risposta corretta è negativa quindi fondamentalmente
più precisione non ha aiutato in modo da chiederti
la domanda qui se tu se tu fossi un
programmatore di applicazioni e tu sei
programmazione nella tua lingua preferita
potrebbe essere sbagliato potrebbe essere Java
potrebbe essere Haskell potrebbe essere qualsiasi cosa
e ti viene data una formula del genere
probabilmente vi sedete e voi write
sai una specie di x uguale a tre punti
tre punti xy ^ 6 e così via e lo farai
supponiamo che abbia calcolato il giusto
il risultato non verrebbe utilizzato in virgola mobile
e la risposta conta se è una salute
sistema di cura se si tratta di un nucleare
pianta o qualcosa del genere tu stai meglio
non usare il virgola mobile se lo fai tu
meglio dimostrare che è giusto galleggiare
il punto non è caro davvero molto difficile
buona lezione, guarda John Gustafson
hai qualcosa su YouTube
oh divertente molto divertente oh
sì sì questo è un questo è
un ottimo esempio di lezione normalmente
raccomandato quindi l’aritmetica è molto
difficile riuscire a ottenere lo stesso
rispondi con precisione singola e doppia
precisione non significa che la risposta
è giusto bontà
no e conta che tu debba dimostrare
tutto per essere giusto così come la maggior parte
i programmatori credono che dovremmo avere un
quiz sì, dovrei mostrarlo a Tucson
quante persone credono che un vantaggio
parentesi B più C è uguale alla parentesi quadra
un plus B plus C bene ti sto mostrando il
rispondi sono diversi che è dove
metti le parentesi questo ha un
errori di arrotondamento che la maggior parte della gente pensa
la maggior parte dei programmatori pensa che questi
fornire lo stesso risultato per la maggior parte della programmazione
lingue no non lo fanno e compilatore
gli scrittori no non hanno un valore
errori sì programma non si blocca ma
i valori calcolati sono errati o
impreciso come sappiamo come lo sappiamo
è corretto quando è numerico
calcoli in bene se si è intrufolata nel
gli interi sono abbastanza ok ma se lo sei
fuori ha introdotto è piuttosto difficile
importa, dipende da cosa
le applicazioni utilizzate per non a
il numero è abbastanza ok ora sto cercando
per le diapositive che conosci vuoi Jim
qualcuno mi ha mandato che pensavo che fosse
bello giusto sì programmatore non lo so
cosa fare solo crash, lo chiamo il
lascia che si infranga la filosofia e cosa fai
fare quando si riceve un errore mantenuto
e invariante e prova a fare qualcosa
altro e abbiamo più tempo va bene così è
che tutti indovino no no no non è no no
Va bene così così qual è il messaggio che cosa è in
un messaggio va bene così quando costruiamo i sistemi
li costruiamo da scatole nere che
inviare messaggi a vicenda ora che cosa è
all’interno di una scatola nera è un programma ed è
scritto in un linguaggio di programmazione e
ci sono migliaia di dannati
linguaggio di programmazione whoo
non è lingua in cui sono scritti
ciò che è importante è il comportamento al
interfacce a posto, così Tony Hall ha introdotto
questa idea di equivalenti osservativi
due sistemi sono equivalenti se lo sono
osservazionale e-equivalente
questo vuol dire che se osserviamo il
stessi modelli ho anche messo delle uscite
in due scatole nere potremmo assumerle
per essere lo stesso che si chiama
equivalenza osservazionale e non lo fa
importa quale lingua scriviamo all’interno
di una scatola nera, ma importa
cosa entra e cosa esce così perché
stiamo tutti guardando cosa sta succedendo
questo è dentro le scatole nere
completamente irrilevante ciò che dobbiamo fare
è capire cosa sta succedendo al
confini i confini del programma
giusto così l’interazione tra
componenti comporta il passaggio di messaggi e
ci sono pochissimi modi per descrivere il
messaggi Jason XML asn.1 cose simili
quello e più recentemente le cose hanno chiamato
tipi di sessione ora abbastanza spesso abbiamo solo
descrivere il formato dei messaggi ma
non diciamo nulla sul sequenziamento di
tali messaggi quando scriviamo API sono io
significa l’API van per un file system noi
diciamo quando apriamo un file otteniamo un handle
quando chiudiamo il file, distruggiamo il
gestire quando leggiamo un file, gli diamo un
gestire otteniamo dati indietro il sistema di tipi
non ci dice che il seguente
programma è illegale aprire un file chiudere il
file legge il file del sistema di tipi
non dirci che quindi abbiamo bisogno di modo di
descrivere i protocolli protocolli sono
i contratti e i contratti assegnati danno la colpa
e abbiamo bisogno di un’architettura in cui noi
non dobbiamo avere un client nel server noi
avere qualcosa che descrive ciò che noi
vedi sul filo che chiamo un contratto
e penso che l’architettura corretta per
qualsiasi sistema ha tre cose in esso ha
un client e un server e il contratto
hacker in mezzo questo sarà
incidentalmente risolvo il mio primo problema di
assegnare la colpa perché quando ci connettiamo
molte cose insieme al contratto
dama che dirà il controllore del contratto
cosa è andato storto e chi ha sbagliato così?
il
controlla una piccola cosa del gatto e del topo che è
guardando il protocollo che assegna la colpa
quando le cose vanno male, quindi la domanda I
lascerei aperto alla fine di questo discorso
e questa è la mia ultima diapositiva è come facciamo noi
descrivi i contratti questo è qualcosa che tu
tutti possono pensare e questo è
questo richiederà altri 10-20
anni per farlo risolvere grazie
molto e abbiamo meno due
minuti per domande ne abbiamo tre
minuti per domande si va bene
non preoccupatevi bene non abbiamo bisogno che
più abbiamo tre domande da
il pubblico in app tre domande
tre domande sono arrivate all’ultimo
al minuto giusto, il primo è come
circa l’ idea di un sistema immunitario il
capacità per un sistema di rilevare interno
errori e almeno tentare di auto-guarire
sì bene che è ciò che questo sta facendo
Significa forse che possiamo costruirlo
possiamo programmare un sistema immunitario significa
che noi sì sì molto bene
quindi le domande stanno andando molto
volentieri molto rapidamente il prossimo
come identificare il kernel di errore che non sono
certo sì questa domanda difficile da parte tua
devi pensare che tu sai che è molto
i politici che se siamo ciò dovesse
crash di ciò che sarebbe accaduto è get fatale
verso il basso per una piccola parte in fondo
errore kernel deve essere quella parte del
sistema responsabile della registrazione
errori e avvio e riavvio
le cose che sono la cosa più semplice intendo
se se non riesci a rilevare gli errori, registrali
e riavviare le cose che hanno fallito
sei fregato quindi era il codice di errore
andando a fare cose del genere e anche
quando crei un team di programmazione diversificato
è una buona cosa mettere di più
programmatori esperti sulla scrittura del
errore kernel non quei ragazzi che hanno appena
siamo entrati dalla strada e non lo so
che lingua è così così ti struttura
il tuo team di programmazione in modo tale che il tuo
i programmatori più esperti fanno il
parte più difficile e tu provi a farlo
in modo che ci sia una piccola quantità di
America solo sapendo quale sia l’errore
colonnello nel sistema XD era come 0,2
per cento di tutto il codice è molto molto
piccolo se migliaia di moduli che
potrebbe avere errori in due o tre
moduli che se
e tutto ciò che siamo stati fregati è aumentato
domande in arrivo
tieni la tua distinzione tra i cavalli
tra un errore e un errore
Passa il passaggio kubernetes applica un sacco di
queste pratiche cosa manca scusa
kubernetes enforces dovremmo passare
questo uno – se non si conosce Cuba
Nettie’s non ne so niente, va bene
abbastanza
e oh questo è stato pubblicato quattro volte da
qualcuno fa clic con il tasto destro una volta sì, posso ottenere
quattro risposte diverse così era allora
le domande suppongo una domanda
che sto pensando a me stesso
stai parlando di fisica e sì
sistemi fisici credo che causa l’analista
lui è un grande sì così fanno i sistemi
qui forza un particolare ordine in
la messaggistica asincrona è quella
parte essenziale di esso pure assolutamente
ok si, voglio dire , vieni, non puoi
roba fino a quando non sai cose che hai
Devo avere un messaggio da te
siamo guidati dal passaggio dei messaggi
fondamentalmente intendo che non lo so
roba sul mondo fino a quando non avrò un
pasticcio è di allergie naturalmente sì
non posso non assumermi nulla finché non l’ho fatto
ha un messaggio che ha ragione di causalità
va bene così un altro che arriva da noi
potrebbe anche trasformarlo in persone nel
pubblico meno timido tra voi
ma l’aria ce n’è un’altra in the
app che riguarda i contratti
prenderebbe in considerazione protobuf protobufs
e l’uso dei nostri pezzi sufficienti No su
alla prossima domanda intendo che è acceso
andiamo è come andare nella parte giusta
direzione ma non è adeguata
Suppongo che la domanda di follow-on lì
eri Watson a cui manca un linguaggio
specificando la sequenza dei messaggi
fammi vedere
c’è un sistema questo è un questo è
chiamato tipi di sessione nella teoria e
Ho scritto una parola che ho scritto a
controllo dinamico della sessione di tipo anni fa
ma è sottile la mia tesi di dottorato è nella sua
Tesi di dottorato Sì , è molto leggibile
so che non è molta crescita, non l’ho fatto io
ha scritto una tesi senza molto greco in essa
okay, quindi l’ultima domanda è arrivata
qui c’è un sistema oggi non in
Telecomunicazioni di Melek che ha il
porzioni coperte che non conosco
potrebbe essere intendo che è possibile che ci siano
ma ma sono nel trading ad alta frequenza
me ne sono un paio che conosco
scusa, non te l’ho detto prima
o l’ho fatto io, la fisica ti mente Oh, totalmente
buon riscatto, forse grazie
tu molto Joe
[Applausi]
okay, questo discorso riguarda l’errore
gestione e come costruiamo fault-tolerant
sistemi e quindi cosa è un fault-tolerant
sistema avremo il pensiero tollerante
il sistema giudiziario è tollerante ai guasti se lo fa
continua a lavorare anche se le cose lo sono
sbagliato
quindi potrebbe non fare tutto ciò che è supposto
fare ma non cadrà semplicemente in a
mucchio orribile sul pavimento e fermati
funziona bene e ho fatto questo
per molto tempo stavo per dire
lavorare come questo non è mai finito è
sempre in corso sono sempre
trovare modi migliori per farlo sono stato
facendolo per circa 35 anni
e non pensiamo se vediamo ancora
nuovi modi per attaccare il problema
l’hardware può fallire relativamente
Hardware non comune tenta di essere carino
affidabile una volta che funziona
funziona abbastanza spesso se fallisce fallisce
catastroficamente e non si può mettere
di nuovo in servizio software sull’altro
la mano fallisce moltissimo c’è molto di più
errori software e guasti hardware così
quindi se costruirai un
sistema fault-tolerant che devi prendere
conto del software come piuttosto che
errori hardware e errori hardware voi
puoi più o meno eliminarlo con
replica si potrebbe semplicemente replicare il
hardware più volte e la possibilità è
che una volta replicato che entrambi
fallire allo stesso tempo molto basso, quindi intendo
se hai qualche hardware e il
è probabile che fallisca in un dato momento
intervalli da dieci a meno tre loro
arrivare a molto e sono
indipendente la probabilità che entrambi facciano
fallire allo stesso tempo dieci al
meno sei e se ottieni un centinaio di lotti
dell’hardware la possibilità che falliscano tutti
nello stesso tempo è 10 a meno 300
è abbastanza basso in modo così fondamentalmente possiamo
rendere i sistemi affidabili come vogliamo
a condizione che possiamo replicarli e
fornito
okay indipendente, quindi ho intenzione di dare
solo una piccola panoramica di dove sono
venendo da e quello che penso a questo
roba e io considero quel difetto
la tolleranza non può essere raggiunta da un singolo
computer quindi non lo farò non litigherò
il caso riguardante la dimostrazione dei sistemi di tipo
sistemi per essere corretti e tutto il genere
di cose che sono completamente diverse
soggetto ho intenzione di discutere il caso
i computer possono fallire perché vengono colpiti
da un fulmine
o qualcosa del genere ero su un pannello
dibattito con Tony Hall dice che sì
non hai questo tipo di sistema che non puoi
Dimostrare la correttezza di questo no, ho detto sì
ma i teoremi della tua pratica non stanno andando
per aiutarti se i computer colpiscono
fulmine okay, quindi sto parlando
sistemi che possono essere colpiti da un fulmine sono
parlando di come costruiamo
sistemi fault-tolerant dai componenti
ciò può fallire e la mia visione della vita è
che non saremo mai in grado di
eliminare l’errore di fallimento è sempre
accadrà non potremo mai fare sistema
coerente ci sarà sempre
incoerenze nel sistema tutto il
è ora che viviamo con questo
sarà come un cancro o qualcosa del genere
quelle parti del sistema non funzioneranno
ma deve ancora funzionare per certo
misura nonostante il fatto che individuo
i componenti stanno fallendo, quindi il primo
la prima verità evidente è quella
non è possibile creare un sistema tollerante ai guasti
da un singolo computer e il motivo per
che è ovvio che il computer potrebbe
fallire hai solo un computer e basta
fallisce sei fregato niente che tu possa fare
su questo e quindi è necessario
diversi computer, naturalmente, se lo hai
ha due computer se entrambi falliscono
sei fregato che ne hai tre
computer se entrambi falliscono, ma tutti
fallire allo stesso tempo sei fregato ma
la probabilità di ciò va giù se
sono indipendenti bene così tanto
affermazione che devi avere diversi
i computer implicano un sacco di cose
implica che i tuoi programmi non saranno
concomitante perché ne hai diversi
computer in cui i programmi sono in esecuzione
nello stesso tempo e questo è ciò che chiamiamo
concorrenza
i programmi verranno eseguiti in parallelo
i programmi che scrivi sono distribuiti
programmi questi programmi sono le leggi
di fisica che dobbiamo prendere in considerazione
la quantità di tempo necessario da
messaggi di passare tra le macchine che
obbedisce anche a certe leggi logiche per cui
esempio in un sistema distribuito quindi io
inviare un messaggio a una macchina remota e io
non ottenere una risposta indietro non lo so
perché una delle due cose può accadere
il computer remoto può aver fallito o il
la rete di comunicazione può aver fallito
e non saprò mai perché, a meno che non lo faccia
ha più prove per quello che sta succedendo così
non possiamo violare queste leggi fisiche
questi sono intrinseci al problema se noi
prova a violarli e non a prestare attenzione
a voi conoscono le leggi della fisica che faremo
costruire sistemi che semplicemente non funzionano e io
detto questa mattina nella mia nota principale ricordo
in un sistema distribuito non si sa mai
come vanno le cose dai nodi remoti
sapere come erano l’ ultima volta che loro
te l’ho detto se ti chiedo quanto
soldi nel tuo conto bancario che mi dici
Ho $ 200 sul mio conto in banca tutti i
sai è l’ ultima volta che mi hai detto che è
$ 200
Non posso supporre che tu abbia ancora
$ 200 un minuto dopo, perché potresti
hanno trasferito denaro da quella
conto così previsto teniamo che
conto mentre scriviamo i nostri programmi
non entreremo in nessuna logica
enigmi e qualsiasi difetto va bene così dentro
questo è il passaggio dei messaggi di sistema
inevitabile è inevitabile perché lo abbiamo
ha due cose, come possono?
parlare tra loro senza l’invio
il messaggio che passa il messaggio è inevitabile
va bene così un messaggio che passa è in realtà
la base della programmazione orientata agli oggetti
Alan Kay ha detto che conosci la grande storia di
la programmazione orientata agli oggetti è il
messaggio che passa tutte queste classi
metodi che è il tipo di dati astratti che è
questo non è il fondamento di
programmazione di programmazione orientata agli oggetti
le lingue dovrebbero rendere questo ciò che intendo
questo significa parallela concorrenza
programmazione programmazione distribuita così
sicuro
rendi questo facile III barrato la parola
facile e sostituito con fattibile è
non è facile non è facile ma è fattibile
giusto così come sono i singoli computer
parte di quello che chiamo il piccolo problema
come i computer che sono interconnessi
lavorare insieme e i protocolli che
usano è quello che io chiamo il grande problema
e questo è il problema interessante io
non importa davvero come l’individuo
le cose funzionano ma a me interessa il sistema
nel complesso si comporta e in realtà voglio
allo stesso modo per programmare grandi sistemi
con più sistemi se avessi condiviso
sistema di memoria a cui non tendi se tu
non programmare con message party quando I
programmare una cosa su scala planetaria
i singoli processi inviano messaggi a
l’un l’altro non c’è altro modo di farlo
se ho un’applicazione con un nodo
in Svezia un altro in America sono di
corso inviando messaggi tra ciascuno
altro quindi se programò in quel modo su scala
perché non dovrei programmare allo stesso modo a
piccola scala quando sono tutti sullo stesso
processore il fatto se si utilizza condiviso
elaborazione della memoria e si prova e scala
fuori che non puoi perché il
Modifiche al modello di programmazione che non mi piacciono
che non mi piacciono due modi diversi di
programmazione come un modo di programmazione
in base al messaggio che passa un messaggio
il passaggio è ed ero come citare da
Alan Kay che ha inventato il termine di
programmazione orientata agli oggetti e in a
messaggio alla mailing list cigolante lui
ha detto che la grande idea è la messaggistica di grandi dimensioni
l’idea è la messaggistica e, naturalmente
la messaggistica ha una roba orientata agli oggetti
Tradizionalmente è stato fatto in modo errato I
direi che è l’unica opportunità
linguaggio nel mondo perché è il
solo uno che esegue correttamente la messaggistica
la messaggistica nelle chiacchiere è ad esempio
non inviare messaggi
è una chiamata di metodo mascherata e loro sono
in realtà sincrono non è molto buono
lì l’altra posizione di integrazione
con il cavallo Terry che comunica
processi sequenziali quindi compagnia aerea che è
una lingua che ho inventato è derivata da
il piccolo discorso e il Prolog influenzati da
idee da CSP e unifica l’idea
dalla programmazione concorrente con
programmazione orientata agli oggetti e
il programma funzionale è quel tipo di
unifica queste cose in un quadro che
rende facile capire, penso e
segue le leggi della fisica che ha
questo messaggio asincrono che passa I I
non sono d’accordo con persone come Tony Hoare
quando dicono che possiamo fare come puoi fare
la luce di passaggio dei messaggi sincroni
non viaggiare infinitamente veloce c’è il
ritardo di propagazione diventano i due sistemi
incoerente mentre il messaggio è
passando dopo che il messaggio è arrivato
può essere lì può essere coerente ma anche
ci sono molti teoremi che dicono
che non possono ed è stato progettato
Ellen è stato progettato per la programmazione
sistemi fault-tolerant e dovrei dire
ora non voglio dire che sono un’applicazione
ragazzo che ho inventato compagnia aerea per risolvere un
problema che non ho non ho iniziato
inventando un linguaggio di programmazione e
quindi trovare un problema per risolverlo era il
in un altro modo ho avuto un problema
risolvi quale rendere tollerante ai guasti
il sistema per Ericsson e io l’ho inventato
questo linguaggio chiamato Erlang e gentile
di diffusione in modo che controlli circa la metà del
le reti del mondo controlla cosa
Whatsapp è scritto in Erlang un sacco di
cose scritte in Elling non lo sai
ci sono in realtà scritti in Erlang e
tutte le reti Ericsson sono programmate
tutti i dati intelligenti sono quei dati intelligenti
impostare così tutto programmato lì come
quindi è una specie di lavoro e puoi
programma ogni sorta di cose in questo modo
costruzione di software fault tolerant bolle
giù per rilevare errori e fare
qualcosa quando ricevi un errore ma di
Certo che non vuoi farlo localmente
ricorda che ho detto che conosci il tutto
processo di mine potrebbe bloccarsi in modo davvero
quando si rileva un errore che si desidera risolvere
da qualche altra parte è come se io avessi
un attacco di cuore e tipo di cadere
qui non posso andare a correre fuori e prendere un
defibrillatore e
prova a ricominciare il mio cuore in
prima fila devo farlo per me tu
sappiamo che non possiamo correggere i nostri errori
non sarebbe fuori da qualcosa di malato
altrimenti deve aiutarci, quindi questa idea è
davvero fondamentale per Erlang e riguardo
errori bene i loro errori che possiamo rilevare
al momento della compilazione è grandioso
è davvero bello i loro errori che possiamo
rilevare in fase di esecuzione
è bello che siano i nostri che possiamo dedurre
dal comportamento del sistema non possiamo
in realtà li rilevano ma è un
invariante che ti abbiamo infranto, lo sai
cosa dovrebbe essere sempre verde ed è
risulta essere rosso sappiamo qualcosa
è andato storto ci sono riproducibili
errori questo è veramente bello se lo hai
errori riproducibili e non ci sono
errori riproducibili sono una specie di
nascondendo bug e cose del genere
due volte non si ripresenta mai più
in un certo senso è importante
non sono riproducibili, quindi cosa facciamo?
non fare niente bene non puoi riprodurli
l’importante è il sistema stesso
porta avanti e ripara se stesso e
continua a lavorare è molto bello se noi
in grado di riprodurre e farlo ma è più
importante che non macini a a
fermati e fermati, quindi stiamo cercando di fare
i sistemi che vogliono avviarlo funzioneranno
per sempre non sarà mai fermato così il
la filosofia è trovare metodi per dimostrarlo
software in fase di compilazione, se possibile
questo è tutto il tipo di cui abbiamo bisogno
sai dimostrare che il programma è
corretto si può programmare in ruggine e
cose del genere o qualsiasi altra cosa e forse
puoi dimostrarlo corretto ma anche
supporre che il software sia errato
ed è incoerente e che questi
gli errori si manifesteranno a
runtime e quindi dobbiamo fare qualcosa
sugli errori nel software che manifest
loro e il software ce ne sono molti
prove del fallimento del software è tutto intorno
noi ogni giorno abbiamo costruito sistemi che
sono così maledettamente complicati che nessuno
capisce come funzionano e falliscono
tutto il tempo nessuno capisce perché
sono diventati come sistemi biologici
e il meglio che possiamo sperare è quello una volta
il fallimento è stato un detective che possiamo
riavvia i sistemi che ricominceranno
giusto così provando l’auto consistenza di
i piccoli programmi non sono d’aiuto, quindi
che prove fanno i test dimostrano che il
il sistema è auto-coerente dimostrano
che il sistema è giusto no, ho spesso
trovato i programmi in cui si trovano i casi di test
non corretto e anche il programma
non corretto perché lui
Ho ottenuto ottimi casi di test quindi fondamentalmente a
digitare un sistema di tipi sta dimostrando che lì
non sono consistenze interne nel
sistema stesso non lo sta dimostrando
il programma risolve qualsiasi problema reale è
cose di miglioramento completamente indipendenti è
difficile e ho detto questo è più
quindi salterò su quello B Sì
piccole cose possono essere piccole cose
dimostrato di essere auto-consistente e di
Certo, se possiamo farlo è buono
Non sono contrario a farlo, ma grande
assemblee di piccole cose si comportano in
modi estremamente complicati che facciamo
non capisco la cosa migliore che facciamo
mettere invarianti controllare gli eventi sono
vero e se violiamo quelle invarianti
basta rinunciare e ricominciare, quindi abbi un
cronologia del mio coinvolgimento in tutto questo
tipo di cose e risale al 1980
quando ho iniziato a guardare
sistemi fault-tolerant perché ho ottenuto un
programmazione del lavoro Viking che era
Il primo satellite svedese ed è il
la prima volta ho saputo della colpa
tolleranza e i ragazzi hanno detto così così
cosa succede se ci sono difetti in
il software
bene le missioni finite
Non siamo in grado di concatenare è un satellite è
volando intorno alla terra il software è
sbaglio, sono buggin , non faccio niente
che funzionerà sì, va bene un 1985 mi sono trasferito a
Ericsson e ha iniziato a lavorare
qualcosa che è stato un sostituto di Plex
Plex con un linguaggio di programmazione che
Ericsson ha programmato tutti questi prodotti
dentro e sì
flex era basato su diverse idee
basato sul passaggio del messaggio
linguaggio di programmazione in realtà
orientato agli oggetti brutha orientato agli oggetti
l’hardware è uno dei primi veri
l’hardware orientato agli oggetti è la cosa
su tutto ciò era effetti con il
il linguaggio proprietario non è mai sfuggito
fuori Ericsson l’hardware che era
eseguito con hardware proprietario
che non è mai sfuggito al di fuori delle telecomunicazioni
mondo ma era altamente affidabile
processori duplicati specificati quando I
uniti nel 1985 per avere un tempo di inattività in
tre minuti all’anno e con penalità
clausola o qualche volta $ 50.000 se tu fossi
giù per più di tre minuti all’anno
quindi lo stiamo facendo negli anni ’80 e
questo era normale, così nel 1986 l’avrei fatto
tipo di orientato agli oggetti unificato
programmazione con funzione
Non ho davvero capito come
stupido aveva al momento qualcuno
sottolineato questo alcuni anni dopo e io
ho pensato di sì, suppongo di averlo fatto
in realtà non lo realizzò in quel momento
e abbiamo costruito diversi prodotti in Erlang
all’interno di Ericsson e nel 1998 una cosa divertente
successo che Ellen è stato messo al bando e così è stato
tipo di un po ‘ di preoccupazione al momento io
non mi piaceva davvero che eravamo infastiditi
su questo, ma una conseguenza di ciò fu
siamo riusciti a convincere l’ Ericsson
gestione bene se non si desidera utilizzare
Se li puoi vietare, potremmo anche
renderlo open source e quindi la ragione
che Ellen è diventato open source
trattare con bannato e per strano
coincidenza quattro giorni dopo che è stata fatta
in open source in realtà tutto il
laboratorio di scienze informatiche e il
società che è solo una di queste
coincidenze che la gente non sarà mai
in grado di spiegare e così abbiamo iniziato blu
coda a questa società e che è durata
circa tre anni ed è stato allevato da
Sistemi web Altium $ 150.000.000 e I
trasferito su sistemi web Alton e in
i sistemi web sono stati pubblicati per sei giorni
dopo che ci avevano comprato, fu comprato
da Nortel Networks e questo era nel
altezza alla televisione
questo era poco prima del boom delle telecomunicazioni
crash Nortel Networks era un’azienda che
formata perché stava acquistando
le piccole aziende come pazzi lo dico sul serio
acquistato in sistemi web per 80 miliardi
dollari che è dopo Ludacris e poi
Nortel Networks ha detto che lo erano
ritirato la loro dichiarazione finanziaria ha detto
hanno fatto e poi Nortel Networks
si è schiantato causando la crisi delle telecomunicazioni e
Sono stato licenziato, il che è stato abbastanza divertente e io
trasferito in sei Svezia per fare computer
scienza e ho ottenuto un dottorato di ricerca e sono andato
torna a Ericsson e durante questo periodo
diverse cose sono successe all’inizio
questo modello di compagnia aerea di calcolo questo
idea di costruire sistemi di memoria condivisa
i sistemi erano e generalmente un generale
le persone respinte hanno detto che non lo saranno
abbastanza efficiente principalmente l’efficienza noi
possiamo non possiamo costruire sistemi ci sono e
alla fine di quel periodo questo Ellingham
il modello di calcolo è stato ampiamente adottato
e accettato in molti diversi
i linguaggi di programmazione quindi è la base
di modelli di studiosi per le cose che
si verificano sono basati direttamente sul OTP
roba e questi vengono tutti dal
lavoro aereo originale e loro
le derivazioni ci sono così lui stava andando in bicicletta
la prima cosa bella piccolo satellite
bello giusto così tipi di sistemi
la tolleranza ai guasti è diversa
interpretazioni intendo un diverso
la quantità di ingegneria che ci sta andando è
costruiremo molto affidabile
sistemi intendo i sistemi che controllano
centrali nucleari il controllo delle armi
sistema per armi nucleari cose simili
che sono altamente affidabili
abbiamo sistemi affidabili forse
auto senza guidatore e cose loro
non importa se uccido poche persone
non daranno miliardi di dollari
persone milioni di persone se ne vanno
sbagliato intendo il the il distinto è
quanti milioni di persone uccidiamo se si
va male se la risposta o quanti
miliardi di dollari lo fa
sostituire il satellite intendo un satellite
lancio ti costa quello che è un satellite
lancio costa 500 milioni di dollari o
qualcosa del genere è molto
ingegneria in esso quindi è anche un costo
nella vita umana o nel sostituire questo
determina la quantità di ingegneria voi
inserendola fondamentalmente possiamo fare molto
sistemi affidabili
mettere un sacco di ingegneria in esso poi
abbiamo macchine senza conducente ne uccido alcune
la gente non importa a nessuno
ben oltre gli avvocati e gli avvocati
Avvocati ci divertiremo
abbiamo il tipo di cose affidabili
infastidisce le persone se falliscono e noi abbiamo
cose losche abbiamo appena mostrato un’ombra
tu sai cose che falliscono tutto il tempo
live streaming di musica da Spotify I
ascolta musica per un’ora basta fermarsi
per 30 secondi non lo so
avviso non scegliere sul telefono e
urlo il suo orribile che urlo
Spotify o io urlo ai miei occhi ma
nessuno lo sa, nessuno sa che non lo è
strumentato in modo che sappiamo se lo siamo
andando a strumentare ogni passo che potremmo fare
dire esattamente quale componente ha fallito
e in effetti quello che vedrei è il prossimo
generazione di computer che voi ragazzi
stanno per venire a costruire se tu
strumento tutti questi sistemi ad un legale
requisito quindi quando roba non funziona
non solo sappiamo perché non funziona noi
sapere esattamente chi è la colpa perché se
colleghi 20 cose insieme e
sono tutti fare tutti devono lavorare per
funziona e qualcosa va storto se
non sappiamo quale di quelle 20 cose
sono andate male e non sappiamo a chi
colpa e questa è la base di un contratto
giusto, quindi abbiamo bisogno di avere questa idea di
affidabilità del servizio nel consumatore
prodotti perché quello che abbiamo ottenuto oggi il nostro
sistemi che se funzionano sono meravigliosi
sono molto per te non è la mia TV , è molto
meglio della TV che avevamo negli anni ’60 o
TV analogiche anni ’70 ma l’affidabilità è
molto peggio se funziona è bello se lo fosse
non funziona nessuno sa perché riavviamo
non va bene e se è un computer
scienziati, gente del computer, vogliamo
rimediare
questa è la prossima grande cosa che dobbiamo risolvere
come possiamo creare un software che funzioni
ragionevolmente bene anche se ci sono errori
nel software
la risposta è leggere i miei pezzi
quindi è abbastanza facile davvero ci sono
sei regole e per salvarti leggendo il mio
tesi ci sono sei requisiti sul
proprietà di base come il sistema deve
deve sostenere la concorrenza
perché le cose stanno accadendo allo stesso modo
tempo deve incapsulare gli errori noi
non voglio che l’errore si propaghi
il sistema non vogliamo il fatto nostro
il sistema si arresta in modo anomalo per bloccare un altro sistema
dobbiamo scoprire che colpa siamo noi
dobbiamo identificarlo, dobbiamo cambiare
il codice aggiunge alcuni sistemi in esecuzione e noi
bisogno di una conservazione stabile dal tutto
La cosa si blocca quando la riavviamo
torna nella memoria stabile e guarda
perché è andato in crash quindi c’è un metodo
rilevare tutti gli errori e solo crash
immediatamente se non puoi fare qualcosa
prova a fare qualcosa di più semplice, quindi costruiamo
calcoli nelle gerarchie degli alberi
dove al più alto livello se il sistema
sta funzionando perfettamente farà esattamente
quello che dovrebbe far pagare tutto
cose che dovrebbe fare e se qualcosa
va storto abbiamo lasciato cadere quel requisito di
facendo funzionare tutto e riduciamo noi
rilassare le nostre esigenze e farlo fare
qualcosa di leggermente più semplice che non
facciamo in modo che facciamo qualcosa di uniforme
più semplice e così via e, si spera, il
il sistema funzionerà ancora
forse con funzionalità ridotta ma è così
non cadrà completamente così costruiamo
alberi di computazione e dovremmo
identificare il kernel di errore l’errore
il kernel di un sistema è quella parte che
deve essere corretto ok questo è ciò che l’errore
il kernel è tutto ciò che è l’altro codice
può essere errato non importa il
error kernel è la parte del sistema
deve essere corretto se è tutto sbagliato
le scommesse sono spente ma il kernel dell’errore
deve essere corretto in modo che il kernel di errore in
il nostro Lang è piuttosto piccolo è come 200
linee di codice
è tutto a un anello zero. L’ho scritto
anni fa, Harden e io pensiamo che sia mai esistito
stato cambiato , ma assicurati che sia così
giusto e intendo dire che è così semplice
deve avere ragione
famose ultime parole sì e costruiamo
cose in alberi civili e fondamentalmente
se la roba in basso fallisce
le cose più in alto intrappoleranno quegli errori
e fare qualcosa è questo è costruito
in cose come la stessa supervisione di Acker
alberi questo è da qualche elemento del cursore
tipi oceano e il sistema urlante
in sé va bene così tutte le cose lavora per
utilizzare Ericsson per l’ impostazione intelligente dei dati
è usato da Whatsapp sequestrato da sir CERN
ho trovato il bosone di Higgs con gli affari finiti
Ho trovato il bosone di Higgs che compra in a
il database che usa couchdb cisco net arriva
in Cisco gestito da Erlang, questo è
chiamato spina dorsale è la salute nazionale
Database di servizi in Gran Bretagna essi Chubb
ora Oracle e sostituito con un
database open source scritto in Erlang
risparmiando un sacco di soldi
cose come rabbitmq scritte in compagnia aerea
giusto quindi cos’è un errore come facciamo noi
scopri un arabo cosa facciamo se otteniamo
un errore vero quindi cos’è un errore bene
è una proprietà indesiderabile di a
il programma è qualcosa che blocca il
programma il valore che è e
deviazione corretta tra il desiderato
e comportamento osservato che trova il
programma di errore può trovare l’errore il
il programmatore può trovare l’errore quando
che stanno scrivendo il loro bene codice compilatore
sierra cosa dovresti fare
bene il sistema runtime trova un errore
errori aritmetici possiamo trovarli
dividere per zero di non un puntatore di numeri
errato era un voto senza senso in valori
che sono dichiarazioni switch senza senso
non si applicano ma cosa facciamo cosa facciamo
fare nel codice giusto quindi cosa dovremmo fare
fare quando il runtime trova un errore
potrei ignorarlo, non è una buona idea
potresti provare a sistemarlo tutto bene io
cambiato la vita prima o poi sì, lo sono
adesso sono davvero l’ultima volta
Li ho aggiornati oh oh, giusto no
il problema di provare a correggere gli errori è quello
peggiori le cose
non fai le cose meglio non farlo
importa che la regola missilistica non faccia
le cose peggiori non provano e sistemano le cose
schiantarsi immediatamente e assumere nel
architettura che non sarà qualcuno
la responsabilità altrui di risolvere il problema
perché costruiamo un’architettura gerarchica
tutto sommato è che il nostro software è
corretto se non è corretto sta andando
per schiantare qualcuno in questa supervisione
l’albero più in alto avremo il lavoro
di fissare quelle aree non nostre
responsabilità se è corretta così noi
crash immediatamente questo è in realtà
fondamentalmente riavviare il sistema quando a
il sistema fallisce, lo riavviamo ma quando lo siamo
facendo inchiodare quel riavvio sta prendendo un
microsecondo non sono stati presi due o tre
secondi o minuti o 30 secondi come in a
sistema operativo normale che riavvia il
sistema significa rilevare un processo ha
fallito e riavviarlo e così sarà
capita a velocità inferiori al microsecondo, quindi è così
piuttosto veloce proprio così oh così cosa dovrebbe
il programmatore era quello che c’è
programmatore quindi cosa fa un programmatore
quando non sanno cosa fare ignorano
Non è che non dovrebbe fare il login yeah
giusto scrivere in un file di registro che è molto
bene si e si schianta subito dopo
hai scritto nel file di registro e
dov’è il file di registro che abbiamo pagato
attenzione è molto stabile nella conservazione
bene grazie
staresti ascoltando bene
quindi in linguaggi di programmazione sequenziali
il singolo thread che si blocca non è ampiamente
praticato perché se ne hai preso uno solo
thread e si blocca che hai perso
tutte le cattive notizie, quindi qual è il grande
affrontare la concorrenza perché continuo a farlo
lassù su cuca ci sono
migliaia di linguaggi di programmazione e
sono tutti sequenziali e ci sono
tre nomi di programmazione in pratica quello
sono prevalenti parallelamente c’è a
conferenza abbiamo fondamentalmente solo compagnia aerea con a
nome diverso e un fronte diverso
ingresso e questo pony Pony carina
freddo
e poi c’è un carico di accademici
la lingua non è mai nessuno usa mi dispiace
non mi è piaciuto, quindi questo è un
programma sequenziale un processo va bene questo
è un sequenziale morto questo è un
programma sequenziale che si è arrestato in modo anomalo
niente che tu non abbia niente questo è un
programma parallelo okay questo è un parallelo
programma ora guarda Kathy questo è un
programma parallelo quando uno di questi
i processi si bloccano, aspetta un attimo, no
vederlo uno di quei processi, se tu
indietro giusto se puoi vederlo apparire
lì vedi ma quando vado avanti io
significa che non ti accorgi
hey go è quello che si è schiantato così noi
potrebbe tornare così Ellen ha questo contenuto
processi collegati collegati cos’è un link a
i collegamenti sono fatti in tempo reale quando tu
quando mostri graficamente cosa fa
significa che il link significa che se questo processo
muore questi altri processi stanno andando a
ricevi un messaggio che ti dice che il
processo è morto quindi posso immaginare se il
il processo di lettura fallisce quindi il blu
processo di lettura dei processi non ha il blu
i processi avranno un errore
messaggi che è un meccanismo di collegamento
inventato da Mike Williamson non l’ho fatto
inventalo
quindi, perché concomitante, ho detto quella colpa
Torrance è impossibile su un computer
e scalabile e poi questo è una specie di
divertente, okay, abbiamo appena detto colpa
la tolleranza è possibile impossibile su uno
computer e ben scalabile è impossibile
su un computer bene è una specie di
parzialmente vero, puoi scalare un po ‘
un po ‘ e ti sei riempito
quel computer una volta raggiunto il
i confini di quel computer non puoi
scala più devi passare a 2 o
3 4 4 5 6 7 10
lo scalabile è nel computer è
impossibile su un computer e qualcosa
altrimenti la sicurezza è molto promettente
impossibile perdere la sicurezza domestica è
molto difficile su un computer se
qualcuno ottiene un virus in quel computer
lì non hanno un virus o una cosa
in questo computer la ragione è questa
sono isolati, quindi possiamo fare
sistemi affidabili isolando il
componenti la mia banca aveva in una scatola dal mio
banca quando appiccico una carta in esso vado a
il sito Web e invia una sfida
Effettuato scrivo il codice della sfida
nella mia piccola scatola e attaccare la carta
è un altro numero più stretti e io tipo
quello indovina che cosa quella piccola scatola il
banca mi ha dato che non hanno mai inviato un
correzione del software a differenza di Apple a differenza di Google
non devono inviarmi correzioni di bug
per sicurezza ogni 10 giorni perché il
l’ultimo era sbagliato quindi perché è questo
software affidabile probabilmente solo perché
è una piccola cosa piccola e nessuno può
parla con lui non è collegato al
Internet e come comunica
il mio altro computer attraverso un out-of-band
metodo attraverso i miei occhi e le mie dita
è così che comunichiamo un po ‘
il numero viene visualizzato sullo schermo e io digito
nel mio computer così è in realtà
abbastanza difficile da hackerare che ha bisogno di a
drone sai un pò piuttosto rendi minuscolo
piccoli droni sulla dimensione di una zanzara
che si trova di mia spalla e guardarlo
quello che sto facendo e poi potresti hackerare
ma è difficile, quindi la sicurezza lo è
molto difficile su un computer e giusto
In realtà voglio lo stesso modo di programmare
Non voglio due modi diversi per farlo
programma non voglio un modo per programmare
sistemi locali e un altro modo di programmare
sistema distribuito Voglio solo un modo
fare tutto così questo è il mio caso per
concorrenza perché hai tutto questo
e dovrei dire bene solo tu lo sai
il mondo è
concurrent in realtà siamo una stanza con a
centinaia di persone o qualcosa siamo tutti
siamo tutti separati ma non di un tipo
una sorta di cervello unito di un gemello siamese con
un centinaio di cervello è collegato insieme a noi
inviare messaggi il messaggio è un suono noi
capire se i messaggi ricevuti sono
non essere chiesto ma hai sentito?
il mio messaggio cosa sono due più due
sì, vedi improvvisamente so che ha avuto il
messaggio e ha risposto perché sale
lui una sfida lui ha risposto rapidamente
bene in modo che possiamo rilevare gli errori come facciamo noi
rilevare errori Oh Harry per tutti i tipi di
I modi in cui lo facciamo per il tempo che ho
per finire Oh comprese le domande giuste
John me no coniglio su per dieci minuti e
nessuna domanda o guerra come cinque minuti
vedremo vedremo Devo solo parlare
ci sono un po ‘di aritmetica
errori di errori silenziosi e mortali dove
il programma non si arresta ma fornisce
un risultato errato questi sono orribili
e ci sono errori di errori rumorosi che
causare il crash del programma che amiamo rumoroso
errori odiamo gli errori silenziosi e mortali
errori silenziosi cose chiamate quiet non in
numeri
Oh, sono queste cose fantastiche
cose che hai mai visto in questo tipo di attesa
un momento
un silenzio ho ottenuto così ho un film cosa
un momento vediamo cosa succede è
si suppone che suoni il film, non è vero?
lo fa fa qualcosa
succede ma non c’è suono oh oh il
HDMI spegni l’audio questo è un razzo
Immagino cosa succedera ‘a posto io ho solo
ho cinque minuti
oh è meglio con il suono è a
la vista diceva che era un errore in un
programma Eider la linea rossa è l’errore
si blocca errori di programmazione silenziosi perché
sono silenziosi perché il programma
non sa che c’è un errore, quindi lo farei
Fai notare che l’ aritmetica è una bella cosa
fonte di errori silenziosi mi sono imbattuto
questo esegue il riquadro completo che è molto bello
questa è una formula calcolare trecento
e trenta tre virgola sette cinque volte
più largo il sei più alcune cose e groppa
questo tizio si chiama groppa quindi è così
il nome dell’autore ha scritto un articolo
su questo e ha dimostrato che se lo sei
eseguendo la precisione a 32 bit ottieni un punto
sette due e se lo fai in 64 bit
precisione che ottieni se lo fai dentro
128 precisione ottieni questo se tu
la risposta corretta è negativa quindi fondamentalmente
più precisione non ha aiutato in modo da chiederti
la domanda qui se tu se tu fossi un
programmatore di applicazioni e tu sei
programmazione nella tua lingua preferita
potrebbe essere sbagliato potrebbe essere Java
potrebbe essere Haskell potrebbe essere qualsiasi cosa
e ti viene data una formula del genere
probabilmente vi sedete e voi write
sai una specie di x uguale a tre punti
tre punti xy ^ 6 e così via e lo farai
supponiamo che abbia calcolato il giusto
il risultato non verrebbe utilizzato in virgola mobile
e la risposta conta se è una salute
sistema di cura se si tratta di un nucleare
pianta o qualcosa del genere tu stai meglio
non usare il virgola mobile se lo fai tu
meglio dimostrare che è giusto galleggiare
il punto non è caro davvero molto difficile
buona lezione, guarda John Gustafson
hai qualcosa su YouTube
oh divertente molto divertente oh
sì sì questo è un questo è
un ottimo esempio di lezione normalmente
raccomandato quindi l’aritmetica è molto
difficile riuscire a ottenere lo stesso
rispondi con precisione singola e doppia
precisione non significa che la risposta
è giusto bontà
no e conta che tu debba dimostrare
tutto per essere giusto così come la maggior parte
i programmatori credono che dovremmo avere un
quiz sì, dovrei mostrarlo a Tucson
quante persone credono che un vantaggio
parentesi B più C è uguale alla parentesi quadra
un plus B plus C bene ti sto mostrando il
rispondi sono diversi che è dove
metti le parentesi questo ha un
errori di arrotondamento che la maggior parte della gente pensa
la maggior parte dei programmatori pensa che questi
fornire lo stesso risultato per la maggior parte della programmazione
lingue no non lo fanno e compilatore
gli scrittori no non hanno un valore
errori sì programma non si blocca ma
i valori calcolati sono errati o
impreciso come sappiamo come lo sappiamo
è corretto quando è numerico
calcoli in bene se si è intrufolata nel
gli interi sono abbastanza ok ma se lo sei
fuori ha introdotto è piuttosto difficile
importa, dipende da cosa
le applicazioni utilizzate per non a
il numero è abbastanza ok ora sto cercando
per le diapositive che conosci vuoi Jim
qualcuno mi ha mandato che pensavo che fosse
bello giusto sì programmatore non lo so
cosa fare solo crash, lo chiamo il
lascia che si infranga la filosofia e cosa fai
fare quando si riceve un errore mantenuto
e invariante e prova a fare qualcosa
altro e abbiamo più tempo va bene così è
che tutti indovino no no no non è no no
Va bene così così qual è il messaggio che cosa è in
un messaggio va bene così quando costruiamo i sistemi
li costruiamo da scatole nere che
inviare messaggi a vicenda ora che cosa è
all’interno di una scatola nera è un programma ed è
scritto in un linguaggio di programmazione e
ci sono migliaia di dannati
linguaggio di programmazione whoo
non è lingua in cui sono scritti
ciò che è importante è il comportamento al
interfacce a posto, così Tony Hall ha introdotto
questa idea di equivalenti osservativi
due sistemi sono equivalenti se lo sono
osservazionale e-equivalente
questo vuol dire che se osserviamo il
stessi modelli ho anche messo delle uscite
in due scatole nere potremmo assumerle
per essere lo stesso che si chiama
equivalenza osservazionale e non lo fa
importa quale lingua scriviamo all’interno
di una scatola nera, ma importa
cosa entra e cosa esce così perché
stiamo tutti guardando cosa sta succedendo
questo è dentro le scatole nere
completamente irrilevante ciò che dobbiamo fare
è capire cosa sta succedendo al
confini i confini del programma
giusto così l’interazione tra
componenti comporta il passaggio di messaggi e
ci sono pochissimi modi per descrivere il
messaggi Jason XML asn.1 cose simili
quello e più recentemente le cose hanno chiamato
tipi di sessione ora abbastanza spesso abbiamo solo
descrivere il formato dei messaggi ma
non diciamo nulla sul sequenziamento di
tali messaggi quando scriviamo API sono io
significa l’API van per un file system noi
diciamo quando apriamo un file otteniamo un handle
quando chiudiamo il file, distruggiamo il
gestire quando leggiamo un file, gli diamo un
gestire otteniamo dati indietro il sistema di tipi
non ci dice che il seguente
programma è illegale aprire un file chiudere il
file legge il file del sistema di tipi
non dirci che quindi abbiamo bisogno di modo di
descrivere i protocolli protocolli sono
i contratti e i contratti assegnati danno la colpa
e abbiamo bisogno di un’architettura in cui noi
non dobbiamo avere un client nel server noi
avere qualcosa che descrive ciò che noi
vedi sul filo che chiamo un contratto
e penso che l’architettura corretta per
qualsiasi sistema ha tre cose in esso ha
un client e un server e il contratto
hacker in mezzo questo sarà
incidentalmente risolvo il mio primo problema di
assegnare la colpa perché quando ci connettiamo
molte cose insieme al contratto
dama che dirà il controllore del contratto
cosa è andato storto e chi ha sbagliato così?
il
controlla una piccola cosa del gatto e del topo che è
guardando il protocollo che assegna la colpa
quando le cose vanno male, quindi la domanda I
lascerei aperto alla fine di questo discorso
e questa è la mia ultima diapositiva è come facciamo noi
descrivi i contratti questo è qualcosa che tu
tutti possono pensare e questo è
questo richiederà altri 10-20
anni per farlo risolvere grazie
molto e abbiamo meno due
minuti per domande ne abbiamo tre
minuti per domande si va bene
non preoccupatevi bene non abbiamo bisogno che
più abbiamo tre domande da
il pubblico in app tre domande
tre domande sono arrivate all’ultimo
al minuto giusto, il primo è come
circa l’ idea di un sistema immunitario il
capacità per un sistema di rilevare interno
errori e almeno tentare di auto-guarire
sì bene che è ciò che questo sta facendo
Significa forse che possiamo costruirlo
possiamo programmare un sistema immunitario significa
che noi sì sì molto bene
quindi le domande stanno andando molto
volentieri molto rapidamente il prossimo
come identificare il kernel di errore che non sono
certo sì questa domanda difficile da parte tua
devi pensare che tu sai che è molto
i politici che se siamo ciò dovesse
crash di ciò che sarebbe accaduto è get fatale
verso il basso per una piccola parte in fondo
errore kernel deve essere quella parte del
sistema responsabile della registrazione
errori e avvio e riavvio
le cose che sono la cosa più semplice intendo
se se non riesci a rilevare gli errori, registrali
e riavviare le cose che hanno fallito
sei fregato quindi era il codice di errore
andando a fare cose del genere e anche
quando crei un team di programmazione diversificato
è una buona cosa mettere di più
programmatori esperti sulla scrittura del
errore kernel non quei ragazzi che hanno appena
siamo entrati dalla strada e non lo so
che lingua è così così ti struttura
il tuo team di programmazione in modo tale che il tuo
i programmatori più esperti fanno il
parte più difficile e tu provi a farlo
in modo che ci sia una piccola quantità di
America solo sapendo quale sia l’errore
colonnello nel sistema XD era come 0,2
per cento di tutto il codice è molto molto
piccolo se migliaia di moduli che
potrebbe avere errori in due o tre
moduli che se
e tutto ciò che siamo stati fregati è aumentato
domande in arrivo
tieni la tua distinzione tra i cavalli
tra un errore e un errore
Passa il passaggio kubernetes applica un sacco di
queste pratiche cosa manca scusa
kubernetes enforces dovremmo passare
questo uno – se non si conosce Cuba
Nettie’s non ne so niente, va bene
abbastanza
e oh questo è stato pubblicato quattro volte da
qualcuno fa clic con il tasto destro una volta sì, posso ottenere
quattro risposte diverse così era allora
le domande suppongo una domanda
che sto pensando a me stesso
stai parlando di fisica e sì
sistemi fisici credo che causa l’analista
lui è un grande sì così fanno i sistemi
qui forza un particolare ordine in
la messaggistica asincrona è quella
parte essenziale di esso pure assolutamente
ok si, voglio dire , vieni, non puoi
roba fino a quando non sai cose che hai
Devo avere un messaggio da te
siamo guidati dal passaggio dei messaggi
fondamentalmente intendo che non lo so
roba sul mondo fino a quando non avrò un
pasticcio è di allergie naturalmente sì
non posso non assumermi nulla finché non l’ho fatto
ha un messaggio che ha ragione di causalità
va bene così un altro che arriva da noi
potrebbe anche trasformarlo in persone nel
pubblico meno timido tra voi
ma l’aria ce n’è un’altra in the
app che riguarda i contratti
prenderebbe in considerazione protobuf protobufs
e l’uso dei nostri pezzi sufficienti No su
alla prossima domanda intendo che è acceso
andiamo è come andare nella parte giusta
direzione ma non è adeguata
Suppongo che la domanda di follow-on lì
eri Watson a cui manca un linguaggio
specificando la sequenza dei messaggi
fammi vedere
c’è un sistema questo è un questo è
chiamato tipi di sessione nella teoria e
Ho scritto una parola che ho scritto a
controllo dinamico della sessione di tipo anni fa
ma è sottile la mia tesi di dottorato è nella sua
Tesi di dottorato Sì , è molto leggibile
so che non è molta crescita, non l’ho fatto io
ha scritto una tesi senza molto greco in essa
okay, quindi l’ultima domanda è arrivata
qui c’è un sistema oggi non in
Telecomunicazioni di Melek che ha il
porzioni coperte che non conosco
potrebbe essere intendo che è possibile che ci siano
ma ma sono nel trading ad alta frequenza
me ne sono un paio che conosco
scusa, non te l’ho detto prima
o l’ho fatto io, la fisica ti mente Oh, totalmente
buon riscatto, forse grazie
tu molto Joe
[Applausi]
Please follow and like us: