Press "Enter" to skip to content

GOTO 2018 • Unconditional Code • Michael Feathers


[Musica]
ora posso parlare bene così come stavo dicendo
è stato un po ‘interessante seguire Dave
Thomas mentre parla del codice legacy
perché questa è la cosa di suggerimento, ovvero trattare
l’industria ma questo è diverso
la cosa va bene ed è um è una specie di
interessante che ci sono molti
cose che semplicemente non facciamo davvero
domanda molto nel software
sviluppo e penso che stiamo iniziando
andare in discussione un po ‘di loro
più per stampe di interessi, per esempio
a questa conferenza ce n’erano due
sessioni sulla gestione degli errori
va bene che sono stati belli da vedere perché io
sentito come un errore ti ha invitato a spendere uno dei
quegli argomenti che sai che tipo di
sappiamo che lo facciamo, ma non lo facciamo
davvero sedersi e pensare a questo proposito
sistematicamente e così tanto di questo
il materiale è appena iniziato
come se tu sapessi cosa possiamo fare
sulla gestione degli errori e io tipo
portare avanti le cose come piace a noi
Inizia a piacere rimuovere la condizionalità e
codice e cose del genere in modo
è lì che questo titolo è di circa
codice incondizionato la cosa è ciò che io
voglio fare è iniziare a mettere in discussione una coppia
di cose a posto ciò che può andare storto con
questo pezzo di codice qui non lo dice nemmeno
tu in quale lingua è possibile qualcosa
sbagliare con noi sì, molte cose
giusto oh sì sì è come se tu sapessi se
Inizio a elencare tutte le cose diverse
quindi abbiamo ottenuto l’eccedenza aritmetica della terra
possiamo avere ogni sorta di cose pazze
succede ma in generale sai quando
scriviamo un’espressione come questa che abbiamo
qualche tipo di intenzione è come noi
voglio che questa cosa particolare funzioni e
se siamo sfortunati succede qualcosa di brutto
facciamo un’eccezione e seghiamo un errore
facciamo qualcosa di pazzo e dobbiamo andare
e affrontare la possibilità di tutti
questi errori giusto sì sì è un po ‘ di
interessante che tu sappia come ho detto
alcune persone hanno parlato della gestione degli errori
attraverso questa conferenza e tu sai
in particolare Joe Armstrong ieri
quello che sta succedendo e che stai parlando di te lo sa
se sei su una singola macchina sei dentro
guai perché se qualcosa va storto
sei nei guai giusto non lo fai davvero
avere molta ridondanza e essenzialmente lui
cerca di andare e ottenere questo modello di andare
e conoscendo molti processi e
in modo che quando alcuni scendono, gli altri possono farlo
vieni su e poi hai un ottimo grado
di robustezza nel tuo sistema benissimo
andare e scavare più a fondo in questa cosa
che mi oppongo davvero alla registrazione
in realtà no non rifiuto un log ma il
cosa mi sento da molto tempo nella mia
carriera che proprio non mi piace davvero
almeno il modo in cui è stato tradizionalmente
fatto nel settore giusto e il
cosa che rende quel tipo di più strano
perché non puoi fare come un bene
caso khajit contro la registrazione perché è
una delle cose che tutti sentono è
necessario e sai che stai andando
guardando attraverso le cose post-mortem e
capire cosa sta succedendo è davvero un
cosa molto preziosa da fare ma è divertente
perché rende il codice brutto
non lo dice come un log sparsi
le dichiarazioni fino in fondo lo sono
come si sa, se abbiamo avuto questa idea
singole responsabilità sai che è
un po ‘come bene, qual è la responsabilità
questo pezzo di codice o per fare questo questo
questo e poi registra anche cosa sta succedendo
con esso e quel tipo di miscelazione di
le responsabilità possono essere tipo di tipo
imbarazzante ed è interessante su questo
perché mi sento allo stesso modo più o meno
per quanto riguarda il trattamento dell’aria, è una specie di
come se rompesse il flusso principale del
applicazione e per questo tende
di oscurare qualunque logica che stiamo andando in
cercando di attraversare ma vedrai
codici di gestione degli errori sparsi per avere
la maggior parte delle applicazioni e penso che sia
davvero attraverso una mancanza di comprensione
e una mancanza di disciplina finiamo per andare
e facendo questo genere di cose così sono andato
fa e tipo di sollevato questa domanda
cosa succede se la gestione degli errori è evidente a
sintomo di cattivo design cosa possiamo fare
su questo e passeremo attraverso a
serie di cose da esplorare
quell’idea va bene e non è solo il
livello di codice giusto è un po ‘come
ci sono tutti i tipi di cose che tu
so che penso che gli errori in generale lo siano
qualcosa che ti abbiamo scritto dovresti entrare
domanda che sai è come rivedere
il tuo ordine per Amazon e qui a
problema che si è verificato quando stai andando
nel cercare di andare e pagare giusto è come
a questo punto il software ha fallito
il diritto dell’utente, quindi fondamentalmente dobbiamo
torna indietro e lo diremo all’utente
su questo particolare problema e vai avanti
e vai avanti e noi non vogliamo questi
cose particolari devono accadere e basta
sembra con un po ‘più sforzo che possiamo
effettivamente andare e andare verso questo spazio
dove generalmente parla il nostro codice
correre incondizionatamente va e basta
cosa dovrebbe fare se non può farlo
una cosa particolare che vogliamo che faccia
Posso fare qualcos’altro buono per noi e
qualcos’altro che possiamo notificare al
utente su e dire hey che abbiamo fatto questo
per te perché sai che è come noi
sai che la tua intenzione è e vogliamo andare
e lavora con la tua intenzione quindi sì
l’allenatore dovrebbe semplicemente correre incondizionatamente così
andiamo e scendiamo nel codice
un po ‘ok così questo piccolo pezzo di Java
codice è un po ‘come sintomatico di a
sacco di cose che possono andare male in a
conosci il software tradizionale
sviluppo
abbiamo questa cosa in particolare
andrò e davvero andrò a prendere un
codice a barre e usarlo per cacciare un oggetto
attraverso qualche raccolta va bene e cosa fare
noi restituiamo null okay non va bene
idea sì, intendo che ci stiamo davvero deludendo
ora sentiamo che no è veramente un
pessima idea , conosci fondamentalmente Tony Hoare
citato anni fa che era il suo
errore di miliardi di dollari che sono
introducendolo in due lingue
presto, ma in qualche modo sappiamo cosa possiamo
in questi giorni possiamo iniziare ad usare come
opzione monadi e tutte queste altre cose
qualcosa che semplicemente non conosciamo
va bene ma sì, questo è un po ‘
come sintomatico di cose che possono andare
sbagliato all’interno di una programmazione
ambiente che stai cercando di ottenere
qualcosa e tu provi a prenderlo e tu
semplicemente non può farlo in modo che cosa fare in
situazioni come questa okay
beh, una cosa che puoi fare per ottenere
gettare eccezioni giusto sì eccezioni
buona idea una cattiva idea sì, sai e
siamo di nuovo nel genere di movimento del settore
lontano da questa cosa particolare se tu
guarda come sai come va l’ aria
per esempio sai che è un po ‘come
è che abbiamo dei panici ma non ce l’abbiamo
eccezioni, abbiamo questa cosa
dove saremo un po ‘come te
sapere di restituire le cose indietro e poi tu
hanno per ispezionare i valori di ritorno per vedere
cosa è successo e fare qualcosa al riguardo
sfortunatamente lavoro al
programmatore per andare a dire un’occhiata
non ti lasceremo nascondere cose e
questo può essere un problema con le eccezioni
a volte Bertrand Meyer ha dato anni fa
il suo consiglio che sono andato a usare le eccezioni
e programmazione e ha praticamente detto
che dovresti usare le eccezioni quando tu
non posso sapere in anticipo se chiama
avrà successo o fallirà e questo è un
cosa interessante da pensare a quando
succede mai nella programmazione
quando non puoi sapere in anticipo se
le chiamate possono avere successo o fallire
scusate, sì sub parametro quindi non lo fai
hai molto controllo su di te ci sono cose
come penso che la cosa sia
interessante è che sembra come quando
cerchi davvero di eliminare la maggior parte del
problemi che possono verificarsi in molti casi
non puoi dire in anticipo se
qualcosa sta per avere successo o fallire
di solito è quando sei ai margini di
il sistema quando stai andando e facendo affari
con Io giusto quando vai e
stai parlando con un disco?
qualche sistema di terze parti non hai reale
controllo su cui è un po ‘come il
caso appena citato quindi è una specie di
come questa cosa interessante di andare
considerando la maggior parte delle cose che
porterà alla scenario in cui non possiamo
dire in anticipo quale sarà il nome
riuscire o fallire è nelle aree del
sistema che non abbiamo molto
controllo su in modo che ci porta a
questa idea che tu sai bene e qui
il sistema su cui abbiamo il controllo
cosa possiamo fare in modo che fondamentalmente
non devi disperdere con errore
gestire il codice quindi è divertente andare e
pensa di sapere che è un caso particolare
di una cosa più generale il tuo passato
sapere è un argomento di metodi per tutti se
non si fa a dire gente su di esso
Immagino che sia un po ‘imbarazzante
cosa fare bene qual è la cosa cattiva
riguardo a no è una cosa interessante da gentile
di scavare nel male di no
pensa che la cosa principale che so sia gentile
di interessante è che essenzialmente quello
stai facendo è che stai forzando il lavoro
il ricevitore va bene se si passa una nota a
qualcuno la prima cosa che devono fare
è fondamentalmente quando ottengono quella cosa
devono andare e dire oh questa cosa
potrebbe non essere dannatamente meglio controllare
vedi se è no o no se non lo fai allora
in sostanza hai poco tempo
bomba è una specie di fluttuare intorno al tuo
sistema giusto ma è interessante
notare che questo è ciò che sta succedendo
su è stai forzando il lavoro su qualcuno
altrimenti va bene
e in generale se ci pensi
in generale non è una cosa brutta
fare bene se non stiamo forzando il lavoro
qualcun altro nel sistema ne abbiamo di meno
opportunità di errore, quindi cosa succederà
tipo di portare questa casa un po ‘ io
visto questo modello anni fa e non lo fece
davvero un buon nome per questo penso
in questo momento sto andando chiamata come privato
linguaggio in modo da avere sempre questo tipo di
cosa abbiamo un buon metodo comune e
allora quello che fai è che tu faccia tutto questo
cose in cui raccogli i pezzi
di informazioni e stai studiando
bandiere booleane e poi alla fine
del metodo in pratica hai tutto
queste congiunzioni e disgiunzioni di
le bandiere booleane e stai dicendo bene
se questo è vero e questo è vero e
che non è vero e questo è vero allora
fai questo mai visto quel genere di cose
capita sì è un po ‘divertente
puoi vedere che è un po ‘lo stesso
poiché la cosa netta interagisce è una specie di
come stiamo andando a fare qualcosa e
stiamo costringendo qualcuno a farlo
interpretalo più tardi ed è qualcosa
che non è facilmente interpretabile bene
dove è praticamente incline all’errore quando
stai andando e facendo questo tipo di
cose così la distanza tra fare un
decisione e in realtà facendo qualcosa
va bene che è un po ‘problematico in
molti sistemi quindi lo chiamo
tunneling okay e tunneling è questo
cosa in cui è fondamentalmente sta andando in
facendo un sacco di cose che ti costringono
andare e interpretare effettivamente le cose
più tardi e sai che non è questo
universalmente male giusto perché lo sai
quando pensi a cosa succede abbastanza
spesso oggi in modo funzionale
programmazione che usiamo come alcuni tipi
i nostri tipi di dati algebrici è come cosa
sei tu sei una specie di costruzione
questo linguaggio di dati è il risultato di
qualcosa e poi che, fondamentalmente, deve
vai e abbinalo e lavora con esso
più avanti nel tuo sistema va bene
giusto ma la cosa bella sta tramontando
cose in modo tale che si è
riducendo lo scopo dell’input a qualcosa
più piccolo è più facile da interpretare e
non spingere il lavoro su sul
ricevitore in cattivo modo
così interpretazione sai che è molto
le cose non strutturate sono spesso un problema
in programmazione se ne hai mai sentito parlare
questo ragazzo, Alan Perlis, ma ha scritto questo
raccolta di epigrammi due anni fa
solo poche parole sulla programmazione
e ha avuto un modo reale con le parole
leggi questo per un secondo, quindi cosa è lui
andare d’accordo con te, hai mai fatto
aveva quella cosa in cui inizi ad entrare
formatta stringa da qualche parte un’applicazione
solo per andare e in realtà li analizzo più tardi
nell’applicazione ed è bello che noi
lo sai che si comporta ragionevolmente bene
formati come JSON ora e tutti questi
altre cose ma essenzialmente quando lo fai
che in sostanza ne stai introducendo alcuni
barriera nel tuo programma che può
fondamentalmente portano all’errore giusto e tu sei
facendo del lavoro aggiuntivo che non vorresti
fare altrimenti, quindi è bello
tipo di domanda queste cose particolari
ok ma questa è una cosa generale se
come impostare le cose e dover
interpretarli più tardi e dover essere in
un tale formato che è lì a
problema che può verificarsi e può gentile
di intrufolarsi nel tuo programma come errori così
possiamo eliminare questi tunnel in
programmazione
Intendo fondamentalmente dire che qualcosa sarà
controverso dare loro uno zeitgeist o
mostralo ma
quindi guarda questo codice qui per andare e
ottenere un oggetto per un codice a barre cosa c’è
andando avanti con noi stiamo essenzialmente andando
e cercando di andare a prendere un oggetto
corrisponde a un codice a barre ma se non lo facciamo
facciamo è restituire un articolo che
rappresenta l’assenza di un oggetto che farai
vedi questo modello prima di sì, così è
storicamente si chiama oggetto nullo
modello, ma questo è un po ‘come un modo
di andare e tipo di dire qualcosa
è successo male e andremo
e in un certo senso guardiamo che possiamo aggiustare le cose
in modo che tutto sia
andrà tutto bene
e sai che questo fa parte di come a
categoria più ampia di cose che sai che è
come non un numero nessun oggetto abbastanza spesso
le liste vuote o gli array vuoti lo faranno
rappresentare l’assenza di cose che puoi
creare oggetti che rappresentano perfetti o
casi speciali nel codice per andare e
trattare con cose del genere questo è un
buona idea o cattiva idea si lo sai
è un po ‘divertente che stavo ascoltando
sai parlare ieri
mmm sembra un discorso da braccio e
sta dicendo fondamentalmente solo fallire velocemente
ogni volta che puoi e penso al 90% del
tempo che in realtà va bene, ma non c’è
alcune volte in cui potresti non volerlo e
usare un modello come questo è ok ma
la cosa di questo devi essere gentile
riconoscere è quello che stai usando
qualcosa come il modello senza oggetto tu
può entrare in una situazione in cui la cosa
che fondamentalmente vai e torni indietro è
qualcuno è stato preso per essere reale se lo è
preso per essere reale posso andare e portare a
altri possibili errori quindi diciamo per a
sistema in cui Ewing e raccolta di oggetti
e andrai a riassumere tutti gli oggetti che hai
sapere se un oggetto ha se questo oggetto deve
avere cose come un prezzo pari a zero
va bene se proviamo a contare l’oggetto
fondamentalmente usa quella logica e ne costruisci alcuni
tipo di decisione all’interno della nostra applicazione
il fatto che alcuni di questi articoli sono no
gli oggetti potrebbero essere così tanti e finisce
tipo di farci male ma questa cosa sta andando
dentro e cercando di decidere o occupato decidere
non fare nulla può essere utile per
noi qualche volta così ci permette di specie di
imbuto cose che ci permette di effettivamente
abbiamo come una vasta gamma di input che abbiamo
l’output che torna da noi e noi
fondamentalmente non hanno errori estranei
concludendo il nostro sistema mentre procediamo
con le cose voglio mostrarti un altro
modo di affrontare questo come noi
lavorare con come dire una classe di vendita o
qualcosa come quello che sta andando e
ricevendo oggetti da qualche collezione tu
conosci il codice che ti ho mostrato un po ‘
prima ci sono un paio di cose diverse
le cose possono andare storte
una cosa che può accadere come ho mostrato
che puoi cercare un oggetto e
scopri che non è lì e poi noi
parlato bene, possiamo buttare un
eccezione possiamo tornare non lo sai noi
può essenzialmente fare ciò che ho appena detto
come non avere nessun oggetto e restituirlo ma
la cosa che è abbastanza bella che noi
possiamo fare è in realtà possiamo estendere il nostro
dominio e considerare l’aria come parte di
il nostro dominio va bene così con questo abbiamo
un ascoltatore che andrà e
ricevere informazioni su pensa che siano
accadendo in una vendita come stiamo andando e
sommando le cose e facendo cose e
possiamo solo aggiungere un altro metodo a tutti
non hai trovato e passa il codice a barre
giusto così vedi cosa sta succedendo qui
essenzialmente dicendo che questo è un errore e
piuttosto che lanciare un’eccezione
piuttosto andando e facendo qualcosa di simile
spettrale con oggetti null cosa siamo
andando a fare questo siamo in realtà solo
andrò avanti e dirò che l’errore è
parte del nostro dominio e quando fa parte di
il nostro dominio quindi è qualcosa che noi
può tipo di trattare ed è una specie di
difficile da evitare possiamo vedere questo è un
cosa particolare che può accadere nel
applicazione è interessante vederlo
tu conosci questa cosa proprio qui
stiamo andando e raccontandone alcuni
altro oggetto su qualcosa che
succede nel nostro sistema che ti sta bene
puoi praticare la stessa cosa se lo sei
lavorando in un linguaggio che ha come alcuni
tipi per esempio e basta andare avanti e
dì guarda, sai che ci sono i casi
che sono buone abbiamo anche un paio di
casi che fanno male, quindi abbiamo un articolo
aggiungi questa cosa che potrebbe accadere
abbiamo una vendita totale ma possiamo anche avere
oggetto non trovato come sistema particolare
ma tornando a questa cosa dell’andare
e raccontando attraverso un’interfaccia su
qualcosa che è successo lo trovo gentile
di interessante che sembra molto
di gestione degli errori migliora quando tu
iniziare ad adottare questa cosa di
come sto dicendo a un oggetto da fare
qualcosa al contrario di andare e dire
dammi alcune cose, pensa bene al
cosa tipica andando e dicendo oh, prendi
un oggetto da qualche collezione o ottieni un
elemento da un archivio di dati ed è come
potrebbe restituire null right e that can
essere problematico per noi e se qualcosa
sta facendo il lavoro di andare in e
ottenere un oggetto o qualsiasi altra cosa e poi
una volta che ce l’ha , va e dice okay
bene ora che ho questo posso avvisare
altre persone sono collegate a me
l’ oggetto particolare che ho ragione
quando sei in una situazione del genere
essenzialmente c’è un errore in meno di te
può fondamentalmente avere bene la terra
in realtà è stato spostato nel luogo in cui
stai andando e ottenendo cose ma
tutto il resto è isolato dal
fatto di quel tipo di errore
è successo così solo per venire e mostrare
questa cosa tipica del codice è andare
in qualche archivio di dati sai di avere una persona
basato su un ID per esempio verifica a
vedi facci sapere o no se non è uguale
a no farò del lavoro e abbiamo un
assegno nulla e sappiamo quanto sia problematico
Di Nola ne abbiamo appena parlato ma
l’ alternativa è effettivamente adottare un
Dillo stile dove puoi andare e fare
qualcosa di simile che dici a te la mia
so fonte di dati penso di avere un
metodo particolare chiamato con la persona e
passin un ID se quell’ID corrisponde a
persona che la persona viene passata al
lambda e il lambda va e fa il
funziona bene, quindi stiamo praticamente dicendo
il lambda per fare un lavoro basato su
il fatto che in realtà tu sai basato
su di te conosci il successo di andare e
avendo fatto qualcosa di simile a questo
andato e provare a recuperare le cose
c’è un controllo nulla qui probabilmente
dentro di persona ma le cose
abbiamo isolato il resto del codice da
questa cosa particolare che è sorta di
affascinante tutto questo andare
e dire piuttosto che chiedere è molto
molto interessante adesso
culturalmente all’interno della programmazione perché noi
stanno passando alla programmazione funzionale
un po ‘ma è interessante
notare che dire questo rende molto
cose più facili nei sistemi quando con
per quanto riguarda la gestione dell’aria, in realtà lo sai
se guardi l’ air lang, ad esempio tu
conoscere essenzialmente i processi e l’aria di Lang
a loro piace questo nucleo funzionale
fondamentalmente stanno facendo tutte le cose funzionali
dentro ma quello che fanno è che mandano
messaggi a vicenda che è simile
questo stile è molto simile
orientamento all’oggetto tradizionale così
organizzare i tuoi sistemi in un modo che siamo
fondamentalmente tu dici alla gente del
dati che hai invece di andare
e cercare di ottenerlo dalle persone può andare
ed eliminare un sacco di tutto ciò
altrimenti lo avresti chiesto
i dati possono fallire nel darlo quando ce l’hai
non può così questa cosa che mi vede
praticamente qualcosa che chiamo estendendo il
domina bene questa cosa che stanno mostrando
con come l’ascoltatore di vendita
andando ad aggiungere l’ eros nel
interfaccia e cose del genere e il
dominio parola è piuttosto ricco di
dominio della linguistica significa qualcosa dentro
la matematica è come se tu fossi tu
dominio di una funzione l’intervallo di a
roba di funzione lungo quelle linee è
davvero l’input di qualcosa va bene il
l’ input della tua cogitazione o il tuo
calcolo
diamo un’occhiata a un altro piccolo
esempio qui supponiamo di avere questo array
e questo array ha come sai quelle
e zeri sto per dire che il
le caselle ombreggiate sono una volta e una volta
non sono ombreggiati o zero vogliamo farlo
vogliamo contare gli span di quelli quindi se
guardiamo questo in pratica c’è
tre spanne di quelle qui la prima
e quello in mezzo a quello a
Alla fine, come scriviamo il codice da fare
qualcosa come questo possiamo ottenere un
Interprete Ruby e vai e scrivi codice
come questo diritto copro tutto il bordo
i casi vanno bene se la dimensione dell’array è uguale a
0 il conteggio deve assolutamente andare con 0
va bene se se la matrice vediamo prima
elemento è maggiore di 0 significato di
suina il conteggio sale fino a 1 e
essenzialmente quello che sta succedendo a noi è
stiamo andando e prendendo stiamo scannerizzando
attraverso l’array e stiamo guardando
l’elemento corrente nel prossimo elemento
ogni volta che passiamo da uno zero a uno
uno ci rialzo al conteggio e poi possiamo
andare avanti e si sa solo che tornare
e diventa il conteggio che la cosa è
che la primissima cosa è uno speciale
caso se siamo già in un arco abbiamo
per andare e metterlo un onore sul nostro
contatore ti piace questo codice sì è
per me questo è un codice tagliente che ha troppi
bordi in esso proprio come tutto questo
condizionalità che è incline all’errore
che ne dici di giocare un trucco ok così?
qui ho di nuovo il mio array che metterò
un elemento in prima fila va bene
in questo elemento sarà uno zero
e poi posso fare qualcosa di simile
va bene ed è come se non lo fossi anche tu
familiarità con la sintassi di Ruby solo per andare e
spiega questo
sai che è il nostro array e io sono
prepending uno zero su di esso e poi una volta
Ho fatto in modo che io possa usare questa funzione
chiamato ogni contro e quando puoi passare
due a ciascuno di essi ciò che fa è dare
ognuno dei successi di ciascuno
coppia successiva all’interno della matrice così tu
l’ indice del valore impostato è 0 1 1 2 2 3
e solo tutte quelle cose li prendono come a
sequenza quindi quello che fai è esibirti
conta la tua destrutturazione così hai
come sai la corrente nel prossimo
elemento ogni volta che si ha una transizione
tu incontri il conteggio è questo codice
più facile da leggere e trattare con sì è il modo
qui quanti bordi non ha
molto bene ma ecco il trucco noi
eliminare un margine estendendo il
dominio giusto e spero che tu possa tipo
come vedere questa cosa che è una specie di
ecco il dominio l’input e siamo
estendendolo andando e aggiungendo un pre
in attesa di un elemento che è molto simile
estendere il dominio quando stiamo facendo
cose come il nostro ascoltatore di vendita in corso
aggiungendo
funzioni a cui stiamo parlando o
praticamente aumentando la gamma di cose
le cose che fondamentalmente possiamo
considera come input nel sistema che
stiamo andando e lavorando con così andiamo
guarda un altro piccolo esempio, forse
amico qui suona mai la chitarra
strumento a corda e so cosa
è che sì questa è tablatura giusta e
essenzialmente quello che succede con questo è
un modo di notificare la musica per le persone che usano
strumenti a corda ed è spesso
più facile da leggere nella musica tradizionale
notazione ogni riga qui è una stringa e
ogni numero è una posizione di posizione del tasto
metterai il dito in ordine
per andare sul posto avrebbe suonato una melodia così
anni fa ho avuto questo amico che
fondamentalmente era un musicista che ti dice
so che mi piacerebbe andare e avere un programma
quello che va ora lo mette in base a me
su input che posso darti in un file
e quello che succederà qui è quello
essenzialmente conosci il primo numero
e ogni coppia sarà la stringa
numero e il secondo DeMars può essere il
posizione fret e quindi se hai questo
sai puoi solo mettere la tablatura per
così ho scritto un piccolo programma da fare
questo ed è un po ‘ interessante
perché si potrebbe pensare di molti
ho provato a fare diversi modi per farlo
adottare un approccio molto funzionale ad esso
e finì con qualcosa di simile
interessante l’intuizione chiave con questo
stava riconoscendo che per ognuno di
queste file che dovevo decidere dovevano
vai a produrre una colonna ok come questa
quindi è praticamente la prima stringa
uno zero su di esso, ma ho bisogno di andare in
genera una colonna che entra ha
pezzi di tutte e sei le corde poi prendo
tutte quelle colonne e mi piacciono
trasporre in modo che io possa stampare
fila per fila che è un po ‘strano ma
prima di guardare il codice che fa questo
andiamo a guardare i possibili errori
ciò può accadere con questo diritto
sai solo elencare fuori che sono tutti
diverse le cose diverse possono andare
sbagliato con noi forse non abbiamo un
nome file valido come riga di comando
argomento in cui quindi non possiamo aprire il
il file è vuoto
forse il file contiene righe vuote
forse la linea lo sai non esattamente due
sai che i numeri su di esso lo sai forse
i numeri sono malformati forse
c’è come sapete in ordine alfabetico
conosci i personaggi lì e cose del genere
così tutte queste cose diverse sono
possibile in modo da sapere scrivere questo codice
va e in realtà cerca solo di andare e
fai una versione pulita di queste cose
quel tipo di finiti era questo tu
verificare se il file esiste la
la cosa sta arrivando è la riga di comando
argomento e se è lì e tu puoi
aprilo e poi inizi a fare questo lavoro
che sta attraversando ogni sua linea
dividendo le linee chiamando questo
funzione chiamata colonna tab che vanno e
costruire le colonne e trasporre e
poi spegnendolo non devi
segui completamente questa cosa che voglio
per sottolineare che questo è ciò che sai
stiamo controllando per vedere se il file
passato come argomento è valido o non fare
abbiamo bisogno di fare questo è lì un modo di
facendo cose così non dovremmo fare
questo e questo è un po ‘come un’area
dove puoi tipo allungare a
c’è un po ‘che si vede in Ruby
questa variabile d’ambiente chiamata
Arg V va bene non proprio l’ ambiente dove
sarebbe una variabile globale e mi scusi
sono GAF e ciò che fa il nostro dono è il
la base va e prende tutte le cose
sulla riga di comando si presume che lo siano
i nomi dei file li concatena in un unico grande
la parte di testo poi ti dà quel testo
come una stringa quindi mi piace un po ‘questo
cosa in cui va bene, accetteremo
cose e se c’è un problema lo sono
vado a prendere una specie di interprete
fallimento sai che tipo di cosa ma
Dovevo andare a fare il controllo esplicito I
non particolarmente cura di questo, ma
questo vale anche per il programma
un po ‘più generale nel senso
che posso andare e mettere più file per
andare e in realtà farli tutti parte di
una composizione concatenata insieme
e avere quel lavoro così c’è questo divertente
cosa che puoi fare con l’aria a volte
che sta generalizzando il tuo problema un po ‘
in modo da conoscere le cose che possono
si verificano tendono ad essere a posto giusto e questo è
tipo di parte di questo diamo un’occhiata un po ‘
un po ‘oltre con le cose qui così
risolve alcuni di questi problemi
questo sono i casi in cui hai
ne hai meno di uno in meno di
due numeri sani su una linea che dovremmo
probabilmente vai e segnalalo come un errore
non dovremmo saperlo interpretare
il singolo numero in linea chiede
qualcosa possiamo fondamentalmente avere un
interpretazione diversa scusa
un riposo potrebbe sì, è vero che potremmo
interpretalo in quel modo o potremmo
interpretare come zero abbiamo una coppia
diverse interpretazioni possibili e
è interessante il tipo di gioco
questo gioco un po ‘e vai a dire guarda
ecco qualcosa che vorremmo contrassegnare come un
errore ma possiamo davvero tipo di like
il gioco di parole conosci l’ input in questo modo
questo significa qualcosa
e questo è di nuovo parte di quel dominio
cosa di estensione è un po ‘come cosa
stiamo facendo è che stiamo andando e
dicendo che estenderemo la gamma di
possibili input che stiamo per trovare
che certe cose non sono necessariamente
eredi e dare loro un’interpretazione
che è valida nel contesto della
il sistema può sbagliare sì, può andare
sbagliato devi fondamentalmente determinare
qual è la posta in gioco quando stai andando
e facendo questa cosa in un particolare
lingua ma tu sai che intendo questo
ci sono esempi in cui questo potrebbe essere
usato tutto intorno a noi come la radice quadrata
funzione nella maggior parte dei linguaggi di programmazione
cosa succede quando passi un negativo
numero in cose cattive, sì, sì
vuoi che accadano cose brutte potremmo aggiustarlo
conosci le radici quadrate in modo che il passaggio
numeri negativi va bene sei tornato
numeri complessi giusti e solo tu lo sai
quando hai la radice quadrata di
uno negativo quindi si ottiene un complesso
risultato perché in matematica ci sei
è davvero una definizione del quadrato
radice di un numero negativo ma è gentile
di come spostarsi su un altro sistema numerico
ma in realtà è come lavorare di più
è necessario e lo farebbero davvero
voglio andare a prendere e la maggior parte
linguaggio di programmazione così semplicemente
non farlo bene, ci sono altri posti
dove lo facciamo giusto, quindi non lo faccio
sapere quale lingua è stata la prima a
effettivamente fare questa cosa di andare e
prendendo gli indici negativi su cancella e
interpretandoli come essendo come nessun inizio
andando iterando dal retro di
la lista ma ora è abbastanza comune
non è per sollevare archi e cose
come quello in cui le possibilità di andare e
avere un errore quando lo fai
qualcosa come questo può accadere ma il
cosa importante da fare e riconoscere è
che quando si ha qualcosa di simile
quello che stai facendo è che stai andando e
facendo questa scommessa che mentre estendi un
le persone del dominio capiranno il
estensione del dominio che stanno per
capire cos’è un indice negativo
è diventato come un culturale o un
cosa documentato all’interno del sistema che
questa è in realtà la cosa che
succede con questo e poi quando le persone
stanno pensando quei termini va bene è
un caso di errore in meno possibile e anche
va e ti dà un po ‘di più
flessibilità nel e che funzionano quello
stai facendo l’ interfaccia utente che conosci
è una cosa piuttosto interessante
questo sto usando il dominio in un simile generale
qui, ma è come dire che ti piace
un’app di parcheggio che sto usando molto presto
app di parcheggio e la cosa che è sorta di
è cruddy quando lo faccio
parcheggiare in una posizione particolare
costringimi ad andare e far correre quel tempo
fuori prima che potessi parcheggiare in un altro
posizione quindi non c’è alcuna cosa come
avere un
un incontro di 15 minuti che si sta spostando molto
la strada perché l’hanno capito
una volta che ti sei parcheggiato lì per un’ora
erano lì per l’ora è come il tipo
di ridicolo sì, non sono durato troppo
lunga così, ma in sostanza lo sai
questa cosa stava andando a dire guardati
sai che il nostro dominio è fondamentalmente lo sai
lo spazio di tutti i posti di parcheggio giusto e
dovresti essere come ti piacerebbe
avere la tua intenzione e fare questo e giusto
farlo funzionare bene è come quello è un
scelta valida che le persone potrebbero fare
piuttosto che andare e dire alla gente
questo è un errore quindi sì ho esteso
dominio quando l’estensione può essere
considerato il nuovo dominio che è carino
molto un modo di guardare questo ritorno
al nostro codice qui tutti questi diversi
errori che sono possibili lo sai
è un po ‘come andare e portare
le cose un po ‘più avanti c’è come a
controlla qui la funzione che va ai controlli
per possibili segnalazioni di errori se c’è
problemi vedrete che qui lo dico
che noi andiamo al nostro gaff in fondo
andare avanti e facciamo questo lavoro per andare e
tagliare tutte le linee che non hanno nulla
su di loro ci dividiamo in modo da avere un
array di coppie quindi ne facciamo ancora
controlla e poi effettivamente andiamo e facciamo
il lavoro che abbiamo qui per andare
e in realtà producono la rappresentazione
sembra quasi che il nostro programma sia
segmentato in due parti non ha tempo
va bene abbiamo una parte che stiamo facendo tutto
questo controllo dopo questo controllo noi
avere una rappresentazione che fondamentalmente
solo dovrebbe funzionare, non importa cosa e
vedrai che l’errore si è appena verificato
non succede passare quell’ultimo controllo che
abbiamo lì e questa è una cosa carina
fondamentalmente avere nei sistemi basta andare e
arriva al punto in cui quando fai tutto
questo tipo di controllo in anticipo e poi
passare un certo punto le cose stanno andando a
corri al completamento e sai che lo sono
perché in sostanza non stai trattando
con te sai che non stai facendo
qualsiasi cosa esterna che sei stato in grado di
controlla tutte queste condizioni particolari
giusto potresti avere qualcosa di pazzo
come una divisione per zero sai o un seg
colpa o qualcosa di pazzo del genere
ma per la maggior parte sei solo un po ‘
sappi che una volta raggiunta una certa
punto non c’è molto controllo che hai
fare te stesso e questo ti permette di
un po ‘come se fossi separato tu ne conosci parte
il tuo sistema in te sa un po ‘come un
centro morbido e un guscio protettivo a destra
una volta che sappiamo quali sono tutti questi vincoli
siamo intorno a noi e fondamentalmente verifichiamo
le cose per soddisfare quei vincoli
allora abbiamo quest’area o area area noi
non devo davvero fare il controllo degli errori
e questo è davvero un bel posto dove andare e
sii all’interno del tuo codice così da sentirci anche
inoltre possiamo usare qualcosa che è
gentile come a
sai come la maggior parte come un’opzione
approccio monadico c’è qualcosa
chiamato in Haskell e io tipo di
imita quello qui all’interno di Ruby
in sostanza con questo codice siamo in grado di
vai e metti tutto in fila e
fai il lavoro ogni volta che c’è un assegno
ciò accade quando il controllo fallisce
passa lungo un errore e ogni successo
di cugino pezzo controlla se
schema ricevendo un errore nel qual caso
non fa nulla passa semplicemente l’errore
lungo o va e vedi ha detto che è
ricevendo il risultato del calcolo da
il passo precedente quindi la fine stessa
ottenere una stringa che contiene uno
messaggio di errore accumulato o contenuto
l’ output effettivo va bene e questo è gentile
di dove un sacco di persone stanno andando con
destra programmazione funzionale vuoi
lancia come dire guarda quando usa l’opzione
monadi e tutte queste altre cose in
in modo tale da poter evitare le eccezioni
e questo è bello ma non è questo tipo di
come sai che ho sentimenti contrastanti
su come fare questo genere di cose
contrario ad andare e controllare in anticipo
quindi solo il calcolo dell’abbandono davvero
prima di arrivare alla linea principale che è
andrò in giro divertente quando
inizi a pensare agli errori per iniziare
pensando a cose che possono andare storte
nei sistemi una cosa che continuo a venire
ritorna alle eccezioni come ho menzionato a
un po ‘ prima, abbiamo parlato di
eccezioni brevemente
Mi sono sempre sentito un po ‘strano su
eccezioni sai e penso molto
le persone fanno e questo è il motivo per cui siamo tipo di
come allontanarsi da loro nel
evento del settore la cosa che tipo di
mi dà fastidio è che in un sistema dove
hai qualche tipo di lato possibile
effetti o stai modificando stato tutto
queste altre cose quando hai il tuo
prova Clause e fai un po ‘di lavoro è
come se si gettasse un’eccezione in qualsiasi
punto là dentro devi essere gentile
tipo di assicurarsi che il mondo sia
roba in uno stato che conosci bene
una volta che sei andato e hai fallito
giusto idealmente quello che ci piacerebbe davvero
avere in molti sistemi è quasi avere
l’accettazione è come una macchina del tempo
non è che io decida di provare
qualcosa e whoops che non ha funzionato così
Sono qui e posso andare a cercare
fuori che hey non funziona, ma io
sa che lo stato del mondo è
esattamente come sapevi
probabilmente andando a eseguire la prova
abbiamo quella garanzia a tutti voi
in realtà devo tipo di lavoro per questo e
è per questo che sento le eccezioni
sono quasi come metà di una lingua
meccanismo in un modo la metà di un orecchio
meccanismo di guarigione quando ci pensi
ciò che è veramente su è quasi
circa come transactionality e
proprio questo tipo di sensazione
transazioni e non mi piace usare il
transazione di parole perché è così
sovraccarico nel settore, ma penso
una cornice interessante per tutto questo è
vai a dire quali sono le nostre intenzioni e
una volta che sappiamo quali sono le intenzioni
con l’intenzione può avere successo o
fallire e quindi possiamo entrare o pensare
su di te sai cosa è possibile in questo
inquadrare in queste cose così da dare un
esempio sai probabilmente di tutti
il lettore musicale nel mondo ha qualche tipo
di una modalità shuffle su di esso a destra lo farebbe
molto shuffle conosci le tue playlist e
tipo di avere le cose in diversi ordini
e roba da quelle canzoni e questo è
davvero un dominio piuttosto profondo
la maggior parte dei domini sai che c’è molto
di un algoritmo davvero interessante che puoi usare
a rimescolare in modo efficiente elenchi di
cose ma è interessante pensare
sul codice ingenuo per fare questo proprio noi
conosci un elenco di cose e quando
pensi che potremmo fare è solo andare avanti
e diciamo andiamo e chiamiamo il caso
generatore di numeri e ottenere un numero casuale
e prendi quello finito e tipo di mod
esso e già uno effettivamente determina
la traccia successiva per suonare l’unica cosa
a tale proposito però è come se tu
conosci il tuo generatore di numeri casuali
bloccato continua a restituire lo stesso numero
finita e lo faremo di nuovo
avere persone come durante la stessa traccia
e non hanno nemmeno voluto nemmeno
come più e più volte ancora e noi
sapere che un numero casuale decente
generatore non ha intenzione di andare e dare
conosci una grande parte della stessa
cosa ancora e ancora cerchiamo di fare del genere
di un pezzo simile insieme lo sai
vincolo nel nostro codice su quando diciamo
Va bene andiamo andando avere un ciclo while e
essenzialmente chiameremo nel nostro
generatore e essenzialmente ogni volta
è uguale all’ultimo che abbiamo appena ordinato
di come tu sai riprova giusto quale
è un modo davvero ingenuo per farlo è questo
codice okay sì, è come se lo sapessi
molto interessante come sviluppatore
dovresti sempre pensare che sia come
ora qual è il caso peggiore per questo e
è come se il mio Luca rimanesse bloccato
tipo di diritto ridicolo e, naturalmente
si sa processi sono abbastanza così veloce
non penseresti mai che questo sarebbe successo
bloccato per sempre giusto, proprio non lo farebbe
essere una cosa che potrebbe accadere se lo fosse
sembra ancora un po ‘come lo sai brutto
codice in un modo che altro potremmo fare bene
possiamo essenzialmente andare avanti e in qualche modo
proprio come sai, prendi quello attuale
e se in realtà devo parlare con
l’ultimo basta andare avanti e ottenere il
il prossimo brano saprai il prossimo brano successivo
nella lista e mod conosci la dimensione
della lista e intenzione di usare quella
i nostri cappotti sono diventati più complicati come sono
è vero è come se lo sapessi
abbiamo fatto questa cosa particolare e
è come se fossimo preoccupati di andare e
mostrando che sai suonare la stessa traccia
lo sai più e più volte ma è un
cosa interessante se tu tornassi indietro
alle persone che stanno commissionando questo
lavora da te e ti dice che so che posso
risolvere questo problema in un modo abbastanza semplice
ma alcuni hanno questo lato interessante
effetto non suonerai mai
stessa traccia due volte a destra e il
la soluzione che stai pensando di noi sta andando
per dire ok ecco la mia lista la rimescola
poi ho praticamente quello che faccio è che ho un
copia di esso e io fondamentalmente lo sai
dopo che è stato mescolato, vado a giocare a
traccia e toglilo dalla lista
e poi a un certo punto lo farai
finiscono per non avere niente la lista e
quindi lo fai di nuovo giusto
il nostro codice è molto più semplice quando lo facciamo
qualcosa di simile sì, posso avere ragione
ma nota la cosa così bene
pensare a me che è molto interessante che
questo è il modo con cui interagiamo
requisiti che eravamo in realtà
andando a dire bene guardiamo che possiamo
fondamentalmente rendono il nostro codice meno complesso se
cambiamo il problema un po ‘ e
è fantastico quando sei in un
organizzazione o nel contesto in cui si
avere quel tipo di gioco per dire in realtà
guarda sai che non sei proprio tu
sai che sai, quindi potresti pensare
questo è un requisito duro e veloce
ma se lo cambiamo un po ‘questo
modo rende il nostro codice più facile da gestire
con e ci si sente come dovremmo sentire
un paio di cose come te
sapere come entrare
generalizzazione o codice in modi particolari
questo ci permette di evitare fondamentalmente
casi limite e rendere le cose un po ‘ più facili
trattare con così è un po ‘divertente
qualcuno sente parlare dei cinque perché è a
tutti
è un po ‘ come se lo sapessi chiederti
sapere se c’è un difetto e lo stai facendo
come l’analisi della causa principale, perché l’ha fatto
capita e allora perché non lo sapevate che
tipo di cosa è interessante, siamo noi
possiamo giocare allo stesso gioco quando siamo
progettando possiamo avere questa cosa del genere
bene sto aprendo un file okay e quando lo faccio
apri il file qualcosa va storto okay oh
è come – hey nessun errore, giusto
solo una cosa naturale che dobbiamo fare
con questo ma la cosa importante da fare
è bene dire bene perché sono io apertura di un file
oh sto aprendo un file perché ne ho bisogno
leggere una configurazione giusta necessità di leggere questo
configurazione popolamento configurazione
database quindi dici bene, perché io?
leggere bene una configurazione è
perché sto cercando di inizializzare il
sistema in modo che io possa andare e farlo apparire correttamente
ad ogni passo di questa catena si può
inizia a pensare alle alternative
possono essere fondamentalmente cose che puoi esplorare
se una di queste cose è particolare su e
come ho detto prima è così
c’è una cosa interessante in cui tu
sapere un sacco di errori di guarigione è fondamentalmente
in relazione alla distanza tra il
un problema e in realtà decidere quale
solo fare al riguardo destra quando si seguono
questa catena si potrebbe iniziare pensare
corsi d’azione alternativi che tu
potrebbe voler andare ed esplorare come per
per esempio potresti andare e dire beh
se non riesco a leggere la configurazione lo è
okay per me per creare effettivamente un valore predefinito
configurazione e quindi notificare le persone e
fagli sapere che va tutto bene, noi
continua a portare il sistema usando il
configurazione predefinita perché l’altra
uno e dipende dal contesto in
qualche contesto va bene e ora c’è
questo tipo di come quello di essere un disastro
vuoi davvero andare e mettere le persone
attraverso quel genere di cose, quindi dovremmo
sempre questionari sai che non lo faccio
penso che saremo in grado di eliminare
errori completamente attraverso i sistemi ma a
essere in grado di andare e dire che sai è come
bene perché c’è un errore qui potrebbe
il sistema può essere organizzato in diversi
modi in cui non abbiamo avuto questo errore
potremmo modificare i requisiti in tale
un modo in cui non dovremmo andare a fare
quella cosa particolare e questo andando
attraverso quella cosa particolare noi no
ottieni il beneficio di averti conosciuto
meno errori potenziali ma anche
semplificando i nostri sistemi a volte ok
quindi parliamo di bordi un po ‘di più
è interessante che all’inizio
giorni via cavo che conosci come tutti avevano
come un set-top box e ti piacerebbe
sai che hai il tuo telecomando e il
il software è firmware in una scatola da qualche parte
e tu sai che al giorno d’oggi è come
tutti possono utilizzare un’app sul proprio telefono
andare e cambiare le cose per riagganciare
quale servizio di streaming usano e solo
connettiti con la TV che conosci
Cosa wireless e basta fare questo tipo di
cosa è interessante con questo andare
e nota che sai che stiamo mettendo
la rete tra le cose e abbiamo
fatto questo per secoli nel settore
mettendo la rete tra diversi
le cose ed è bello il bello
la cosa su questo però è quella quando noi
fare questo abbastanza spesso, in linea di massima, lo consentono
noi stessi per andare e avere un diverso
tipo di sistema di quello che avremmo
altrimenti faccio una distinzione quando
stai facendo design e sistemi tra
quello che chiamo i sistemi di tenant e non presidiato
sistemi e la tendenza è destinata a
hanno molto più seguito questi sistemi
giorni quindi cosa intendi con ciò che intendo
da un sistema non presidiato è come lo sai
immagina di avere qualche sonda che hai mandato via
l’estremità del sistema solare ed è così
come se ci fosse un sacco di cose che hanno
lavorare davvero sempre lì perché
non ci sarà nessuno laggiù
per risolvere quel problema se il problema
si verifica in modo tale da non poter contare
avere qualcuno lì per affrontare effettivamente
con quei particolari problemi e c’è
molti di voi conoscono sistemi di vita reale dove
hai questo tipo di devi essere
veramente attento agli errori perché
sai in sostanza che sai che c’è
solo uh non c’è alternativa c’è
non sara ‘qualcuno che si aggiustera’ davvero
cose ma come abbiamo messo sempre di più
cose sulla rete sai abbastanza
spesso tu lavori organizzazioni noi
avere supporto operativo e tutti questi
altre persone possono dare una mano quello che qualcosa
Bad va avanti si può davvero permettere a te stesso
per ottenere di più in questa modalità a prova di errore
con le cose ma non è universale okay
fail-fast è una buona strategia, ma lì
sono molti i casi in cui hai appena hai
per mantenere un sistema in esecuzione, non importa cosa
ed è come se sapessi come Erlang è
davvero buono per cose come è come
interruttori telefonici e cose simili
linee così pensando a quello ubriaco
spazio di progettazione tra 10 e la nona fine
è un ascensore piuttosto prezioso
controller di destra è come se ti conoscessi
non voglio essere in una situazione in cui se
la rete va giù le persone sono bloccate
giusto quindi devi avere roba così
corre non importa perché e questo
cambia radicalmente il modo in cui progetta
sistemi e non sistemi come questo tu
sapere se la cosa tipica in UNIX è
fallire la loro stringa insieme
utilità da riga di comando su una riga di comando
è fantastico, perché lo hai
un operatore tutti sanno che tu sei
sentirsi veloce e devi tendere le cose
e sai almeno avere qualcosa da fare
guarda i registri e guarda cosa sta succedendo
con questo modo sembra che per
robustezza hai bisogno di un essere umano nel circuito
che può fondamentalmente risolvere i problemi quando
si verificano la cosa interessante
questo e il tipo di salto in avanti lo è
che sai quando lavori in un
Sistema si sa di sapere se si sta utilizzando
una lingua come la compagnia aerea che trovo gentile
di affascinante è tutta questa roba
che hai una compagnia aerea con Mi piace e
cose come gli alberi supervisore e tutto
queste altre cose essenzialmente è a
modo di imitare l’umano che vorresti
avere nel ciclo normalmente giusto è
un po ‘ come sai che puoi dire, facciamolo
andare avanti e pregare sedersi, lasciare la cauzione veloce e
va bene e sai questo è come
dicendo ok bene se questa cosa fallisce
ci metteremo dentro qualche processo
vai e guarisci il sistema in realtà
andando a dire bene ho bisogno di riavviare questo
cosa e che non siamo noi dicendo che è
il supervisore dei particolari ci processa
hanno all’interno della compagnia aerea che fanno questi
le cose quindi sono davvero gentile
di differenza un po ‘ con te sai molto
le persone stanno guardando sistemi come questo
e sai che mi interessa mentire innaka e
cose del genere che dicono che questo è il modo
andare per tutto ciò che penso sia davvero
una scelta di costo è una scelta di sicurezza voi
devi decidere se sei veramente dentro
uno di quei sistemi in cui si deve
incorporare quel tipo di recupero
le cose o no c’è tutto diverso
tipi di sistemi e il modo in cui ci avviciniamo
tutto dipende davvero da questo
cosa se sia frequentata o e
untended
quindi sì la sicurezza è piuttosto difficile lavorare voi
sai dove lo vogliamo lo sai
sono posti come sai operare
kernel di sistema che conosci vorresti
essere la persona che chiama Linux
nel mezzo della notte e dice hey my
il kernel non funziona sai che è gentile
di così ci sono certe cose
vuoi andare e avere un grado di te
sappi che conosci le cure e la codifica che potresti
vuoi usare le prove che conosci molto forti
tipi e cose del genere per essere sicuri
che queste cose sono tutte le cose così
in un certo senso come sai essere robusto
la faccia di queste cose e altre
luoghi in rimbalzo
quindi sì, la verifica degli errori è importante quando
non c’è una vera supervisione
un altro aspetto tutto questo è davvero quello che
c’è un costo per andare e fare il nostro
codice più sicuro e sicuro sai che ho notato
sempre più persone sono a sapere che
stavano facendo molto con la ruggine adesso e
Praticamente cerco di andare ed eliminare un sacco
di possibili fonti di errore essendo molto
rigoroso nella lingua e se uso il
ruggine, sì sì sì, è molto bello
la cosa penso sia una specie di
interessante è l’ unico avviso che
c’è come un ciclo di feedback esterno
quello non è veramente parte della lingua
è anche parte delle squadre che sono
produrre cose che sono un po ‘
interessante c’è un interessante
l’esperimento è stato eseguito circa dieci anni circa
fa penso in Germania e in Inghilterra
e doveva andare e rimuovere tutto il
segnali stradali nelle aree urbane
aree del centro città e piccoli villaggi e
cose del genere in modo II sia successo
c’è un piccolo messaggio lì che ti dice
quello che è successo in realtà sono stati gli incidenti
ridotto quando hai rimosso i segnali e
hai rimosso anche le linee guida
vai e mostra dove sei nella tua corsia
perché questo ti renderebbe le cose più sicure?
diventa più attento perché sei come
Oh sono in strada o sono come mi piace
il marciapiede non so che sono rallentati
giù quel genere di cose va bene ma non lo è
questo controintuitivo anche se sì
una specie di cosa strana ed è come te
so che penso che ce l’abbiamo davvero
interessante cosa culturale in corso
programmazione in questo momento per quanto riguarda
errori perché come la comunità ruggine
e molti altri hanno a che fare con questo
Come per assicurarci che questi
le cose non possono accadere in da da da da allora
hai persone come nella linea aerea
andare e dire bene le orecchie sono gonna
succediamo andiamo avanti e un po ‘come
costruire un processo di supervisione per essere sicuro
che sai che possiamo almeno recuperare
e possiamo fare cose buone se qualcosa
non funziona in modo sostanziale il
diverse quattro filosofie l’altra
tipo di dimensione come portare a questo
qui è il grado in cui
stare attenti in realtà è come
generato nella programmazione avendo un
elemento di pericolo e la storia personale
che racconterò di questo quando ero
in Università che è tempo fa ottenuto il mio
grigio a destra stavo imparando Pascal che
è come una mia primissima lingua
Nicola lavora e lo sapevi prima
linguaggio di programmazione , ma io già
ho imparato a programmare prima del mio primo
corso di programmazione ho imparato come
programma in C e stava digiunando perché
Sono stato al laboratorio di informatica una volta
seduto accanto a questa persona e guardando
finito e questo è come quasi alla fine di
il corso e rendendosi conto che lo erano
ottenendo gli out-of-bound dell’array
eccezioni e non ne avevo mai visto prima
nella mia vita e ho pensato wow sai
lei sta prendendo questo sul suo schermo è
come se non l’avessi visto e
è come quando lavori in C tu
impara molto velocemente a non farlo bene
perché una volta che sei fuori dai limiti sei
in questo terribile debugging di te
lo so ed è un po ‘approssimativo così così
sì, c’è questa cosa dove fondamentalmente
la possibilità che l’area vada e dia
noi un po ‘più diligenti in certo
spazi e penso che sia qualcosa di noi
avere un fattore simile a te
conosci il nostro, sai una visione ampia di cosa
gli errori sono e cose del genere in
sistemi sì sì II non lo so nemmeno davvero
come la parola errore più penso che sia
genere di una cosa interessante per cercare di
reframe sai che ci sono cose che
può succedere in codice dovremmo provare ad andare
e sfidali e vedi se possiamo ottenere
liberati di loro conosci cose come me
menzionato in precedenza sull’andare effettivamente
rendendoli parte del dominio come elemento
non trovato è una cosa che accade in
il tuo codice non è qualcosa che dovrei fare
vai e crea un’eccezione per
in particolare valgono tutte quelle cose
andare e trattare e anche il
chiediti solo posso avere un sistema
dove sai che l’errore è impossibile
e solo a volte a fare questa domanda
permette di vederne uno arrivare in un posto dove
le cose possono andare molto meglio quindi penso che
cosa che so come stai cercando di farlo
esplorare con noi è che conosci il codice
può funzionare in molte condizioni e lì
sono condizioni che non vogliamo il nostro
codice sotto lavoro sotto e noi chiamiamo
quelle condizioni di errore così grandi
la domanda è che possiamo effettivamente andare avanti e
aumentare il numero di condizioni del nostro codice
può lavorare sotto spesso generalizzando o
come un po ‘più di design e ottiene il
punto siamo solo una specie di elenco delle esecuzioni
incondizionatamente non lo dice
l’utente hey non puoi farlo
in pratica è come ridurne alcuni
opzioni che pensano persino di fare il male
cosa giusta
questo è un tipo di interfaccia utente di
cosa usando la struttura all’interno del tuo
codice che fondamentalmente è meno incline a
errore va bene, la cosa buona diventa
molto più naturale da fare e penso
sai che vale la pena conoscere l’era
Handley non è solo opzione monadi e
eccezioni quelli sono meccanismi che conosci
tutta questa roba è progettata e noi abbiamo
per tipo di trattare con quelle cose
in questo modo voglio lasciarlo lì
aperto per domande
Grazie
[Applausi]

Please follow and like us: