Press "Enter" to skip to content

GOTO 2016 • The Return of Stream I/O • Andre ‘Staltz’ Medeiros


Va bene così Ciao a tutti mi chiamo Andre
e questo discorso sarà il ritorno del flusso
IO vediamo un po ‘cosa sono io
Sono conosciuto per il ciclo J di fronting
quadro che ho costruito per
circa due anni ora in realtà si due
anni forse è più che non so rilanciare
mani se non hai sentito parlare di ciclo
jeaious
okay, è abbastanza okay, sì, sì
quindi sì, questo non è un
discorso introduttivo okay mi dispiace
come se avessi dato quel tipo di discorsi
prima di poter dare un’occhiata al
Internet e di questo parleremo
come la storia di come questo quadro
è venuto per essere e la sua somiglianza a questo
vecchia cosa in Haskell okay, questo è
questo tipo di discorso potente ma inutile
e tu sai solo provare ad astrarre
e prova a guardare lo stato dell’arte
con le cose a posto, ma è ancora
interessante per le persone va bene così lavoro a
questa agenzia digitale europea ha chiamato
occhi futuri basati a Helsinki, Finlandia
e prima degli occhi futuri prima che mi unissi
occhi futuri che conoscevo come pari a zero su
programma reattivo e che mai neanche
sentito parlare così poi fu quando io
uniti intorno a duemila tredici
o quattordici che ho iniziato qui le cose
come rxjs o bacon Jas o rx Java o
un cacao reattivo un reattivo funzionale
programmazione e per me tutto ciò era
super nuovo che a malapena ho sentito parlare
programmazione funzionale quindi ho iniziato come
ricercare queste cose leggendo
e mi sono davvero incuriosito fino a quando non l’ho avuto
l’ opportunità di lavorare su un Android
progetto e poi l’ho iniziato con il
sento che voglio usare sono
roba stravagante e sai che è così
come l’ ho imparato nel modo più difficile facendo
nei progetti dei clienti e non lo era
facile intendo che ogni tanto mi capita sempre
bloccato e ho avuto questo istinto a sentirlo
deve esserci questa reazione
il modo di fare questo ed è così che io
ho scoperto come reagire
programmazione e ho anche scarabocchiato molto
su queste note di carta e ha fatto un sacco di
diagrammi di marmo e sì sì, ecco come
L’ho imparato e dopo alcuni mesi
Ho scritto questa introduzione a reattivo
programmazione che è diventata un po ‘virale
hai sentito parlare di questo forse sì, un paio
di persone va bene che è bello dovresti
controllarlo fuori
e poi dopo alcuni mesi continuarono
fare cose su osservabili e io
ha pubblicato questo sito Web chiamato rx marbles
è fondamentalmente solo uno strumento di visualizzazione
quindi puoi capire come fanno queste cose
lavorare questi flussi e i loro operatori
e conosci un sacco di gente come Rx
Marmi ma per me
come se ci fosse un sacco di cose
successo in arti marmi che è stato gentile
di materiale di base quindi l’ho scritto per la prima volta
in CoffeeScript e rxjs e jQuery e
poi ho buttato via CoffeeScript riscritto
in equi script cinque e poi ci ho provato
a reagire e io ero davvero
infastidito da reagire così l’ho buttato via
e ho usato Dom virtuale con rxjs e
poi mi sono convertito a Babele e io
sperimentato con tonnellate di diverso
architetture perché non ero davvero
sicuro di come fare questo perché c’è come
non esisteva una cosa come un
architettura costruita attorno a rxjs
osservabili o flussi in generale per
fronteggiare e quel tipo di cose così io
ha davvero fatto un sacco di architettura simile
bozze e questo sono io che sto cercando di capire
roba fuori
Mi piace anche chiamarlo Oh MVC come un
MVC osservabile quindi l’ho rinominato in MDI
e le cose erano pazze ed è così che sono
sorta di rilasciato questa piccola piccola libreria
chiamato psycho jazz e davvero
ricevuto un sacco di feedback dall’open
fonte della comunità e lentamente hanno cominciato
ricevendo forma e feedback non lo faccio
significa come si, questo è bello intendo
questa è una merda lo sai e io ero come il perché
mi fa schifo come posso possedere la merda se lo faccio
quindi ho rilasciato un po ‘di like
variazioni e sai che ho iniziato a
piace
pensa davvero a questo voglio dire, lo sai
per quanto riguarda l’architettura, penso di essere io
ha rifatto l’intera idea sette volte o
qualcosa del genere quindi è iniziato
diventando meno schifoso meno schifoso e poi
sai che siamo arrivati ​​a questo punto dove siamo noi
ha una bella architettura che la gente gentile
di apprezzare l’uso e loro hanno voluto
lo sai che anche a me piace mi sento
super produttivo con esso sì sì a
dopo un po ‘ penso che sia stato questo
l’anno scorso maggio un po ‘dopo di me
visto questo c’era Eric Meyer in alcuni
video acceso
Penso che sia il canale 9 o qualcosa del genere
dove stava spiegando di Haskell
e roba e poi ha detto di conoscere in
il passato dei giorni che avevamo
questa cosa in Haskell e ho messo in pausa il
video ero come aspettare un secondo aspettare un
secondo è quello che ho che è ciò che io
ho avuto e sono stato così è venuto fuori che
questa cosa che ho costruito è come
è già stato lì molto tempo fa
quindi sì, nel 1998, come hanno scritto questi
documenti nell’università Paul hood AK
e un sacco di altri fantastici professori
stiamo facendo ricerche su di te lo sai pre
Haskell prima che arrivasse Haskell e
è un po ‘come tu sai come Haskell
ha iniziato a prendere forma così sai che non lo sono
andando a ho intenzione di spiegare questa cosa
chiamato stream I oh okay questa cosa qui
che Eric Meyer sta parlando, ma io sono
non ti mostrerò un foglio qui e lo sono
non mostrerò Haskell così e anche io
non fingere di sapere tutto questo
lo fanno perché sai che nel 1989 loro
Erano lì nella ricerca universitaria
ricerca di queste cose mentre nel 1989 I
era proprio come tu sai scherzare
solo facendo sciocchezze quindi sì ho fatto il mio
leggendo e penso di sapere di cosa si tratta
su e voglio condividere con voi gentile
di come le idee teoriche alle spalle
questo quindi non aver paura che tu lo sappia
Sara ‘piuttosto facile io non ho intenzione di
Mostra codice Haskell o Haskell okay um così
cosa fa Haskell e cosa è lo stream IO
non c’è niente di divertente nella diapositiva
voi ragazzi state ridendo dal torto
scivola comunque così insomma vuol dire che
sai di solito che hai i tuoi programmi
avere combinazioni logiche ed effetti okay
avere qualcosa come eseguire la rete
chiedi che questo è un effetto e tu hai
mostra i pixel che sono un effetto e tu
hai una logica come sai, prendi il numero
moltiplicalo per cento questa è la logica
è solo logica
quindi ciò che Haskell fa è separare quelli
due dicono come logica vai da una parte
effetti si va dall’altra parte ma
ci sono diversi modi in cui puoi
separare quello va bene in un modo che puoi
separato è con questo cosiddetto
l’ I / o monadico viene chiamato nell’altro modo
flusso I / O e l’altro modo è chiamato
continuazione I / O e questo è tornato da
il documento del 1989 ora si scopre che tu
conosco tutti questi tre solo monadici
sono sopravvissuto ad Haskell, quindi stiamo andando
per vedere rapidamente l’I / O monadico e il flusso I
oh ma non continuazione, so che è gentile
di fuori portata, quindi, okay , no
intenzione di dare come un tutorial monad
qui sul palco ora darò solo un
intuizione morbida di ciò che è questo per
persone che non hanno familiarità con esso ora
se hai mai fatto Haskell nel tuo
la vita va bene ragazzi, per favore chiudete il vostro
occhi, perché ho intenzione di spiegare questo
in JavaScript e probabilmente stai andando
per essere disgustato Va bene così, sì questo non lo fanno
vomito quindi ecco un programma in JavaScript
questo è molto semplice, okay dice
finestra conferma che fa questo pop-up come
e puoi dire di si o no e poi
ottiene la risposta è sicuro se è sicuro
dì console.log sei sicuro se non sei sicuro
allora non sei sicuro, ok davvero semplice
programma quindi ho intenzione di applicare un trucco
perché questo programma mescola logica e
effetti così gli effetti sono finestra
conferma e console.log e la logica è
il se e altro okay, quindi applicherò
un trucco ok ora ha il mio programma
L’effetto 1 è un array con stringa e
l’effetto 2 è un array con stringa e
poi concatenare quei due e ottengo
array con due stringhe
e questo è un output che va bene così è
completamente puro perché sai una volta
chiami quella funzione che otterrai
sempre esattamente gli stessi array con
le corde dentro di loro vanno bene
puro ma sembra essere che il
il contenuto della stringa dice finestra
conferma sì , alcuni di voi potrebbero saperlo
quello che farò dopo ho questo
programma lì la funzione di questo altro
eseguire che prende ciascuno di quegli effetti
le stringhe e le corse su di esso vanno bene
ora puoi vedere cosa sto facendo
ci huh
si e dicono che non dovresti usare
eval ma è quello che sto facendo qui così io
chiama la prima stringa con la finestra di valutazione
conferma e mostra quell’effetto e
poi con ciò ottengo un risultato che tengo
immagazzina quel risultato lì e poi passo
quel risultato alla stringa successiva I
sostituire il segno del dollaro okay così
questo è quello che sto facendo qui e là noi
sai che il programma principale ha solo
dati ok ho codificato effetti come dati
è un trucco perché la stringa è
sempre dati ma così la stringa no
ma fai l’effetto è come dopo
qualcosa lo otterrà e lo farà e
è così che puoi separare la logica da
effetti voilà
ci vai che è un po ‘come monadico
Io oh sì
per favore, stai in silenzio
ora vedremo qui un altro
questo è chiamato stream i / o è a
modo diverso di fare questa separazione
quindi la logica entrerà nel tuo programma
la sinistra e gli effetti andranno al
proprio sul funzionamento nel funzionamento
sistema in modo che il modo in cui stiamo andando a
sedersi e come far accadere cose nel
sistema operativo o nel mondo reale
come conferma la finestra è che stiamo andando a
invia un messaggio al sistema operativo
come se il sistema operativo fosse a
server okay
quindi stiamo inviando una richiesta al
sistema operativo come se fosse a
server e quella richiesta è qualcosa
come hey, per favore esegui console.log
okay e poi usciremo o
come diciamo per favore, esegui il punto della finestra
Confermiamo e poi andremo a uscire
una risposta come se il sistema operativo
sarebbe un server e quella risposta è
il tipo di messaggi che vogliamo
leggi dal mondo esterno okay e
questo è un trucco qui, quindi come va?
sembra di nuovo in JavaScript Haskell
per favore, non vomitare, vediamo questo
in JavaScript usando i generatori es6 ok
e questo solo per dare un’intuizione così
prima creo un oggetto che sia
la mia richiesta e II voglio eseguire la finestra
conferma quindi la mia richiesta ha il tipo
è confermato e il contenuto o il
il valore è sei sicuro e poi cedo
quell’oggetto in generatori es6 che puoi fare
questo puoi cedere e il modo in cui
rendimento funziona è che si congela su quello
punto di snervamento in modo da renderlo tale
oggetto al mondo esterno e dopo
che si congela lì, e poi
una volta che ottiene la risposta
continua da quel punto quindi otterrà
risposta confermata è tipo questo è questo
cosa che ha questa capacità di mettere in pausa e
continua così, una volta capito
risposta dal server o dal
sistema operativo che puoi fare se altro
questa è la nostra logica e poi puoi
dì hey ecco una richiesta per eseguire il
console e con quel contenuto altro eseguito
la console con questo contenuto e quelli
sono anche richieste che stiamo dando
passando al sistema operativo ora il
l’altro lato è il sistema operativo come
funziona bene abbiamo una funzione
qui che chiamerà il vostro programma e
otterrà la prima richiesta dal
programma e lo farà anche in a
loop e poi controlla se quella richiesta
tipo è di console se si tratta di una console
richiede quindi eseguirà la console
e se è una richiesta confermata allora
sta per eseguire la conferma e
tornerà la risposta e lo farà
restituiscilo al programma come questo
questo è esattamente come lo fai in es6
generatori e poi lo gestiamo così là
tu vai
questo è il modo in cui possiamo ottenere
un’intuizione di ciò che è IO monadico e
cosa è lo stream IO e questo è fondamentalmente
flusso inattivo il diagramma quindi ecco a
problema mentre Eric Meyer stava mostrando
quello nel video
era come si, questo è Stream il questo
è come in Haskell lavorava, ma come
poi lo asciuga e lui dice bene
non ha funzionato, quindi dimentichiamoci
su di esso ed ero come se aspettassi un
in secondo luogo, come ciò che è andato storto con la stringa
IO Intendo che ero un po ‘deluso da Tom
quindi cosa è successo perché non ho riprodotto l’IO in streaming
lavora quindi dai un’occhiata attenta all’Haskell
rapporto sulla versione 1.0 è questo file lì
vedi qualche problema controlla la data
destra
Il pesce d’aprile è così che mollano il flusso
lì, ma è come quello di April Fool
dovresti ridere di qualsiasi cosa
comunque si ma seriamente perché no
flusso IO lavoro che ero ero
curioso come perché questa cosa funzionasse
saggio perché c’è un Kumari che lo pulisce
via così sono andato a studiare un po ‘di più e io
vieni ho visto questa definizione di reattivo
sistema e una definizione di a
sistema di trasformazione e questi sono
roba vecchia intendo dagli anni ’90 e roba del genere
quindi non lo sto inventando
libri su di esso che abbiamo completamente dimenticato
ma uno dei libri ha detto che ci ha dato il
definizione di un sistema di trasformazione
dice un sistema di trasformazione
ripetutamente attende la sua semplice
arriva esegue qualche elaborazione e
emette il risultato quando questo processo è
fatto così è fondamentalmente che ottiene alcuni dati
qualche file o qualcosa lo fa
elaborando sputa i risultati e
ha fatto esempi di base sono come il tuo
comando del compilatore o UNIX come move o
rinomina, conosci tutte queste cose
conoscere i vecchi programmi di base, quindi è così
un sistema di trasformazione che cos’è a
sistema reattivo continuamente
interagisce con il suo ambiente usando
input e output che entrambi
continuo nel tempo o discreto e il
gli input sono spesso un significato asincrono
che possono arrivare quando e il
le uscite possono uscire quando è così gentile
di come questo sta elaborando il tutto
tempo
ad un certo punto riceve un input e forse
dopo due giorni o dopo due millisecondi
invia quell’output e continua
andando così non necessariamente si ferma
è proprio come questo e potrebbe
esempi di ingressi o uscite paralleli
di quello sono così i cosiddetti in tempo reale
sistemi come questi controllo dell’aviazione
sistemi o interfacce utente come mobili
app o siti Web che ci guardano
edificio e server vanno bene
così la storia è andata così all’inizio
Gli anni ’90 praticamente qualsiasi programma per computer era a
sistema di trasformazione che un bambino chiede al suo
papà papà cos’è un programma per computer e
il papà è come un buon figlio, sai che è così
questa cosa si dà un file ad esso nel
computer fa qualcosa e sputa
fuori un altro file e poi il bambino è
come va bene va bene così in quel momento questi
erano la programmazione dominante della proteina
lingue e quelle lingue sono state fatte
per programmi di trasformazione intendo
ovviamente perché vivevamo in questo
il mondo blu è ciò che i programmi per computer
erano così le lingue erano fatte per quello
quindi per noi vedere come scrivere è fatto per
quello sguardo che abbiamo principale ci vuole
le argomentazioni che fa roba in questo per
loop e ritorna a zero ed è
muore dopo che ok C è stato creato per questo
C viene fornito con una funzione principale e anche
sai Java Java è ancora uno dei
le prime tre lingue del mondo
usato e ci andiamo hai questo principale
proprio come ANSI prendere alcuni argomenti fa
alcuni sistemi di elaborazione
uscita zero ed è fatta , muore così
scopre che il flusso di Haskell IO era
nato fuori da questo momento quindi sì è
dagli anni ’90 ora i motivi per cui è così
non ha funzionato è che si scopre di non farlo
essere buono per i programmi di trasformazione
ok ma ci sono molti motivi come uno
dei motivi per cui stava bloccando
asincrono era anche molto facile da fare
deadlock e te perché hai avuto il
dipendenza circolare tra richieste e
risposte per avere una risposta in
una richiesta avevamo bisogno di una risposta ricorsiva
quindi è stato complicato è stato un po ‘ di
facile fare qualcosa come sto aspettando
per la seconda risposta ma che si riferisce
la prima richiesta quindi se hai fatto un like
con un errore, le cose sarebbero andate bene
bloccare e bloccare perché sta bloccando
e anche uno dei problemi del flusso
IO in quel momento era il momento in cui avevi
un tipo di domande e risposte programmi come
come sai il tuo tipico primo programma
in informatica come si prega di inserire
la tua età e poi si blocca e poi
inserisci la tua età prendi char e poi
la tua età è alta quando sei giovane
il mio caso è come se tu stia diventando un po ‘
vecchio sì sì stream IO è un po ‘
scomodo per quel tipo di domanda
e ha risposto a questo che dis che così e
quello era un tipo dominante di programmi
che avevamo allora per gli altri
ragioni è stato difficile estendere i tipi
delle azioni di IO e qualunque cosa così loro
ha iniziato lo studio e hanno capito che
è stato abbastanza buono per la trasformazione
programmi quindi nel 1996 e oltre
hanno iniziato a usare l’ IO monadico per quasi
tutto in Haskell e ti penso
non posso nemmeno fare il flusso di IO al giorno d’oggi
Haskell quindi è morto e solo per
darti un contesto che conosci nel 1996
e intorno a quello era il tempo in cui noi
iniziato a parlare di multimedia solo
come se fosse una parola che conosci solo
come oggi abbiamo Internet delle cose che
era come un cd-rom multimediale sai già
quindi ti ricordi così tanto ma era multimediale
in pratica hai gli occhi che sai iniziare
avendo Windows 95 e cose del genere
sai che abbiamo iniziato ad avere la sensazione
per te occhi e gli occhi sono reattivi
programmi okay quindi eravamo ancora a
mondo dominatamente blu di
programmi di trasformazione ma abbiamo iniziato
avendo un po ‘ di verde e all’inizio
Anni 2000 l’intera comunità di programmazione
è passato attraverso tempi molto bui perché tu
so come da una parte abbiamo avuto questo
fondazione di programmi di trasformazione
con come C e C ++ e Java ma sul
dall’altra parte dobbiamo davvero consegnare
queste app multimediali e di cui abbiamo davvero bisogno
per fare le cose
e anche i server hanno iniziato a essere una cosa
intorno a questo tempo e quelli erano bui
volte perché se ti ricordi che avevamo
come una tonnellata di concorrenza di memoria condivisa
mescolato con eventi e callback e
Win32 API è orientato agli oggetti
programmazione e questo andava bene lo sai
quindi sì e nel mondo del front-end
intorno diciamo 2000 4 o 5 a malapena
aveva anche jQuery e qualsiasi app JavaScript
che hai aperto da quel momento più
probabilmente aveva un sacco di callback e
mutazione di variabili globali e questo
andava bene, sì, ma ora avanti veloce
ad oggi 2016 e tu lo chiami
viviamo in questo mondo verde dove tutto
i programmi sono reattivi, quindi un bambino ha chiesto
suo padre papà qual è il computer
programma che potrebbe anche non dire computer
programma puoi dire app e il padre
dice che sai che è questa cosa che è attiva
il tuo telefono o il tuo computer e puoi farlo
interagire con esso e ti mostra alcuni
roba e si fa alcune cose su di esso e
è così che sai così la nostra idea di a
il programma per computer è così
Al giorno d’oggi interattivo, quindi scommetto che lo sai
qualsiasi software che hai sul serio
come chiunque di voi, potrei scegliere qualcuno di voi
e come sai, hai qualcosa?
uh-huh asincrono sai come me
potrebbe farlo ora ma sì come promesse
callback trasmette CSP a chiunque
ha qualcosa di asincrono, tu no
anche come metterlo in discussione e sono così simile
e scommetto che funziona anche continuamente
come qualcosa di interattivo giusto per
esempio anche i compilatori oggi che sono
programmi tradizionalmente trasformazionali
sono anche come interattivi così dentro
dattiloscritto ora abbiamo questa cosa chiamata
un server di compilazione dove è giusto
in esecuzione e potrebbe ricevere codice sorgente e
controlla quello e produci laut e output
ed è proprio come un server davvero così
questo è usato in editori per esempio
codice di Visual Studio in modo che tu sappia
ogni volta qualcosa cambia nel tuo
editor e qualsiasi tipo di codice sorgente in
il tuo progetto lo controllerà per te
e questo è un interattivo
programma improvvisamente e in questi giorni per
la maggior parte delle cose che siamo
usando per asincrono e concorrenza
è un messaggio che passa ok quindi ce ne sono due
tipi di messaggio che passa e memoria condivisa
e questo è abbastanza interessante ok
perché se tu se non hai ancora dormito
quindi intendo se non hai dormito durante
questa presentazione allora avresti fatto
ricorda che il flusso I / O era un messaggio
passando astrazione e che era bello così
era il messaggio che passava ma in Haskell
hanno anche usato liste pigre e blocchi
il programma è così che ho scoperto che se tu
basta sostituire liste pigre con flussi e
blocco con asincrono, quindi flusso
I / o diventa molto utile per il messaggio
passando o applicazioni interattive che noi
costruisci oggi ed è per questo che dico stream
I / o con virgolette perché Haskell
la gente non mi apprezzerà proprio ora perché io
cambiato i flussi lista pigro ma il
il diagramma non è cambiato bene così quando ho
cambiato lista pigro i flussi il
diagramma rimanere lo stesso ho davvero un
programma che invia messaggi e
riceve indietro i messaggi e voilà che il mio
amici è l’ idea di psico Jes è a
Framework JavaScript per interattivo
app in cui hai il messaggio che ti passa
avere un gate di input / output per la logica e
effetti e hai flussi per
programmazione asincrona che è esso facciamo
dare una rapida occhiata di nuovo questo è
non un discorso introduttivo ma solo a
dare un’idea in codice anche qui noi
avere alcune importazioni in alto, basta importare
libreria e la libreria di stream pure
e quindi questa è la fonte del nostro programma
come messaggi in arrivo dalla
sistema operativo
e quindi posso fare qualcosa di simile a questo
può definire un flusso chiamato incremento
flusso e quel flusso è tutto il
fare clic sugli eventi sull’elemento incremento
mappato a +1 in altre parole come se tu
un po ‘astratto è solo che creo il
in streaming pensi solo all’emettitore di eventi
chiamato incremento flusso e poi I
ascoltare tutti gli eventi click su
incremento element e quindi invio a
+1 sul
il flusso incrementale va bene, questo è fondamentalmente
la stessa cosa di fare la mappa lì così
sì, ho molti discorsi su come
attenta introduzione a uno psicologo
nel caso in cui si vuole dare un’occhiata più tardi così
allora facciamo quasi la stessa cosa per il
flusso di decremento ci uniamo anche insieme
il flusso incrementale con il decremento
flusso facciamo questa cosiddetta azione
flusso e ha alcune somiglianze con
flusso e reduxid puoi pensare a un
azione del genere e poi facciamo un
flusso di riduttore anche un po ‘come in
riduci dove ottieni ogni azione e tu
mappare quell’azione ad una funzione e quella
la funzione sa come prendere prima
dichiari e faccia il nuovo stato così poi otteniamo
tutto questo riduttore funziona nel tempo e
possiamo piegarli è una specie di a
radar adduce la stessa idea come in redux e
allora possiamo finalmente mappare ogni conteggio in
il conteggio scorre a un markup e poi a noi
inviare che risale agli albori quindi inizialmente
dal Dom abbiamo ricevuto messaggi che erano
eventi come i clic e ora stiamo inviando
indietro più messaggi che sono contrassegnati così
dal Dom ottengo click sul mio
programma e ritorno al Dom che rispondo
segno di ciò che dovrebbe essere mostrato e poi
alla fine eseguiamo questo e gestiamo il
programma contro il sistema operativo
che è il browser e lì andiamo avanti
a sinistra abbiamo questo programma che lo esegue
sai solo che fai clic sul sì
counter app ma sulla destra vedi la nostra
strumenti di sviluppo e mostrano la struttura di
i flussi vanno bene e puoi letteralmente vedere
i messaggi vengono passati lì bene e
questa è l’idea che abbiamo il messaggio che passa
non solo nei confini con
sistema operativo ma anche tra i tuoi
app puoi vedere che il messaggio sta passando
okay , l’idea è che tu abbia un
flusso di eventi Dom dall’esterno
mappa del mondo che è il flusso di azioni
mappato il flusso di app per riduttori
che il flusso di stato e tu potresti
rimandare un flusso di markup in modo che giri
fuori quel ciclo jess ha asincrono
il messaggio che passa è buono per l’utente
interfacce o qualsiasi tipo di reattivo
sistema e ha buoni problemi di separazione
c’è un altro discorso per quello
ma un pollice in giù qui è che lo è
non così buono per la gestione di domande e
rispondi al tipo di I oh ok, proprio come
Lo stream I / O di Haskell non era molto buono
per una domanda e una risposta non è così
buono per quello o facciamo un rapido
guarda perché così qui abbiamo una risposta
e una richiesta a HTTP attraverso questo reale
server okay e prima di tutto ho il
risposta definita prima e poi ho
la richiesta è stata definita più tardi e così è
già un po ‘strano, perché
di solito definite le richieste prima del
risposta sì, ma in ogni caso, infatti, è possibile
in realtà li metto in qualunque ordine tu
voglio così che è anche un po ‘strano così come
questa risposta è collegata a questo
richiesta e sono collegati attraverso
questa cosa ha chiamato una categoria o solo un
ID okay, quindi sostanzialmente invii un
richiesta al server ma dico hey that
la richiesta è etichettata categoria ciao e
poi quando torno una risposta dal
server che ho controllato l’ho verificato
risposta ha categoria ciao perché
potrebbe essere qualsiasi altra risposta intendo io
non potrebbe fare tonnellate di diverso
richieste a diversi server e voglio
per sapere qual è quello così come te
posso vedere che devo avere un identificatore
qui per collegare queste due cose ma
quello che volevo veramente fare è solo
Definisco che ho questa richiesta e poi la mia
la risposta dipende da questa richiesta e
quindi non ho bisogno di avere questi ciao
identificatori più okay di nuovo non lo fai
bisogno di capire tutti questi dettagli
qui è solo per dire che non è così
buono per domande e risposte di tipo in
un’interazione e anche il voglio dire te
potrei fare questo puoi farlo, ma ora
stiamo mescolando gli effetti con la logica che siamo
facendo la richiesta di rete all’interno del nostro
programma e sai che ha il suo
problemi quindi significa quel flusso
I / o ha questo problema inerente che
domanda e risposta tipo di interazione
è male, ma in realtà non ce n’è un altro
Modello IO che si avvicina molto al flusso
IO e questa è l’ architettura di L e Elm
ed è anche messaggio guidato proprio come
sai che ha inviato messaggi
ha letteralmente un tipo di messaggio
e si riceve indietro non mi dispiace che tu
ricevere messaggi dal funzionamento
sistema e spedisci comandi sì sì
ciò che è diverso su elm risolve
questa domanda e risposta tipo di cosa
Beh, sì, sì, ha una cosa chiamata
compiti ok e qual è un compito in elm è
fondamentalmente un comando o richiesta che il tuo
il programma sta inviando al runtime o al
sistema operativo ma questo messaggio è
abbastanza grande dice come tu sai che voglio
tu per farlo vai lì e prendi quello e
fai questo e poi fallo e poi
fai questo e poi finalmente ottieni il
risultato e restituiscimi ok così è
non come una richiesta molto piccola come correre
console.log è come fare un sacco di cose
e poi si ottiene il risultato
quindi di nuovo fingi di conoscere Elm
piace come un utente esperto già e
qui abbiamo un compito che è come prima
HTTP OTTIENI da quell’URL e poi scegli
tutti gli ID di tutti questi cappelli e
poi per ogni cappello voglio che tu corra un
HTTP POST a cui piace quel cappello ok, quindi siamo
facendo molte richieste qui, ma questo è
un solo compito ora potresti non conoscere Elm
ma questo è solo dati che non esegue
questo compito non è come una promessa che si
potrei immaginare che questa è solo una stringa
ok questa cosa è solo una stringa
dicendo per favore fallo e fallo
questo e farlo è solo dati e se
hai prestato attenzione questo è
monadico io / o uh-huh questo è un po ‘
interessante
va bene così invece di usare le stringhe
come sai che Elm ha questi dati
strutture chiamate compiti così che è gentile
di funky perché puoi mettere l’I / O monadico
all’interno del flusso I / O quindi un compito è davvero
come Monica è proprio come te
mandando questo messaggio per favore esegui questo
un mucchio di istruzioni e che può funzionare
all’interno del contesto di questa stringa di
questa cosa chiamata stream I / O quindi si trasforma
fuori che possiamo avere trasformazioni
programmi all’interno di programmi reattivi e
è molto bello
quindi il passaggio dei messaggi è fantastico
perché non esclude l’ I monadico
sai che puoi fare entrambe le cose e se hai socchiuso gli occhi
sai che è come forse puoi vedere
afflusso di messaggi e redux pure
perché sai che hai il tuo negozio e
che ha roba al suo interno e tu mandi
indietro i messaggi che sono oggetti di stato
il tuo albero di componenti e poi il tuo
albero di componenti alla fine invia
messaggi al tuo negozio e quelli
i messaggi sono azioni quindi eccoci qui
avere messaggi di stato e messaggi di
azioni e tu sai la direzione va bene
è lì che queste cose e quelle sono
dove il nome tipo di conferma ma
Redux e flusso non sono puramente funzionali
perché non provano a fare il
separazione della logica in vigore così tu
potrebbe fare la logica e gli effetti all’interno del
memorizzare si potrebbe fare la logica e gli effetti
dentro i componenti sì , puoi farlo
mescolarli come si desidera in modo che mi partire
iniziato a farmi chiedendo questo messaggio
passando oltre a puramente funzionale
approccio significa qualcosa come il flusso I / O
con le virgolette sì, lo sai perché
flusso manca la parte puramente funzionale
quindi non è esattamente stream, lo so
appena
dati flusso unidirezionale, ma tu sai che io
trovo piuttosto difficile avere quei due
elementi del messaggio che passa e puramente
funzionale e non finire con qualcosa
come il flusso I / O con le virgolette, quindi il mio
la conclusione è che viviamo in un mondo in cui
tutti i programmi sono reattivi
i programmi okay hanno un sacco di lingue
l’inerzia pesante va bene
tempo di evolversi ed essere ed essere adottato
così negli anni ’90 piacevano le lingue che erano
usati sono stati effettivamente creati 10 o 20
anni prima come negli anni ’70 e nel
lingue che abbiamo usato nel 2010 come
JavaScript e Ruby e Java erano
creato anche circa 10 anni prima
il trucco è se vuoi sapere abbastanza
con precisione in cosa utilizzeremo
i prossimi cinque anni hai bisogno di guardare
le lingue che sono abbastanza promettenti
adesso perché conosci le lingue
Prenditi un sacco di tempo per essere adottato così giusto
ti ascolto okay questo non è un
esauriente elenco Elm alexia chiusura Dart
e tutte queste lingue parlano di I
significa che c’è un sacco di altri hanno un
concentrarsi su queste cose che già
supposto asincrono non stanno andando
essere come se non lo ignorassero
in questa parte prendono come asincrono
seriamente, la chiusura ha come nucleo asincrono
che prende abbastanza seriamente async
Anche qui CSP Alex ha un’aria
posa il modello d’azione di stile che non ho intenzione di fare
fai finta di sapere che Elm, come abbiamo visto, ha
anche il messaggio che passa e si focalizza
programmazione asincrona e Dart
sai che ha una bellissima API per
flussi che assomigliano a rxjs che dovresti
guarda
il dardo di solito non viene menzionato ma solo
nel caso ti interessi in qualche modo
come idee e cose, basta dare un’occhiata a
come un lavello è in dardo molto meglio di
in JavaScript quindi c’è anche una tendenza
al giorno d’oggi verso la programmazione funzionale
così come la chiusura di alexia
programmazione funzionale va bene così possiamo
tipo di sapere che il futuro sta per
essere qualcosa di simile a fronteggiare il
la situazione è così oggi, okay
ciclo Jess usa il messaggio che passa reagendo
e il messaggio di passaggio passa Elm è
vista passante allegra con il suo flusso simile
la vista X usa il messaggio che passa ad uno angolare
con il suo scopo sai che è stato condiviso
memoria concorrenza angolare 2 ha te
conoscere quasi la stessa cosa condivisa
la concorrenza della memoria, ma poi si ha ng
rx che è fatto per angolare 2 e
è anche ottenere idee dai tuoi condotti
messaggio che passa così c’è un forte
tendenza all’utilizzo del passaggio dei messaggi
concorrenza e poi anche quando arriva
ai paradigmi che lo psico J vuole essere
funzionale di nuovo e redux e reagisce
come Elm è come gli occhiali da sole funzionali
se UJ s è una programmazione orientata agli oggetti
orientato ad angolo 1 e 2
programmare Rx è come si voglio
essere funzionale, quindi andiamo
sì, è per questo che possiamo piuttosto
dire o prevedere con fiducia che nel
i prossimi
anni di programmazione e front-end
la programmazione sarà principalmente puramente
funzionale guidato dagli eventi e
concorrenza simultanea di messaggi grazie
molto per ascoltare e sì così grazie
avere qualche domanda dall’app perché no
usa lo script di chiusura con il tuo core asincrono
posso usare andare avanti a volte le persone mi chiedono
cosa penso di cosa penso
chiusura e devo rispondere che ho no
idea perché non ho usato la chiusura I
significa che usano la chiusura forse per cinque
ore o qualcosa di simile e quello che ho
avere un’opinione sulla chiusura è ciò che ho chiamato
opinione senza riserve significa che io
non ne so nulla per te
non dovrebbe anche ascoltare mi conosci così
non ascoltare le persone che non l’hanno mai
roba usata e non lo so
probabilmente bene non so bene un altro
uno come impediamo agli sviluppatori di
creando i propri effetti senza
senza usare il ciclo come prevenire
gli sviluppatori di utilizzare la scrittura propria
valutando i propri effetti senza
ciclo immagino che la domanda sia in qualche modo
come come posso far valere che le persone lo sono
non fare effetti in JavaScript e
psicologi che non ti piacciono davvero
far rispettare c’è c’è un interessante
es lint plug o preset che bourdelle
Stokes ha contribuito a mettere insieme quel
fondamentalmente rende JavaScript come lo sai
non è possibile utilizzare la mutazione non può usare
qualsiasi cosa e questo è un modo interessante
forse potresti usare quello che ho io
usato quello con ciclo J e fondamentalmente
sì, quel tipo di opere è un modo per
imporre ma l’idea lo sta davvero facendo
questo mi piace avere una certa disciplina e
allora come forse posso dire un po ‘
più che ho giocato con il
pensato di scrivere una lingua che sarebbe
essere ottimizzato per il ciclo fantastico è giusto
come sai che abbiamo l’ olmo e abbiamo un
mazzo
diversi linguaggi mentitori che compilano
il JavaScript ma ci vuole così tanto tempo
seriamente non puoi immaginare quanto
l’impegno a scrivere la lingua prende così
Non penso che vorrei saltare nel fare
quello ma in un universo alternativo I
potrebbe forse fare così bene
discusso questo con Eric Meyer No
quindi la cosa è come ho incontrato Eric Meyer in
diciamo il primo mese e poi
dopo nel mese sette ho scoperto circa
flusso I / O così non ho avuto il tempo di
parla con lui ma lui sa che mi piace
fare come analogie tra le cose
ma penso che la chiave lì con flusso IO
è che era un blocco ed era pigro
liste così abbiamo cambiato quelle due parti e
ora è asincrono e lo streaming così
fa una grande differenza, penso bene come
è binding o slap map implementato bind o
mappa piana implementata mmm c’è come me
Devo assumere molte cose ben legate
beh, immagino che la domanda riguardi
legatura o mappa piatta nell’hacky JavaScript
IO monadico di cui ho parlato, ma forse
questa è una domanda che mi si può chiedere
di persona è praticamente sì parliamo
del suo Haskell non è una buona lingua
per l’interfaccia utente reattiva dal suo utilizzo
IO monadico di nuovo giocherò con quell’auto
Avevo una carta che non avevo idea perché io
non hai usato Haskell per te è a malapena
Ho usato Haskell per quasi tutto ciò che sono
ancora imparando come usare effettivamente
ma so che Haskell ha freddo
roba come Fran che è funzionale
libreria di programmazione reattiva e questo
Era come anche c’è un sacco di lavoro che
relativo alla funzione di programmazione reattiva
quello è stato fatto da Paul Hudak che è uno di
le persone principali dietro Haskell e quelli
tipo di cose funzionano arctor
la programmazione è principalmente per l’utente
interfacce quindi è principalmente per come
programmi reattivi quindi sono tranquillo
certo che House Co ha cose davvero belle
per quel bene
Ho in programma di migrare l’allenatore
script chap e possiamo usarlo con
Ankara: possiamo usare il ciclo con l’angolare 2
oppure possiamo usare dattiloscritto con angolare a
ringraziali durante il ciclo, va bene, non usare
angolare con ciclone sì sì ma
sei fuori a migrare il codice è a
pedice si si prega di usare dattiloscritto
significa che ti ringrazierai è
davvero bello intendo così la gente pensa questo
ci sono molte cose del genere
che devi fare per poterlo utilizzare
dattiloscritto
ma in realtà diciamo che non puoi ottenere
i Taiping per qualche biblioteca puoi
dì semplicemente che puoi digitare questo come qualsiasi
e poi sei di nuovo al livello di
qualità di JavaScript giusto perché in
JavaScript è tutto digitato come qualsiasi
è come con la sua adozione si vuole in ogni caso
avere qualche vantaggio perché in codice come
diciamo che si ottiene una risposta di ritorno da
il server quella cosa viene solitamente digitata
significa che ha alcuni campi che tu
aspetto di essere lì, c’è così tanta roba
puoi beneficiare semplicemente usando un po ‘
un po ‘di dattiloscritto ed è anche possibile
che usi alcuni file nel tuo progetto
o JavaScript alcuni file sono dattiloscritti
ma sai che questo è completamente separato
parla bene fammi vedere
perché Elm e ciclo sì rispetto a
dattiloscritto o script pigma 6 con
GIS reattivo ok perché l con dattiloscritto
a quali elementi viene confrontato il ciclo D
dattiloscritto con reattivo si
ok penso che la domanda sia come fa Elm
confronta i tipi grandi come quando sei
sarà l’uso del ciclo con dattiloscritto Elm
ma molto meglio ovviamente è puramente
linguaggio di programmazione funzionale ma tu
sapere che il dattiloscritto è meglio di
JavaScript è per questo che abbiamo iniziato a usare
script ma puoi anche usare JavaScript
se vuoi, ma sicuramente una lingua
come l’ elm sarà molto meglio in questo
saluti, intendo che lo avrai
fiducia di zero errori di runtime mentre
con dattiloscritto hai questa fiducia
di come molto meno errori di runtime di
JavaScript ma ancora alcuni errori di runtime
grazie ancora grazie

Please follow and like us: