Press "Enter" to skip to content

GOTO 2016 • Want to be a Better Programmer? • Lars Bak & Kasper Lund


Va bene, voglio essere un programmatore migliore
isolare il titolo prima di tutto voglio
presenta Casper, mio ​​collega, tu
vuoi ridurmi, posso farlo
questo è Lars , probabilmente lo sei
ho sentito tutto quello che devi sapere su di lui
già così fermiamoci anche lì
molto sì
quindi, prima di iniziare con noi, ricapitoliamo di più
di Dane ha detto che stiamo facendo virtuale
macchine ad alte prestazioni virtuali
macchine per molti anni ho iniziato
lavorando sul linguaggio di programmazione beta
30 anni fa
tutti conoscete il beta power corretto 5 3 3 5
abbastanza buono ma è stato divertente
così sono stati trascorsi i primi 25 anni
rendendoli veloci, piccoli e dinamici
e questo è il motivo per cui tu hai me
indovinate un po ‘se posso fare affidamento sulla dinamica
caricamento in classe e scarso morphing in linea
caching e what-have-you quello è 5
anni abbiamo lavorato su questo e su questo discorso
sarà collegato a quello principalmente e ma io
voglio parlarti della minaccia
per tutto il resto della mia carriera
stato per potenziare i programmatori in modo che possano
fare astrazioni a costo zero è super
importante che i programmatori quando loro
le applicazioni ridimensionate non sono obbligate a
appiattire le funzioni di rimozione e e
fondamentalmente si attiva l’implementazione
dentro e fuori per renderlo veloce c’è
sempre stato importante tutti questi sistemi
abbiamo costruito che se si aggiunge astrazioni
sarà inline e farlo senza alcun costo I
lavora con Casper negli ultimi 16 anni sì
così è stato divertente e così è stato
addestrato ed è probabilmente migliore di me
ora e bene abbiamo ottenuto quando ci siamo uniti quando
siamo entrati in Google quasi dieci anni fa
ho iniziato a costruire il motore V8 che spero
hai sentito parlare di JavaScript ma quando noi
unito è stato molto bene lento e lo ero
compito era quello di renderlo molto più veloce così noi
si avvicinò con un modo per farlo
orientato agli oggetti e quindi sapevamo come
rendilo veloce così è così che abbiamo mangiato
circa e si scopre che aspettare a questo
il punto è usato per tutto ciò che viene usato
per nodejs anche la programmazione di una telecamera
l’ambiente è costruito sulla v8 che
è spaventoso ma vero e abbiamo un sacco di
browser che utilizzano anche la tecnologia
la parte migliore di questo sistema era qui
era open source e quindi concorrenti
concorrenti del browser dovevano almeno
abbinare le prestazioni altrimenti loro
sembrava che non potevano fare JavaScript
quindi penso che questa amichevole aperta
la concorrenza per JavaScript è stata creata
il mondo che abbiamo oggi con i browser
che sono su tutta la linea molto veloce e
Sono molto contento di questo così uno
domanda che puoi chiedere a te stesso
ha fatto questo miglioramento delle prestazioni che noi
consegnato come una sorta di combinato
ecosistema ma poi davvero ti fanno tutti
i programmatori migliori penso che ci sia un
buona domanda da fare quindi sono andato a cercare
online per scoprire come le persone usano
JavaScript oggi e trovi il codice come
questo io non puoi leggerlo da quello
dal retro lo spero ed è molto
Difficile dire cosa faccia chiaramente
non funziona abbastanza, c’è qualcosa di strano
assegnazione lì assegniamo 0 a I dentro
il ciclo ed è questo il tipo di
codice che trovi ancora in giro c’è solo
qualcosa di marcio su questo e diventa
peggiora proprio tu puoi trovare così tanto
codice estremamente scarso in JavaScript
lì e poi trovi cose del genere
la gente vuole capire se qualcosa
è una funzione che useranno come due
conversioni di stringhe affettatrici e cubettature
e cercando di capire se m se questo è
una stringa quindi penso che puoi chiedertelo
come fa la performance in sé davvero
rendi ragazzi migliori programmatori e io
pensa che la risposta sia un sonoro sì di
Naturalmente lo fa chiaramente abbiamo fatto credo che
ha fatto abbiamo fatto tutto molto meglio
non io c’è c’è qualcosa che manca
qui ed è quello che vogliamo provare
tuffarsi e in questo parlare così
come se entrambi vivessimo in una breve esibizione
ed è molto divertente provarci
far funzionare un codice velocemente ma non lo è
tutto e quindi è quello che vogliamo
prova a coprire non credo che sia il fatto
che abbiamo fatto javis era più veloce in the on
il web era lì, ho sprecato lo sforzo
e come fa abilita molto
innovazione che abbiamo visto molto molto interessante
le cose vengono fuori da quella cosa
strutture più ricche migliori astrazioni
come Lara per raccontare e molto
applicazioni molto più forti sono ora in esecuzione
online e al di sopra di un’infrastruttura
come nodejs è vero però
gli sviluppatori hanno ancora una tale sofferenza
da semantica un po ‘strana e e
molto difficile identificare errori nel loro
basi di codice e ancora quasi come no
sintassi dichiarativa ovunque sia molto
è difficile trovare dipendenze è molto
rilassati rilassati su camion in una specie di a
sistema che abbiamo errori sono una specie di
consumato dal sistema assorbito anche e
persone e il sistema una sorta di
implicitamente
converte i valori in modi strani tutti
tempo come parte del modello del programma principale
quindi non è uno sforzo inutile, ma c’è
qualcosa manca qui tutto bene quindi um
è bello avere un evento festivo in
le persone iniziano a fare sempre più fonte
codice ed essi capire è molto difficile
gestiscilo , quindi cosa fanno loro?
sempre si inventano un
preprocessore o compilatori che prenderanno
un’altra lingua di origine e compilarlo
su JavaScript e penso che sia più grande
le aziende sono colpevoli nel creare
uno di questi transpilers e puoi vedere
una lista qui hai dattiloscritto
La scala silenziosa di CoffeeScript scala gli hack di oggi
Elm una larghezza di script di chiusura
compilatore di chiusura e anche punto ora
traduci la fonte di JavaScript ed è
interessante e tutto nasce
da quello è davvero difficile da gestire a
codice di grandi dimensioni in JavaScript
quindi il motivo per cui siamo qui è di dirlo
tu che potremmo non essere in grado di fare
tu più intelligente ma possiamo aiutare a costruire
alcuni sistemi che ti renderanno di più
produttivo come programmatore e cosa noi
credo sia questa semplicità semplice
e coerenza nella programmazione
linguaggio e le strutture stanno usando
ti aiuterà a renderti migliore
programmatore quindi cosa copriremo in questo
parlare qui parleremo di semplicità di
coerenza con un linguaggio di programmazione
parlare di alcuni problemi con JavaScript
e Java e C ++ rispetto a noi
in realtà imparo dal passato in
progettare il linguaggio di programmazione dardo
Penso e il secondo te lo mostrerà
un esempio di un quadro che in realtà
cerca anche di essere semplice e coerente
sì, perché non iniziamo con il
parte della lingua e penso che questo sia il
citazione giusta per iniziare e chiaramente
il ragazzo giusto per consegnarlo e
Non dovrebbe ascoltare noi si dovrebbe ascoltare
a Bruce Lee invece, ma un linguaggio semplice
la semantica è davvero importante da fare
le persone sono produttive e fanno scrivere alla gente
codice migliore e più pulito e non lo so
quanti di voi sono effettivamente familiari
con quello e alza le tue mani
abbastanza pochi oops
è stato un commento su questo no, camminerò
attraverso cosa cosa cosa cosa è il dardo
è in realtà abbastanza semplice e
è un orientato agli oggetti non sorprendente
il linguaggio è basato sulle classi che fa
vieni con il supporto per l’interfaccia e fare
Sento che è molto familiare la sintassi con
bretelle ricci e tutto ciò che vorresti
aspettarsi da una sorta di linguaggio derivato
dalla scuola di pensiero C ed è a
tenuto semplice attraverso un singolo thread
modello con l’isolatore o l’attore basato
concorrenza e viene fornito con opzionale
tipi statici qui ci sono abbastanza a
numero di differenze e così via
Scorri da JavaScript ma sono solo
curioso quante persone qui sanno
JavaScript hmm Ho pensato così quanti
conoscilo davvero bene
ci sono persone che cancellano le mani
così ho bisogno di un volontario
oh, appena tornato un po ‘puoi andare
torna alla diapositiva precedente sì
una cosa che abbiamo dimenticato di dirti, ragazzi
che se non si traduce che per
JavaScript ma corri da queste parti
nativo che macchina è in realtà
due volte più veloce di JavaScript quindi se tu
voglio velocizzare è un’opzione che Sher Khan sono
avrò ancora bisogno di un volontario
JavaScript si possono fare cose interessanti
con operatori abbastanza semplici come il
Operatore di uguaglianza e ho solo bisogno
qualcuno che mi dica cosa succederà
valutare in JavaScript eventuali volontari
dovrebbe essere C no niente ti sceglierò
allora okay, di recente ho letto l’uovo
moschetto 262 versione standard 5.1 e se
vai al punto nove undici undici
nove tre troverai l’astratto
algoritmo di confronto di uguaglianza e lì
troverai un modo molto complicato di
calcolando questo si scopre cosa succede
è la prima espressione
stai confrontando il 2.0 con la stringa su
proverà a convertire il lato destro
ad un numero così la stringa sarà
convertito nel numero due e il
la prima espressione tornerà vera allora
ora abbiamo vero vero nuovo booleano vero
ecco il suggerimento in JavaScript c’è
valori e oggetti due cose diverse
così vero non è lo stesso di un nuovo booleano
di vero ma se guardi questo
paragrafo di cui ho parlato prima che tu lo faccia
capisci che dovrai poi
converte il booleano in vero vero booleano
ad un tipo primitivo questo è vero così noi
è vero è vero che restituisce ritorni
per vero e poi hai veri uguali
quella stringa è semplice perché in
i primi confronti che possiamo costruire
il lato destro di qualcos’altro
ma non è vero
quando hai vero è uguale a una stringa allora
prima convertiti
il lato sinistro vero e saranno
convertito in un numero che è uno e
allora hai un numero uno rispetto a
la stringa 1 e di nuovo si converte
quel lato destro la stringa 1 a 1
e quindi 1 è uguale a 1 è vero e il
risultato è vero che lo sapevate tutti bene
sì sì, è interessante almeno
Sento che questo è più che sufficiente
accadono alcune conversioni implicite
dietro le quinte per fare la mia testa
esplodere la cosa è questa in realtà
succede nel codice reale non intenzionalmente
probabilmente non scriverai espressioni
come questo molto spesso e ma di questo tipo
di conversioni che accadono dietro il
scene solo perché non sei a conoscenza
come vanno le cose è un po ‘doloroso
per non dire altro penso che Todd sia un
provare a provare a risolvere alcuni di questi
cose è uno standard aperto e ha
dal 2013 abbiamo attraversato a
numero di revisioni e ti guideremo
attraverso alcune delle cose che abbiamo aggiunto
nel corso degli anni e ma è anche a
governato dal comitato economico
che Albert controlla anche il
forse l’evoluzione dell’eco script
parlerai di qualcos’altro Lars oh
sì, quindi abbiamo una piccola sezione qui
sui costruttori che tutti noi usiamo
costruttori grandi per creare nuovi
istanze di classi e molte persone
credo che la semantica sia chiara per diversi
linguaggi di programmazione quindi ho preso il
la libertà di cercare un diverso pochi
linguaggio diverso vedere cosa effettivamente
Succede così diciamo che andiamo a esso in modo da
ho deciso di guardare tre diversi
lingue C ++ Java e quello e vedere come
lavori di costruttori sto guardando solo a
aspetto particolare di esso ma il
la situazione è molto semplice ne abbiamo due
classi a Classe A e a Classe BB è a
sottoclasse di a ed entrambi hanno virtuale
metodi o entrambi chiamati F
e costruttori di un gruppo chiameremo se e
i costruttori di B chiameranno f2 e poi
vedremo cosa succede quando tu
ho eseguito queste lingue diverse che ho fatto
non includere JavaScript e chiacchiere
perché loro non hanno davvero
costruttori devi fare tutto
a mano e questo è ancora peggio quindi andiamo
vai lì sì
I costruttori in C ++ spero che tu possa
leggi il crossbus è molto semplice per te
avere una inclusione hai una classe A e una
Classe B e quindi il costruttore chiama
se e se è una funzione virtuale
stampa a e B e ha anche
costruttore chiama F e una funzione f
scriverò che stampa RB e tu hai
la funzione principale e tu crei un
istanza di B che cosa accadrà stamperà
fuori ae B e ti chiederai perché da allora
ha solo un’istanza e perché è
non una B nei due casi è perché
in C ++ hanno scelto quello quando tu
valutare il costruttore di un hai
non inizializzato la porzione B in modo che tu possa
solo vedere cosa può vedere un’istanza
ma in realtà potrebbe essere fonte di confusione
due persone e sorprende di più
quando lo provano in Java è una specie di
risolto che hai una classe A di nuovo è
esattamente lo stesso scenario tranne quello
devi avvolgere il principale lì dentro
nella classe che è piuttosto fastidiosa
e tu dici nuova B e lo farà allora
eseguire il costrutto di B prima di
eseguendo il corpo del costruttore di
a e poi in seguito il corpo di
Catoctin P e tu sei fortunato in questo
caso è la stessa parola per la chiamata
stampa fuori b e b questo è quello che tu
aspettati e sei una specie di tipo felice
vediamo come possiamo espandere questo esempio
solo un pochino
in rosso vedresti che ho aggiunto una stringa finale
X ed i suoi valori sarà detto essere
stringa questo è un bel finale significa che
quel campo avrà solo un valore in assoluto
e intendo davvero sempre e gestiamo il
il programma di nuovo e come ci si aspetta che si
ottenere B & B e questo si comporta come
dovrebbe quindi prestare attenzione a
la linea rossa ora sto per fare un
piccolo cambiamento al programma dirò
string dot trim non penso che stia andando
avere molta importanza in termini di funzionalità
poiché non ci sono spazi attorno alla B ma
cosa stampa e tu ci porti
stamperà lo stesso diritto
KeSPA beh, intendo dire che dovrebbe davvero andare bene
Voglio dire, è una variabile finale che vorresti
si aspetta che abbia sempre un valore e
questo dovrebbe essere B quindi sì dovrebbe essere B
ma so che non lo è se è nulla
stampa nulla ovviamente e tu ci porti
perché non è oh, naturalmente, la ragione
perché questo sta stampando e tutto è quello
nella precedente dove è la mano destra
il lato è una costante che il sempre C
il compilatore lo indicherà in modo tale che questo sia
in realtà un altro campo e poi esso
si comporta come previsto se è reale
campo come in questo caso e il diritto
il lato della mano è calcolato quando tu
inizializza la porzione B che non vuoi
hanno inizializzato per essere parte quando
invocando il metodo if in
costruttore di a e che sorprende
le persone e questo è un vero problema nel mio
mente perché hai un campo finale e
ottieni due valori diversi
fuori di esso prima nulla e poi il reale
stringa e questo succede anche dentro
codice reale ed è il tipo di problema
è davvero fastidioso rintracciare
come se avessi effettivamente campi finali e
essere in grado di osservare che i loro valori
cambiare nel tempo non è una cosa carina
comunque comunque ti do questi esempi
per dimostrarlo quando abbiamo progettato il dardo
linguaggio di programmazione che cerchiamo di imparare
dal passato, quindi quando si esegue lo stesso
codice in Dart
si prega di notare che il codice e questo è
più corto che in uno degli altri
programmi ma ottieni B & B e qualsiasi
la combinazione produrrà lo stesso risultato
e la ragione è che abbiamo deciso di farlo
abbiamo semantica costruttiva pulita noi
deciso di dividere il costruttore
la valutazione in due parti è la prima
inizializza tutti i campi e il secondo
passare solo valutare il corpo del
Costruttori questo potrebbe sembrare un
cosa semplice ma ottieni la coerenza
stiamo cercando non sei sorpreso
su cosa sta facendo la durata del programma
e quando fai il debug sai esattamente cosa
aspettarsi fondamentalmente, quindi questo è uno dei
i temi di cui parliamo quando andiamo
per una semantica più pulita che farà
tu un programmatore migliore, finalmente anche noi
questo è proprio come un add-on in aggiunta
alla semantica del costruttore spiegata
prima che possiamo avere una fabbrica
costruttori così diversi da Java in cui tu
sei obbligato a restituire il
esempio il sistema crea per te tu
può imbrogliarli in freccette e in questo
esempio qui abbiamo una classe semplice e
il costruttore prenderà una stringa e a
trasformare un semplice ma questi simboli sono
canonicalizza così a volte tornerà
un simbolo che è stato scambiato un po ‘
indietro quindi questo è completo
implementazione di un semplice tavolo in dardo
questo è
e non è così complicato e mostra
che la si otterrà e vi guarda a
nuovi simboli e otterrà esattamente il
lo stesso se la stringa è uguale è così
quindi andiamo al codice boilerplate
linguaggi di programmazione che si desidera effettivamente
per andare al sì almeno un tentativo di
andare come la mancanza di boilerplate I
pensa a tutti quelli che scrivono il codice per a
vivere e deve essere disposto a scrivere a
certo numero di piastre, ma è
molto doloroso per tutti noi una cosa è
scriverlo l’altra cosa è in realtà
leggendolo anche alcune persone discutono
che hai solo bisogno di una buona attrezzatura
esperienza nel tuo IDE che sarebbe giusto
compila questa roba per te ma è così
quelli comuni vengono con un libro di testo tu
pagare per la lettura e
capendolo più e più e più volte
di nuovo abbiamo davvero bisogno di cercare di evitare
un po ‘ di quello quindi ne farò un po’
confronti tra Dada e Java e
come le due lingue sono abbastanza simili
in molti modi e cerchiamo solo di fare
le cose più concise e migliori è di
catturare l’intento di ciò che vuoi
fare invece di essere un po ‘ingarbugliato
in troppa cerimonia quindi ecco un
esempio di questo in cui hai il
capacità di scrivere molto semplice
costruttori ma si limitano a nutrire valori e
che passa il costruttore in campi
e puoi ovviamente fare la stessa cosa
in Java ci vuole più che altro a scrivere
non è l’unica lingua al mondo a
ho questo tipo di funzionalità penso che sia
davvero importante a cui miri
rendere semplici i costruttori semplici
esprimere e abbiamo trovato in realtà che da
permettendo alle persone dove poter avere questo
notazione abbreviata per la scrittura di questi
tipo di costruttori le persone tendono a
preferisco scrivere davvero semplice
costruttori in modo che significa che le persone
voglio davvero avere un costruttore
senza corpi metodo complicato o a
corpi costruttori e in realtà viene
con una serie di effetti collaterali positivi
per la comprensibilità dei loro
il loro codice ha meno effetti collaterali
come parte delle istanze di costruzione di
le classi è una cosa molto buona e così via
rendendo così facile scrivere il tuo incoraggiamento
e la gente e sicuramente usarlo
quindi spero tu possa leggere il codice Java
così è niente di speciale niente
interessante su questo, tranne che come
in realtà avere campi pubblici in Java è
tipo di disapprovazione, quindi se vuoi
correggi questo e
è più reale che probabilmente devi andare
attraverso qualcosa come questo giusto
aggiungendo get X e ottieni Y sentiti un po ‘
ribollendo che i doppi campi X e Y in
campi di istanze private e sì è
una sorta di intenzione di traboccare qui è
cresce a destra diventa sempre più grande
e più grande anche per cose semplici come
questo devi scrivere bene questo è un
fondo abbastanza grande, ma aggiunge
e tu non devi farlo in dardo
come la X e la y sono proprietà e
puoi accedervi e puoi
Ovviamente anche sovrascriverli e sottoclasse
e fornire un’implementazione spesso
si basa su qualcosa che esegue reale
codice quindi questo è in realtà chiedendo un
cosa importante che anche il semplice
il caso sembra migliore e punto ma una volta
inizia a usarlo per davvero avendo meno
boilerplate lo rende molto più pulito
chiaro cosa stai cercando di esprimere qui
un altro penso che il punto importante sia quello
puoi semplicemente interrompere questo ovviamente così tu
tutti conoscono questi ambienti di programmazione
qualunque cosa e sono così utili perché
se inizi a scrivere scrivi il tuo
parametri costruttore e costruttore
prendere i campi finali che espanderà lo farà
aggiungi mezzo pezzo di codice al tuo
classe e non devi fare nulla
e capisco per quale motivo sono
farlo è per aiutarti ma alla fine
del giorno giusto finisci per ottenere
codice boilerplate generato e questo è
solo difficile da cambiare e refactoring
in seguito , meno codice ne hai
programma meglio questo nella mia mente
entro la ragione io sono un complicato
lingue in cui puoi esprimere solo
di tutto su una riga e forse no
l’ array me per un altro importante
la cosa è così e spesso quando scrivi
Codice Java ti ritrovi un po ‘
essere costretti a prepararsi per il
possibilità di aggiungere implementazioni a
un certo punto nel futuro, così tu hai
fondamentalmente non scrivere solo una classe
Definizione è necessario come è buona
è buona forma almeno per scrivere un
interfaccia una cosa separata e poi vai
avanti e implementare tale interfaccia con
una classe molte persone o la dimenticano
o semplicemente non ti piace e ottieni questo tipo di
duplicazione delle interfacce
anche per i casi semplici in cui
potrebbe non averne bisogno in futuro, ma tu
dobbiamo prepararci e in effetti noi
deciso che in realtà essere in grado di
tratta una classe come un’interfaccia in un certo senso
almeno permettendogli di avere un implicito
interfaccia che puoi andare avanti e
implementare è molto utile ciò significa che
in questo non devi preoccuparti
dividendo il punto in un cartesiano
punto e un punto di interfaccia dal
get-go
puoi andare avanti e aggiungere un altro
classe su un punto in questo caso è solo
implementa l’interfaccia di un calcestruzzo
punto di classe e qui mostra anche come
puoi quindi andare avanti e ed invece di
materializzando la X e la y e
proprietà come campi che puoi andare avanti
e calcolarli invece e tu ancora
implementare la stessa interfaccia quindi in a
Sento che questo rende più facile per a
per un programmatore per evitare di entrare
questo problema dove devono scrivere
troppe cose scrivono duplicate
interfacce e fine e quindi solo classi
prepararsi per ciò che potrebbe cambiare nel
futuro ha senso , probabilmente
tutto è stato forzato in una revisione del codice da aggiungere
più interfaccia con le tue cose e
per le cose semplici in realtà non aiuta
la leggibilità e di nuovo questo è un
un po ‘più grande sull’altro lato e
allora se dovessi digitare tutto il
roba che troveresti che non lo farebbero
essere in grado di leggerlo perché il carattere
il taglio dovrà essere così piccolo che ci sono
altre cose che sono più lividi
tecnico nella sua natura che è solo un
un po ‘meglio in Dart
e così sul lato destro so come
molti di voi hanno familiarità con una specie di
gli idiomi che sono associati con
mescolando tipi di raccolta in più
tipi di array primitivi in Java uno
il problema che hanno in Java è quello
il vero tipo degli elementi
in un tipo di raccolta come un insieme di
stringa non è reificata in fase di runtime quindi
il sistema in realtà non lo sa
avere un set di stringhe semplicemente sa che è
un set in modo che sia davvero un sistema di aiuto
tu quando vuoi estrarne uno in questo
caso una matrice primitiva di stringhe da a
insieme di stringhe devi dirlo
passando in quella schiera primitiva voi
vuoi essere compilato altrimenti i tipi
non combaciano davvero e non puoi ottenere
il giusto tipo di runtime fuori dal sistema
nel senso che abbiamo deciso di reificare ma
è materializzato il tipo di runtime
informazioni che devi essere in grado di
fai questo senza richiedere un utente a
passare dentro
ma di ciò che vuole esplicitamente
ovunque qui basta lasciare il set di
le stringhe sanno che in realtà contiene
stringhe e consentire un metodo come elencare
su quella stringa per restituire il giusto tipo
di lista di stringhe non è solo un
lista casuale e che aiuta davvero a entrare
in termini di rendere molto più facile
esprimere queste cose, senza dover
scrivere codice soggetto ad errori che finisce
guardando un po ‘strano voglio dire io
pensa che la gente arrivi a Java da
sfondi diversi lo troverebbero
questo array s2 una nuova stringa una cosa di dimensioni
un po ‘complicato e strano in termini di
quello che cerca di esprimere lo sento mordere
almeno voglio solo aggiungere che in Java
c’è una ragione per cui non hanno
quello perché non potevano cambiare il
Specifiche JVM al momento dell’introduzione
generici e quindi hanno dovuto fare un rapporto
di quello sai tipi quindi gli unici dati
digitare in Java che ha generici è un
cancellare primitivo perché loro hanno
tipi reificati sì, ce ne sono altri
le cose che stiamo disegnando sono state prese in mano
buone caratteristiche da altre lingue e
implicandoli in un nuovo contesto qui
funziona abbastanza bene, abbiamo una nozione
di chiamate in cascata molto spesso almeno in
certi tipi di codice che si finisce per chiamare
molti metodi diversi sullo stesso
oggetto come il trucco di solito è quello di
getta quel vestito in un nuovo locale
variabile e poi basta ripetere tutto
ma le chiacchiere erano piuttosto belle
soluzione a ciò che consente di inviare
più messaggi attraverso lo stesso
oggetto senza doverlo fare e e
abbiamo sorta di clonato che e inserirla nel
sintassi a e C e reso possibile
in questo caso, in realtà, chiama uno due tre
quattro cinque metodi sul contesto della tela
oggetto e senza doversi materializzare
che in a sai in un nuovo locale
variabile qui intendo la differenza se
in realtà sei andato avanti e hai messo il contesto
in una variabile locale o non saremmo
quello grande ma noi troviamo quella gente
scrivi un codice migliore e puoi rimanere dentro
cos’è un tipo di espressione
contesto non devi essere a posto
dove puoi scrivere affermazioni da fare
questo lavoro e rende il codice un po ‘
più semplice e lo penso incapsulare
qual è l’intento qui è anche meglio di
in realtà tirando fuori il contesto
in una variabile locale ce ne sono altri
luoghi in cui questo funziona davvero bene
bene e questo è dove um dove tu
inizializza gli oggetti e subito desidera
fare qualcosa per loro così dentro in piccolo
parlare questo è un idioma molto comune con
una svolta nel parlare breve il the
valutazione di un insieme di un insieme di
messaggi a gara intera valutati fino all’ultimo
espressione valutata qui e abbiamo
decisi nel dubbio che non era così
davvero necessario che abbiamo sempre voluto
l’operazione complessiva qui da valutare
all’oggetto originale che stai invocando
questi messaggi su così il codice per
creare un piccolo set iniziale qui potrebbe
facilmente guardare qualcosa del genere è a
metodo che restituisce un set e sul
sul lato destro ci vedete creare un
impostare e subito aggiungendo un singolo
elemento ad esso prima di restituirlo
funziona abbastanza bene nella pratica e vediamo
un sacco di persone che usano queste cose per
solo scrivere un codice leggermente migliore così
una sorta di persone incoraggianti da non avere
inventare nomi per tutto il
espressioni che vogliono riutilizzare
questo contesto quindi è un modo di fare
le cose più concise ha senso
sei fantastico così solo per riassumere la Cascadia
le cose forse non hanno visto questi
le cose prima di destra ma permettono
tu come programmatore per avere a
concatenamento di metodi su qualsiasi tipo di
oggetto con un ID diverso con un set di
messaggio senza avere l’ API
preparato per quello e in Java vediamo a
molte persone scrivono questo tipo di
stile fluente o metodo concatenato
api è dove restituiscono sempre il
oggetto o invocazione per poter ordinare
di e basta avere una catena di metodi
invocazioni ma che sembra un po ‘
un po ‘scoraggiante quando si guarda l’API
Penso perché l’ API esatta è sempre
tornato in ufficio è solo per
prepararsi per qualcosa dove qualcuno che
vuole utilizzare l’API come necessità
questo e in fila sembra strano
perché ho fatto questi metodi restituendo questo
tutto il tempo quindi non devi farlo
quello in punto e come ho detto il
le espressioni restituiscono sempre il destinatario
oggetto quello che invochi nei metodi
e di sicuro è ispirato da
chiacchiere ci sono un sacco di cose dentro
quello che c’è ispirato per gli altri
lingue e penso che sia il
questo è il modo migliore di farlo
costruire linguaggi utili pragmatici
e le persone in genere trovano questo è il nostro
sperimentare che è facile
prendere un linguaggio come quello perché
mi sembra molto familiare quindi solo un altro io
voglio solo aggiungere un’altra cosa qui
prima di tutto spero che tu veda un tema qui
se vuoi usare il metodo concatenare
Java l’implementazione prima del tempo
deve essere pianificato per questo
tutto deve restituire questo così possiamo
fai il metodo di concatenamento in che puoi
anche tu puoi usare dal lato del cliente
qualsiasi interfaccia è esattamente la stessa di
con il punto polare in cui puoi usare
qualsiasi classe come un’interfaccia che non hai
pre-pianificare per fare una lezione extra
mentre come in Java devi farlo
quindi crediamo davvero che la creazione
quadri per un caso d’uso non è un
buona idea nel software conosco molte persone
così, ma è una pessima idea
perché non sai come il secondo a
il cliente userà quell’interfaccia così
nella mia mente è meglio avere un
linguaggio di programmazione che lo rende
flessibile e quando un secondo utente è
entrando voglio usare quell’interfaccia
possono usarlo in qualsiasi modo scelgano
per ora torniamo ad Eric, così è
un Maya era solito fare Microsoft a
aggiunto il supporto sincrono in c-sharp
da quasi tutte le lingue del mondo
ora e ho intenzione di passare attraverso un piccolo
spione come abbiamo fatto in quello così io
assumere tutti voi ragazzi che avete
programmato in JavaScript si tenta di
bloccare il thread dell’interfaccia utente e quindi tutto
va all’inferno a volte anche il browser
tempo fuori e ferma tutto il web
pagina ed è davvero molto fastidioso
Java hai più thread così tu
può sempre girare un altro thread
lavorare su di esso che non è possibile
se si esegue all’interno del browser per
istanza in modo che il browser imponga a
esecuzione a thread singolo e il grande
il problema qui è come ti occupi di IO
senza uccidere la reattività perché
se leggi qualcosa sulla rete
non si sa quando torneranno
molte persone nel tempo l’hanno detto
multi-threading è una soluzione ma
anche questo non è un problema anche questo è
non la soluzione perché spesso quando tu
crea una nuova discussione in una programmazione
linguaggio che lo lega a una minaccia nativa
e ci sono discussioni limitate che puoi
allocare così in Java se si assegna molto
iniziano più di 10.000 thread
uccidere la macchina su cui stai correndo se
è digitale quindi qual è la soluzione
perché il codice che vuoi avere è
un po ‘a destra questo è semplificato
IO code legge qualcosa e scrive
questo e quello possono essere errori che vuoi
gestiscilo con una clausola di cattura e quando
hai finito con il tutto tu
vuoi chiudere i flussi che hai
lavorato su così molto semplice così nel
browser siamo senza avere reali
supporto per la programmazione asincrona
la soluzione semplice è come se avessi usato OS 9
Sul Mac molti molti anni fa si mette
giù una richiamata così quando l’I / O
operazione completata che verrà chiamata
e poi sai che l’operazione di I / O
è terminato
così in loro ecco alcune pseudocodice che
in grado di gestirlo e quello che fai sei tu
fai un’operazione di lettura che puoi
passare la chiusura e quella chiusura
sarà chiamato con quello che è stato letto quando
è successo e quindi puoi fare qualunque cosa
vogliamo con questo in questo caso dillo
voglio scriverlo in qualche posto il
i contenuti vedono e poi anche tu passi
un gestore di errori che è un callback se
qualcosa va storto sarà chiamato
si prega di notare che non gestiamo il gestore
finalmente perché poi questo diventa
completamente illeggibile e questo è il
file di caso più semplice assoluto uno letto uno
bene immagina se la tua logica è in ordine
questo poi diventa completamente
illeggibile
persone così intelligenti hanno escogitato
le astrazioni hanno chiamato il futuro per farlo
meglio e un futuro è solo un idiota
oggetto che può contenere una chiusura e
l’idea del futuro è quella quando a
il futuro si completa chiamerai il negozio
chiusura sul futuro e poi anche tu
avere alcune routine di libreria su un futuro
che ti aiuterà a organizzare il tuo codice
questo caso qui puoi effettivamente gestire
la clausola finale che è sulla destra
e puoi vedere che hai un Katz poi
errore e quando completato rende il
codice più leggibile
specialmente quando hai sequenziale a
codice come faccio a leggere e faccio una scrittura
se hai qualche tipo di loop
andare avanti diventa molto complicato
perché devi replicare tutto il
costrutti linguistici in libreria per il
futuro in modo da ottenere questa dualità in
il sistema che è difficile da gestire
quindi per quelli di voi erano più familiari
con questo JavaScript penso solo
prometti quando diciamo futuro e lo sarai
bene stesso problema stesso affare chiamiamo il
prometto che prometto di farlo nel
futuro buono, quindi Sarang Maya se n’è andato
Microsoft quindi l’abbiamo assunto come
consulente per assicurarsi che il nostro
le librerie erano in linea con una nuova a
design sincrono così siamo venuti su o lui
si avvicinò principalmente con una nuova parola chiave per
la nostra lingua ha chiamato una sincronizzazione che puoi inserire
su metodi abbiamo già librerie
che hanno flussi e futuro così che si adattano
davvero bene nel sistema la soluzione
è ispirato al c-sharp ma ora dicono
ce l’hanno ovunque in entrambi i casi così
questo è principalmente per un posto che probabilmente
conosci tutto questo ma se lo presenti
la parola chiave Essen puoi tornare e
prendi un codice che è quasi leggibile
si prega di notare che il codice sulla destra
sembra il codice a sinistra ora noi
ora sono tornato a provare i gatti e
finalmente sì abbiamo qualche spolverata attende
intorno a loro diranno che in realtà può essere
sospendere a questo punto nel tempo ma il
la logica nel programma viene ripristinata
le scene sono tutte terribili perché tu hai
terminare un’attivazione a metà volo
e quindi devi riattivarlo di nuovo
quando un certo futuro spara, quindi abbiamo un
compilatore che compila un metodo in a
macchina di stato in cui i locali nel
l’attivazione è stata migrata in un heap
rappresentazione e così ogni volta che tu
continuare dopo un’attesa sarà fondamentalmente
riprendere quell’attivazione d’altra parte
ottieni codice leggibile e facciamo il
chiama che è meglio averlo
codice leggibile piuttosto che complicato
implementazione dietro le quinte quindi
questo è vantaggi e svantaggi sarà una sincronizzazione in attesa
i pro sono evidenti ho parlato di loro
ripristinare il normale flusso di controllo del
l’applicazione è super importante perché
allora puoi effettivamente mantenere il codice
hai persino provato e finalmente
clausole e quindi puoi fare incrementale
una migrazione di codice si può prendere uno
metodo alla volta e convertirlo da a
metodo richiami e futures su ae
un metodo di sincronizzazione e penso che sia davvero
bello quindi solo il processo di combinazione
cambia in base a un metodo se ne hai
la s e la parola chiave sul lato negativo
proprio tu ottieni questa dualità tra s e
codice e codice di sincronizzazione ed è come Const
in C ++ sembra diffondersi ma quello è
una sorta di svantaggio di esso ha di più
lati positivi che lati negativi
un problema è ovviamente quello stack
le tracce scompaiono perché ogni volta che si
stai aggiungendo un punto di peso che ti rilassi
completare lo stack e poi quando si spara
il prossimo futuro si ristabilire che
attivazione il debug questo non è
intuitivo
specialmente quando il sistema è di un ragazzo
ti dice che se entrassi in un
metodo asincrono ci sono comunque due risultati
la gente ama questo e quindi sono contento di averlo messo
in e grazie a Eric per questo così noi
esegui alcuni esempi qui in questo
presentazione Spero che tu hai convinto
quello di avere semplice e avere un semplice
e il programma coerente è importante
per farvi capire come funziona il programma
Esegue Ho passato troppi anni a
chiacchiere e mi piace davvero tanto
c’è un uno-a-uno corrispondenza
tra ciò che vedi nel codice sorgente
e uno che hai mangiato o cosa hai acuto
quando esegui il tuo programma che io parto
fuori la roba asincrona um ma quello è
importante quindi ora parleremo un po ‘
sul framework che è anche
importante renderlo semplice e
comprensibile per farti una migliore
programmatore
Kasbah quindi il nome del framework
supereremo questo sì, alcuni di
te lo farò comunque
e va bene si chiama flutter e
ti daremo solo un breve
panoramica di questo, ma io sono in metallo gonna
con alcune macchine qui in realtà
mostra una demo di questa roba in esecuzione
per davvero, ne ho intenzione di passare a pochi
le cose qui così così farò dopo i Lars
fai un po ‘di parlare qui mentre io
iniziare a sudare e spostare le macchine
intorno quindi credo che si possa ottenere aa
prima assaggio mentre comincio a lavorare
su questo tutto bene, quindi abbiamo bisogno di un congelamento
il segnale del frame qui e poi possiamo
Prenderò questo Wow grazie così abbiamo
un nuovo progetto di Google chiamato flora
è inondazione open source che IO e
questi sono tutti su come rendere mobile
sviluppo più veloce così oggi quando tu
devi fare un’app mobile che hai prima
per farlo per iOS o per Android e poi
fare un’app simile dall’altra parte così
uno dei punti principali della Florida è
che puoi scrivere questo come codice sorgente
in una volta chiunque su tutti questi dispositivi
e caspere tassato basso o demone tua
non la macchina sta ancora costruendo così tu
devi stallo un po ‘ ma più
parte interessante di questo quadro qui
è tutto scritto in questo e iniziano
fuori come un prodotto dal cromo
ragazzi e loro volevano fare qualcosa
è semplice rispetto al browser, quindi loro
iniziare a creare un modello Dom semplificato e
di fronte a quello e cerca di essere il
anche la struttura in cima a quella
complicato quindi lo hanno estratto e
sostituire avere più codice dardo e loro
alla fine finisce per essere solo loro
avere un’API grafica di basso livello in C ++
il resto è implementato in Dart and the
il punto è in questo progetto ecco quello
quando esegui il debugger tutto il codice
non è così puoi vedere cosa sta succedendo
e questo è – un grosso contrasto con la maggior parte
dei sistemi che vengono implementati
loro hanno una demo sono pronto ora
possiamo passare a HDMI live
è che siamo in grande lasciami iniziare
qui c’è un flutter basato
piccola sorta di app galleria che mostra
alcune delle cose che possono svolazzare
fai e come Laura ha detto quasi tutto
qui è riportato scritto in punto e e
in questo momento sto correndo qui
su questo piccolo dispositivo su iPod e
Devo solo mostrarvi alcune delle
le cose sono consapevoli che il frame rate tu
vedere qui probabilmente non combacia
quello che vedo qui, così le cose che sembrano
davvero carino da lui potrebbe sembrare un po ‘
schifoso per voi ragazzi, ma dovrebbe venire
qui dopo e ti mostrerò il
veri dispositivi live così sul mio dispositivo
qui questo è super liscio e tu hai
fidarsi di me su questo appena ok 60 fotogrammi
al secondo facilmente questo funziona davvero bene
e mostra una grande cornice di animazioni
tariffe e
anche i frame rate costanti sono tutti
alimentato da quello e e il flutter
quadro e voglio dire che questo è un equo
cosa semplice ma molto di questo tipo di
più sistemi gestiti di alto livello
ci hanno difficoltà a fornire questi
frame rate molto coerenti e il
l’area della sessione in cui abbiamo finito sta facendo
davvero molto bene, così mi permetta di tornare a
qualcosa che potrebbe sembrare un po ‘
meglio anche sullo schermo qui
e sceglierne uno da flessibile a uno
la cosa qui qui è un’altra parte di questo
sorta di app galleria che mostra alcuni di
le transizioni che ti aspetteresti
da fare tutte le moderne app mobili
lavorando in questo quadro così tutto
ha un bel liquido e si sente di nuovo
come i frame rate sono davvero belli
qui ma puoi vedere che ce ne sono alcuni
attenzione ai dettagli e lo
sembra davvero una vera app nativa
e il fatto è che questo non è solo
corri sull’iPod qui se vieni
quassù e posso mostrartelo
un altro dispositivo mi consente di farlo semplicemente
su di loro si ottiene una sensazione per questo
in realtà è reale ma qui è il
stessa cosa in esecuzione su un telefono Android
stesso codice base stesso sistema e funziona
davvero bene lì e cioè
un grande motivo per cui questo funziona e
naturalmente l’altro motivo è questi viene
la qualità di implementazione del del
flutter di framework quindi quello che hai
qui quello che vedi è fondamentalmente a
separare un telefono o in questo caso a
iPod in esecuzione un’applicazione nativa costruito con una
flutter ulteriormente stack e dallo stesso
base di codice Penso che questo sia il genere di cosa
che abbiamo bisogno di rendere le persone molto più
produttivo e in termini di consegna
app attraverso almeno le due principali
e un cellulare e piattaforme se vuoi
aggiungere se vuoi mostrare che dovresti
davvero passare da lì in poi e
formare una linea e vi mostrerò tutti Do you
come tutto funziona nella pratica è
molto più bello non sono collegati
qui vedremo quante persone possiamo
arrivare a vedere te stesso una volta riutilizzare oh
sì proviamo fuori
tutto bene sì tutto bene quindi questo è il
panoramica dell’architettura di sventolare ah molto
meglio così puoi vedere che è un livello
approccio in basso hai il dardo
VM skia che è la libreria grafica
usato in chrome hai qualcosa chiamato
mojo che è solo un guscio di isolamento
intorno ad esso e poi hai un flusso
Indiano per il testo, il resto è scritto in
quello che è veramente bello lo adorano
perché possono tutto il necessario per eseguire il debug
è in un linguaggio di programmazione che conosci
quando costruisci un grande sistema e tu
usa diversi componenti potrebbe essere
JavaScript angolare e HTML c’è
sempre un gioco di colpa quando si tratta di
le prestazioni come queste sono i ragazzi
non sta facendo cose del genere
e non finisce mai la cosa bella
su questo è se c’è una performance
problema possiamo sistemarlo nel dardo
VM per ottenere un buon framerate
e per il sistema di flutter che abbiamo
effettivamente fatto un sacco di ingegneria in
il dardo VM con in anticipo
compilazione abbiamo fatto storie dinamiche
di dinamica per generare il codice su
Android quindi se il sistema sottostante
lo uccide e lo riavvia. Puoi usare il
codice che è già compilato e quindi questo
è abbastanza adatto per il
lunghezze del programma dardo e quella VM
cosa dovresti notare perché non lo abbiamo fatto
questo in JavaScript sì va bene si dovrebbe
prova a pre compilare JavaScript e vieni
di nuovo a me allora perché è quasi
impossibile
gli sviluppatori potrebbero essere così dinamici che non puoi
un mod pre-compilato quindi è fantastico
dovrei andare a dare un’occhiata alla mia casa in Florida
pagina e provalo la prossima pagina per favore
ecco una applicazione di esempio
dal codice di esempio da da flora è
un rack per framework e il modo in cui
funziona è quello e puoi vedere un
incrementare se qualcuno ha chiamato incrementi
uno stato impostato sarà chiamato la chiusura
e lo stato sicuro renderanno solo il
sistema sporco e il sistema sottostante
chiamerà la fattura costruire e creare
un nuovo albero dell’interfaccia utente e quindi dare solo un grande
mostra cosa è necessario per l’aggiornamento
questo è un modo molto moderno di fare l’interfaccia utente
randagio ed è molto pulito, quindi siamo molto
entusiasta di inviare questa casa presto come
un SDK e non abbiamo nemmeno una citazione per
da un amico Googler lo adorano
in questo momento, che è buono, spero che lo faranno
continua così il programma M ha l’obiettivo di rotolare
la mossa o domina tutti e poi io
credo davvero in questo ed è una specie di
tornare ai vecchi tempi in cui si doveva
elenca macchine tutte in lista o piccole
parlare di sistemi tutti in chiacchiere ma
in realtà è qualcosa per te tu
diventare un programmatore molto più efficiente
perché quando devi attraversare il
confine tra una lingua n e
un altro c’è sempre quello che è successo
per dire nella parte di interfaccia e tu
devo cambiare il modello mentale questo è
in realtà molto pulito un esempio su questo
se inizi con angolare e HTML
in realtà molto complicato da capire
dove va il tempo e chi ha iniziato
che codice è molto buono quindi lasciami dare
un aggiornamento su come dove si trova la freccetta
nel 2016
grazie probabilmente tutti a conoscenza del
fatto che il 2016 almeno una buona fetta di
è l’anno del selfie e dardo è
in realtà sta andando piuttosto bene in quest’anno
quindi devo solo darti un aggiornamento
come lo vediamo usato oggi e c’è un
molte proprietà interne di Google
lo sto usando voglio solo farti sapere
Ho alcuni dettagli su queste cose così
Google Fiber per quelli di voi diciamo
abbastanza fortunato da essere in una zona dove tu
può ottenere quello ed effettivamente usando il dardo
per alcune cose pesanti per l’interfaccia utente
stanno costruendo
e sono molto contenti con
i benefici che ottengono anche da
che forse è il nostro più grande
il cliente che abbiamo internamente è il
Team AdWords che sta riscrivendo il
tutto il prodotto AdWords che è molto
prodotto importante per Google in Dart
e questo funziona dai browser
attraverso i dispositivi mobili e ed è
in realtà viene lanciato più o
meno mentre parliamo questa nuova versione
di tutto costruito nel luppolo, quindi stiamo vedendo
F assorbe davvero molto sano
la tecnologia e e siamo davvero
spedendo questi grandi web molto critici
applicazioni costruite in dardo e ce ne sono molte
di persone che scrivono il codice dardo e il
motivo per cui noi vediamo questi interni
le squadre che si muovono a dart è che possono
effettivamente vedere che sono altamente
produttivo come si scala verso l’alto e
lì e uno dei nostri amici lì
lavorare su AdWords Josie ed è stato gentile
abbastanza da fornire una piccola testimonianza
per qui ma penso che il nucleo sia un costo
la cosa qui è davvero quella che è veramente
in uso abbastanza pesante probabilmente più di
l’interno dell’azienda che fuori
ma immagino parte di una parte di me e del
La ragione per cui anche noi siamo qui è solo per
ti faccio sapere di dove stiamo andando con
questa tecnologia così puoi pensare
bene che ti va bene così
in realtà funziona in modo molto diverso
luoghi solo per rendere molto chiaro dove
funziona e scorre nei browser
un processo di traduzione di JavaScript e
Funziona anche su dispositivi mobili e tu in qualche modo
ho visto una demo e dovresti assolutamente
vieni qui e vedilo per davvero
ma là realmente funziona sopra un
dardo VM ottimizzato e che ci dà un po ‘
frame rate davvero belli e alcuni buoni
anche le proprietà di debugging vengono eseguite
servizio pure lo usiamo per un sacco di
cose diverse ma il tipo di
le ultime cose che abbiamo anche in qualche modo
avventurarsi in è un piano per
in realtà gestisco queste cose molto
i dispositivi più piccoli IOT è probabilmente il più
famosa parola d’ ordine per queste cose e io
piace pensare ad esso come incorporato invece
e Meli’s vogliamo correre a dart su small
microcontrollori e ed è in realtà
lavorano molto bene per noi, certamente
lavori in corso non è ancora un prodotto
e ma abbiamo pensato di correre davvero
bene su piccola corteccia basata e
microcontrollori e scala questo
non è affatto come un dispositivo di fascia bassa
è una specie di fascia alta del basso
Alla fine potresti dire piccoli dispositivi a 32 bit
microcontrollori con forse circa 100
128 kilobyte di RAM e una buona parte di
flash e questo è dove inizia
diventando interessante avendo gestito
linguaggio che funziona davvero bene
quello spazio e questo ti dà un po ‘di
i benefici e la produttività
benefici in particolare e che vediamo
per come desktop e mobile su questi
piccoli dispositivi è una cosa molto potente
non siamo i primi ad averlo provato
è stato fatto in passato cosa loro
probabilmente alcune altre storie da condividere
con te e ma sembra il
il mercato adesso è in termini di hardware
capacità è davvero arrivare lì
e la differenza di prezzo tra
un chip che può eseguire un alto livello
un linguaggio simile a quello e un altro
non può davvero ridursi davvero
drammaticamente in questi giorni così ci si sente
questo è in realtà una buona misura per
quella cosa che è davvero importante
per sottolineare qui è e lo spazio incorporato
è uno spazio molto interessante
pile di software chiuse che non è possibile
davvero ottenere l’ accesso a meno che non si paga a
premio molto alto è ancora come
gli sviluppatori fanno licenze ed è molto
modello per la vecchia scuola per cui stiamo andando
un inebriante l’approccio più moderno con un
open source sorta di alternativa a
quei sistemi e anche se alcuni
la gente lo trova così
cambiamento interessante penso che sia
è molto importante che noi otteniamo molto
più aperto e molto più accessibile
impila là fuori che le persone possono davvero
usare è un tentativo è certamente
migliorare anche il software per embedded
dispositivi in generale, quindi penso che lo siamo
avvicinarsi alla fine sì, ora
sembra bello iniziamo presto oh, vedo
va bene, proviamo a concludere
prima che abbiamo domande così crediamo
lo abbiamo fatto dopo aver trascorso 25 anni a fare le VM
abbiamo creato una nuova linea di programma
e pensiamo di aver imparato dal passato
pensiamo che sia leggibile ed è conciso
e penso che dovresti provarlo se tu
non hanno
e abbiamo sentito da altri progetti I
mi piace
che è bello e lo abbiamo già
diverse milioni di righe di codice
con me è come goo goo e il bene
La cosa importante è che significa questo
non è un colpo di fortuna e un papà sarà
in giro per molto tempo quindi ci si abitua
così
così abbiamo creato il Casper e l’ho creato
quello e penso che noi almeno abbiamo
un tentativo di fare qualcosa di più
conciso e quindi va bene
e speriamo che piaccia anche a te, quindi andiamo
alle domande ne abbiamo
domande da parte del pubblico
qui se non ho una buona lista qui di a
domanda che tutti voi un po ‘come il
le domande giuste sono davvero buone
per favore prendi un microfono se vuoi chiedere
domande su VM o lingue oh I
non ho una domanda su quello mi dispiace
volevo fare una breve domanda su
fluttuano anche se potrei probabilmente
guarda questo mi chiedo solo cosa
supporto corrente è per l’API nativa è
come l’interfaccia con Bluetooth
accelerometro, ecc. ecc., quindi il flutter
le app sono app native così loro e loro
avere accesso a tutti gli stessi nativi
funzionalità come qualsiasi altra app nativa e
e c’è un po ‘ di tubature che
devi fare per renderlo disponibile in
che ma è certamente possibile
accedere a qualsiasi cosa dal sottostante
sistema da in così fondamentalmente avendo
interrompe con Java su Android e un
Obiettivo C e Swift lì su iOS
bene questo è dove diventa complicato
perché non vuoi usare troppo
codice specifico della piattaforma perché quindi
non funziona su entrambi, quindi devi farlo
sicuro che quando fai e come il
interfaccia della bussola per quello che vuoi
per assicurarsi di utilizzare la stessa API
e prima dell’implementazione, quindi le persone
può usufruire di un’API comune su on
i due sistemi ma questo è l’intento
intento in realtà ho una domanda per
tu qui Lars e non è per me come
bene ma dice che v8 è molto
impressionante ti senti in colpa per
infliggendo il peggio di tutto il mondo
linguaggio doloroso sul pianeta non l’ho fatto
fare questo in su
l’ultima parte di quella domanda che sono stato
detto di non dire dalla mia stessa bocca
perché questo ha problemi mentali ma
hai sì ho una scusa qui perché
quando abbiamo iniziato su v8 nel 2006 lo è stato
per la maggior parte erano usati giroscopi
descrivendo un’azione quando spingi il
pulsante è stato molto semplice
il browser concorrente farebbe un pieno
garbage collection per ogni 1000 oggetti
allocazioni quindi lo stile raccomandato di
programmazione era di fare uno strumento ottico per
tutta la tua app quindi è stato piuttosto penoso
e mi rammarico che non sono loro
come infliggere dolore e non si sa mai
come verrà usato un sistema penso che sia
incredibile quello che le persone possono fare con loro
script oggi dato il fatto che le persone
stanno facendo pre-processori o trans piloti
su JavaScript lo rende sopportabile
a molte grandi organizzazioni per usarlo
e c’è una ragione per cui l’ho fatto
che quando abbiamo esaminato il
specifica di JavaScript che abbiamo ottenuto
inorridito e hai visto alcuni esempi in
il discorso penso che la maggior parte delle persone no
Capisco loro la corsa Minaccia di
javascript e questo ti rende un cattivo
programmatore se lo capisci
semantica core dei linguaggi di programmazione
usando te diventerai migliore e lo farai
fidati del sistema sottostante, quindi penso
abbiamo imparato la nostra lezione è la risposta
il prossimo penso che sia abbastanza buono
rispondi così la mia domanda è una specie di
estensione di ciò che ha chiesto così a
quadro come usi ionici Cordova a
traduci il codice nel nativo
la piattaforma fa freccette usa qualcosa di simile
per farlo se è come un involucro
quadro come Cordova o PhoneGap a
in realtà traduce il codice in
e notificato delle piattaforme mobili per il
quadro di flutter non c’è alcun tipo di
processo di traduzione coinvolto lì e
quindi è fondamentalmente e ce ne sono alcuni
il lavoro fatto da esso per lo più il battito
squadra a questo punto per esporre queste API
in a in a in una piattaforma per lo più specifica
modo ma e per evitare semplicemente la carta sopra
dettagli importanti in questa cosa e ma
il non c’è alcun tipo di mira un regolare
modo di farlo in un in generale
modo in questo momento quindi, ma uno dei
cose importanti da realizzare è che il
lo stack di flutter ti consente di fare ciò
cose te stesso, ma se ci sono
api hai davvero bisogno di collegarti ad esso
certamente fattibile e okay possiamo prendere
uno in più dal da qui credo
credo che il padre era un dattiloscritto che è
divertente punto contro pensieri dattiloscritti
Beh, penso che sia abbastanza facile
sì molti pensieri si penso punto
e dattiloscritto sicuramente si sta provando
risolvere alcuni degli stessi problemi ma loro
abbiamo molto diversi approcci
a questo e penso che se ti immergerai
i dettagli in molti modi sono stretti
ancora JavaScript con alcuni molto molto
belle caratteristiche aggiuntive che rende
utensili molto meglio e lo rende
possibile almeno una parte della tua app
avere una sorta di molto meglio
capire cosa sta succedendo a
runtimes attraverso il tipo statico
annotazioni a riguardo Dada zia
in realtà sono molto simili ma se tu
immergiti nei dettagli ce ne sono molti
anche le differenze e si potrebbe dire
quel punto è un po ‘più ambizioso
giusto volevamo sistemare cose come no
e ti sto dando dei problemi strani quando
si tenta di leggere una sorta di fuori di
limiti da un array che effettivamente diamo
un errore corretto quando lo fai
non succede a dattiloscritto e lì
sono molti altri dettagli in cui il
coercizione implicita di valore che hai risolto
prima accade proprio come dovrebbero in
interattivo perché basato su
JavaScript in freccetta effettivamente verifichiamo
queste cose per essere sicuro che tu non lo sia
bruciato da quello in fase di esecuzione ci sono a
molti posti dove abbiamo solo in qualche modo
ha preso il forse il più difficile
approccio di cercare di risolvere questi
problemi fondamentali e ti proteggono bene
chiunque qui voglia usarlo
almeno da alcuni di questi problemi a
runtime Penso che chiaramente ci sia
sovrapposizione nello spazio tecnologico qui
ma meno personalmente trovo che ci sia
anche molte differenze che solo
diventa molto visibile se si guarda davvero
nei dettagli qui l’unica cosa
Voglio menzionare che i tipi potrebbero
in realtà un linguaggio interessante e se
si programma solo a dattiloscritto lo farà
ti aiutano a diventare un programmatore migliore
ma puoi cadere in JavaScript
in qualsiasi punto nel tempo e poi se ne è
sciolto, ma significa che è possibile
puoi manipolare il modello sottostante
rimuovere le proprietà e whatnot cambiato
prototipi al volo e poi il
garanzie di tipi non valgono quindi io
pensa se tieni dentro l’area di
dattiloscritto puoi effettivamente avere un
sistema abbastanza decente in quanto non è possibile
irrompere in ebreo ma non c’è
parte non sicura di ciò e se ciò è importante
a te quindi penso che sia un a
opzione migliore e poi funziona
fuori dal browser sì, come è il
le prestazioni rispetto alla JVM sono buone
domanda quindi la domanda è come è il
le prestazioni dei punti sul dardo VM confrontate
alla JVM dipende da che è diverso
i sistemi di gaya là fuori il mio preferito
è il punto caldo ma il e questo penso sia
ancora il più veloce spero che sia così
è la stessa velocità o anche più veloce quando
arriva ad inlining di astrazioni e così
su c’è una grande differenza tra buio
e entierro su un livello fondamentale in
che in Java hai i tipi base in
codici byte di Java che hai specificato
se è un in o un doppio o roba del genere
così non abbiamo che nel dardo e
certo che una maggiore flessibilità può costare
così se fai la moltiplicazione della matrice
dire che si deve legare tutti i
tipi di implementazione a una certa cosa
questo sarà più lento
ma per il normale programmatore di applicazione lo è
altrettanto veloce o addirittura più veloce a volte
e abbiamo deciso quando lo abbiamo fatto e questo
è di nuovo mi è stato infastidito scrivendo C e
C ++ quando sovraccarico un intero lo farà
silenziosamente ottieni il numero sbagliato come
che cosa è in che mondo viviamo
quindi in quanto abbiamo tutto anche noi
due grandi nomi quando lo si usa così
dovrebbe essere quello di preservare l’interno
la semantica quando canti è solo io
non posso credere a molti programmatori
non farlo nemmeno e ce l’hai
in realtà è meraviglioso che non ha
interi da lasciare sì, penso prima
abbiamo un’altra domanda che voglio prendere
dal pubblico sì dal
la prospettiva lato cliente che dici ha no
connessioni a JavaScript, quindi qual è il
supporto del browser in termini di diverso
dispositivi e quindi forse si chiarisce il
risposta e quindi c’è sicuramente un
modo per il punto di chiamare in
JavaScript non puoi mescolare
non in un metodo di punti
trovare bit e pezzi di Java così fluttuanti
circa in là
quindi c’è una divisione molto più chiara tra
i percorsi dei punti e le parti JavaScript
ma hai ragione in termini di scrittura a
software che viene eseguito in un browser che ti serve
accesso a Java esistenti alcuni
la funzionalità è una cosa ma anche
solo tutta l’API del browser deve essere
esposto al nome in esso e loro sono
le migliori librerie disponibili a proposito
il browser ma non puoi prendere un
jerska blob di terze parti e immergersi in
il tuo programma di punti e e e basta usare
perché c’è una mancata corrispondenza di impedenza
tra il linguaggio di programmazione dardo
e il linguaggio del programma JavaScript così
devi fare un po ‘di interfaccia, penso
Penso sia così
sì, grazie mille per esserti presentato
tu

Please follow and like us: