
quindi sono il io sono il team leader in a
type-safe o guido il team di Skog
lì prima ero all’epfl dove scala
è nato, ma quasi dieci anni di lavoro
su scala puoi biasimarmi per alcuni di
la complessità ha danneggiato il tipo
costruttori roba il tipo più alto di
roba e ricerca implicita dipendenti
tipi di metodo abbiamo scritto il modello
matcher e poi sono arrivato al lato oscuro
o due blu il lato blu scuro a
type-safe così bene forse dirò solo
un’altra cosa riguardo al tipo salva
tutto ciò che facciamo è scritto in Scala e
quindi Scala è molto importante per entrambi
emotivamente e meno di un’azienda
prospettiva ci vediamo discali
stewards come lo sai la scala benigna
steward, stiamo sicuramente cercando di
aprire e lavorare con tutti coloro che
vuole contribuire vuole sapere cosa c’è
in corso e quindi è per questo che ti sto dicendo
su tutti i nostri piani segreti e questo discorso
e con quello ha detto tutto tutto il nostro
altri prodotti sono progettati in modo che essi
funziona bene con Java e questo è un grande
focus anche per Scala 212 è quello che vogliamo
essere un grande cittadino in Java
piattaforma in particolare non su Java 8 voi
sappiamo che possiamo fare qualcosa di funzionale un po ‘
meglio e parlando di apertura non possiamo
fare questo da solo erano quattro persone typesafe
molti più collaboratori là fuori che
noi quattro ci sentiamo facilmente sopraffatti
cercando di rivedere tutto ciò che è
andando avanti così è quello che è stato
molto incoraggiante a vedere e Weavin stato
investendo dalla nostra parte per renderlo più facile
contribuire così semplificando il processo
investendo in infrastrutture che gestiscono il nostro
nega su ec2 tutte quelle cose noiose
che posso fare e anche cose come
modularizzando quindi girando più cose
che era nel nostro monolitico
libreria standard che è ora in corso
gestito da persone della comunità
tagliano i rilasci si uniscono pull
chiede che decidano la direzione e
è qualcosa che ha funzionato
bene nel 211 quella era la pelliccia
la prima volta che lo abbiamo fatto davvero
e intendiamo continuare a farlo così
per darti un’idea di come il
commit pi è diviso in circa un quarto
proviene da persone che non sono ad Epfl o a
type-safe è un aumento di tre volte
oltre a 10 quindi penso che i nostri sforzi siano
premiato lì e siamo molto felici di
vedi che la crescita epfl fa molto
la ricerca cuce il college come per esempio
è un progetto EPFL che contribuiamo ad esso
ma noi non lo possediamo, lo adoriamo
pensiamo che sia molto eccitante ma la maggior parte di
il lavoro è stato fatto in epfl per
esempio, ecco perché lo affettano
up I è un po ‘più piccolo anche per Scala
stanno anche lavorando su dotty e così via
e così l’altra metà è il tipo
salva squadra ci uniamo circa 50 pull
richieste al mese da circa 40 o
42 a seconda di come ti piace girare
le cose in 10 quindi è tutto molto
incoraggiante e ecco la top 10 lista
dei contributori secondo breve
accedi e conosci le loro statistiche di commit così
siamo molto contenti di vederlo e
grazie, in realtà non lo so
tutti quelli che non sarei sicuro di riconoscere
tutti voi così se siete nella stanza o
nella conferenza, per favore, per favore vieni
e ti comprerò un appropriato
la bevanda più di tutto sai che ti spero
divertiti a programmare in Scala prima e
per tutti e contribuire ad esso pure
e fammi sapere che il mio comando su Twitter lo farà
essere qui un punto su come possiamo fare
è più facile, quindi c’è sicuramente
qualcosa a cui pensiamo molto
ma oggi parlerò di più del
roadmap e come potrebbero i tuoi contributi
adattarsi lì uomo quindi lascia che ti dia un
rapida panoramica della prossima coppia di
rilasciano stanno arrivando così uno dei
i temi per noi dal momento che siamo noi vogliamo
per trovare l’equilibrio tra lo spostamento
abbastanza velocemente da poter aggiungere eccitazione
caratteristiche e correggere i bug e anche non rompere
spezza il codice della gente tutto il tempo
prima che mi unissi al tipo sicuro e in epif noi
pensavo che fosse divertente
abbiamo deciso di alternare compilatore e
la biblioteca rilascia così in 12 non lo siamo
cambiando molto sulla libreria che siamo
aggiungendo la deprecazione e così via in modo che il
scena è impostata per la prossima versione a
rimuovere le cose ma tra queste due 11
e 2 12 migrazioni sarà per lo più
aggiustando il compilatore cambiando la schiena
finisci in questo caso e quindi non dovresti
doversi preoccupare troppo del cambiamento
i tuoi programmi tranne quello che eri
sfruttando qualche bug strano e implicito
ricerca o qualcosa del genere così per 2
12 la maggior parte delle cose sta accadendo nel
back-end un po ‘di Java 8 interoperabilità ha
per accadere al correttore di tipi e questo è
su cosa stavo lavorando ma ci andrò
in molti più dettagli che durante questo
parliamo anche che stiamo finalmente emergendo
Il lavoro di miguela Garcia lo stiamo pulendo
e Lucas Ritz sta facendo quel lavoro
fare una produzione pronta così che siamo
in pratica sostituendo il vecchio ottimizzatore
interamente da una nuova su cui si basa
ASM e avremo molto di più
prevedibile nel rivestimento che è grande
dei progetti su cui vorrei lavorare
il tempo permettendo è quello che è nostro
strumento di sfilacciamento che si inserirà nel
compilatore e conosce semanticamente esattamente
cosa sta succedendo e puoi darti
avvertimenti molto precisi tipo di come cosa
Matt stava parlando di prima
anche se non sono lucido
è qualcosa che ci piacerebbe davvero
fare e così come ho detto preparare per il
prossima versione quindi è troppo lontano nel
futuro per dare davvero un appuntamento o addirittura
un numero di versione anche se sei bravo
in matematica, probabilmente a indovinare che sta andando a
essere 2 13 per lo più che sarà circa
pulendo la libreria standard che abbiamo
accumulato un sacco di cose su Skiles
10 anni ora vogliamo invitare di più
persone dalla comunità per avere il loro
moduli come parte del funzionario
distribuzione di spin out alcune cose che
non abbiamo funzionato molto bene, scriviamo
la biblioteca di raccolta e così via così
dal momento che siamo all’incirca su un ciclo di 18 mesi
e ci vogliono circa sei mesi per farlo
passare come la prima coppia
le versioni di una nuova versione ci aspettano
circa un anno dopo 2 12 30 sì e
chiunque usi solo macro e Scala
chiedendo wow sei il mio preferito
pubblico di sempre
sì, non usare i macro che stanno per
cambiare molto è tutto ciò che ho da dire
sulle macro dopo che ce ne stiamo andando
ho un’altra importante versione che io
prevedere sarà suddiviso in atti uno
sarà di nuovo un accurato refactoring e
probabilmente un grosso sostituto del retro
fine basato sulla ricerca che è
fatto un DPF LA ora pronto per
avere un paio di idee interessanti su
rendendolo molto più veloce
mantenibile e nella prima fase
manterrebbe il front-end in modo che tu possa
compila ancora lo stesso codice che usiamo
applichiamo un diverso ritorno in esso che possiamo
paragonare al bytecode, voglio dire che ci stiamo compilando
oltre un milione di righe di codice ogni notte
dalla comunità per essere sicuri di non farlo
regredire e quando passiamo a un nuovo
architettura come quella che sicuramente faremo
Esamineremo il bytecode e siamo
cercando tutti i tipi di ingegneria
meccanismi per assicurarsi che questo tipo
di transizione sarà una liscia così
che va anche a rispettare e
strumenti di refactoring che possono aiutarti a ottenere
liberarsi di alcune delle sintassi deprecate
che potresti usare tutto questo per dire
non tireremo su da tre così
don giovanni atto 2 sarà un front-end
rielaborare è quello il più eccitante
è in questo momento circa dotty direi
dove c’è molta della sintassi furbo
andare via basi più semplici al
livello di tipo e andrew e nirman sono
andando a finire gli affari con i loro
libri di puzzle mi dispiace per quello o al
Almeno questo è il nostro obiettivo, quindi è un po ‘
la panoramica per i prossimi cinque anni
indovina approssimativamente o nei prossimi 40 minuti
a seconda della tua prospettiva, quindi cosa
abbiamo lavorato abbastanza intensamente
già sebbene non ci sia molto codice
Atterrato in 212 è il supporto per Java 8 e lo farò
ti dico perché non è atterrato nel 212 in
un secondo voglio dire che c’è un abbiamo scritto a
post sul blog con tutti i dettagli ma
Ti dirò un po ‘di più ora e perché
ecco perché sei qui credo di si
riguardo alla cronologia che stiamo ottenendo
chiudi quindi mi sto stressando un po ‘
su
e 211 e 212 saranno molto vicini
allineato di nuovo perché ci importa molto
di persone che si aggiornano rapidamente da a
10 22 11 a 12 sicuramente vedendo quello
miglioramento della tendenza non so se qualcuno
mai aggiornato la propria base di codice 28-29
o 9 22 10 basi di codice che era molto
di dolore e non succederà mai
di nuovo la maggior parte delle persone ha riferito come 211
non era un problema come un upgrade e
speriamo e da quattro a dodici sarà
la stessa cosa soprattutto perché se
sei bloccato su Java 6 sarai bloccato
il 211 significa che saremo bloccati
mantenendo 211 un po ‘più a lungo così
vogliamo avere tutte le cose buone che sono
entrare in 12 quando possibile anche a
nel 211 e immagino che sia logico
conseguenza per quello è che un sacco di
il lavoro che stavamo facendo usando
invoca la dinamica per compilare lambdas
già andato in 11 sotto una bandiera e
lo stesso codice verrà eseguito per impostazione predefinita in
212 e che probabilmente quella bandiera sarà
capovolto in m2 quando richiediamo Java 8 per
il 212 ramo di sviluppo e questo ha
è sempre stata la nostra filosofia e penso
ha funzionato molto bene per Scilla
è che ogni volta che conosci Java Sea lo fa
qualcosa di paragonabile a quello che vogliamo
fai perché non omettiamo lo stesso
bytecode e cavalca le prestazioni del jet
onda e sì ovviamente un sacco di profitto
per typesafe sono quindi i metodi predefiniti
un’altra grande aggiunta a Java 8
per noi e quindi ci stiamo lavorando su questo
in questo momento prototipazione che così tu
può effettivamente utilizzare una funzione scala fine
che non è stato progettato per essere compatibile
con ciò che java 8 ora richiede di questi
cose per rielaborare quelle in modo che a
bytecode hanno esattamente lo stesso aspetto e
questo è uno dei grandi obiettivi commerciali
per il tipo sicuro è che anche se tutti
programma in Scala che dobbiamo avere
eccellente Java 8 API e penso che lo facciamo
e questo è un modo in cui lo faremo
più facile per tutti così anche per il binario
Compatibilità
ovviamente quello era uno dei motivi
perché sono stati aggiunti i metodi predefiniti
interfacce che il lato Java proverà a
godere di alcuni di questi benefici di
compilando i nostri tratti alle interfacce dove
possibile non sempre possibile, così sarebbe
probabilmente è un tipo di cosa opt-in
stiamo ancora delineando il progetto per
questo quindi l’altro lato della medaglia
interrompi l’interoperabilità bene con java
e godendo il loro funzionale
Il Rinascimento è quello di farti chiamare java api
è facilmente da Scala e io vi mostrerò
come è possibile dalla reppresentazione
in un secondo non abbastanza coraggioso da correre
queste cose vivono così sto solo andando
sto per mostrarti una coppia
trascrizioni ma sì che funziona
davvero bene ed è per lo più un tipo
cosa di correttore che affitterò un po ‘
più tardi sul perché è più complicato
di quanto dovrebbe essere e sono sicuro che Matt
non lo prenderò personalmente quando mi lamento
sulle carte selvatiche scusa, sì, è così
Emotivo, ricevo su quella roba oh sì
e potremmo eventualmente anche compilare
chiama a singoli tipi di metodi astratti a
invoca le dinamiche quindi ti mostrerò un po ‘
codice e come si compila anche in
caso non hai familiarità con questi
cose in cui hai imparato durante i colloqui
questo ha introdotto queste cose
mattina quindi Java 8 sa ha java.util
flusso e si può relativamente facilmente
costruire un array e trasformarlo in a
flusso così i commenti qui è cosa
tu scrivi in Java 8 e questo è quello che io
ha scritto in scala rapel e tu sai che è
fondamentalmente la stessa cosa che abbiamo
sintassi leggermente migliore per il molto
schema comune dove sei tu
introdurre un raccoglitore Lambda solo per
immediatamente scaricato così usiamo solo
la nostra magia sottolineatura per il fatto che funzioni
bene in casi semplici come questo io
in generale non raccomanderei l’uso
sottolineatura ovunque tu potenzialmente
potrei, ma penso che in questo caso si legge
un po ‘ più bene che significa anche
non abbiamo bisogno di
proprio come la sintassi del colon del colon
il Java 8 aggiunto sembra più simile al C ++
ogni giorno, altrimenti sai che sono io
Devo solo far scorrere per darti un
idea di alto livello che tu sia
puoi scrivere Java 8 o Scala puoi farlo
l’interfaccia con la loro epi è esattamente
allo stesso modo ci sono un paio di ostacoli
ancora che ho bisogno di capire perché
l’inferenza di tipo con caratteri jolly funziona molto
diversamente in Java e Scala e lo farò
parlarne un po ‘più tardi ma
Sì, voglio dire qui in questo momento voglio solo
per darti l’idea che abbiamo un
rapel in questo momento java 9 ne avrà uno
probabilmente e qualunque codice tu possa scrivere
in Java 8 22 si utilizza Java 8 API
è completamente semplice da trasportare
IT sopra anche quelli più complicati in modo
quello è questo un lato dell’interop
e quindi nel caso ti stia chiedendo come
funziona questo è ciò che il Java C
il compilatore fa e questo è ora ciò che noi
fallo anche se scrivi questa chiamata
qui sopra dove dici stream of e a
mazzo argomenti dot filter e poi tu
passare in quella chiusura qui ciò che realmente
compila verso il basso è bene questo filtro
chiamata ha bisogno di un predicato che è ciò che il
il compilatore può facilmente consultare
trovare la firma per il filtro fir e
sa che questo tipo di predicato ha
un metodo astratto dice ma ho bisogno di a
predicato con e tutto ciò che ho è un
funzione di un pozzo che posso facilmente fare a
nuovo predicato e posso implementarlo
solo il metodo astratto chiamato test di
invocando quella chiusura che ho
comodamente sollevato in un separato
metodo, quindi presumo che quelle cose non vadano
significa che è troppo semplice o lo è
è troppo complicato, ti piace forse?
come se aprissi davvero gli occhi
non è chiaro riesco a vedere tutti quasi
la parte posteriore è di dimensioni regolari
gli alunni vanno bene, quindi è carino
semplice trasformare il suo inganno in realtà
dietro le quinte per capire tutto il
digitare per
è la risoluzione e il tipo di sovraccarico
fallo allo stesso modo di Java ma nostro
l’obiettivo è di fornire fondamentalmente lo stesso
esperienza che hai in Java e
è una specie di cosa generale
per la prima scala quando java ha fatto bene
già perché perché lo facciamo e così a
molte persone confrontano Java 8 a scala
e dire non sei come se avessi paura
per cui tutti correranno
per le colline o non so cosa
la metafora giusta per Java è ma io
piace pensare agli studiosi des Alpes e
quelle sono le montagne più belle così
qualunque sia la collina che abbiamo, abbiamo le Alpi
questo è il punto in cui sapevi che lo era
progettato puoi vedere le alpi dal
ufficio non so ancora come la gente ottiene
lavoro svolto lì una vista così bella
comunque, prima di affittare, dovrebbero
probabilmente proprio come smettere di parlare
cose casuali parliamo un po ‘
su cosa per me programmazione funzionale
è in Scala intendo ce ne sono molte
diverse interpretazioni di funzionale
programmando siamo un gruppo molto pragmatico
ma dirò che funzionale
la programmazione non è solo uno schiaffo
lambda su una lingua che è fantastica
iniziare è fantastico per noi averlo
supporto in VM penso che sia grande per
Design API, ma è un piccolo
percentuale di ciò che effettivamente significa
programma funzionalmente e non pretendo
che so che mi piace quella saggezza
per dire esattamente la programmazione funzionale
probabilmente non significa molto diverso
cose a un sacco di persone diverse ma
posso dirti cosa significa per me
personalmente e sono un po ‘in linea con
cosa facciamo in scala per poterlo fare
che come lo farai per me, si tratta di
definire la composizione e la comprensione
piccole unità di astrazione sopra note
serie di tipi così e solo una tangente laterale
qui come l’ intero manifesto reattivo
la cosa riguarda cose come questa
hai eventi hai piccoli pezzi di
comportamento che si desidera ridimensionare fuori e
così via e le funzioni sono una grande partita
per quello e in un certo senso è sempre
complimenti e penso che sia quello
una delle cose chiave che dice scala
hai bisogno di entrambi se tu
vuoi fare grandi astrazioni che ti aspetti
per aggiungere un nuovo comportamento mi dispiace aspettarsi di aggiungere
nuovi tipi quindi oh è un’ottima soluzione se
vuoi strutturare la tua applicazione
vuoi parlare di design che è
dove 0 è grande quando vuoi parlare
sulle piccole cose e vuoi davvero
la ragione su di loro è lì
la programmazione funzionale arriva e io
Ho appena fatto una rapida lista di pallottole
e per me come immutabile prima ha molto
di conseguenze come in Scala scrivi
una valvola per natura non lo sei mai
scrivere un lontano voglio dire che io sceglierò come
il più brutto colore contrastante con
lo sfondo in modo da poter entrambi
non vederlo a seconda di come si sente
o sembra davvero orribile e così tu
non scriveteli ma va molto
più lontano di così, perché puoi farlo
che in Java, naturalmente, puoi semplicemente schiaffeggiarti
un po ‘più di parole chiave su e sarà a
vile ma devi schiaffare più parole chiave
su devi pensarci
espressioni contro dichiarazioni è un’altra
importante distinzione tutto è un
espressione tutto è il valore
avere una dichiarazione ti incoraggia a
muta le cose o causa l’altro lato
effetti così avendo questo design
tutto è un’espressione è carina
cosa fondamentale per lasciare le persone
pensa prima immutabile e la ricorsione è
simile perché quando scrivi a
loop fai-da-te, come faresti a capire
quando hai bisogno di fermarti ed è una specie di
sai che questo è dove eri dove
vai al bar e discuti perché
con la ricorsione stai semplicemente mutando
impila i fotogrammi ma questo è il tipo di dove
inizi a parlare mentre sei persistente
strutture di dati contro te conosci la matrice
aggiornamenti e per me arriva davvero
fino alla parola centrale nel titolo
capire il tuo codice come sapere
cosa fa e come un piacevole effetto collaterale
è anche scalabile meglio è spesso
più performante e dal momento che assumiamo per
il tipo di problemi che applichiamo fp2
che sappiamo quali sono i diversi tipi
è che abbiamo bisogno di ragionare sul modello
l’abbinamento è qualcosa che viene fuori
naturalmente anche dopo che l’hai fatto
costruito è necessario decostruire
e sì, ti aiuta a capirlo
ti aiuta a prevedere l’output di a
funzione basata sull’analisi del caso del
input che è davvero come molto spesso
pensa sia in matematica che nella vita reale
tipo di pensare con esempi e tu
vedi quei casi sai qual è il cosa
l’output sarà metodi locali
è un’altra piccola cosa, ma in realtà
aiuta davvero a refactoring il tuo codice come
una volta che inizi a pensare, oh, tutto è
un’espressione che inizi a scrivere
espressioni che sai di aver bisogno di tre
schermi da leggere e poi qualcuno dice
beh, non posso recensire questo non posso
capisci bene questo solo te
introdotto un paio di metodi locali se
non si dispone di quelli è necessario come
introdurre alcuni metodi privati e loro
potrebbe davvero essere spostato
da qualche altra parte ancora così tutte queste cose
davvero in forma e non puoi
ho appena Lambda e mi aspetto di
magicamente essere programmato funzionalmente
probabilmente da quando ho iniziato un minuto in ritardo
non dovrei correre troppo, ma penso
l’altro tipo di punti per cui parlare
loro stessi sono una parte molto importante
ma li vuoi fuori di modo tuo
non farlo se tu potessi dedurre il tuo IDE
i tuoi tipi per loro e mettili nel
codice ma poi quando ti rifattorichi di cui hai bisogno
per riportarlo fuori e Riaan più lontano
semplicemente non scala in questo modo
avere una buona e buona inferenza così
diamo un esempio del perché penso selvaggio
le carte sono orribili e perché è stato
redento e netto è quello naturale
cosa che vuoi essere vero per il tuo
l’astrazione della funzione è quella quando tu
avere un flusso di stringhe e hai
questa funzione che può prendere qualsiasi cosa
voglio essere in grado di trasmetterlo a qualcosa
quello trasforma quel flusso ma a meno che io
dì al sistema di tipo Java Java che in realtà
è così che si comporta la mia funzione in questo
caso per mappa non puoi farlo tu e tu
devi farlo per ogni volta che usi
funzione perché è la tua varianza laterale
anche se questa è una proprietà
definisce cosa una funzione è una funzione
l’astrazione è qualcosa che va bene se io
richiedono questo, ma in realtà ho
qualcosa che pone meno restrizioni su
il tipo di argomento è controverso
la cosa poi va bene, ecco cosa
scala e un c sharp e altri sani
le lingue fanno e e la firma del tipo
sai diventa molto più bello puoi andare
nella teoria e e e tipo di
riscrivi questo che puoi
è una delle cose con Scala
che puoi scrivere ti cita le varianti
può esprimerlo, ma perché dovresti e
questa è sicuramente una delle sfide
mentre stai imparando la scala è quando lo faccio io
usa la varianza quando usi esistenziale
e ha garantito che questa è una sfida ma
Penso che risale a quello di David
parlare pure è che conosci la semplicità
non significa necessariamente che sia facile
significa che devi capire che cosa
la tecnica di muratura è quella giusta
per questo per questo architettonico
sfida e scala ti offrono tutti
loro e potremmo darti più indicazioni
ma si sa che si può sempre assumere noi
prima consiglio se vuoi che non vada
nella teoria ma in fondo sai
tutto il lavoro che devi affrontare
assicurati che ovunque lo usi funzioni
si comporta come un simile si aspetterebbe un
la funzione di comportarsi è molto di più
prolisso in java e quindi è solo uno
esempio di dove penso il design di
la lingua deve venire da
dal basso verso l’alto deve essere funzionale da
basso verso l’alto e non solo come oh yeah abbiamo
ho questo ora è bello così mentre io
Penso che Java sia fantastico, sono fiducioso
le persone verranno in lingue come C
sharp F sharp Scala quando vogliono reali
programmazione funzionale così un po ‘
più avanti sulla linea andremo
nel mondo dell’opera e questo discorso è stato gentile
di scritto per persone che lo farebbero
interrompermi quindi penso di essere un po ‘come
prima del tempo e da quando siete stati tutti
così educato, forse l’ ho accumulato a
un sacco di domande per arrivare alla fine
qui Ida sarà la nostra libreria
rilascio e ci concentreremo su
rielaborazione della biblioteca di raccolta che
è una delle cose principali che prendiamo a
un sacco di flack per cui possiamo costruire da
lì la gerarchia è davvero
ben progettato ci sono un paio di
verruche lì ma è davvero progettato
dal punto di vista degli implementatori da evitare
riutilizzare il codice non è davvero facile
esteso se tu se non fossi nel
stanza quando è stata progettata e questo è male
Voglio dire che è brutto e questo è qualcosa
che noi
lavorare su e e vogliamo fondamentalmente
abbiamo già finalizzato molto
le classi in modo che non puoi
estendali perché anche se tu potessi
sarebbe piuttosto frustrante, quindi lo siamo
venire a patti con il dire bene forse
dovremmo comporre queste cose un po ‘
più che usare semplicemente l’ereditarietà
ovunque e uno dei motivi per cui
gerarchie overload è che noi cerchiamo di
slot in parallelo e sequenziale
collezioni nella stessa cosa anche
anche se sono fondamentalmente diversi
quindi lo tireremo fuori e
la stessa cosa per la pigrizia per le viste così
la maggior parte delle persone non ha davvero esperienza
questo e accetta se sono riusciti a
implementare le proprie estensioni di of
le astrazioni della collezione principale ma io
penso sia importante che lo risolviamo così
come ho detto quelli sono un paio di
moduli che stanno arrivando noi
vedo anche un sacco di gente che va agli scalzi
o biblioteca actix di gatto o teschio soprattutto per
validazione ed è un po ‘come a
soluzione di libreria per il ? per un null
abilità che vuoi comporre
accede a qualcosa che tu non
sapere se ci sarà o no ma
in realtà quando non è lì è
importante saperlo e tu lo vuoi
reificalo e vuoi presentare un
bel messaggio di errore al tuo al tuo
il tuo utente più tardi quindi un tipo di convalida di
prende quell’idea che è anche presidente
per le comprensioni e così via e lascia
vai su un albero con potenzialmente
buchi e e e raccogliere gli errori o
raccogli il tuo risultato positivo e così
è qualcosa che è naturalmente fatto
e cose come ha detto Scala, ma poi tu
usare Scala ha detto così probabilmente lo farà
trovare un modulo più bello per quello
ho detto che non intendevo parlare di macro
più Allied Sto solo andando a dirlo
ancora una volta non li uso, intendo
sono veramente grandi, voglio dire se tu se
sei disposto a pagare il prezzo è
davvero divertente è fondamentalmente un più bello
meccanismo per fornire i plugin del compilatore a
i tuoi utenti, ma questo è davvero il tuo modo
dovresti pensare a loro ce ne sono alcuni
implicazioni che c’è un’API per
i macro sono solo i compilatori
stai parlando direttamente al compilatore
non è stato registrato, te lo direi
più su di esso, ma come è arrivato ad essere
mi ha chiesto al bar e quindi sta andando a
cambia completamente e penso per il
meglio così se stai usando le citazioni di Kwazii
e macro a scatola ampia, ma no no bun era così
non preoccuparti, ma se lo fossi
usando le virgolette Kwazii e le macro della scatola bianca
Penso che sarai felice in futuro se
non stai andando a riscrivere
i tuoi macros okay così don giovanni is is
non a caso per dotty o at
almeno non ho inventato il nome ma
Ero immaginato che fosse per quello
come ho detto sarà un grande
rifrazione del compilatore del codice base
abbiamo circa 10 anni ci sentiamo come tanti
di saggezza ingegneristica e test di battaglia
è andato in modo non stiamo andando a
leggermente basta buttare tutto fuori e
sostituirlo ma ad un certo punto devi
portare alcuni componenti nel cortile di casa
e sai sostituirli e così è
cosa faremo ma lo sai
siamo in cinque anni fuori territorio ora così
una delle nostre ossessioni principali con questo
tutta la migrazione è che siamo terrorizzati
guardando cosa è successo a Python e io
penso che abbiamo molte buone proprietà
e Scala che non avremmo facilmente ottenuto
in quel tipo di territorio ma ogni volta
qualcosa cambierà sarà per a
buon motivo per l’utente non solo
perché abbiamo un’implementazione migliore
per esso sarà perché sarà
più semplice da capire o il tuo codice lo farà
essere più gentile per questo o forse sarà solo
compilare più velocemente ma questo è il tipo di dove
per quanto vorrei allungarlo solo a
teoria più bella o un’implementazione migliore
non è qualcosa che taglierebbe il raduno
per me dicendo che stiamo andando a cambiare
questo nella lingua sono molte persone
investito molto profondamente in Scala e noi
certamente non vorrebbe causare alcuno
mal di testa lì così una delle cose
anche se siamo tutti un po ‘universalmente
odio nella squadra, anche se la gente no
necessariamente d’accordo con noi è così
la sintassi della procedura è una specie di
abominio molto sulla Scozia X è
che è estremamente regolare
introduce sempre una definizione con a
tastiera un nome di parola chiave una firma e
quello facoltativamente un corpo se è a
procedura di definizione concreta imposta sin
rompe quello e quindi deve andare così
piccola specie di piccolo vantaggio
è molto confuso perché sembra molto
come un tipo di raffinatezza e quindi se tu
digito accidentalmente bene io non ho intenzione di
ti dico perché dovresti digitare ma se tu
digitare certe cose in là sarete
molto sorpreso dai risultati e con
la sintassi normale che non lo farebbe mai
capita come in qualche modo i letterali erano un
ottimo modo per riavere i soldi per la ricerca
il giorno non è più così caldo forse lo faremo
introdurre dei letterali di Jason o qualcosa del genere
non so se non sono così alla moda così io
non so cosa guadagna questi soldi
giorni per borse di studio penso che qualcuno possa dirlo
dopo di me le definizioni iniziali erano
un’altra cosa di cui avevamo bisogno nel
compilatore spero che nessuno li stia usando
stanno andando via, invece avremo un
molto più bella generalizzazione dell’aggiunta
parametri per i tratti che molto
le persone chiedono perché non riesci a scrivere il
stessa cosa che puoi fare bene in una classe
è in realtà difficile da implementare ma
beh lo capiremo, voglio dire, penso
ci stiamo avvicinando e questo è un po ‘
quello che ho fatto per tanto tempo quando ero in
accademici è è l’intero tipo intero
il sistema sta diventando una bella unificazione
dove digitare parametri e membri tecnici
usato per essere trattato separatamente anche
anche se sono davvero la stessa cosa e
possono modellare costruttori di tipi e
astrazione rispetto ai costruttori di tipi
può modellare in modo che fosse universale
quantificazione possono anche modellizzare
quantificazione esistenziale tipo di
soffia la tua mente che i membri del tipo possono
entrambi sono universalmente ed essenzialmente
quantificato non sono ancora arrivato davvero
a patti con quello ma possono e così
internamente non ci sarà alcun tipo
parametri e versioni future di
Scala voglio dire che li avrai nel
sintassi di superficie a cui faranno solo zucchero
digita membri e non cambierà davvero
tanto cambierà un po ‘
esiste in certi tipi di esistenziale
non può essere espresso ma la maggior parte di esso può
introdurrà anche tipi di Unione e
non sono i tipi di unione che tu
mi aspetterei se tu abbia programmato NM
ore o vedere o qualcosa del genere è
pensaci più come un lub pigro
e sai che dovrai fare un caso
il pungiglione non dovrebbe in fase di esecuzione su di loro
ma saranno molto limitati e
tipo di espresso in termini di serie di
membri e così via sono un po ‘diffidente nei confronti di
come andrà a finire nel
bytecode ma vedremo che è tutto in
cagnolino e sembra funzionare
quindi mi vedere un sacco di Voglio dire, se
erano nel discorso di Amanda che ha dato un
esempio di h liste intendo quelle cose
dammi solo degli incubi per essere artisti
da una prospettiva di implementazione
perché la ricerca implicita e intendo così io
era uno che ha detto l’ uomo quando ha chiesto cosa
hai pensato alla lista H così
originariamente abbiamo avuto inferenza di tipo e noi
aveva una ricerca implicita e poi eravamo
scrivendo un articolo e abbiamo pensato che sarebbe
essere una buona idea combinarli perché
ti consente di scrivere la tua raccolta di raccolte
molto più ordinatamente e così ho fatto un sacco di
quel lavoro e le persone sono impazzite con esso
e ora piace e metti la ricerca
fondamentalmente il prologo è come un prologo
motore di risoluzione che non è veramente
SPECT e non possiamo ottimizzarlo e
si interfaccia con l’inferenza di tipo in
modi molto interessanti e questo è come
le persone digitano la programmazione globale in
Scala in questi giorni e come onestamente II
vorrei averlo aggiunto o no
permettilo perché penso che sia un uomo
quello era azzeccato voglio dire che vogliamo davvero
programmazione a livello di tipo a guardare, proprio come
programmazione a livello di oggetto, se ce l’abbiamo
funzioni a livello di oggetto perché no
abbiamo funzioni del tipo livello I
significa la maggior parte delle cose e sono stato
guardando come usiamo in I’ve stato
guardando il nostro corpus di codice e utilizzo
di implicito e sono fondamentalmente tutti
funziona se T è int, quindi il bit si imposta se T
non è in quindi set di tè perché tu
devo scrivere un piccolo programma di prologo
per quello che il compilatore deve cercare
una ricerca gigantesca paga per questo
ogni contesto in cui vai è
fondamentalmente invalidato e ci siamo andati
un punto in cui dobbiamo inserirci così tanti
cache che le persone effettivamente contano
sul manufatto di attuazione di I warmed
fino alla fine del mio programma ora
questo implicito arriverà prima e
bene in quel modo che io
l’altro lato del mio tipo di programma spunta così
non è il tipo di semantica che tu
voglio al livello di tipo che è il motivo
cose come H less mi spaventa e quali
perché voglio dire che è un senso frustrante
che Scala ha una reputazione per questo
tipo di cose perché non ti penso
ho bisogno di questo non penso molte persone
in realtà scrivere questo tipo di codice e se
si scopre che molte persone avevano bisogno
aggiungeremo il supporto linguistico per questo
posso darti dei bei messaggi di errore e tu
sappi che questo non è un grande odio
tweets comunque abbastanza di ciò che ho parlato
un po ‘su come avremmo come
cambiamo la parte anteriore e quella posteriore
individualmente e una delle cose fondamentali
è gustoso che forse hai sentito
circa è il nostro tipo di nastro che sono
ottimo anche per compatibilità binaria ma
fondamentalmente è una lingua intermedia
per Scala che cattura tutto il
informazioni che abbiamo dopo il tipo
controllando quindi non siamo più legati al
Interpretazione delle piattaforme Java del membro
risoluzione e tu hai un molto più alto
vista a livello di valvole pigre e tratti e
metodi e il nostro modo di sovraccaricare
in modo che se la piattaforma cambia scusa
me possiamo solo ricompilare basato su
che ha digitato ast e sappiamo che il
la semantica non cambierà quindi pensateci come
un bytecode più ricco che puoi sul
vola ricompilare come tua API
cambiare in modo compatibile con la sorgente
risulta non compatibile binario
il martin di JVM ha dato più colloqui
su questo spiegando molto meglio
di quello che ho appena fatto ma è carino
interessante quindi ti incoraggio ad avere un
guardalo o chiedimi di questo durante
le domande ti ringraziano molto per il tuo
attenzione, so che è stata una lunga giornata
ma se hai qualche domanda felice
prendili ora o dopo, grazie
type-safe o guido il team di Skog
lì prima ero all’epfl dove scala
è nato, ma quasi dieci anni di lavoro
su scala puoi biasimarmi per alcuni di
la complessità ha danneggiato il tipo
costruttori roba il tipo più alto di
roba e ricerca implicita dipendenti
tipi di metodo abbiamo scritto il modello
matcher e poi sono arrivato al lato oscuro
o due blu il lato blu scuro a
type-safe così bene forse dirò solo
un’altra cosa riguardo al tipo salva
tutto ciò che facciamo è scritto in Scala e
quindi Scala è molto importante per entrambi
emotivamente e meno di un’azienda
prospettiva ci vediamo discali
stewards come lo sai la scala benigna
steward, stiamo sicuramente cercando di
aprire e lavorare con tutti coloro che
vuole contribuire vuole sapere cosa c’è
in corso e quindi è per questo che ti sto dicendo
su tutti i nostri piani segreti e questo discorso
e con quello ha detto tutto tutto il nostro
altri prodotti sono progettati in modo che essi
funziona bene con Java e questo è un grande
focus anche per Scala 212 è quello che vogliamo
essere un grande cittadino in Java
piattaforma in particolare non su Java 8 voi
sappiamo che possiamo fare qualcosa di funzionale un po ‘
meglio e parlando di apertura non possiamo
fare questo da solo erano quattro persone typesafe
molti più collaboratori là fuori che
noi quattro ci sentiamo facilmente sopraffatti
cercando di rivedere tutto ciò che è
andando avanti così è quello che è stato
molto incoraggiante a vedere e Weavin stato
investendo dalla nostra parte per renderlo più facile
contribuire così semplificando il processo
investendo in infrastrutture che gestiscono il nostro
nega su ec2 tutte quelle cose noiose
che posso fare e anche cose come
modularizzando quindi girando più cose
che era nel nostro monolitico
libreria standard che è ora in corso
gestito da persone della comunità
tagliano i rilasci si uniscono pull
chiede che decidano la direzione e
è qualcosa che ha funzionato
bene nel 211 quella era la pelliccia
la prima volta che lo abbiamo fatto davvero
e intendiamo continuare a farlo così
per darti un’idea di come il
commit pi è diviso in circa un quarto
proviene da persone che non sono ad Epfl o a
type-safe è un aumento di tre volte
oltre a 10 quindi penso che i nostri sforzi siano
premiato lì e siamo molto felici di
vedi che la crescita epfl fa molto
la ricerca cuce il college come per esempio
è un progetto EPFL che contribuiamo ad esso
ma noi non lo possediamo, lo adoriamo
pensiamo che sia molto eccitante ma la maggior parte di
il lavoro è stato fatto in epfl per
esempio, ecco perché lo affettano
up I è un po ‘più piccolo anche per Scala
stanno anche lavorando su dotty e così via
e così l’altra metà è il tipo
salva squadra ci uniamo circa 50 pull
richieste al mese da circa 40 o
42 a seconda di come ti piace girare
le cose in 10 quindi è tutto molto
incoraggiante e ecco la top 10 lista
dei contributori secondo breve
accedi e conosci le loro statistiche di commit così
siamo molto contenti di vederlo e
grazie, in realtà non lo so
tutti quelli che non sarei sicuro di riconoscere
tutti voi così se siete nella stanza o
nella conferenza, per favore, per favore vieni
e ti comprerò un appropriato
la bevanda più di tutto sai che ti spero
divertiti a programmare in Scala prima e
per tutti e contribuire ad esso pure
e fammi sapere che il mio comando su Twitter lo farà
essere qui un punto su come possiamo fare
è più facile, quindi c’è sicuramente
qualcosa a cui pensiamo molto
ma oggi parlerò di più del
roadmap e come potrebbero i tuoi contributi
adattarsi lì uomo quindi lascia che ti dia un
rapida panoramica della prossima coppia di
rilasciano stanno arrivando così uno dei
i temi per noi dal momento che siamo noi vogliamo
per trovare l’equilibrio tra lo spostamento
abbastanza velocemente da poter aggiungere eccitazione
caratteristiche e correggere i bug e anche non rompere
spezza il codice della gente tutto il tempo
prima che mi unissi al tipo sicuro e in epif noi
pensavo che fosse divertente
abbiamo deciso di alternare compilatore e
la biblioteca rilascia così in 12 non lo siamo
cambiando molto sulla libreria che siamo
aggiungendo la deprecazione e così via in modo che il
scena è impostata per la prossima versione a
rimuovere le cose ma tra queste due 11
e 2 12 migrazioni sarà per lo più
aggiustando il compilatore cambiando la schiena
finisci in questo caso e quindi non dovresti
doversi preoccupare troppo del cambiamento
i tuoi programmi tranne quello che eri
sfruttando qualche bug strano e implicito
ricerca o qualcosa del genere così per 2
12 la maggior parte delle cose sta accadendo nel
back-end un po ‘di Java 8 interoperabilità ha
per accadere al correttore di tipi e questo è
su cosa stavo lavorando ma ci andrò
in molti più dettagli che durante questo
parliamo anche che stiamo finalmente emergendo
Il lavoro di miguela Garcia lo stiamo pulendo
e Lucas Ritz sta facendo quel lavoro
fare una produzione pronta così che siamo
in pratica sostituendo il vecchio ottimizzatore
interamente da una nuova su cui si basa
ASM e avremo molto di più
prevedibile nel rivestimento che è grande
dei progetti su cui vorrei lavorare
il tempo permettendo è quello che è nostro
strumento di sfilacciamento che si inserirà nel
compilatore e conosce semanticamente esattamente
cosa sta succedendo e puoi darti
avvertimenti molto precisi tipo di come cosa
Matt stava parlando di prima
anche se non sono lucido
è qualcosa che ci piacerebbe davvero
fare e così come ho detto preparare per il
prossima versione quindi è troppo lontano nel
futuro per dare davvero un appuntamento o addirittura
un numero di versione anche se sei bravo
in matematica, probabilmente a indovinare che sta andando a
essere 2 13 per lo più che sarà circa
pulendo la libreria standard che abbiamo
accumulato un sacco di cose su Skiles
10 anni ora vogliamo invitare di più
persone dalla comunità per avere il loro
moduli come parte del funzionario
distribuzione di spin out alcune cose che
non abbiamo funzionato molto bene, scriviamo
la biblioteca di raccolta e così via così
dal momento che siamo all’incirca su un ciclo di 18 mesi
e ci vogliono circa sei mesi per farlo
passare come la prima coppia
le versioni di una nuova versione ci aspettano
circa un anno dopo 2 12 30 sì e
chiunque usi solo macro e Scala
chiedendo wow sei il mio preferito
pubblico di sempre
sì, non usare i macro che stanno per
cambiare molto è tutto ciò che ho da dire
sulle macro dopo che ce ne stiamo andando
ho un’altra importante versione che io
prevedere sarà suddiviso in atti uno
sarà di nuovo un accurato refactoring e
probabilmente un grosso sostituto del retro
fine basato sulla ricerca che è
fatto un DPF LA ora pronto per
avere un paio di idee interessanti su
rendendolo molto più veloce
mantenibile e nella prima fase
manterrebbe il front-end in modo che tu possa
compila ancora lo stesso codice che usiamo
applichiamo un diverso ritorno in esso che possiamo
paragonare al bytecode, voglio dire che ci stiamo compilando
oltre un milione di righe di codice ogni notte
dalla comunità per essere sicuri di non farlo
regredire e quando passiamo a un nuovo
architettura come quella che sicuramente faremo
Esamineremo il bytecode e siamo
cercando tutti i tipi di ingegneria
meccanismi per assicurarsi che questo tipo
di transizione sarà una liscia così
che va anche a rispettare e
strumenti di refactoring che possono aiutarti a ottenere
liberarsi di alcune delle sintassi deprecate
che potresti usare tutto questo per dire
non tireremo su da tre così
don giovanni atto 2 sarà un front-end
rielaborare è quello il più eccitante
è in questo momento circa dotty direi
dove c’è molta della sintassi furbo
andare via basi più semplici al
livello di tipo e andrew e nirman sono
andando a finire gli affari con i loro
libri di puzzle mi dispiace per quello o al
Almeno questo è il nostro obiettivo, quindi è un po ‘
la panoramica per i prossimi cinque anni
indovina approssimativamente o nei prossimi 40 minuti
a seconda della tua prospettiva, quindi cosa
abbiamo lavorato abbastanza intensamente
già sebbene non ci sia molto codice
Atterrato in 212 è il supporto per Java 8 e lo farò
ti dico perché non è atterrato nel 212 in
un secondo voglio dire che c’è un abbiamo scritto a
post sul blog con tutti i dettagli ma
Ti dirò un po ‘di più ora e perché
ecco perché sei qui credo di si
riguardo alla cronologia che stiamo ottenendo
chiudi quindi mi sto stressando un po ‘
su
e 211 e 212 saranno molto vicini
allineato di nuovo perché ci importa molto
di persone che si aggiornano rapidamente da a
10 22 11 a 12 sicuramente vedendo quello
miglioramento della tendenza non so se qualcuno
mai aggiornato la propria base di codice 28-29
o 9 22 10 basi di codice che era molto
di dolore e non succederà mai
di nuovo la maggior parte delle persone ha riferito come 211
non era un problema come un upgrade e
speriamo e da quattro a dodici sarà
la stessa cosa soprattutto perché se
sei bloccato su Java 6 sarai bloccato
il 211 significa che saremo bloccati
mantenendo 211 un po ‘più a lungo così
vogliamo avere tutte le cose buone che sono
entrare in 12 quando possibile anche a
nel 211 e immagino che sia logico
conseguenza per quello è che un sacco di
il lavoro che stavamo facendo usando
invoca la dinamica per compilare lambdas
già andato in 11 sotto una bandiera e
lo stesso codice verrà eseguito per impostazione predefinita in
212 e che probabilmente quella bandiera sarà
capovolto in m2 quando richiediamo Java 8 per
il 212 ramo di sviluppo e questo ha
è sempre stata la nostra filosofia e penso
ha funzionato molto bene per Scilla
è che ogni volta che conosci Java Sea lo fa
qualcosa di paragonabile a quello che vogliamo
fai perché non omettiamo lo stesso
bytecode e cavalca le prestazioni del jet
onda e sì ovviamente un sacco di profitto
per typesafe sono quindi i metodi predefiniti
un’altra grande aggiunta a Java 8
per noi e quindi ci stiamo lavorando su questo
in questo momento prototipazione che così tu
può effettivamente utilizzare una funzione scala fine
che non è stato progettato per essere compatibile
con ciò che java 8 ora richiede di questi
cose per rielaborare quelle in modo che a
bytecode hanno esattamente lo stesso aspetto e
questo è uno dei grandi obiettivi commerciali
per il tipo sicuro è che anche se tutti
programma in Scala che dobbiamo avere
eccellente Java 8 API e penso che lo facciamo
e questo è un modo in cui lo faremo
più facile per tutti così anche per il binario
Compatibilità
ovviamente quello era uno dei motivi
perché sono stati aggiunti i metodi predefiniti
interfacce che il lato Java proverà a
godere di alcuni di questi benefici di
compilando i nostri tratti alle interfacce dove
possibile non sempre possibile, così sarebbe
probabilmente è un tipo di cosa opt-in
stiamo ancora delineando il progetto per
questo quindi l’altro lato della medaglia
interrompi l’interoperabilità bene con java
e godendo il loro funzionale
Il Rinascimento è quello di farti chiamare java api
è facilmente da Scala e io vi mostrerò
come è possibile dalla reppresentazione
in un secondo non abbastanza coraggioso da correre
queste cose vivono così sto solo andando
sto per mostrarti una coppia
trascrizioni ma sì che funziona
davvero bene ed è per lo più un tipo
cosa di correttore che affitterò un po ‘
più tardi sul perché è più complicato
di quanto dovrebbe essere e sono sicuro che Matt
non lo prenderò personalmente quando mi lamento
sulle carte selvatiche scusa, sì, è così
Emotivo, ricevo su quella roba oh sì
e potremmo eventualmente anche compilare
chiama a singoli tipi di metodi astratti a
invoca le dinamiche quindi ti mostrerò un po ‘
codice e come si compila anche in
caso non hai familiarità con questi
cose in cui hai imparato durante i colloqui
questo ha introdotto queste cose
mattina quindi Java 8 sa ha java.util
flusso e si può relativamente facilmente
costruire un array e trasformarlo in a
flusso così i commenti qui è cosa
tu scrivi in Java 8 e questo è quello che io
ha scritto in scala rapel e tu sai che è
fondamentalmente la stessa cosa che abbiamo
sintassi leggermente migliore per il molto
schema comune dove sei tu
introdurre un raccoglitore Lambda solo per
immediatamente scaricato così usiamo solo
la nostra magia sottolineatura per il fatto che funzioni
bene in casi semplici come questo io
in generale non raccomanderei l’uso
sottolineatura ovunque tu potenzialmente
potrei, ma penso che in questo caso si legge
un po ‘ più bene che significa anche
non abbiamo bisogno di
proprio come la sintassi del colon del colon
il Java 8 aggiunto sembra più simile al C ++
ogni giorno, altrimenti sai che sono io
Devo solo far scorrere per darti un
idea di alto livello che tu sia
puoi scrivere Java 8 o Scala puoi farlo
l’interfaccia con la loro epi è esattamente
allo stesso modo ci sono un paio di ostacoli
ancora che ho bisogno di capire perché
l’inferenza di tipo con caratteri jolly funziona molto
diversamente in Java e Scala e lo farò
parlarne un po ‘più tardi ma
Sì, voglio dire qui in questo momento voglio solo
per darti l’idea che abbiamo un
rapel in questo momento java 9 ne avrà uno
probabilmente e qualunque codice tu possa scrivere
in Java 8 22 si utilizza Java 8 API
è completamente semplice da trasportare
IT sopra anche quelli più complicati in modo
quello è questo un lato dell’interop
e quindi nel caso ti stia chiedendo come
funziona questo è ciò che il Java C
il compilatore fa e questo è ora ciò che noi
fallo anche se scrivi questa chiamata
qui sopra dove dici stream of e a
mazzo argomenti dot filter e poi tu
passare in quella chiusura qui ciò che realmente
compila verso il basso è bene questo filtro
chiamata ha bisogno di un predicato che è ciò che il
il compilatore può facilmente consultare
trovare la firma per il filtro fir e
sa che questo tipo di predicato ha
un metodo astratto dice ma ho bisogno di a
predicato con e tutto ciò che ho è un
funzione di un pozzo che posso facilmente fare a
nuovo predicato e posso implementarlo
solo il metodo astratto chiamato test di
invocando quella chiusura che ho
comodamente sollevato in un separato
metodo, quindi presumo che quelle cose non vadano
significa che è troppo semplice o lo è
è troppo complicato, ti piace forse?
come se aprissi davvero gli occhi
non è chiaro riesco a vedere tutti quasi
la parte posteriore è di dimensioni regolari
gli alunni vanno bene, quindi è carino
semplice trasformare il suo inganno in realtà
dietro le quinte per capire tutto il
digitare per
è la risoluzione e il tipo di sovraccarico
fallo allo stesso modo di Java ma nostro
l’obiettivo è di fornire fondamentalmente lo stesso
esperienza che hai in Java e
è una specie di cosa generale
per la prima scala quando java ha fatto bene
già perché perché lo facciamo e così a
molte persone confrontano Java 8 a scala
e dire non sei come se avessi paura
per cui tutti correranno
per le colline o non so cosa
la metafora giusta per Java è ma io
piace pensare agli studiosi des Alpes e
quelle sono le montagne più belle così
qualunque sia la collina che abbiamo, abbiamo le Alpi
questo è il punto in cui sapevi che lo era
progettato puoi vedere le alpi dal
ufficio non so ancora come la gente ottiene
lavoro svolto lì una vista così bella
comunque, prima di affittare, dovrebbero
probabilmente proprio come smettere di parlare
cose casuali parliamo un po ‘
su cosa per me programmazione funzionale
è in Scala intendo ce ne sono molte
diverse interpretazioni di funzionale
programmando siamo un gruppo molto pragmatico
ma dirò che funzionale
la programmazione non è solo uno schiaffo
lambda su una lingua che è fantastica
iniziare è fantastico per noi averlo
supporto in VM penso che sia grande per
Design API, ma è un piccolo
percentuale di ciò che effettivamente significa
programma funzionalmente e non pretendo
che so che mi piace quella saggezza
per dire esattamente la programmazione funzionale
probabilmente non significa molto diverso
cose a un sacco di persone diverse ma
posso dirti cosa significa per me
personalmente e sono un po ‘in linea con
cosa facciamo in scala per poterlo fare
che come lo farai per me, si tratta di
definire la composizione e la comprensione
piccole unità di astrazione sopra note
serie di tipi così e solo una tangente laterale
qui come l’ intero manifesto reattivo
la cosa riguarda cose come questa
hai eventi hai piccoli pezzi di
comportamento che si desidera ridimensionare fuori e
così via e le funzioni sono una grande partita
per quello e in un certo senso è sempre
complimenti e penso che sia quello
una delle cose chiave che dice scala
hai bisogno di entrambi se tu
vuoi fare grandi astrazioni che ti aspetti
per aggiungere un nuovo comportamento mi dispiace aspettarsi di aggiungere
nuovi tipi quindi oh è un’ottima soluzione se
vuoi strutturare la tua applicazione
vuoi parlare di design che è
dove 0 è grande quando vuoi parlare
sulle piccole cose e vuoi davvero
la ragione su di loro è lì
la programmazione funzionale arriva e io
Ho appena fatto una rapida lista di pallottole
e per me come immutabile prima ha molto
di conseguenze come in Scala scrivi
una valvola per natura non lo sei mai
scrivere un lontano voglio dire che io sceglierò come
il più brutto colore contrastante con
lo sfondo in modo da poter entrambi
non vederlo a seconda di come si sente
o sembra davvero orribile e così tu
non scriveteli ma va molto
più lontano di così, perché puoi farlo
che in Java, naturalmente, puoi semplicemente schiaffeggiarti
un po ‘più di parole chiave su e sarà a
vile ma devi schiaffare più parole chiave
su devi pensarci
espressioni contro dichiarazioni è un’altra
importante distinzione tutto è un
espressione tutto è il valore
avere una dichiarazione ti incoraggia a
muta le cose o causa l’altro lato
effetti così avendo questo design
tutto è un’espressione è carina
cosa fondamentale per lasciare le persone
pensa prima immutabile e la ricorsione è
simile perché quando scrivi a
loop fai-da-te, come faresti a capire
quando hai bisogno di fermarti ed è una specie di
sai che questo è dove eri dove
vai al bar e discuti perché
con la ricorsione stai semplicemente mutando
impila i fotogrammi ma questo è il tipo di dove
inizi a parlare mentre sei persistente
strutture di dati contro te conosci la matrice
aggiornamenti e per me arriva davvero
fino alla parola centrale nel titolo
capire il tuo codice come sapere
cosa fa e come un piacevole effetto collaterale
è anche scalabile meglio è spesso
più performante e dal momento che assumiamo per
il tipo di problemi che applichiamo fp2
che sappiamo quali sono i diversi tipi
è che abbiamo bisogno di ragionare sul modello
l’abbinamento è qualcosa che viene fuori
naturalmente anche dopo che l’hai fatto
costruito è necessario decostruire
e sì, ti aiuta a capirlo
ti aiuta a prevedere l’output di a
funzione basata sull’analisi del caso del
input che è davvero come molto spesso
pensa sia in matematica che nella vita reale
tipo di pensare con esempi e tu
vedi quei casi sai qual è il cosa
l’output sarà metodi locali
è un’altra piccola cosa, ma in realtà
aiuta davvero a refactoring il tuo codice come
una volta che inizi a pensare, oh, tutto è
un’espressione che inizi a scrivere
espressioni che sai di aver bisogno di tre
schermi da leggere e poi qualcuno dice
beh, non posso recensire questo non posso
capisci bene questo solo te
introdotto un paio di metodi locali se
non si dispone di quelli è necessario come
introdurre alcuni metodi privati e loro
potrebbe davvero essere spostato
da qualche altra parte ancora così tutte queste cose
davvero in forma e non puoi
ho appena Lambda e mi aspetto di
magicamente essere programmato funzionalmente
probabilmente da quando ho iniziato un minuto in ritardo
non dovrei correre troppo, ma penso
l’altro tipo di punti per cui parlare
loro stessi sono una parte molto importante
ma li vuoi fuori di modo tuo
non farlo se tu potessi dedurre il tuo IDE
i tuoi tipi per loro e mettili nel
codice ma poi quando ti rifattorichi di cui hai bisogno
per riportarlo fuori e Riaan più lontano
semplicemente non scala in questo modo
avere una buona e buona inferenza così
diamo un esempio del perché penso selvaggio
le carte sono orribili e perché è stato
redento e netto è quello naturale
cosa che vuoi essere vero per il tuo
l’astrazione della funzione è quella quando tu
avere un flusso di stringhe e hai
questa funzione che può prendere qualsiasi cosa
voglio essere in grado di trasmetterlo a qualcosa
quello trasforma quel flusso ma a meno che io
dì al sistema di tipo Java Java che in realtà
è così che si comporta la mia funzione in questo
caso per mappa non puoi farlo tu e tu
devi farlo per ogni volta che usi
funzione perché è la tua varianza laterale
anche se questa è una proprietà
definisce cosa una funzione è una funzione
l’astrazione è qualcosa che va bene se io
richiedono questo, ma in realtà ho
qualcosa che pone meno restrizioni su
il tipo di argomento è controverso
la cosa poi va bene, ecco cosa
scala e un c sharp e altri sani
le lingue fanno e e la firma del tipo
sai diventa molto più bello puoi andare
nella teoria e e e tipo di
riscrivi questo che puoi
è una delle cose con Scala
che puoi scrivere ti cita le varianti
può esprimerlo, ma perché dovresti e
questa è sicuramente una delle sfide
mentre stai imparando la scala è quando lo faccio io
usa la varianza quando usi esistenziale
e ha garantito che questa è una sfida ma
Penso che risale a quello di David
parlare pure è che conosci la semplicità
non significa necessariamente che sia facile
significa che devi capire che cosa
la tecnica di muratura è quella giusta
per questo per questo architettonico
sfida e scala ti offrono tutti
loro e potremmo darti più indicazioni
ma si sa che si può sempre assumere noi
prima consiglio se vuoi che non vada
nella teoria ma in fondo sai
tutto il lavoro che devi affrontare
assicurati che ovunque lo usi funzioni
si comporta come un simile si aspetterebbe un
la funzione di comportarsi è molto di più
prolisso in java e quindi è solo uno
esempio di dove penso il design di
la lingua deve venire da
dal basso verso l’alto deve essere funzionale da
basso verso l’alto e non solo come oh yeah abbiamo
ho questo ora è bello così mentre io
Penso che Java sia fantastico, sono fiducioso
le persone verranno in lingue come C
sharp F sharp Scala quando vogliono reali
programmazione funzionale così un po ‘
più avanti sulla linea andremo
nel mondo dell’opera e questo discorso è stato gentile
di scritto per persone che lo farebbero
interrompermi quindi penso di essere un po ‘come
prima del tempo e da quando siete stati tutti
così educato, forse l’ ho accumulato a
un sacco di domande per arrivare alla fine
qui Ida sarà la nostra libreria
rilascio e ci concentreremo su
rielaborazione della biblioteca di raccolta che
è una delle cose principali che prendiamo a
un sacco di flack per cui possiamo costruire da
lì la gerarchia è davvero
ben progettato ci sono un paio di
verruche lì ma è davvero progettato
dal punto di vista degli implementatori da evitare
riutilizzare il codice non è davvero facile
esteso se tu se non fossi nel
stanza quando è stata progettata e questo è male
Voglio dire che è brutto e questo è qualcosa
che noi
lavorare su e e vogliamo fondamentalmente
abbiamo già finalizzato molto
le classi in modo che non puoi
estendali perché anche se tu potessi
sarebbe piuttosto frustrante, quindi lo siamo
venire a patti con il dire bene forse
dovremmo comporre queste cose un po ‘
più che usare semplicemente l’ereditarietà
ovunque e uno dei motivi per cui
gerarchie overload è che noi cerchiamo di
slot in parallelo e sequenziale
collezioni nella stessa cosa anche
anche se sono fondamentalmente diversi
quindi lo tireremo fuori e
la stessa cosa per la pigrizia per le viste così
la maggior parte delle persone non ha davvero esperienza
questo e accetta se sono riusciti a
implementare le proprie estensioni di of
le astrazioni della collezione principale ma io
penso sia importante che lo risolviamo così
come ho detto quelli sono un paio di
moduli che stanno arrivando noi
vedo anche un sacco di gente che va agli scalzi
o biblioteca actix di gatto o teschio soprattutto per
validazione ed è un po ‘come a
soluzione di libreria per il ? per un null
abilità che vuoi comporre
accede a qualcosa che tu non
sapere se ci sarà o no ma
in realtà quando non è lì è
importante saperlo e tu lo vuoi
reificalo e vuoi presentare un
bel messaggio di errore al tuo al tuo
il tuo utente più tardi quindi un tipo di convalida di
prende quell’idea che è anche presidente
per le comprensioni e così via e lascia
vai su un albero con potenzialmente
buchi e e e raccogliere gli errori o
raccogli il tuo risultato positivo e così
è qualcosa che è naturalmente fatto
e cose come ha detto Scala, ma poi tu
usare Scala ha detto così probabilmente lo farà
trovare un modulo più bello per quello
ho detto che non intendevo parlare di macro
più Allied Sto solo andando a dirlo
ancora una volta non li uso, intendo
sono veramente grandi, voglio dire se tu se
sei disposto a pagare il prezzo è
davvero divertente è fondamentalmente un più bello
meccanismo per fornire i plugin del compilatore a
i tuoi utenti, ma questo è davvero il tuo modo
dovresti pensare a loro ce ne sono alcuni
implicazioni che c’è un’API per
i macro sono solo i compilatori
stai parlando direttamente al compilatore
non è stato registrato, te lo direi
più su di esso, ma come è arrivato ad essere
mi ha chiesto al bar e quindi sta andando a
cambia completamente e penso per il
meglio così se stai usando le citazioni di Kwazii
e macro a scatola ampia, ma no no bun era così
non preoccuparti, ma se lo fossi
usando le virgolette Kwazii e le macro della scatola bianca
Penso che sarai felice in futuro se
non stai andando a riscrivere
i tuoi macros okay così don giovanni is is
non a caso per dotty o at
almeno non ho inventato il nome ma
Ero immaginato che fosse per quello
come ho detto sarà un grande
rifrazione del compilatore del codice base
abbiamo circa 10 anni ci sentiamo come tanti
di saggezza ingegneristica e test di battaglia
è andato in modo non stiamo andando a
leggermente basta buttare tutto fuori e
sostituirlo ma ad un certo punto devi
portare alcuni componenti nel cortile di casa
e sai sostituirli e così è
cosa faremo ma lo sai
siamo in cinque anni fuori territorio ora così
una delle nostre ossessioni principali con questo
tutta la migrazione è che siamo terrorizzati
guardando cosa è successo a Python e io
penso che abbiamo molte buone proprietà
e Scala che non avremmo facilmente ottenuto
in quel tipo di territorio ma ogni volta
qualcosa cambierà sarà per a
buon motivo per l’utente non solo
perché abbiamo un’implementazione migliore
per esso sarà perché sarà
più semplice da capire o il tuo codice lo farà
essere più gentile per questo o forse sarà solo
compilare più velocemente ma questo è il tipo di dove
per quanto vorrei allungarlo solo a
teoria più bella o un’implementazione migliore
non è qualcosa che taglierebbe il raduno
per me dicendo che stiamo andando a cambiare
questo nella lingua sono molte persone
investito molto profondamente in Scala e noi
certamente non vorrebbe causare alcuno
mal di testa lì così una delle cose
anche se siamo tutti un po ‘universalmente
odio nella squadra, anche se la gente no
necessariamente d’accordo con noi è così
la sintassi della procedura è una specie di
abominio molto sulla Scozia X è
che è estremamente regolare
introduce sempre una definizione con a
tastiera un nome di parola chiave una firma e
quello facoltativamente un corpo se è a
procedura di definizione concreta imposta sin
rompe quello e quindi deve andare così
piccola specie di piccolo vantaggio
è molto confuso perché sembra molto
come un tipo di raffinatezza e quindi se tu
digito accidentalmente bene io non ho intenzione di
ti dico perché dovresti digitare ma se tu
digitare certe cose in là sarete
molto sorpreso dai risultati e con
la sintassi normale che non lo farebbe mai
capita come in qualche modo i letterali erano un
ottimo modo per riavere i soldi per la ricerca
il giorno non è più così caldo forse lo faremo
introdurre dei letterali di Jason o qualcosa del genere
non so se non sono così alla moda così io
non so cosa guadagna questi soldi
giorni per borse di studio penso che qualcuno possa dirlo
dopo di me le definizioni iniziali erano
un’altra cosa di cui avevamo bisogno nel
compilatore spero che nessuno li stia usando
stanno andando via, invece avremo un
molto più bella generalizzazione dell’aggiunta
parametri per i tratti che molto
le persone chiedono perché non riesci a scrivere il
stessa cosa che puoi fare bene in una classe
è in realtà difficile da implementare ma
beh lo capiremo, voglio dire, penso
ci stiamo avvicinando e questo è un po ‘
quello che ho fatto per tanto tempo quando ero in
accademici è è l’intero tipo intero
il sistema sta diventando una bella unificazione
dove digitare parametri e membri tecnici
usato per essere trattato separatamente anche
anche se sono davvero la stessa cosa e
possono modellare costruttori di tipi e
astrazione rispetto ai costruttori di tipi
può modellare in modo che fosse universale
quantificazione possono anche modellizzare
quantificazione esistenziale tipo di
soffia la tua mente che i membri del tipo possono
entrambi sono universalmente ed essenzialmente
quantificato non sono ancora arrivato davvero
a patti con quello ma possono e così
internamente non ci sarà alcun tipo
parametri e versioni future di
Scala voglio dire che li avrai nel
sintassi di superficie a cui faranno solo zucchero
digita membri e non cambierà davvero
tanto cambierà un po ‘
esiste in certi tipi di esistenziale
non può essere espresso ma la maggior parte di esso può
introdurrà anche tipi di Unione e
non sono i tipi di unione che tu
mi aspetterei se tu abbia programmato NM
ore o vedere o qualcosa del genere è
pensaci più come un lub pigro
e sai che dovrai fare un caso
il pungiglione non dovrebbe in fase di esecuzione su di loro
ma saranno molto limitati e
tipo di espresso in termini di serie di
membri e così via sono un po ‘diffidente nei confronti di
come andrà a finire nel
bytecode ma vedremo che è tutto in
cagnolino e sembra funzionare
quindi mi vedere un sacco di Voglio dire, se
erano nel discorso di Amanda che ha dato un
esempio di h liste intendo quelle cose
dammi solo degli incubi per essere artisti
da una prospettiva di implementazione
perché la ricerca implicita e intendo così io
era uno che ha detto l’ uomo quando ha chiesto cosa
hai pensato alla lista H così
originariamente abbiamo avuto inferenza di tipo e noi
aveva una ricerca implicita e poi eravamo
scrivendo un articolo e abbiamo pensato che sarebbe
essere una buona idea combinarli perché
ti consente di scrivere la tua raccolta di raccolte
molto più ordinatamente e così ho fatto un sacco di
quel lavoro e le persone sono impazzite con esso
e ora piace e metti la ricerca
fondamentalmente il prologo è come un prologo
motore di risoluzione che non è veramente
SPECT e non possiamo ottimizzarlo e
si interfaccia con l’inferenza di tipo in
modi molto interessanti e questo è come
le persone digitano la programmazione globale in
Scala in questi giorni e come onestamente II
vorrei averlo aggiunto o no
permettilo perché penso che sia un uomo
quello era azzeccato voglio dire che vogliamo davvero
programmazione a livello di tipo a guardare, proprio come
programmazione a livello di oggetto, se ce l’abbiamo
funzioni a livello di oggetto perché no
abbiamo funzioni del tipo livello I
significa la maggior parte delle cose e sono stato
guardando come usiamo in I’ve stato
guardando il nostro corpus di codice e utilizzo
di implicito e sono fondamentalmente tutti
funziona se T è int, quindi il bit si imposta se T
non è in quindi set di tè perché tu
devo scrivere un piccolo programma di prologo
per quello che il compilatore deve cercare
una ricerca gigantesca paga per questo
ogni contesto in cui vai è
fondamentalmente invalidato e ci siamo andati
un punto in cui dobbiamo inserirci così tanti
cache che le persone effettivamente contano
sul manufatto di attuazione di I warmed
fino alla fine del mio programma ora
questo implicito arriverà prima e
bene in quel modo che io
l’altro lato del mio tipo di programma spunta così
non è il tipo di semantica che tu
voglio al livello di tipo che è il motivo
cose come H less mi spaventa e quali
perché voglio dire che è un senso frustrante
che Scala ha una reputazione per questo
tipo di cose perché non ti penso
ho bisogno di questo non penso molte persone
in realtà scrivere questo tipo di codice e se
si scopre che molte persone avevano bisogno
aggiungeremo il supporto linguistico per questo
posso darti dei bei messaggi di errore e tu
sappi che questo non è un grande odio
tweets comunque abbastanza di ciò che ho parlato
un po ‘su come avremmo come
cambiamo la parte anteriore e quella posteriore
individualmente e una delle cose fondamentali
è gustoso che forse hai sentito
circa è il nostro tipo di nastro che sono
ottimo anche per compatibilità binaria ma
fondamentalmente è una lingua intermedia
per Scala che cattura tutto il
informazioni che abbiamo dopo il tipo
controllando quindi non siamo più legati al
Interpretazione delle piattaforme Java del membro
risoluzione e tu hai un molto più alto
vista a livello di valvole pigre e tratti e
metodi e il nostro modo di sovraccaricare
in modo che se la piattaforma cambia scusa
me possiamo solo ricompilare basato su
che ha digitato ast e sappiamo che il
la semantica non cambierà quindi pensateci come
un bytecode più ricco che puoi sul
vola ricompilare come tua API
cambiare in modo compatibile con la sorgente
risulta non compatibile binario
il martin di JVM ha dato più colloqui
su questo spiegando molto meglio
di quello che ho appena fatto ma è carino
interessante quindi ti incoraggio ad avere un
guardalo o chiedimi di questo durante
le domande ti ringraziano molto per il tuo
attenzione, so che è stata una lunga giornata
ma se hai qualche domanda felice
prendili ora o dopo, grazie
Please follow and like us: