
va bene così per questa sessione sono molto felice
avere un uomo esteso da Kelowna e
Eric ha lavorato senza Lange e
è VM da molto tempo ha ottenuto il suo dottorato
poi con il lavoro sulla compilazione di compagnie aeree
è andato e ha lavorato con Scala per a
mentre ma è tornato alle sue radici pochi
anni fa
è stato il CTO di Kelowna per diversi
anni e ora è il capo scienziato
e credo che sta scrivendo un libro sulla
argomento che ci dirà tutto di questo
Eric okay sì, così l’argomento è la compagnia aerea
macchina virtuale e non lavoro per
Non ho questa fantasia di Oracle
disclaimer ma conosci i discorsi che io
come la maggior parte sono quelli in cui le persone
avere opinioni e probabilmente hanno torto
ma almeno sono fidanzati e dicono
la loro opinione e questo è sempre
molto divertente o ti mostrano un sacco di codice
e siamo riusciti a farlo nel modo giusto
in modo da poter seguire tutto il codice tranne
quella nuova cosa che ti mostra e tu
ottenere AHA che è stato grande e purtroppo
Non sono un uomo supponente e vado
parlare della macchina virtuale e
non ti mostro così tanto codice così probabilmente
il discorso più noioso di oggi, quindi ci sono
alcuni altri discorsi in questo momento dove puoi
impara come usare le scorciatoie da tastiera
e così via, è grandioso , dovresti saperlo
come usarli ma sapendo come usare
la tua scorciatoia da tastiera non ha intenzione di
rendi il programmatore più produttivo
ciò che conta davvero per te diventare
successo o produttivo è come te
che quando avevo diciassette anni sono 23
Stati, vengo dalla Svezia
Vengo da qualche parte a nord in Svezia
Haparanda è vicino per l’Artico
Cerchio
e sono andato come studente di scambio al
California per un anno potrei parlare
L’inglese prima di andarci ma quando lo feci
ha iniziato a parlare inglese ogni giorno
in ogni situazione dopo un po ‘di tempo
ho iniziato a pensare in inglese e io
improvvisamente mi resi conto che ero diventato
stupido non perché sei stupido perché
stai pensando inglese ma perché il mio
il vocabolario era limitato e la mia comprensione di
la lingua era così limitata che potevo
Pensa solo a un pensiero limitato
terribile ma dopo che avevo iniziato
pensando in inglese non avrei potuto
smettila quindi sono rimasto stupido per un anno nel
Dichiara, ma è stato divertente comunque, sono io
indovina il modo in cui dovresti essere, ma io
lezione appresa da questo e questo è il
il linguaggio che stai usando influisce su come
tu pensi e questo vale per la programmazione
anche le lingue immaginano quindi di incontrarti
alcuni ragazzi dell’MBA che hanno questo geniale
idea e decidi di formare una startup
stiamo andando a costruire un servizio web
fantastico quindi costruisci un servizio web e
hai iniziato a ricevere traffico
profitto quindi questo è il traffico a
date diverse e poi improvvisamente questo
succede che è Natale e il tuo traffico
raddoppia in un tempo molto breve, quindi questo è
un momento davvero emozionante per una nuova startup
per incontrare il suo primo Natale e poi
l’ anno prossimo raddoppia di nuovo e l’anno prossimo
raddoppia di nuovo e ora sta iniziando
diventare ridicolo
Davvero ridicolo e dopo un po ‘
sei abbastanza felice che i tuoi servizi
sono ancora attivi e funzionanti dopo questo così
questo era due anni fa l’ anno scorso
il grafico è salito allo stesso modo e quest’anno
ci aspettiamo che succeda di nuovo così
questo è ciò che il successo assomiglia a questo
statistiche effettive delle transazioni da
Clarinha e siamo rimasti molto soddisfatti voi
ricorda quella piccola protuberanza che c’era
quando il traffico è raddoppiato per il primo
tempo sembrava davvero spaventoso così nel mio
astratto e anche i giovani hanno detto che noi
aveva farmaci esponenziali e questo è il
crescita esponenziale mano-ondata di affari
questo è ovviamente solo polinomiale ma
chiamiamola crescita esponenziale sì sì
all’inizio giorni felici quando questo
Succede mangiato la Spagna quindi se vuoi
crea un servizio Web scalabile e tu
voglio farlo in una lingua che aiuti
scala e questo è ovviamente un like
sorpresa
quindi ciò che Alan ti dà è tollerante ai guasti
manutenibile e scalabile e io no
andando a colpire altre lingue qui il
l’oratore precedente lo ha fatto abbastanza bene
ma ci sono cose in altre lingue
questo li rende meno tolleranti ai guasti
manutenibile e scalabile quindi perché è a
questa era la tolleranza agli errori di linea
fondamentalmente ciò che i progettisti di Erlang
ha voluto fin dal principio questo era indietro
negli anni ’80 a Ericsson quando Ericsson
improvvisamente capito che
L’80% dei loro budget per il nuovo sistema era
non hardware come si pensava ma
in realtà software e quindi devi
costruire hardware affidabile ma come sarebbe
costruiscono software affidabile così loro
ha deciso di indagare su questo e ha cercato di
scoprire modi per costruire software affidabile
e il laboratorio di informatica di Ericsson
ha inventato una linea che è stata progettata per
costruire software fault tolerant avendo
il giusto modello di concorrenza e il fare
errore ed eccezione gestendo il diritto
modo e fornendo librerie per il
roba davvero dura e ho intenzione di parlare
su tutte queste cose in dettaglio lungo
è anche mantenibile così una ragione per
questo è che abbiamo digitato dinamicamente
andando a vedere che digita dinamicamente potrebbe
non essere qualcosa a cui pensi
rendendo un linguaggio gestibile ma questo
abilita anche molte cose nel
macchina virtuale che lo rende
mantenibile e hai simbolico e
strutture dati trasparenti per cui tutto il
dati nel tuo sistema a cui puoi guardare
in qualsiasi momento e vedere esattamente quello che sembrano
come in un modo simbolico e c’è un
la shell interattiva e l’aggiunta sono scalabili
quindi questa è la cosa più pubblicizzata
sulla nostra linea in questi giorni e questo è
anche a causa della giusta concorrenza
modello e buone librerie per il duro
roba e la cosa che molte persone
che arriva alla odio della compagnia aerea sulla compagnia aerea
è che è strano e molto stupido
stringhe elenca solo ma se lo sei
fare un servizio web che puoi effettivamente
concatenare un sacco di cose e spingerle
fuori davvero molto velocemente con questi
la compagnia aerea strana stringe una parola dal nostro
sponsor prima di andare in un dettaglio
Ho pensato che avevi bisogno di essere svegliato
perché ora ci tufferemo nel
interni di compagnie aeree, quindi solo un breve
rompere lì e poi si vede un po ‘
codice compagnia aerea anche non c’è cattura così
Elling è dinamico e fortemente digitato
oh hai notato che l’ho messo su una tastiera
la digitazione a-line su una tastiera che è
il giogo della presentazione mi dispiace
sì sì, con una digitazione dinamica
linguaggio otteniamo molti benefici uno
la cosa è che possiamo fare il caricamento di codice caldo
in modo da sistema senza fili è in esecuzione possiamo
carica effettivamente un nuovo codice nel sistema
puoi farlo in molte lingue ma
se hai una digitazione statica ce ne sono alcuni
problemi quindi se lo realizzi all’improvviso
i tipi che avevi erano sbagliati
e devi aggiornare la tua nuova versione
non puoi davvero farlo perché tu
non è possibile caricare una nuova versione di alcuni codici
che hanno una visione diversa dei tipi
nel sistema rispetto ad altre parti del
codice ma rende anche possibile per
avere gli heap e gli stack mobili da allora
tutto è ben etichettato, così sarà
permetterebbe di avere veramente piccolo
stack per ogni processo e verremo
di nuovo a quello un po ‘di più e per
da una vista di manutenzione si ottiene molto
dati trasparenti in modo da poter accedere al
sistema e guarda qualsiasi pezzo di memoria
e da quel pezzo di memoria puoi farlo
effettivamente vedere quali strutture di dati sono dentro
il ricordo e, naturalmente, puoi farlo
raccolta dei rifiuti e lo si può fare
con una copia
quindi ottieni una buona localizzazione delle cose
questo è il reticolo di tipo Erlang lì
hai qualcosa chiamato un termine che è
qualsiasi cosa in Erlang è un termine che può
essere un numero e il numero è o un
intero o un float e digitare il motivo per cui è lì
è solo la distinzione tra interi
e galleggia nella realizzazione c’è
in realtà anche due tipi di numeri interi
ci sono interi immediati che si adattano
una parola della macchina e grandi numeri interi
che deve essere inscatolato e messo sul
mucchio ma la compagnia aerea ha solo un oceano di
numeri dove puoi avere numeri di
qualsiasi dimensione fondamentalmente non deve preoccuparsi
su involucro o confini di parole o
qualcosa di simile e hai galleggianti
ora hai gli atomi che sono nomi simbolici
che puoi usare molto pratico per taggare
il tuo codice con gli atomi anziché solo
numeri e riferimenti sono specifici
termine che puoi creare una volta per ottenere un
riferimento unico e nessun altro dovrebbe
essere in grado di scambiare quello di riferimento
che sarà paragonabile a quello
riferimento in modo da poter taggare i messaggi con
questi riferimenti sanno che sono venuti
da originariamente e cose del genere
c’è chiusure è chiamato divertimento in
Erlang ci divertiamo molto di più a Erlang
che in altre lingue perché non lo facciamo
avere chiusure abbiamo i fondi che ci sono
porte che fondamentalmente elaborano ma quello
sono collegati ad alcuni I input / output
canale
c’è peds che è il processo
identificatore a cui sei gestito
un altro processo nella nostra linea che hai
tuple
dove puoi avere una serie di termini e
elenchi di corsi che consistono in entrambi
ago o coni e poi c’è Tommy
chiamato binario che è solo un grande pezzo
della memoria dei byte in modo da avere un file per
esempio lo si carica come un file binario e tu
ottenere tutti i byte nel file in memoria
e puoi passarlo e esaminare
tutti questi termini sono paragonabili
quindi puoi chiedere al sistema se il
l’interno è meno dell’atomo foo
o meno la lista vuota e così via così
i valori a sinistra sono inferiori al
valori a destra tranne per i numeri interi
e galleggianti che hanno alcuni davvero speciali
semantica di confronto ma lo sappiamo tutti
che non dovremmo confrontare interi o
galleggia comunque, ma una buona cosa è
che c’è un modo per confrontare tutti i
termini in modo da poter usare qualsiasi termine come chiave
e mettilo in un dizionario o qualcosa del genere
come quella
quindi ora ci stiamo immergendo un po ‘più a fondo
la macchina virtuale quindi se ne hai uno
stringa in una riga come ho detto prima
le stringhe sono solo elenchi così una stringa prende
un sacco di memoria in una riga soprattutto se
si esegue su una macchina a 64 bit ma su una stringa
come un semplice ciao
sì consiste nel portare un puntatore a
memoria quindi questo è gli indirizzi di memoria qui
siamo rimasti molto contenti di alcuni molto bassi
indirizzi di memoria per questo esempio quindi a
indirizzo di memoria e poi il tag che
dice che questa è una lista e questo è giusto
che il bit più basso è un 1 così posso andare
a questo posto P in memoria in qualsiasi momento
e vedrò che questa è una lista e io
può seguire il puntatore per aggiungere il sole
e 28 e saprò che c’è un
consolare qui con una macchina e un cutter o
testa o coda di questa lista così sul
indirizzo sulla linea 28 c’è il personaggio
H memorizzato che è il valore ASCII per
quel personaggio si è spostato a sinistra e quindi taggato
questo come il suo piccolo in cui sono quattro
e poi nella console ce n’è un’altra
list tag e l’indirizzo a quello successivo
consolle
quindi questo è solo un processo di memoria
heap e questo è come una lista finirebbe
e poi abbiamo il tag di Neil che è
tutti eccetto il terzo bit, quindi è così
quello che dobbiamo sapere sui tipi e
Rappresentazione di loro prima di andare a
il giusto modello di concorrenza, quindi il giusto
il modello di concorrenza ti dà l’ abilità
per avere processi leggeri e loro
tutto parla al passaggio dei messaggi non c’è
stato condiviso tra loro e questo significa
che possiamo anche avere una spazzatura
collezionista che non ha fermato il mondo
e sono collegati tramite monitor
e segnali così un processo dal
il punto di vista delle macchine virtuali è solo un
un po ‘di memoria quindi è fondamentalmente il
blocco di controllo del processo che è a
struttura predefinita con tutto il
informazioni sul processo se
sta correndo dove mantiene la sua profondità
heap e stack e altro interessante
fatti sul processo e poi ha
una cassetta postale e quando è vuota non lo fa
prendi qualsiasi spazio eccetto per un po ‘di spazio dentro
il PCB che è già rappresentato
lì e poi c’è una pila dove il
L’esecuzione del programma per questo processo è
fatto in modo che ogni processo abbia il proprio stack
e poi c’è un mucchio dove il
processo conserva i propri dati
e lo stacking inizia a 233 parole
o forse 232 parole quindi un processo normale
quando si avvia è molto molto piccolo
è meno di 300 parole di memoria e il
il trucco qui è, naturalmente, che questi
le pile possono crescere e restringersi se necessario
quindi in molti linguaggi di programmazione
avrebbe bisogno di creare una pila di una pagina
dimensione o qualcosa del genere e tu
avrebbe forse una pila per per il
tutta la macchina o qualcosa del genere ma
il mezzo di Erlang usiamo una pila per
processo e possiamo ridistribuirli
sapere cosa è tutto in pila e
possiamo spostarlo e cambiare il
puntatori come necessario e poi il
il modello di concorrenza è fatto dal virtuale
applicazione della macchina effettivamente cooperativa
multitasking sul lato del virtuale
macchine vista di esso così per un processo o
un programmatore che hai preventivamente
multitasking in modo da eseguire il processo e
potrebbe in qualsiasi momento cedere e lasciarne un po ‘
l’altro processo viene eseguito se si sta eseguendo su a
macchina single core allora quella multi
il compito è fatto cedendo e lasciando
anche questo è un altro processo, naturalmente
vero in una macchina multi-core dove tu
avere più processi di quelli che hai
scheduler ma sulla macchina virtuale
lato in realtà è fatto con
collaborativo cedendo così
in alcuni punti la macchina virtuale
controllerà se il processo è stato utilizzato
tutte le sue riduzioni, quindi quale?
la riduzione è un po ‘ ondulata ma
di solito è una chiamata di funzione quindi ogni
la chiamata alla funzione utilizza una riduzione
quando si tratta di built-in del
il linguaggio è un po ‘più oscuro
ma fondamentalmente un processo non può essere eseguito
senza usare riduzioni quindi una sola ragione
per questo è perché non ci sono loop in
compagnia aerea non c’è loop costruisce il
L’unico modo per fare un giro in compagnia aerea è vicino
usando una ricorsione di coda , quindi lo farai
effettivamente fare una chiamata di funzione così a ciascuno
chiamata di funzione che farai usare uno
riduzione e prima o poi il
processo corto di riduzioni e poi
nei luoghi in cui la macchina virtuale
conosce lo stato completo del processo e
è a corto di riduzioni lo farà
bloccare quel processo e pianificare un nuovo
processo di eseguire così in realtà non lo è
solo per pezzi di memoria ma per uno
cosa è allocata la pila nell’heap
insieme come un pezzo di memoria così loro
crescono uno verso l’altro e questo risparmia
un puntatore nell’emulatore di fascio per uno
cosa perché non è necessario tenere
traccia di dove finisce l’heap e dove
la pila termina quando quei due puntatori
cima all’heap e cima dello stack si incontrano allora
sai che sei a corto di spazio e
c’è anche un tutto profondo perché c’è
un garbage collector generazionale quindi dati
che sopravvive per un paio di spazzatura
le collezioni passeranno al vecchio heap
e
quel suggerimento non sarà spazzatura raccolta
fino a quando non c’è una nuova importante collezione
c’è anche qualcosa chiamato un processo
direttore nel dizionario che cerchiamo di
non parliamo nel mondo delle compagnie aeree, quindi io
non lo farò ce ne sono in realtà due
in scatole nella macchina virtuale e questo
è così che puoi inviare messaggi a a
processo anche se è in esecuzione
un altro programmatore e vedremo il
dettagli per questo, quindi immagina che tu
hanno questi due processi processo 1 e
processo 2 e processo uno vuole chiamare
questa incredibile funzione dice ciao quale
accetta questa stringa ciao che ora conosciamo
come appare sul mucchio è un sacco di
dati sull’heap e rileva ad alcuni
altro processo che viene elaborato in tal modo
sul mucchio abbiamo la parola ciao noi
avere qualche altro processo qui elaborare anche
è seduto e ascolta e ascolta qui
quindi eseguiamo questa dichiarazione e poi
la macchina virtuale tratterà qualcosa
chiamato un buff EM e quindi copierà
l’ intero termine per questo M buff e questo
è ancora nei processi di memoria e
processare l’ esecuzione di un utente in modo tale processo
può correre e fare tutto ciò che vuole
durante questo tempo di coping
e poi alla fine di questo invio il
l’emulatore cattura una rapida occhiata a questo
posta in arrivo e sposta semplicemente il puntatore da
questa casella di posta elettronica a questo M appassionato e ora
improvvisamente appartiene a questa memoria di processo
così in questo processo riceviamo e noi
attendere il messaggio 42 questo messaggio
non verrà visualizzato ma abbiamo questo
timeout più vicino che dopo un secondo noi
tornerà tutto ok e continuerà
eseguendo così cosa succede quando quando
eseguire questo ciclo di ricezione è che noi
sposta questo messaggio nella mailbox della scena
quindi questo è ora parte delle cose che ha
essere spazzatura raccolta
se questo processo vuole essere una spazzatura
collezione quindi questa casella di posta non è stata vista
durante la raccolta dei rifiuti e qualsiasi nuovo
i messaggi che arrivano possono arrivare anche
sebbene l’altro processo stia facendo
garbage collection perché questo processo
non li ha ancora visti in alcun modo così noi
può dare un’occhiata veloce per aggiungere qualcosa
in questa casella di posta sposta questa memoria su e
quindi lo spostiamo nella casella di posta in arrivo e
poi arriviamo alla prossima clausola di ricezione
e ora lo spostiamo dalla casella di posta in arrivo
questo messaggio ciao corrisponde a qualsiasi cosa
lo spostiamo nell’heap
così che era come message-passing in
compagnia aerea lavora e per il programmatore
non hanno alcuna memoria condivisa e
per la macchina virtuale ovviamente tu
deve essere in grado di arrivare alla casella di posta di
il processo ma ha minimizzato il tempo
che in realtà bisogno di prendere uno sguardo di
l’altra casella di posta e quella casella di posta
tenuto a parte dalla casella di posta elettronica devi
prendere in considerazione quando si effettua la garbage collection
quindi l’altra cosa grandiosa di aria sdraiato
è che abbiamo la gestione degli errori e
eccezione Don ha fatto bene e
c’è qualcosa chiamato monitor e
segnala così con questi segnali che puoi
costruire un albero di supervisione, quindi quale OTP
la libreria ti dà anche un generico
supervisore in modo da poter avviare il
supervisore che monitora il grafico
supervisori che controllano i bambini e
se un bambino muore, andrà un segnale
il supervisore che può riavviarlo così
facciamo una piccola dimostrazione di ciò che è qui
un sistema di corsa lungo con il
struttura di supervisione del sistema vuoto
quando è iniziato così c’è un kernel
supervisore tenendo traccia di un numero di
altri supervisori che hanno usato in
sistema
e ora ho la loro tastiera
scritto un piccolo programma che inizia a
supervisore e poi inizia un bambino
il supervisore di lettura che conta solo così
abbiamo iniziato un supervisore con il peed 55
quindi ora appare sicuro nel kernel
supervisore questo supervisore 55 e il
bambino 56 e ora posso davvero andare
dentro e uccidi questo bambino e poi vedi
che muore ma è riavviato in modo che
inizio a contare da zero di nuovo che posso
uccidere anche il supervisore e poi esso
riavvia il supervisore e il bambino
e continua a contare, naturalmente, quando
muore perde la data, ma potrebbe
salvarlo è rimasto in qualche database o
qualunque cosa abbia bisogno se deve essere mantenuta
stato persistente ma sì perché c’è
un bug o qualsiasi cosa accada a questo
processo non significa che il tutto
il sistema si arresta o il mio codice si arresta
l’esecuzione è appena tornata
su
e naturalmente Alan ha ordinario o ordinamento
di ordinario try-catch in modo da poter scrivere
codice per ottenere il file in modo da inviarlo a
nome del file tenta di aprirlo e se si ottiene
va bene si ottiene una maniglia e qui io
non voglio davvero gestire il caso
che il file non esiste
quindi sì, ignori quel caso che l’errore lo farà
quindi essere propagato verso l’alto per un altro
posto dove si spera serva
fornire il nome del file, quindi è possibile sapere
cosa potresti fare con esso se non lo fa
esiste e poi provo a leggere dal
handle di file e ottengo il file e
restituirlo o ottengo non può rilevare un errore
e un file e restituire una lista vuota in
quel caso e poi lo faccio
chiudi il gestore di file con un after
clausola e questo è eseguito se vado
in questo modo con un ok o l’errore questo
è sempre eseguito ma il valore restituito
è ancora il valore di ritorno del caso
che corrisponde quindi al valore di ritorno di questo
il corso dell’autore è sempre buttato via ma
in questo modo puoi scrivere gestori sicuri e
si preoccupano solo degli errori che vuoi
prendersi cura di e gli altri sono
passato nella catena e se non c’è
prendere ovunque nel processo impilare il
il processo morirà e un segnale sarà
inviato al tuo supervisore istantaneo
quindi un’altra buona caratteristica di Elling è
la shell interattiva in modo che abbiamo visto ora che
sono repulsioni sessuali anche per Java
questa è una cosa carina ma mi piace valutare
questo per molto tempo e accoppiato con
strutture di dati di tipi di dati trasparenti
è davvero facile andare in shell e
guarda lo stato del sistema e quando
stai costruendo il tuo programma sulla shell
è fantastico, quindi scrivi qualche codice
per la shell testare direttamente nel
shell vedere se funziona o meno il test
e ciclo di scrittura è molto molto breve solo
scrivi una riga di codice vai nella tua shell
testalo o scrivi anche del codice nel
shell per testarlo e così via molto bello ma
ha un inconveniente sfortunato che è
che non c’è quasi nessun test-driven
lo sviluppo della compagnia aerea in questo modo
dovrebbe essere bene forse questo lo fai scrivere
i tuoi test ma li butti via tutti
il tempo in cui scrivi tutti i tuoi test
una shell prova ogni volta il tuo codice
personaggio che scrivi lo collaudi nel
shell funziona bene e poi scrivi
è il tuo prossimo test e così via fino ad arrivare
funziona, ma quando hai finito è
solo nel guscio e tu non ottieni
questi bei test che puoi usare in seguito
quindi mi infastidisce molto, ma è così
è con il guscio ma abbiamo poco
demo della shell quindi ecco alcuni
cose che puoi fare per esempio ottenere
la dimensione heap di tutti i processi in
il sistema in modo da ottenere tutti i processi in a
sistema nel
P e quindi abbiamo una lista di comprensione
qui così per ogni P ogni processo che facciamo
processo anche per la richiesta della dimensione heap
e poi lo pieghiamo con una funzione
quello prende il valore da cui otteniamo
informazioni di processo e aggiungiamo questo il
valore accumulato e iniziare con zero così
se chiedo ai processi ottengo tutti i pin
nel sistema, quindi se lo faccio
ho una tastiera americana su uno svedese
la donna è sempre eccitante
quindi se devo elaborare le informazioni e tutto
processi posso vedere che ottengo delle tuple
con dimensioni heap e le dimensioni e poi I
posso continuare a costruire le mie piccole cose
per esaminare le cose nel sistema o io
puoi semplicemente chiamare il costruito in quel testamento
dammi i nomi dei processi o
cosa stanno correndo e quanti messaggi
che hai in coda e loro
taglie e così via così questa shell è incredibile
quando fai manutenzione in corso
sistema che si comporta male
ed Eric passa molto tempo
costruendo le loro librerie OTP e queste
ti dà le cose difficili così hanno
Server Jen che è un modo di costruire un
server che si prende cura delle cose
che è necessario in un server piacerti
manutenzione e la capacità di fare caldo
aggiornamento del codice mentre il sistema è in esecuzione
hai il supervisore e il supervisore
che puoi costruire questa supervisione
alberi e hanno tutte le impostazioni per se
vuoi che uccidano tutti i fratelli
o riavviare tutti i fratelli o semplicemente
ricorrere a un bambino e così via quando a
processo muore e poi c’è un finito
stato macchina e lo rende facile
scrivere se una macchina di stato nella stessa
in modo che tutti possano leggere ciò di cui ha bisogno
macchina a stati gestisce i messaggi a
se in ogni stato macchina e così via e
questo lo rende possibile se non facile
costruire sistemi scalabili con tolleranza d’errore
sì e poi abbiamo la stringa di parole così
le stringhe sono solo liste di numeri interi ma
c’è questa cosa che si chiama I / O
elenco che in realtà è un elenco annidato di
stringhe e interi e questo significa che
puoi in questa lista che puoi mettere
binari o stringhe o elenchi di stringhe
e questo significa che non puoi
concatena due stringhe in tempo costante
li hai appena inseriti in una lista in una console
e poi ne hai concatenati due
stringhe quindi se stai servendo HTML e
stai acquisendo dati da diversi
posti da inserire nella tua pagina
puoi solo costruire rapidamente questo insieme
struttura e quindi inviarlo a un I / O
porto quindi se non puoi fare aria come se la tua
gatto non ti amo o qualsiasi altra cosa
è quasi bene forse ma una cosa tu
può fare, naturalmente, è quello di modellare il tuo
programmi come servizi fondamentalmente è così
cosa fai in linea con tutto il tuo
piccoli componenti li modelli come
servizi che sono indipendenti e che
ha un’API basata sul messaggio
passando e questo è quando costruisci il tuo
componenti come servizi, ne ottieni alcuni
di quella memoria non condivisa dal tuo
design in modo da poter utilizzare il passaggio dei messaggi
e il nostro stato condiviso per esempio in
Scala hai un intero insieme di cose che tu
può passare in giro come messaggi che sono
immutabile e se ti attieni a quella parte
di Scala che puoi installare ottengo quasi a
linea come comportamento delle cose così tu
non condividere qualsiasi stato è sufficiente copiare
strutture immutabili o puoi andare al
akka way con scroll ha fatto e
implementare effettivamente OTP e qualsiasi altra cosa in
la tua lingua preferita quindi presso la compagnia aerea
workshop a Boston o in realtà è stato un
usi commerciali di giorno di funzionale
programmazione a Boston la scorsa settimana lì
erano alcuni ragazzi che avevano fatto questo in
schema in modo che hanno costruito OTP in cima a
schema al fine di controllare medica
attrezzatura roba affascinante sì meraviglia
perché non hanno usato la compagnia aerea, ma comunque
loro hanno una compagnia aerea in regime così
va bene, ma potresti perdere il
fantastica sintassi della compagnia aerea, naturalmente
e probabilmente perdere parte del multi-core
vantaggio e se ti piace in Scala
c’è il problema che improvvisamente tu
renditi conto che hai bisogno di una libreria
questo è in Java
porti dentro una biblioteca mutevole e
improvvisamente c’è la mutazione e lo stato
alle tue spalle e sei in una brutta situazione
posto
potresti anche perdere la trasparenza
tipi e la fantastica shell e
possibilmente mantenere l’aggiornamento del codice almeno a
livello granulare che si può ottenere in a
compagnia aerea ma come ho detto all’inizio
l’aspetto più importante della compagnia aerea
non è questa fantasia macchina virtuale e
quale test per eseguire il tuo programma in a
modo scalabile è quando inizi
programmare una linea in cui inizi a pensare
un modo completamente nuovo di iniziare a pensare
su attualmente con processi e come
modella il tuo sistema come piccoli servizi e
ottieni un design completamente diverso di
il tuo programma quando pensi che la compagnia aerea sia
se pensi in qualsiasi altra lingua così
un’altra parola del nostro sponsor ha fatto il mio
il nome è Vasu, sono l’amministratore delegato di Dona
So che la gente come me e reclutatori tutti
in tutto il mondo sono costantemente bugging
ti sta inseguendo cercando di farti arrivare
unisciti alla loro compagnia , ecco perché invece
Ti darò la lista dei dieci migliori motivi
non dovresti unirti a Connor, non siamo un
noi stiamo giocando a ping pong
in realtà una società in crescita dove le persone
come se niente fosse fatto e c’è dell’altro
di 900 di noi con cui non lavoriamo
qualsiasi cosa sexy come la musica con cui lavoriamo
noioso su cose complicate come
pagamenti che muovono i soldi di altre persone
avanti e indietro parlando di soldi questo
non sarà il super eccitante
posto dove ti stai chiedendo
cosa succederà a questa compagnia
domani sei astuto
siamo stati redditizi fin dal primo giorno che si
non sarà il migliore che abbiamo
ha inventato Internet
abbiamo persino ufficiali di sicurezza israeliani
ancora peggio dove la gente scrive libri
sulle compilation e cose del genere io
non posso nemmeno pronunciare se vuoi
costruisci la più bella app per il controllo della regolarità
che nessuno usa questo non è il posto giusto
per essere non è dietro l’ angolo
se non vivi oltre il muro, non farlo
anche pensare di portare il tuo partner
le persone dolci sono state votate le migliori
guardando le persone nel mondo
non capirai una cosa cosa
qualcuno sta dicendo che suoniamo tutti come il
Chef svedese , siamo un paese socialista
questo significa che non hai bisogno di pagare
per qualsiasi cosa e peggio mi siedo
ufficio dove tutti abbiamo
sei settimane di ferie e mesi di retribuzione
lasciare la paternità è orribile per chiunque
chi ama lavorare in modo da riassumere tutto
sei più che benvenuto a far parte del Ghana
se finalmente lavori a
in rapida crescita
società redditizia con brillante
biscotti che sembrano fantastici così gentile
di trovare con sei settimane di vacanza
Immagino che sia fuori discussione
ma grazie per l’ascolto
sì, questo era tutto ciò che avevo
a meno che non vogliate saperne di più cruento
dettagli Ho delle slide extra ma
grazie così abbiamo un numero di
domande per te fammi vedere
quindi hai parlato molto della destra
modello di concorrenza è sempre il giusto
uno o hai incontrato situazioni
dove ti piacerebbe davvero un diverso
modello di concorrenza n. II non pensare
Sono venuto a vedere posti dove la modella
non ha avuto ragione, ovviamente, l’uso di
non è sempre stato giusto, ma per
le cose che stiamo costruendo
che il modello ha montato perfettamente se
costruisci giochi per computer e devi farlo
veloce grafica e così su una linea è
probabilmente non è la lingua per te ma per
quello che stiamo facendo è perfetto quindi una linea
ha un sacco di messaggi che passano molto
processi ma per quanto riguarda località e
le linee della cache non guastavano tutto questo
su sì lo fa
non è così importante come pensi
la maggior parte dei casi, ma quando ne hai davvero bisogno
è un po ‘complicato in linea
farlo bene che è vero, ma si deve
pensa davvero al tuo programma da ottenere
per usare meno memoria e poi è
non è più così divertente ma in più
casi la macchina fa molto bene
lavoro avendo il modello con il
processo avrai modello il tuo programma
in modo tale che ridimensiona così se
hai molti core
le nostre molte macchine che distribuiremo
il tuo lavoro su molti di questi corsi
e un processo verrà eseguito su un core
e funzionerà abbastanza bene con l’avere
tutta la sua memoria su quel nucleo va bene anche così
la compagnia aerea viene utilizzata anche in tempo reale
applicazioni che tipo di garanzie
la compagnia aerea VM dà per il tempismo nessuno
beh, garantisce che i timeout lo faranno
non si verificano prima del tempo in cui il
timeout dice che accadrà e questo
funziona bene in impostazioni in tempo reale bene io
non lo metterei in pausa in a in una macchina
ma dipende da che tipo di tempo reale
requisiti che hai ok e abbiamo
un’altra domanda che è dove ha fatto
La lunga compagnia aerea dell’utente Ericsson era ovviamente
progettati a Ericsson e forse possiamo
prendi entrambi perché siamo morti Ericsson
compagnia aerea di notizie nei primi giorni e dove
oggi Ericsson usa quella terra io
non ho mai lavorato a Ericsson, quindi non posso
parla davvero per loro su questo, ma Wolff
seduto qui che è stato nominato il primo
utente di compagnie aeree commerciali due volte durante
questa conferenza lo sa così
costruiscono l’ HD 301 che era il
i primi otto switch ATM di Ericsson e
che British Telecom ha acquistato e gestito per
dieci anni e poi hanno detto che loro
aveva nove nove di uptime su questo sistema
quindi è stato un uso di successo della compagnia aerea
presto e al giorno d’oggi Eric lo usa a
lotto nei test e ne uso un po ‘veloce
strumento di controllo o qualunque cosa per quasi
tutti i loro progetti, anche se quelli
i progetti non sono nella stessa compagnia aerea
ma lo strumento di controllo rapido funziona bene
testare alcuni protocolli API e così via
ok bene abbiamo ancora qualche minuto e
Ho fatto le domande che sono state
pubblicato qui così altre domande per Eric
bene in tal caso oh oh questo è uno così io
non so se riesci a sentirlo
indietro ma il riassunto era quello Ericsson
al giorno d’oggi non si usa solo la compagnia aerea
nuovi test ma per alcuni molto seri
progetti e sono felici di informarci
tutto ciò che stanno usando la compagnia aerea per alcuni
progetti seri ma non quello che sono
okay qualsiasi ultima domanda va bene allora
ringraziamo Eric per un discorso affascinante
avere un uomo esteso da Kelowna e
Eric ha lavorato senza Lange e
è VM da molto tempo ha ottenuto il suo dottorato
poi con il lavoro sulla compilazione di compagnie aeree
è andato e ha lavorato con Scala per a
mentre ma è tornato alle sue radici pochi
anni fa
è stato il CTO di Kelowna per diversi
anni e ora è il capo scienziato
e credo che sta scrivendo un libro sulla
argomento che ci dirà tutto di questo
Eric okay sì, così l’argomento è la compagnia aerea
macchina virtuale e non lavoro per
Non ho questa fantasia di Oracle
disclaimer ma conosci i discorsi che io
come la maggior parte sono quelli in cui le persone
avere opinioni e probabilmente hanno torto
ma almeno sono fidanzati e dicono
la loro opinione e questo è sempre
molto divertente o ti mostrano un sacco di codice
e siamo riusciti a farlo nel modo giusto
in modo da poter seguire tutto il codice tranne
quella nuova cosa che ti mostra e tu
ottenere AHA che è stato grande e purtroppo
Non sono un uomo supponente e vado
parlare della macchina virtuale e
non ti mostro così tanto codice così probabilmente
il discorso più noioso di oggi, quindi ci sono
alcuni altri discorsi in questo momento dove puoi
impara come usare le scorciatoie da tastiera
e così via, è grandioso , dovresti saperlo
come usarli ma sapendo come usare
la tua scorciatoia da tastiera non ha intenzione di
rendi il programmatore più produttivo
ciò che conta davvero per te diventare
successo o produttivo è come te
che quando avevo diciassette anni sono 23
Stati, vengo dalla Svezia
Vengo da qualche parte a nord in Svezia
Haparanda è vicino per l’Artico
Cerchio
e sono andato come studente di scambio al
California per un anno potrei parlare
L’inglese prima di andarci ma quando lo feci
ha iniziato a parlare inglese ogni giorno
in ogni situazione dopo un po ‘di tempo
ho iniziato a pensare in inglese e io
improvvisamente mi resi conto che ero diventato
stupido non perché sei stupido perché
stai pensando inglese ma perché il mio
il vocabolario era limitato e la mia comprensione di
la lingua era così limitata che potevo
Pensa solo a un pensiero limitato
terribile ma dopo che avevo iniziato
pensando in inglese non avrei potuto
smettila quindi sono rimasto stupido per un anno nel
Dichiara, ma è stato divertente comunque, sono io
indovina il modo in cui dovresti essere, ma io
lezione appresa da questo e questo è il
il linguaggio che stai usando influisce su come
tu pensi e questo vale per la programmazione
anche le lingue immaginano quindi di incontrarti
alcuni ragazzi dell’MBA che hanno questo geniale
idea e decidi di formare una startup
stiamo andando a costruire un servizio web
fantastico quindi costruisci un servizio web e
hai iniziato a ricevere traffico
profitto quindi questo è il traffico a
date diverse e poi improvvisamente questo
succede che è Natale e il tuo traffico
raddoppia in un tempo molto breve, quindi questo è
un momento davvero emozionante per una nuova startup
per incontrare il suo primo Natale e poi
l’ anno prossimo raddoppia di nuovo e l’anno prossimo
raddoppia di nuovo e ora sta iniziando
diventare ridicolo
Davvero ridicolo e dopo un po ‘
sei abbastanza felice che i tuoi servizi
sono ancora attivi e funzionanti dopo questo così
questo era due anni fa l’ anno scorso
il grafico è salito allo stesso modo e quest’anno
ci aspettiamo che succeda di nuovo così
questo è ciò che il successo assomiglia a questo
statistiche effettive delle transazioni da
Clarinha e siamo rimasti molto soddisfatti voi
ricorda quella piccola protuberanza che c’era
quando il traffico è raddoppiato per il primo
tempo sembrava davvero spaventoso così nel mio
astratto e anche i giovani hanno detto che noi
aveva farmaci esponenziali e questo è il
crescita esponenziale mano-ondata di affari
questo è ovviamente solo polinomiale ma
chiamiamola crescita esponenziale sì sì
all’inizio giorni felici quando questo
Succede mangiato la Spagna quindi se vuoi
crea un servizio Web scalabile e tu
voglio farlo in una lingua che aiuti
scala e questo è ovviamente un like
sorpresa
quindi ciò che Alan ti dà è tollerante ai guasti
manutenibile e scalabile e io no
andando a colpire altre lingue qui il
l’oratore precedente lo ha fatto abbastanza bene
ma ci sono cose in altre lingue
questo li rende meno tolleranti ai guasti
manutenibile e scalabile quindi perché è a
questa era la tolleranza agli errori di linea
fondamentalmente ciò che i progettisti di Erlang
ha voluto fin dal principio questo era indietro
negli anni ’80 a Ericsson quando Ericsson
improvvisamente capito che
L’80% dei loro budget per il nuovo sistema era
non hardware come si pensava ma
in realtà software e quindi devi
costruire hardware affidabile ma come sarebbe
costruiscono software affidabile così loro
ha deciso di indagare su questo e ha cercato di
scoprire modi per costruire software affidabile
e il laboratorio di informatica di Ericsson
ha inventato una linea che è stata progettata per
costruire software fault tolerant avendo
il giusto modello di concorrenza e il fare
errore ed eccezione gestendo il diritto
modo e fornendo librerie per il
roba davvero dura e ho intenzione di parlare
su tutte queste cose in dettaglio lungo
è anche mantenibile così una ragione per
questo è che abbiamo digitato dinamicamente
andando a vedere che digita dinamicamente potrebbe
non essere qualcosa a cui pensi
rendendo un linguaggio gestibile ma questo
abilita anche molte cose nel
macchina virtuale che lo rende
mantenibile e hai simbolico e
strutture dati trasparenti per cui tutto il
dati nel tuo sistema a cui puoi guardare
in qualsiasi momento e vedere esattamente quello che sembrano
come in un modo simbolico e c’è un
la shell interattiva e l’aggiunta sono scalabili
quindi questa è la cosa più pubblicizzata
sulla nostra linea in questi giorni e questo è
anche a causa della giusta concorrenza
modello e buone librerie per il duro
roba e la cosa che molte persone
che arriva alla odio della compagnia aerea sulla compagnia aerea
è che è strano e molto stupido
stringhe elenca solo ma se lo sei
fare un servizio web che puoi effettivamente
concatenare un sacco di cose e spingerle
fuori davvero molto velocemente con questi
la compagnia aerea strana stringe una parola dal nostro
sponsor prima di andare in un dettaglio
Ho pensato che avevi bisogno di essere svegliato
perché ora ci tufferemo nel
interni di compagnie aeree, quindi solo un breve
rompere lì e poi si vede un po ‘
codice compagnia aerea anche non c’è cattura così
Elling è dinamico e fortemente digitato
oh hai notato che l’ho messo su una tastiera
la digitazione a-line su una tastiera che è
il giogo della presentazione mi dispiace
sì sì, con una digitazione dinamica
linguaggio otteniamo molti benefici uno
la cosa è che possiamo fare il caricamento di codice caldo
in modo da sistema senza fili è in esecuzione possiamo
carica effettivamente un nuovo codice nel sistema
puoi farlo in molte lingue ma
se hai una digitazione statica ce ne sono alcuni
problemi quindi se lo realizzi all’improvviso
i tipi che avevi erano sbagliati
e devi aggiornare la tua nuova versione
non puoi davvero farlo perché tu
non è possibile caricare una nuova versione di alcuni codici
che hanno una visione diversa dei tipi
nel sistema rispetto ad altre parti del
codice ma rende anche possibile per
avere gli heap e gli stack mobili da allora
tutto è ben etichettato, così sarà
permetterebbe di avere veramente piccolo
stack per ogni processo e verremo
di nuovo a quello un po ‘di più e per
da una vista di manutenzione si ottiene molto
dati trasparenti in modo da poter accedere al
sistema e guarda qualsiasi pezzo di memoria
e da quel pezzo di memoria puoi farlo
effettivamente vedere quali strutture di dati sono dentro
il ricordo e, naturalmente, puoi farlo
raccolta dei rifiuti e lo si può fare
con una copia
quindi ottieni una buona localizzazione delle cose
questo è il reticolo di tipo Erlang lì
hai qualcosa chiamato un termine che è
qualsiasi cosa in Erlang è un termine che può
essere un numero e il numero è o un
intero o un float e digitare il motivo per cui è lì
è solo la distinzione tra interi
e galleggia nella realizzazione c’è
in realtà anche due tipi di numeri interi
ci sono interi immediati che si adattano
una parola della macchina e grandi numeri interi
che deve essere inscatolato e messo sul
mucchio ma la compagnia aerea ha solo un oceano di
numeri dove puoi avere numeri di
qualsiasi dimensione fondamentalmente non deve preoccuparsi
su involucro o confini di parole o
qualcosa di simile e hai galleggianti
ora hai gli atomi che sono nomi simbolici
che puoi usare molto pratico per taggare
il tuo codice con gli atomi anziché solo
numeri e riferimenti sono specifici
termine che puoi creare una volta per ottenere un
riferimento unico e nessun altro dovrebbe
essere in grado di scambiare quello di riferimento
che sarà paragonabile a quello
riferimento in modo da poter taggare i messaggi con
questi riferimenti sanno che sono venuti
da originariamente e cose del genere
c’è chiusure è chiamato divertimento in
Erlang ci divertiamo molto di più a Erlang
che in altre lingue perché non lo facciamo
avere chiusure abbiamo i fondi che ci sono
porte che fondamentalmente elaborano ma quello
sono collegati ad alcuni I input / output
canale
c’è peds che è il processo
identificatore a cui sei gestito
un altro processo nella nostra linea che hai
tuple
dove puoi avere una serie di termini e
elenchi di corsi che consistono in entrambi
ago o coni e poi c’è Tommy
chiamato binario che è solo un grande pezzo
della memoria dei byte in modo da avere un file per
esempio lo si carica come un file binario e tu
ottenere tutti i byte nel file in memoria
e puoi passarlo e esaminare
tutti questi termini sono paragonabili
quindi puoi chiedere al sistema se il
l’interno è meno dell’atomo foo
o meno la lista vuota e così via così
i valori a sinistra sono inferiori al
valori a destra tranne per i numeri interi
e galleggianti che hanno alcuni davvero speciali
semantica di confronto ma lo sappiamo tutti
che non dovremmo confrontare interi o
galleggia comunque, ma una buona cosa è
che c’è un modo per confrontare tutti i
termini in modo da poter usare qualsiasi termine come chiave
e mettilo in un dizionario o qualcosa del genere
come quella
quindi ora ci stiamo immergendo un po ‘più a fondo
la macchina virtuale quindi se ne hai uno
stringa in una riga come ho detto prima
le stringhe sono solo elenchi così una stringa prende
un sacco di memoria in una riga soprattutto se
si esegue su una macchina a 64 bit ma su una stringa
come un semplice ciao
sì consiste nel portare un puntatore a
memoria quindi questo è gli indirizzi di memoria qui
siamo rimasti molto contenti di alcuni molto bassi
indirizzi di memoria per questo esempio quindi a
indirizzo di memoria e poi il tag che
dice che questa è una lista e questo è giusto
che il bit più basso è un 1 così posso andare
a questo posto P in memoria in qualsiasi momento
e vedrò che questa è una lista e io
può seguire il puntatore per aggiungere il sole
e 28 e saprò che c’è un
consolare qui con una macchina e un cutter o
testa o coda di questa lista così sul
indirizzo sulla linea 28 c’è il personaggio
H memorizzato che è il valore ASCII per
quel personaggio si è spostato a sinistra e quindi taggato
questo come il suo piccolo in cui sono quattro
e poi nella console ce n’è un’altra
list tag e l’indirizzo a quello successivo
consolle
quindi questo è solo un processo di memoria
heap e questo è come una lista finirebbe
e poi abbiamo il tag di Neil che è
tutti eccetto il terzo bit, quindi è così
quello che dobbiamo sapere sui tipi e
Rappresentazione di loro prima di andare a
il giusto modello di concorrenza, quindi il giusto
il modello di concorrenza ti dà l’ abilità
per avere processi leggeri e loro
tutto parla al passaggio dei messaggi non c’è
stato condiviso tra loro e questo significa
che possiamo anche avere una spazzatura
collezionista che non ha fermato il mondo
e sono collegati tramite monitor
e segnali così un processo dal
il punto di vista delle macchine virtuali è solo un
un po ‘di memoria quindi è fondamentalmente il
blocco di controllo del processo che è a
struttura predefinita con tutto il
informazioni sul processo se
sta correndo dove mantiene la sua profondità
heap e stack e altro interessante
fatti sul processo e poi ha
una cassetta postale e quando è vuota non lo fa
prendi qualsiasi spazio eccetto per un po ‘di spazio dentro
il PCB che è già rappresentato
lì e poi c’è una pila dove il
L’esecuzione del programma per questo processo è
fatto in modo che ogni processo abbia il proprio stack
e poi c’è un mucchio dove il
processo conserva i propri dati
e lo stacking inizia a 233 parole
o forse 232 parole quindi un processo normale
quando si avvia è molto molto piccolo
è meno di 300 parole di memoria e il
il trucco qui è, naturalmente, che questi
le pile possono crescere e restringersi se necessario
quindi in molti linguaggi di programmazione
avrebbe bisogno di creare una pila di una pagina
dimensione o qualcosa del genere e tu
avrebbe forse una pila per per il
tutta la macchina o qualcosa del genere ma
il mezzo di Erlang usiamo una pila per
processo e possiamo ridistribuirli
sapere cosa è tutto in pila e
possiamo spostarlo e cambiare il
puntatori come necessario e poi il
il modello di concorrenza è fatto dal virtuale
applicazione della macchina effettivamente cooperativa
multitasking sul lato del virtuale
macchine vista di esso così per un processo o
un programmatore che hai preventivamente
multitasking in modo da eseguire il processo e
potrebbe in qualsiasi momento cedere e lasciarne un po ‘
l’altro processo viene eseguito se si sta eseguendo su a
macchina single core allora quella multi
il compito è fatto cedendo e lasciando
anche questo è un altro processo, naturalmente
vero in una macchina multi-core dove tu
avere più processi di quelli che hai
scheduler ma sulla macchina virtuale
lato in realtà è fatto con
collaborativo cedendo così
in alcuni punti la macchina virtuale
controllerà se il processo è stato utilizzato
tutte le sue riduzioni, quindi quale?
la riduzione è un po ‘ ondulata ma
di solito è una chiamata di funzione quindi ogni
la chiamata alla funzione utilizza una riduzione
quando si tratta di built-in del
il linguaggio è un po ‘più oscuro
ma fondamentalmente un processo non può essere eseguito
senza usare riduzioni quindi una sola ragione
per questo è perché non ci sono loop in
compagnia aerea non c’è loop costruisce il
L’unico modo per fare un giro in compagnia aerea è vicino
usando una ricorsione di coda , quindi lo farai
effettivamente fare una chiamata di funzione così a ciascuno
chiamata di funzione che farai usare uno
riduzione e prima o poi il
processo corto di riduzioni e poi
nei luoghi in cui la macchina virtuale
conosce lo stato completo del processo e
è a corto di riduzioni lo farà
bloccare quel processo e pianificare un nuovo
processo di eseguire così in realtà non lo è
solo per pezzi di memoria ma per uno
cosa è allocata la pila nell’heap
insieme come un pezzo di memoria così loro
crescono uno verso l’altro e questo risparmia
un puntatore nell’emulatore di fascio per uno
cosa perché non è necessario tenere
traccia di dove finisce l’heap e dove
la pila termina quando quei due puntatori
cima all’heap e cima dello stack si incontrano allora
sai che sei a corto di spazio e
c’è anche un tutto profondo perché c’è
un garbage collector generazionale quindi dati
che sopravvive per un paio di spazzatura
le collezioni passeranno al vecchio heap
e
quel suggerimento non sarà spazzatura raccolta
fino a quando non c’è una nuova importante collezione
c’è anche qualcosa chiamato un processo
direttore nel dizionario che cerchiamo di
non parliamo nel mondo delle compagnie aeree, quindi io
non lo farò ce ne sono in realtà due
in scatole nella macchina virtuale e questo
è così che puoi inviare messaggi a a
processo anche se è in esecuzione
un altro programmatore e vedremo il
dettagli per questo, quindi immagina che tu
hanno questi due processi processo 1 e
processo 2 e processo uno vuole chiamare
questa incredibile funzione dice ciao quale
accetta questa stringa ciao che ora conosciamo
come appare sul mucchio è un sacco di
dati sull’heap e rileva ad alcuni
altro processo che viene elaborato in tal modo
sul mucchio abbiamo la parola ciao noi
avere qualche altro processo qui elaborare anche
è seduto e ascolta e ascolta qui
quindi eseguiamo questa dichiarazione e poi
la macchina virtuale tratterà qualcosa
chiamato un buff EM e quindi copierà
l’ intero termine per questo M buff e questo
è ancora nei processi di memoria e
processare l’ esecuzione di un utente in modo tale processo
può correre e fare tutto ciò che vuole
durante questo tempo di coping
e poi alla fine di questo invio il
l’emulatore cattura una rapida occhiata a questo
posta in arrivo e sposta semplicemente il puntatore da
questa casella di posta elettronica a questo M appassionato e ora
improvvisamente appartiene a questa memoria di processo
così in questo processo riceviamo e noi
attendere il messaggio 42 questo messaggio
non verrà visualizzato ma abbiamo questo
timeout più vicino che dopo un secondo noi
tornerà tutto ok e continuerà
eseguendo così cosa succede quando quando
eseguire questo ciclo di ricezione è che noi
sposta questo messaggio nella mailbox della scena
quindi questo è ora parte delle cose che ha
essere spazzatura raccolta
se questo processo vuole essere una spazzatura
collezione quindi questa casella di posta non è stata vista
durante la raccolta dei rifiuti e qualsiasi nuovo
i messaggi che arrivano possono arrivare anche
sebbene l’altro processo stia facendo
garbage collection perché questo processo
non li ha ancora visti in alcun modo così noi
può dare un’occhiata veloce per aggiungere qualcosa
in questa casella di posta sposta questa memoria su e
quindi lo spostiamo nella casella di posta in arrivo e
poi arriviamo alla prossima clausola di ricezione
e ora lo spostiamo dalla casella di posta in arrivo
questo messaggio ciao corrisponde a qualsiasi cosa
lo spostiamo nell’heap
così che era come message-passing in
compagnia aerea lavora e per il programmatore
non hanno alcuna memoria condivisa e
per la macchina virtuale ovviamente tu
deve essere in grado di arrivare alla casella di posta di
il processo ma ha minimizzato il tempo
che in realtà bisogno di prendere uno sguardo di
l’altra casella di posta e quella casella di posta
tenuto a parte dalla casella di posta elettronica devi
prendere in considerazione quando si effettua la garbage collection
quindi l’altra cosa grandiosa di aria sdraiato
è che abbiamo la gestione degli errori e
eccezione Don ha fatto bene e
c’è qualcosa chiamato monitor e
segnala così con questi segnali che puoi
costruire un albero di supervisione, quindi quale OTP
la libreria ti dà anche un generico
supervisore in modo da poter avviare il
supervisore che monitora il grafico
supervisori che controllano i bambini e
se un bambino muore, andrà un segnale
il supervisore che può riavviarlo così
facciamo una piccola dimostrazione di ciò che è qui
un sistema di corsa lungo con il
struttura di supervisione del sistema vuoto
quando è iniziato così c’è un kernel
supervisore tenendo traccia di un numero di
altri supervisori che hanno usato in
sistema
e ora ho la loro tastiera
scritto un piccolo programma che inizia a
supervisore e poi inizia un bambino
il supervisore di lettura che conta solo così
abbiamo iniziato un supervisore con il peed 55
quindi ora appare sicuro nel kernel
supervisore questo supervisore 55 e il
bambino 56 e ora posso davvero andare
dentro e uccidi questo bambino e poi vedi
che muore ma è riavviato in modo che
inizio a contare da zero di nuovo che posso
uccidere anche il supervisore e poi esso
riavvia il supervisore e il bambino
e continua a contare, naturalmente, quando
muore perde la data, ma potrebbe
salvarlo è rimasto in qualche database o
qualunque cosa abbia bisogno se deve essere mantenuta
stato persistente ma sì perché c’è
un bug o qualsiasi cosa accada a questo
processo non significa che il tutto
il sistema si arresta o il mio codice si arresta
l’esecuzione è appena tornata
su
e naturalmente Alan ha ordinario o ordinamento
di ordinario try-catch in modo da poter scrivere
codice per ottenere il file in modo da inviarlo a
nome del file tenta di aprirlo e se si ottiene
va bene si ottiene una maniglia e qui io
non voglio davvero gestire il caso
che il file non esiste
quindi sì, ignori quel caso che l’errore lo farà
quindi essere propagato verso l’alto per un altro
posto dove si spera serva
fornire il nome del file, quindi è possibile sapere
cosa potresti fare con esso se non lo fa
esiste e poi provo a leggere dal
handle di file e ottengo il file e
restituirlo o ottengo non può rilevare un errore
e un file e restituire una lista vuota in
quel caso e poi lo faccio
chiudi il gestore di file con un after
clausola e questo è eseguito se vado
in questo modo con un ok o l’errore questo
è sempre eseguito ma il valore restituito
è ancora il valore di ritorno del caso
che corrisponde quindi al valore di ritorno di questo
il corso dell’autore è sempre buttato via ma
in questo modo puoi scrivere gestori sicuri e
si preoccupano solo degli errori che vuoi
prendersi cura di e gli altri sono
passato nella catena e se non c’è
prendere ovunque nel processo impilare il
il processo morirà e un segnale sarà
inviato al tuo supervisore istantaneo
quindi un’altra buona caratteristica di Elling è
la shell interattiva in modo che abbiamo visto ora che
sono repulsioni sessuali anche per Java
questa è una cosa carina ma mi piace valutare
questo per molto tempo e accoppiato con
strutture di dati di tipi di dati trasparenti
è davvero facile andare in shell e
guarda lo stato del sistema e quando
stai costruendo il tuo programma sulla shell
è fantastico, quindi scrivi qualche codice
per la shell testare direttamente nel
shell vedere se funziona o meno il test
e ciclo di scrittura è molto molto breve solo
scrivi una riga di codice vai nella tua shell
testalo o scrivi anche del codice nel
shell per testarlo e così via molto bello ma
ha un inconveniente sfortunato che è
che non c’è quasi nessun test-driven
lo sviluppo della compagnia aerea in questo modo
dovrebbe essere bene forse questo lo fai scrivere
i tuoi test ma li butti via tutti
il tempo in cui scrivi tutti i tuoi test
una shell prova ogni volta il tuo codice
personaggio che scrivi lo collaudi nel
shell funziona bene e poi scrivi
è il tuo prossimo test e così via fino ad arrivare
funziona, ma quando hai finito è
solo nel guscio e tu non ottieni
questi bei test che puoi usare in seguito
quindi mi infastidisce molto, ma è così
è con il guscio ma abbiamo poco
demo della shell quindi ecco alcuni
cose che puoi fare per esempio ottenere
la dimensione heap di tutti i processi in
il sistema in modo da ottenere tutti i processi in a
sistema nel
P e quindi abbiamo una lista di comprensione
qui così per ogni P ogni processo che facciamo
processo anche per la richiesta della dimensione heap
e poi lo pieghiamo con una funzione
quello prende il valore da cui otteniamo
informazioni di processo e aggiungiamo questo il
valore accumulato e iniziare con zero così
se chiedo ai processi ottengo tutti i pin
nel sistema, quindi se lo faccio
ho una tastiera americana su uno svedese
la donna è sempre eccitante
quindi se devo elaborare le informazioni e tutto
processi posso vedere che ottengo delle tuple
con dimensioni heap e le dimensioni e poi I
posso continuare a costruire le mie piccole cose
per esaminare le cose nel sistema o io
puoi semplicemente chiamare il costruito in quel testamento
dammi i nomi dei processi o
cosa stanno correndo e quanti messaggi
che hai in coda e loro
taglie e così via così questa shell è incredibile
quando fai manutenzione in corso
sistema che si comporta male
ed Eric passa molto tempo
costruendo le loro librerie OTP e queste
ti dà le cose difficili così hanno
Server Jen che è un modo di costruire un
server che si prende cura delle cose
che è necessario in un server piacerti
manutenzione e la capacità di fare caldo
aggiornamento del codice mentre il sistema è in esecuzione
hai il supervisore e il supervisore
che puoi costruire questa supervisione
alberi e hanno tutte le impostazioni per se
vuoi che uccidano tutti i fratelli
o riavviare tutti i fratelli o semplicemente
ricorrere a un bambino e così via quando a
processo muore e poi c’è un finito
stato macchina e lo rende facile
scrivere se una macchina di stato nella stessa
in modo che tutti possano leggere ciò di cui ha bisogno
macchina a stati gestisce i messaggi a
se in ogni stato macchina e così via e
questo lo rende possibile se non facile
costruire sistemi scalabili con tolleranza d’errore
sì e poi abbiamo la stringa di parole così
le stringhe sono solo liste di numeri interi ma
c’è questa cosa che si chiama I / O
elenco che in realtà è un elenco annidato di
stringhe e interi e questo significa che
puoi in questa lista che puoi mettere
binari o stringhe o elenchi di stringhe
e questo significa che non puoi
concatena due stringhe in tempo costante
li hai appena inseriti in una lista in una console
e poi ne hai concatenati due
stringhe quindi se stai servendo HTML e
stai acquisendo dati da diversi
posti da inserire nella tua pagina
puoi solo costruire rapidamente questo insieme
struttura e quindi inviarlo a un I / O
porto quindi se non puoi fare aria come se la tua
gatto non ti amo o qualsiasi altra cosa
è quasi bene forse ma una cosa tu
può fare, naturalmente, è quello di modellare il tuo
programmi come servizi fondamentalmente è così
cosa fai in linea con tutto il tuo
piccoli componenti li modelli come
servizi che sono indipendenti e che
ha un’API basata sul messaggio
passando e questo è quando costruisci il tuo
componenti come servizi, ne ottieni alcuni
di quella memoria non condivisa dal tuo
design in modo da poter utilizzare il passaggio dei messaggi
e il nostro stato condiviso per esempio in
Scala hai un intero insieme di cose che tu
può passare in giro come messaggi che sono
immutabile e se ti attieni a quella parte
di Scala che puoi installare ottengo quasi a
linea come comportamento delle cose così tu
non condividere qualsiasi stato è sufficiente copiare
strutture immutabili o puoi andare al
akka way con scroll ha fatto e
implementare effettivamente OTP e qualsiasi altra cosa in
la tua lingua preferita quindi presso la compagnia aerea
workshop a Boston o in realtà è stato un
usi commerciali di giorno di funzionale
programmazione a Boston la scorsa settimana lì
erano alcuni ragazzi che avevano fatto questo in
schema in modo che hanno costruito OTP in cima a
schema al fine di controllare medica
attrezzatura roba affascinante sì meraviglia
perché non hanno usato la compagnia aerea, ma comunque
loro hanno una compagnia aerea in regime così
va bene, ma potresti perdere il
fantastica sintassi della compagnia aerea, naturalmente
e probabilmente perdere parte del multi-core
vantaggio e se ti piace in Scala
c’è il problema che improvvisamente tu
renditi conto che hai bisogno di una libreria
questo è in Java
porti dentro una biblioteca mutevole e
improvvisamente c’è la mutazione e lo stato
alle tue spalle e sei in una brutta situazione
posto
potresti anche perdere la trasparenza
tipi e la fantastica shell e
possibilmente mantenere l’aggiornamento del codice almeno a
livello granulare che si può ottenere in a
compagnia aerea ma come ho detto all’inizio
l’aspetto più importante della compagnia aerea
non è questa fantasia macchina virtuale e
quale test per eseguire il tuo programma in a
modo scalabile è quando inizi
programmare una linea in cui inizi a pensare
un modo completamente nuovo di iniziare a pensare
su attualmente con processi e come
modella il tuo sistema come piccoli servizi e
ottieni un design completamente diverso di
il tuo programma quando pensi che la compagnia aerea sia
se pensi in qualsiasi altra lingua così
un’altra parola del nostro sponsor ha fatto il mio
il nome è Vasu, sono l’amministratore delegato di Dona
So che la gente come me e reclutatori tutti
in tutto il mondo sono costantemente bugging
ti sta inseguendo cercando di farti arrivare
unisciti alla loro compagnia , ecco perché invece
Ti darò la lista dei dieci migliori motivi
non dovresti unirti a Connor, non siamo un
noi stiamo giocando a ping pong
in realtà una società in crescita dove le persone
come se niente fosse fatto e c’è dell’altro
di 900 di noi con cui non lavoriamo
qualsiasi cosa sexy come la musica con cui lavoriamo
noioso su cose complicate come
pagamenti che muovono i soldi di altre persone
avanti e indietro parlando di soldi questo
non sarà il super eccitante
posto dove ti stai chiedendo
cosa succederà a questa compagnia
domani sei astuto
siamo stati redditizi fin dal primo giorno che si
non sarà il migliore che abbiamo
ha inventato Internet
abbiamo persino ufficiali di sicurezza israeliani
ancora peggio dove la gente scrive libri
sulle compilation e cose del genere io
non posso nemmeno pronunciare se vuoi
costruisci la più bella app per il controllo della regolarità
che nessuno usa questo non è il posto giusto
per essere non è dietro l’ angolo
se non vivi oltre il muro, non farlo
anche pensare di portare il tuo partner
le persone dolci sono state votate le migliori
guardando le persone nel mondo
non capirai una cosa cosa
qualcuno sta dicendo che suoniamo tutti come il
Chef svedese , siamo un paese socialista
questo significa che non hai bisogno di pagare
per qualsiasi cosa e peggio mi siedo
ufficio dove tutti abbiamo
sei settimane di ferie e mesi di retribuzione
lasciare la paternità è orribile per chiunque
chi ama lavorare in modo da riassumere tutto
sei più che benvenuto a far parte del Ghana
se finalmente lavori a
in rapida crescita
società redditizia con brillante
biscotti che sembrano fantastici così gentile
di trovare con sei settimane di vacanza
Immagino che sia fuori discussione
ma grazie per l’ascolto
sì, questo era tutto ciò che avevo
a meno che non vogliate saperne di più cruento
dettagli Ho delle slide extra ma
grazie così abbiamo un numero di
domande per te fammi vedere
quindi hai parlato molto della destra
modello di concorrenza è sempre il giusto
uno o hai incontrato situazioni
dove ti piacerebbe davvero un diverso
modello di concorrenza n. II non pensare
Sono venuto a vedere posti dove la modella
non ha avuto ragione, ovviamente, l’uso di
non è sempre stato giusto, ma per
le cose che stiamo costruendo
che il modello ha montato perfettamente se
costruisci giochi per computer e devi farlo
veloce grafica e così su una linea è
probabilmente non è la lingua per te ma per
quello che stiamo facendo è perfetto quindi una linea
ha un sacco di messaggi che passano molto
processi ma per quanto riguarda località e
le linee della cache non guastavano tutto questo
su sì lo fa
non è così importante come pensi
la maggior parte dei casi, ma quando ne hai davvero bisogno
è un po ‘complicato in linea
farlo bene che è vero, ma si deve
pensa davvero al tuo programma da ottenere
per usare meno memoria e poi è
non è più così divertente ma in più
casi la macchina fa molto bene
lavoro avendo il modello con il
processo avrai modello il tuo programma
in modo tale che ridimensiona così se
hai molti core
le nostre molte macchine che distribuiremo
il tuo lavoro su molti di questi corsi
e un processo verrà eseguito su un core
e funzionerà abbastanza bene con l’avere
tutta la sua memoria su quel nucleo va bene anche così
la compagnia aerea viene utilizzata anche in tempo reale
applicazioni che tipo di garanzie
la compagnia aerea VM dà per il tempismo nessuno
beh, garantisce che i timeout lo faranno
non si verificano prima del tempo in cui il
timeout dice che accadrà e questo
funziona bene in impostazioni in tempo reale bene io
non lo metterei in pausa in a in una macchina
ma dipende da che tipo di tempo reale
requisiti che hai ok e abbiamo
un’altra domanda che è dove ha fatto
La lunga compagnia aerea dell’utente Ericsson era ovviamente
progettati a Ericsson e forse possiamo
prendi entrambi perché siamo morti Ericsson
compagnia aerea di notizie nei primi giorni e dove
oggi Ericsson usa quella terra io
non ho mai lavorato a Ericsson, quindi non posso
parla davvero per loro su questo, ma Wolff
seduto qui che è stato nominato il primo
utente di compagnie aeree commerciali due volte durante
questa conferenza lo sa così
costruiscono l’ HD 301 che era il
i primi otto switch ATM di Ericsson e
che British Telecom ha acquistato e gestito per
dieci anni e poi hanno detto che loro
aveva nove nove di uptime su questo sistema
quindi è stato un uso di successo della compagnia aerea
presto e al giorno d’oggi Eric lo usa a
lotto nei test e ne uso un po ‘veloce
strumento di controllo o qualunque cosa per quasi
tutti i loro progetti, anche se quelli
i progetti non sono nella stessa compagnia aerea
ma lo strumento di controllo rapido funziona bene
testare alcuni protocolli API e così via
ok bene abbiamo ancora qualche minuto e
Ho fatto le domande che sono state
pubblicato qui così altre domande per Eric
bene in tal caso oh oh questo è uno così io
non so se riesci a sentirlo
indietro ma il riassunto era quello Ericsson
al giorno d’oggi non si usa solo la compagnia aerea
nuovi test ma per alcuni molto seri
progetti e sono felici di informarci
tutto ciò che stanno usando la compagnia aerea per alcuni
progetti seri ma non quello che sono
okay qualsiasi ultima domanda va bene allora
ringraziamo Eric per un discorso affascinante
Please follow and like us: