
quindi quelli di voi che non lo sanno
Sono ESTOS e sono figlio di questa città è
bello tornare e parlerò
Lavoro per Microsoft okay um così via
squadra che sta facendo c-sharp e visual
basic e f-sharp e ne abbiamo alcuni
nuove cose nelle opere che sto per fare
Ho intenzione di condividere con voi io ho un
alcune diapositive perché voglio essere sicuro
che qualcosa per i manager nel
stanza ma dobbiamo passare la maggior parte del
tempo in Visual Studio mostrando alcuni di
la roba e e parlando del
principi in esso quindi spero che tu non lo faccia
mente che cercherò di far spazio
domande un paio di posti lungo il
come sai alzare la mano se non lo faccio
Guardalo
gridare e poi vedremo se possiamo
ottenere la domanda sulla registrazione come
bene o da un microfono che viene affrettato
al tuo posto o comprimi ripetendo il
domanda ma sono felice di rispondere alle domande
Ho intenzione di dirti quando fermarti
se non filmiamo senza
tempo quindi il principale tipo di tema per noi
e la squadra c-sharp è stata per il
durare come cinque anni o giù di lì davvero ordinamento
di un profondo profondo rinnovamento del c-sharp
compilatore che abbiamo dato in un completo
revisione lo abbiamo effettivamente riscritto
da zero questa volta in modo corretto
linguaggio di programmazione e puoi indovinare
quale che è
e l’abbiamo fatto per diverse ragioni
alcuni di loro solo noi stanno diventando più
produttivo e fiducioso nel nostro codebase
meglio e così via, ma molto ha
stato circa l’apertura del c-sharp
compilatore quindi perché il compilatore davvero
bene in un in un tradizionale
la mentalità è una scatola nera che hai spinto
codice sorgente in e alcuni eseguibili
il codice viene fuori ma non è così
gran parte della verità in questi giorni un compilatore
è davvero una specie di profondità
logica che capisce quale sia la fonte
codice significa e tu vuoi usarlo
la conoscenza che la comprensione da molti
scopi non solo per la produzione del
il codice sorgente in particolare sei
probabilmente tutto ha passato tutto il giorno dentro
degli strumenti all’interno di strumenti di sviluppo e
è importante usare quello strumento
capisce ciò che il codice è di circa e
ti dà un feedback intelligente che conosci
dal completamento automatico a
due errori al volo due refactoring
e così via vuoi capire il tuo
codice e vogliamo prenderlo
comprensione e vogliamo costruire il nostro
tutta la nostra strumentazione oltre a quella ma
vogliamo anche renderlo pubblico che vogliamo
tutti gli altri per avere la possibilità di
accedere a quella comprensione di c-sharp
codice sorgente quindi abbiamo questa API molto
modello oggetto ricco della sintassi e
semantica di c-sharp che è giusta
automaticamente disponibile quando sei in
Visual Studio è possibile collegarsi e utilizzare
questo e fare tutti i tipi di domande
riguardo al codice e lo prendiamo
noi stessi per renderlo facile da collegare a
il livello di strumento e in particolare da fare
questa API robusta ed efficiente e e
intuitivo e ti dà la possibilità di aprirli
opportunità che in precedenza solo noi
abbiamo avuto e sono pienamente consapevole che
ci sono altri strumenti là fuori
che sono state facendo questo per un po ‘così
abbiamo imparato molto da che anche noi
fatto che abbiamo preso il suo compilatore affilato e
lo mettiamo open source quindi se vuoi
aggiungi una nuova funzionalità a c-sharp sai andare
prima però arriviamo anche a richieste di pull
probabilmente non di nuove funzionalità linguistiche
proprio ora ma vai a giocare con lui vedi
come lo implementiamo e poi anche noi
ha aggiunto anche alcune nuove funzionalità linguistiche
un po ‘ come una parte mostra tutto questo
aprendo con i compilatori il principale
cosa stiamo lavorando per il prossimo
Visual Studio ma non volevamo ordinare
di prendere un tema di vediamo quanti
piccole caratteristiche che possiamo inserire nella nostra
tempo libero che aiuta a diventare piccolo
caratteristiche che aiutano a ridurre il boilerplate
e aiuta solo a rendere il codice più bello da guardare
quindi daremo un’occhiata ad alcune di queste come
bene, quindi se pensi a chi siamo noi
per questo è una specie di questo è per il
manager quanti dirigenti sono quanti
Va bene quanti sviluppatori ok buona I
pensiamo che io penso che abbiamo fatto bene
pubblicità così gli sviluppatori davvero noi
voglio solo un prodotto migliore per l’utente finale
Vogliamo un IDE più ricco che vogliamo
continua ad evolvere il linguaggio e così via
questo è stato un obiettivo principale anche qui
abbiamo tipo prendiamo l’esperienza idea
in particolare al prossimo passo e poi a noi
immagina che piaccia a molte persone
davvero un sacco di gente che abbiamo davvero cercato
per renderlo facile
andremo e arricchiremo questa esperienza come
ben basato su questa nuova comprensione
degli strumenti quindi forse farai il tuo
propria diagnostica e in un minuto in realtà
costruiremo una diagnosi insieme o
Lo farò e vedrai che siamo solo
per mostrare quanto sia facile collegarlo al
strumento in un modo molto profondo e averlo
reagire allo stesso modo con il tipo
delle cose che ti interessa mostrare
riguardo al codice nello stesso modo di
compilato nel compilatore e le regole fanno ovviamente
noi come team abbiamo un’architettura migliore
evolvere e pensiamo che questo sia un po ‘
di un investimento per i prossimi anni
per noi che possiamo rimanere vivi
perché ora abbiamo un pozzo produttivo
abbiamo architettato un codice sorgente efficiente così noi
anche come ho detto siamo anche open source
e penso che quel tipo di espansione si allarghi
il pubblico di destinazione su tutti questi livelli
qui certamente abbiamo già avuto bene
buone vibrazioni tra noi e qualunque altra cosa
i venditori di c-sharp sono là fuori
uno è presente qui in tutto ciò che è questo a
marine e parliamo di come possiamo
come possiamo usare il fatto che il
il compilatore c-sharp è ora open source
e e può essere regolato per adattarsi
diverse piattaforme per esempio e
servire bisogni diversi e noi non abbiamo
ad essere quelli che fanno tutto questo
quindi questo è il breve spunto
quello che sto per fare ora è quindi entrare
Visual Studio vedremo alcuni di
queste perienze IDX solo un po ‘
costruiremo un analizzatore personalizzato e quindi
guardiamo tutte le tue funzionalità linguistiche
destra
dovresti dire sì insegnante sì
okay grazie
Oh prima mi dimenticherò di venire
torna a questo quindi se vuoi giocare con
questo c’è un c’è un tecnico
anteprima là fuori in realtà abbiamo messo fuori noi
ne metti uno nuovo ogni sei settimane circa
Penso che probabilmente qualcuno stia uscendo
uno di questi giorni per cercare vai al tuo
motore di ricerca preferito e ricerca
Visual Studio vedi
TP e puoi scaricare una versione di
Visual Studio è una sorta di anteprima
con tutte queste cose e questo è pubblico
anteprima Userò oggi anche se
sei interessato all’open source
siamo su clic di codice del progetto
chiamato Roslyn o si chiama Roslyn così
se andate a cercarlo su CodePlex e
puoi guardare queste belle immagini
in bing quando vai a cercarlo è
davvero la pagina di ricerca più bella
puoi andare a posto così le domande avranno bisogno
più tardi, ma ora andrò in Visual
Studio e parla un po ‘di cose dentro
il giusto contesto del codice reale così
ecco alcuni successi um, sto solo suonando il codice
che sarà guardando un po ‘
oggi e così una di così una delle cose
che voglio sottolineare è che abbiamo
tipo di persone prese persone come Visual
Studio va bene e ma ha molto ha
molte caratteristiche molte campane e
fischietti ma quello che la gente a volte racconta
diteci è che non fa una cosa
che manca un po ‘è non è così
sento come se capisse abbastanza bene il mio codice
così come alcuni altri strumenti
è come se non capisse quando sono
dove sto cercando di fare e questo è davvero
perché vogliamo provare a farlo così solo io
voglio mostrare alcune cose che ho costruito
in cima alla tua API del compilatore, noi tutti
le nostre funzionalità di identificazione sono costruite sul pubblico
API Voglio dire che non abbiamo segreti
comunicazione con il compilatore tu
poteva fare tutto quello che possiamo fare in modo che un
cosa ovvia è che sai realizzare quando
qualcosa che non viene utilizzato il possibile grado fuori
se prendiamo usiamo qualcos’altro
system.com in realtà sto per sbirciare
101 delle nuove funzionalità linguistiche è possibile
importa un tipo statico e poi il suo
i membri diventano direttamente nel campo di applicazione
fammi fare questo puoi vedere che non sono io
non usando nessun membro scontato ma ora
vedi anche che il tipo statico che io
importato diventa grigio qui e io
può evidenziarlo e e correggere tutto il
occorrenze di semplificare il tipo e noi
non ho intenzione di andare troppo in profondità
intuizione profonda ma abbiamo davvero bene
la logica per la realizzazione di quando si può
semplificare qualcosa con
su di esso cambiando il suo significato andiamo anche
vai e andiamo a guardare qui e
guarda una di queste cose che siamo
gli unici che non hanno ancora
è un’esperienza di rinomina in linea dove
cadi in una variabile e tu oh
eccoci qui un po ‘è un po’
troppo tardi qui e tu semplicemente scrivi
alcune cose qui e tu lo sai
aggiornamenti in diretta ovunque così tipo di
questo è un po ‘ di base, ma
loro la cosa interessante è quella
sa davvero come sistemare l’altro
luoghi in modo tale che non lo fanno
cambia il loro significato anche se il nome è
un po ‘strano o ha un altro significato in
quello e quel luogo ho usato una parola chiave
capisce come sfuggire alla parola chiave
in altri posti se si usa , diciamo
usi un nome che come puoi vedere a
Poco più in basso il nome utente
capita di essere nel campo di applicazione in quel punto
sa come metterlo davanti e così via
quindi è solo la comprensione del linguaggio
che finalmente stiamo andando bene
se uso qualcosa che è già un
membro ti dirà questo
il refactoring introdurrà conflitti e
fatelo sapere così è quel tipo
di esperienza e noi e poi vogliamo
per essere in grado di costruire un tipo simile
di esperienza e questo è un po ‘di quello
una specie di cosa sto per mostrare ora, quindi se
lasciamo questo codice e andiamo qui
così sto andando a costruire una diagnostica che è
guarderò qualche sguardo sul codice sorgente
codice sorgente in Visual Studio e tell
tu che qualcosa non va in esso o
potrebbe essere risolto con esso e poi il mio andare
comprare per costruire una correzione del codice per risolvere il problema
ti darò il tipo di in a
senso di quanto sia facile usare un bene
modello a oggetti del codice e possiamo parlare
su alcuni aspetti di come cosa
sembra come andiamo insieme e così cosa io
appena fatto qui sta per presentare una nuova
file nuovo progetto e selezionare il tipo di
progetto chiamato diagnostica con
correzione del codice e se si crea un progetto
in quel modo arriverà ci sarà un completo
progetto a tutti gli effetti che ha un
è una diagnosi stupida ma completamente
diagnostica funzionante già lì
Ho cancellato quel codice da quello che ho
avere qui e il progetto che puoi costruire
che in due modi puoi costruire un visual
estensione di studio e v6 o puoi costruire
un nuovo file di gate e in entrambi i modi è possibile
in modo da poter installare l’estensione
oppure puoi avere quel nuovo file di gate e
e puoi fare riferimento a questo e poi
quelli di diagnostica si applicano al tuo
progetto solo tu puoi costruire questi ragazzi
e installali condividili e fallo
tutto quel genere di cose quindi proviamo a
fai uno di quelli che è questo il
parte dell’analizzatore la parte diagnostica I am a
la maggior parte di questo è stato generato per me
Sto solo implementando un’interfaccia
dicendo che io voglio il tipo di diagnostica
che guarda certi tipi di sintassi
Avvertenze i Sono un analizzatore di sintassi nota che ho appena
devi dichiarare quali tipi di sintassi
note sono interessato e poi il
lo strumento ci chiamerà ogni volta che ne avrà bisogno
soprattutto essenzialmente su ogni
battit dove il codice è in è
visibile sullo schermo lo farà lo farà
chiamaci con la nota sintassi che
potrebbe essere cambiato qui così il se
dichiarazioni e altre clausole sono quelle
Sono interessato a
se premo f5 qui se devo andare al debug
modalità all’interno di questo tipo di progetto
si inizierà un’altra versione correre
un’altra versione di Visual Studio con my
codice installato e quindi posso vederlo
lavorando così è l’ esperienza di debug
correndo stai correndo eri
diagnosticato di nuovo lo strumento quindi se lo faccio
qui puoi vedere che apro il nostro prima
Non ho ancora una diagnosi, quindi è così
non farò altro che quello che posso
usa questo per dirti che tipo di
diagnostica sto andando a scrivere quindi è così
una questione di stile è male per di più
alcune persone consideravano una cattiva forma
una dichiarazione in e se quello non è
circondato da Curly che non è un blocco
e così vogliamo identificare quei posti
e offriti di sistemarli e un altro simile
clausole tranne se è un altro – se poi
non vogliamo il se essere in parentesi così
quindi scriviamo la logica per affrontare
così tornerò al mio progetto qui
tutto quello che devo fare è dichiarare il mio
interesse per le dichiarazioni if e e
altre clausole e poi tutto quello che devo fare
qui è quello di vedere io sono in nella
situazione che voglio e voglio
dare una diagnosi e se così creare il
diagnostica quindi vogliamo solo iniziare
arrivando puoi vedere che mi chiamano
con varie cose mi chiamano con a
nota di sintassi e poi un po ‘di semantica
informazioni che ho intenzione di non andare
per usarlo, ma ne ottieni di tutti i tipi
informazioni vincolanti e così via così puoi
in realtà non basta guardare la forma di a
albero di sintassi ma ma ho aggiunto come funziona
come fanno le cose a legare cosa significano e
e tu stai impostando la tua diagnosi, così siamo
andando a prendere solo quella nota che abbiamo ottenuto
e vedere è in realtà una dichiarazione if
quindi lo consideriamo come una sintassi dell’istruzione if
e se questo non è noto, allora siamo in ordine
di là, quindi, abbiamo ragione
vicinanza qui nel quartiere giusto
e quindi pensiamo a cosa sono
loro qual è la logica per stabilire
che vogliamo evidenziare questo come a
problema bene se è così una delle cose
dobbiamo pensare è che la maggior parte di
il tempo in cui sei nello strumento il tuo codice
non è corretto , stai digitando in anticipo
è solo in realtà è l’eccezionale
casi in cui il tuo codice è effettivamente pari
analizza o figuriamoci compila così noi di
Certo che dobbiamo affrontare un modello che
ha tolleranza agli errori e così abbiamo
euristiche davvero buone per la costruzione
un albero quando il codice non è tranquillo
corretta e se ci troviamo vogliamo solo
per controllare non riesco davvero a ricordare se
puoi mai entrare in un
situazione in cui l’istruzione if la
l’istruzione nidificata è nullo ma facciamo solo
assume puoi quindi cerchiamo di verificare che essa
non è e quindi siamo interessati al
luoghi in cui non è già un blocco così
se non la dichiarazione if è il se
la dichiarazione di dichiarazioni è un blocco noi
non è la sintassi di operatore gentile qui
tipo che blocca già un blocco visitatore
poi vogliamo dire alla gente che
dovrebbe essere e lo facciamo e basta
creando un diagnostico e dicendo
esattamente dove dove mettere un po ‘
linea ondulata sotto
quindi prendiamo una posizione per il ghirigoro
se agitiamo solo il
diciamo che agitiamo solo la parola chiave if in
l’affermazione if così diciamo che se fosse
punto di dichiarazione se la parola chiave è visibile
è un modello a oggetti dell’istruzione if
Posso semplicemente fermarmi e possiamo ottenere il
posizione di quello che sarà a
span di due caratteri da qualche parte in una fonte
codice e quindi vogliamo creare un
diagnostico da quello è uguale a quello che ho fatto io
fare qualcosa di sbagliato
oh non ho fatto niente di sbagliato è solo
un po ‘lento indica il punto diagnostico
creare così è tutto come standard
codice di livello qui ho già un
descrittore che ho creato più in alto
lì abbiamo appena ottenuto la posizione e noi
avere un messaggio qui vogliamo dire
quale sia l’ argomento arco che è se
la dichiarazione è un’affermazione se la mia se
la dichiarazione deve avere parentesi create a
diagnostica e vorrei solo aggiungere
quella diagnostica chiamando un delicato
questo è stato passato in noi qui così ora ho
fatto tutto ciò di cui ho bisogno per fare questo è tutto
Devo fare ora per collegare lo strumento
e per vedere che facciamolo entrare
il debugger e tu puoi vedere
cosa abbiamo conseguito e cosa speriamo di vedere
è quello che ora è nostro se è lì dentro?
strisciante con un piccolo ghirigoro verde
ovviamente questo richiede un po ‘di tempo qui
andiamo si sta scaldando ora lo farà ora
mostra piccoli scarabocchi che rappresentano
esattamente quello che abbiamo chiesto giusto così
non era male , non è male e tu
può effettivamente vedere scusa per il passaggio del mouse qui
sarà anche l’ Italia che me ne darà un po ‘
opzioni uno di loro purtroppo tutto
le opzioni qui ho solo soppresso il
avviso che abbiamo appena creato così ciò che noi
voglio fare ora è costruire una diagnosi
o costruire una correzione del codice che può andare
in questo menu e offrire l’opportunità
per risolvere il problema in modo se andiamo fuori
anche qui dovremmo avere anch’io
sistemato così puoi vedere che è andato
via, ma spero che ti fideresti di me per quello
prima di tutto facciamo questo e basta
incolla in un codice che fa lo stesso
analisi per classi ELL
e poi andiamo a costruire una correzione del codice
fornitore ed è lo stesso tipo di idea
noi questo è un metodo che viene chiamato
ogni volta che questo codice ce n’è
mumbo-jumbo per associare questa correzione con
la diagnosi che hai visto prima ogni volta
la diagnostica è questa correzione del codice ottiene
chiamato e otteniamo un metodo invocato
qui con il documento che è un oggetto
modello dell’intero pezzo di codice in
lì e il testo span per dove
la diagnosi è così poco se
lì e ora possiamo andare ora andiamo
scavando nel documento otteniamo il
sintassi la radice dell’albero della sintassi noi
chiedi il token nel ho già scritto
parte del codice qui chiediamo il caso
token in là troviamo il suo genitore il se
affermazione controlliamo che sia un if
dichiarazione e ora abbiamo il se
dichiarazione di nuovo così ora diventa
interessante come faccio a come realmente
fai il cambio di codice e qui arriva il
il principio importante qui è tutto
alberi di sintassi e tutte le nostre strutture di dati
sono immutabili ok abbiamo un immutabile
modello oggetto così così ogni volta che colpisci un
chiave ottieni un nuovo albero di sintassi nuovo
è quasi come il vecchio ma è così
leggermente diverso tutto bene
e facciamo tutto il lavoro dietro le quinte
per renderlo efficiente facendo condivisione
ed essere pigro e ogni tipo di roba
abbiamo questo è quello che abbiamo trascorso cinque anni
ottenere questa roba efficiente e così via
quello che ho in modo che significa che se devo
creare una nuova versione di I in realtà
per creare una nuova versione di tutti questi
note non posso semplicemente modificarli con con
il compito giusto, quindi devo creare
un nuovo if if così perché
è per questo che sei interessante?
ascolta altri discorsi domani
immutabilità se sei interessato a
quei modelli ma perché è interessante
farlo così bene tu pensi che sia
irrimediabilmente inefficiente ma in realtà
ottimo perché quando hai immutabile
strutture dati puoi paralizzare il
diamine dalle cose e lo facciamo quando
compiliamo ma significa anche che tu
può avere più versioni di questi
alberi vivi allo stesso tempo senza
ci sono conflitti e stiamo andando a
vedi che in effetti è così ciò che tu
spesso questo è un modello comune con
con strutture dati immutabili che hai
Withers dove puoi chiamare
ottenere una versione che è leggermente diversa
dove tu dove sostituisci uno dei
cose lì dentro in modo che possiamo sostituire il
dichiarazione con una dichiarazione di blocco di
andando a peccato abbiamo una fabbrica di sintassi
dove possiamo ottenere un blocco e all’interno di
quel blocco che stiamo per mettere il
affermazione che avevamo prima se
dichiarazione allo stato
tutto bene ora non abbiamo un nuovo se
dichiarazione con cosa abbiamo intenzione di fare
bene, dobbiamo metterlo in un nuovo
sintassi root quindi dobbiamo dire nuovo
perché e dobbiamo creare un nuovo
albero di sintassi per l’intera cosa in cui noi
sostituire lo stesso principio di nuovo dove
sostituiamo la vecchia istruzione if con
nuova affermazione se vogliamo dire
root duh sostituire sostituire il nodo che sostituiamo
la dichiarazione if con il nuovo if
dichiarazione, ma ancora una volta si ottiene il
blocco di questo stile di programmazione è
davvero super facile e ora abbiamo bisogno di
incollare quella nuova radice in un nuovo documento
è proprio come il vecchio documento eccetto
che ha un nuovo albero di sintassi all’interno di
il nuovo documento equivale al punto del documento ora
diciamo con sintassi root e usiamo nel tuo
Road e ora abbiamo creato un
albero di sintassi alternativo per il foro
buffer che è solo un po ‘ diverso
e ora tutto ciò che dobbiamo fare è installare
che come azione di codice quindi creiamo un
codice azione scusa codice a barre un codice azione
equivale a codice azione creaci abbiamo a
stringa che dice aggiungere parentesi questo è il
roba che andrà lì dentro nel menu
che selezioniamo le nostre correzioni da e ora noi
ho bisogno di un nuovo nuovo documento qui e ora
abbiamo detto all’azione del codice
tutto ciò di cui abbiamo bisogno di sapere di cui abbiamo bisogno
per restituirlo lo trasformiamo in un array
perché ci può essere più di un codice
azione associata ad un dato drago
diagnostica in modo da restituire solo un array di
uno qui va bene
e quello è andato a correre così e così è
tutto quello che fai e quello che puoi
immagina di farlo da solo che puoi
immagina di costruire qualcosa
Diagnostica che mantiene gli stili
che vuoi all’interno della tua azienda e
distribuirli a tutti con il codice
correzioni si può immaginare penso che questo è un
scenario importante che puoi immaginare
scrivere biblioteche per pensare a JSON
dotnet o altre librerie che vengono con
correzioni di codice e diagnostica che ti aiutano
usa quelle quelle librerie direttamente è
un po ‘come i commenti scuri sugli steroidi
Giusto tu non ottieni solo
documentazione con la libreria che ottieni
guida automatica su come usarlo e
Penso che sara ‘credo
quello sarà uno scenario importante
per questo quindi ora con un piccolo aiuto per
i miei amici penso che ora ho un
voce di menu in più qui aggiungere parentesi graffe e voi
vederlo in realtà ha un’anteprima del
il codice qui non è così bella
perché non abbiamo aggiunto la formattazione, non lo sono
lo farò perché è molto , è un
linea aggiuntiva di codice da aggiungere per formattarlo
correttamente ma puoi vederlo in
anteprima
ci sono i ricci intorno al
se la dichiarazione di affermazioni qui è possibile
vedi anche da dove viene questa anteprima
da dove pensi che proviene da
è si tratta di un rendering di che
albero alternativo che abbiamo costruito abbiamo
quindi avendo questi due differenti sintassi
alberi due versioni di esso si può si può
mostra uno in un’anteprima puoi avere un
sbirciare nell’universo alternativo che
si avvererà se seleziono questo codice
azione giusta puoi vedere che è pari
anche solo mostra scarabocchi lasciami anche solo
mostra scarabocchi per le altre cose
perché sta eseguendo il nostro analizzatore
in modo ricorsivo lì così una buona cosa
che non posso cliccare qui e ottenere un
lampadina giusta perché altrimenti tu
potrebbe arrivare fino in fondo al coniglio
buco visto che è uno dei tanti
aspetti forti di avere questo immutabile
modello di codice, ecco tutto quello che sto per fare
dite su Diagnostics e io voglio
Pausa rapidamente per domande qui e vedere
se tu ne hai qualcuno , lo spendiamo
circa cinque minuti se hai domande
e questo
i nostri commenti e tu fai così vediamo se
possiamo così JetBrains quindi la domanda è
su JetBrains e se ne abbiamo
interazione con loro ovviamente questo è
sorta di entrare nel territorio dei jetbrain
e il territorio di coderush e abbiamo avuto
diversi noi interagiamo con i loro partner
noi buoni amici però loro fanno il loro
JetBrains viventi fanno la loro vita da
avere un modello di codice molto dettagliato
quello che capiscono e costruiscono
strumenti in cima a quello che la gente vuole
per pagare e ora quello che siamo
essenzialmente fare è fare un modello
un po ‘come quello e rendendolo
disponibile a tutti quindi siamo un po ‘
come minacciandoli un po ‘da
sotto in questo senso ora tutti possono farlo
alcuni di quello che fanno ma io penso per
JetBrains hanno alcuni molto avanzati
cose e che stanno andando a sopravvivere
va bene perché loro perché sono
sarà meglio di chiunque altro
costruendo quelli su cui lavora
superiore anche se c’è un modello pubblico come
per quanto ne so essi bloccano che lo faranno
in realtà non passare a utilizzare il nostro nostro
il modello sotto continueranno a correre
la propria analisi e il proprio
che può essere un po ‘ una performance
problema penso ma vedremo forse loro
può fare una specie di cosa ibrida o
qualunque cosa per accelerare un rush di codice
in realtà hanno annunciato di essere
andando a passare al nostro modello e
e semplicemente costruisci sopra ma è così
un interessante Insomma è una specie di
cambiare il gioco invece di avere un
pochi fornitori abbiamo un chiuso abbiamo a
scatola chiusa che nessuno può usare a
preziosa conoscenza della lingua, se vuoi
e poi ci sono questi proprietari
strumenti che costruiscono la propria analisi e
lavora su questo e ora stiamo democratizzando
quell’analisi e rendendola disponibile
tutti e almeno al minimo
end o midlow al MIT e tutti possono
gioca molto facilmente e quello sarà
cambia il gioco penso molto
in modo significativo
Va bene che era un sì
puoi trasformarlo in una macro conforme
struttura sì, probabilmente è possibile che tu abbia bisogno
una lingua macro sopra e poi
lavorare con questi modelli che tipo di
rientra nella categoria dei meta
programmando puoi immaginare tutti i tipi
di diverse meta programmazioni varie
meccanismi generativi che produrrebbero
codice o trasforma codice o aggiungi cose a
codice e questo è in realtà come è stato
la motivazione originale per pareggiare
iniziando questo progetto ma lungo la strada
abbiamo deciso ok ora non è il momento di farlo
indirizzare la meta-programmazione in modo tale che l’abbiamo esaminata
fuori e ha deciso di affrontare gli strumenti e
e una sorta di oggetti di valore di base per il
milioni ma penso che sia così
sicuramente un posto dove andare in futuro
con questo e noi ne sono sicuro
ci saranno molte persone là fuori
quello cambierà questo qualunque loro modo
possiamo e li guarderemo e vedremo
quali sono le cose che stanno cercando di fare
che non possono ancora fare ancora o quello
stanno facendo in un modo molto arkla
e considerare se dovremmo sostenere
quello più direttamente in una versione futura
quindi penso che sia davvero interessante
spazio solo questo è un passo verso di esso
non siamo ancora lì, probabilmente alcuni
le cose possono essere fatte già ma non
tutto e certamente non abbiamo progettato
per ora va bene, comunque penso di no
guarda le mani , accendimi in faccia , no
vedere le mani quindi andrò al prossimo bit
quindi l’ altra cosa che ti ho detto io
ti ho promesso ne parlerei un po ‘
è il nuovo set di funzionalità del linguaggio visto
in c-sharp è una specie di luce e e
e ammettiamo che non è questo
focus principale non volevamo avere un grande
il tema è abbastanza folle com’è
questo con le cose a livello di API così
essenzialmente stiamo solo cercando
opportunità di rimuovere alcuni
codice boilerplate e fare le cose a
po ‘più facile e sto andando mostrarvi
alcuni di quelli e devo dire questo
questa è una specie di work in progress II
sappi che alcune delle cose che sono sono
mostrerò che probabilmente no
in realtà arriva fino al prodotto e
So anche che alcune cose intorno al
modo che non sono ancora in questo prototipo
portarlo con un sacco di grani di sale
hai già visto una caratteristica della lingua
l’uso di membri statici qui possiamo
fai un altro usando il sistema in matematica
sai che sarà comune
Voglio essere in grado di dire radice quadrata
invece della matematica la radice quadrata
soprattutto se sto facendo un sacco di matematica
vedi la matematica le radici quadrate qui
ora è in grigio
non è meraviglioso prenderlo e basta
buttalo nella spazzatura proprio lì
giusto e quindi sicuramente conosci solo il
capacità di ottenere funzioni di alto livello
essenzialmente che è stato così
manca per molto tempo altre lingue
avere questo questo è un programma che solo
crea una serie di punti rivolti alcuni
in Jason e per incent di nuovo
quindi è un programma davvero poco interessante
e poi la parte più interessante è
solo guardando quali sono le cose che siamo
può fare all’interno di questa classe
dichiarazione qui così una cosa che abbiamo
giocato con e devo ammetterlo
questa è probabilmente la cosa che potrebbe non farlo
farlo per ragioni di costo lungo la strada
sta mettendo mettendo costruttivo
parametri direttamente sulla classe che chiamiamo
questo costruttori primari e permettendo
basta inserire parametri in ambito e
inizializzare direttamente da loro nel
classe e sbarazzarsi di sbarazzarsi del
costruttore quindi è una specie di piacevole a
bel tipo di risparmio di spazio, ma lo facciamo
voglio andare un po ‘oltre il
cose che io penso con c-sharp noi per
da molto tempo ci siamo sentiti come se mi avessi visto
fai tutto questo con un immutabile
modello oggetto è stato bello scrivere che
modello di oggetto immutabile è un po ‘ di a
il dolore in c-sharp in realtà è molto
più facile quando sei mutabile, abbiamo tutto
tipi di cose obiettano gli inizializzatori e
proprietà auto e così via che ha aiutato
l’immutabile va ad aiutare le persone mutabili
giusto e cosa vogliamo fare anche qui
è cercare di livellare un po ‘il campo di gioco
e rendi più facile essere immutabile
okay e quindi dove prima se tu
voluto non avere un campo di supporto
esplicitamente nel tuo codice ma ce l’hai
generato hai dovuto avere un auto
proprietà e per poterti dire allora
devi avere un setter e cosa
le persone fanno a volte e fanno il set
di privato quindi è un po ‘come
non c’era
quello che stiamo ora aggiungendo è invece il
possibilità di avere solo un getter solo auto
proprietà e si può ottenere un valore in
Là
inizializzandolo , per esempio, così posso
inizializzalo direttamente qui perché noi
anche ora si inizializza in Auto
problemi quindi le cose diventano un po ‘ più a
un po ‘più conciso qui e ora possiamo
guarda questo è il prototipo che ho fatto
non vuole che ciò accada va bene
Ho congelato qui succede sempre quando
stanno registrando giusto ora per
raccontare barzellette
questo-questo-questo si è bloccato molto male
non l’ho visto prima d’ora
ha bisogno di scoprire quello che era
avere problemi
ora sta ricominciando così il generale
la cosa qui ti consente solo di non farlo
molto sull’aggiunta di nuovi concetti l’ultima volta
abbiamo aggiunto il concetto di async il tempo
prima di ciò avevamo il concetto di
dinamico sebbene fossero entrambi ciò che sono
chiedendo di recuperare i file sì, penso di si
questa volta non si tratta di aggiungere
nuovi concetti si tratta solo di fare di più
chiaro quello che hai già così sperabilmente
queste nuove funzionalità dovrebbero fondersi
nello sfondo vediamo quanta
ricorda di quello che non ho fatto molto io
ricorda i parametri del costruttore
là fuori così andiamo a sua volta questi in
proprietà auto di nuovo e vedere se ottiene
ci mettiamo nei guai, okay, eccoci qui
quindi queste cose solo per fare il codice
guarda più leggero ed esprimi il tuo intento
un modo più conciso che è quello che noi
erano dopo ok quindi questo è ora valido
codice c-sharp e molto più leggero di quello
hai avuto prima un’altra cosa sei tu
avete questi spesso li avete proprio questi
metodi semplici e proprietà che sono
essenzialmente solo un singolo ritorno
dichiarazione con un’espressione in tal modo
c’è un sacco di peluria intorno a questo
singola espressione per vedere cosa
effettivamente fa e in realtà in lambda
espressioni per molte versioni che abbiamo avuto
la scelta tra voglio un pieno
corpo della dichiarazione o vuoi solo un
espressione per il risultato e ora siamo
aggiungendo questa scelta
a tutti i membri della funzione quindi penso questo
è abbastanza questo sarà abbastanza
cambia significativamente ciò che sembra
quando guardi sopra una classe e di nuovo
è davvero solo zucchero sintattico
ma essere in grado di usare la freccia lambda
di nuovo spero che ti piaccia e che tu sia in grado
per dire questo invece dove sei solo
dire che due stringhe è una funzione
restituisce il risultato di questa espressione I
penso che sia carino e con
proprietà questa è una proprietà calcolata
ho solo un getter il getter è
valutato ogni volta solo un singolo
Espressione in là noi realmente andiamo a
fare un passo avanti e ti lasciamo solo
eliminare entrambi i casi in cui dici get e
dove hai tutti i ricci e
ritorna e così via così ottengo la nostra unica auto
proprietà di nuovo scusate una proprietà calcolata
ora può apparire solo come questo tutto bene
solo che è ancora proprietà che puoi librare
qui e puoi vedere questa proprietà
con il getter ma è super-come
dì ogni volta che le persone chiedono il dist
dai loro il risultato di questo va bene così
membri della funzione corposa espressione noi
chiama questo okay, parliamo di
gli operatori condizionali nulli vanno bene
quindi, nel bene o nel male, abbiamo il nullable
tipi di riferimento e solo nullable
riferimento tipi e vedere che noi non siamo
cambierà che non stiamo andando a
aggiungi un concetto di nessun riferimento nullable
tipi perché è un dolore che abbiamo provato
non può capirlo si può è facile
progettare un linguaggio da zero con quello
ma è davvero difficile aggiungere dopo
fatto, ma quello che possiamo fare è quello di rendere
più facile per te da affrontare quando tu
avere valori nulli quindi diciamo che questo tentativo
ottieni il metodo int qui che prova a prendere
qualche jason e trasformalo in un int, facciamolo
Diciamo che vogliamo che tu possa vederlo
non robusto qui se è se ottiene un
la conoscenza è un ritorno falso, forse noi
potrebbe sbarazzarsi di tutte queste righe di null
controllando che abbiamo tutto il codice
e dì semplicemente diciamo, passiamo a dire
che questo riduca una versione punto questione
del punto che dice se Jason non lo è
Null allora puntare in esso e restituire il
altrimenti torna tutto bene così ora tu
ottenere il tipo qui è un è una struttura qui
ora ottieni la versione nullable di quello
struct ma è possibile passare in annullabile
cose così ora cadrebbe
il caso predefinito qui perché nel caso
Jason per vendere se stesso è nullo quindi lo farà
cadiamo nel caso predefinito che possiamo
effettivamente svolgere il compito qui e
mettilo lì perché ora abbiamo un
interruttore totale e tutto ciò che jason
può essere così chiamiamo questo qualcuno chiama
questo gli operatori di Elvis e pochi altri
lingue puoi vedere i due occhi
e il ciuffo ribelle, se si guarda al tipo di
questo come emoticon, ecco perché è così
perché si chiama così l’operatore Elvis
puoi farlo anche per altre cose
il metodo che chiama il metodo che abbiamo visto
prima di qui prova a ottenere int puoi anche tu
puoi anche fare l’indicizzazione delle domande così sei
dicendo il risultato qui di questo
espressione è nullo se jason è nullo
altrimenti è il risultato dell’essere
indicizzazione in esso con con x qui e
lì il lato destro non ottiene
valutato a meno che non sia la sinistra
lato mano non era nullo e puoi catena
questi quindi l’intera catena di punti e e
indicizzazione e invocazioni in realtà di
metodi e cose così che l’intera catena è
viene valutato solo se non hai avuto un
tutti fuori davanti si può immaginare che per
una delle cose più fastidiose in
c-sharp non ne ho un esempio in
ecco il modo sicuro per farlo
innesca un evento tutto bene quanti
le persone sono programmatori c-sharp e e
e maledica questo thread senza maledizione
evento che non fa scattare lo sheesh
i programmatori stanno bene iniziamo con quello
alcuni devi controllare se il delegato
stai invocando è nullo quindi devi
assicuratevi di prendere una copia di esso
perché deve essere thread sicuro quindi se
quindi non controlli che sia nullo e poi esso
diventa nulla prima che tu decida di no
per farlo o viceversa adesso
puoi farlo in una sola dichiarazione
con un operatore punto interrogativo ok
vediamo che abbiamo ok abbiamo 10
i minuti a sinistra hanno detto poco più di 10
bene
Quindi cerchiamo di guardare in questo modo asincrono
Ho un sacco di cose qui, tranne una
delle cose che così il concetto principale
Ho introdotto in una versione precedente di
il linguaggio stava succedendo così puoi ora
Esprimere metodi asincroni facilmente da
lì per restituire un compito come un futuro
che è qualcosa che puoi quindi aspettare
un altro metodo asincrono che sto aspettando
qui e e voi in modo da ottenere una sorta di appena
sospeso fino a quando quella cosa è completa
e poi tu ti riprendi che è tutto molto
bello ma non l’abbiamo completato
non ce ne sono pochi dove siamo noi
non riuscivo a capire come
implementare un peso e noi in un primo momento noi
pensato bene che proprio non lo fa
qualsiasi senso non è possibile non può essere
fatto e poi abbiamo spedito e poi noi
capito in realtà aveva senso e
ma era difficile da implementare ma poi noi
l’ho fatto lo stesso , adesso
così nel prendere e finalmente blocchi puoi
immagina che un peso si trasformi in uno stato
macchina dal compilatore è davvero
macchina statale complicata che puoi
immagina quindi è qualcosa come quando il
proviamo a farlo qui, quindi facciamolo
voler fare qui è quello di chiamare a
metodo di registrazione , quindi se dico repository
punto log async qui voglio aspettare che
chiama sto registrando che c’era un
eccezione ma che in sé è acing
e vuoi essere in grado di aspettare il
completamento di qualcosa di asincrono dentro
un blocco catch in questo caso qui
ma cosa succede se riesci ad immaginare il tipo di
il dolore di implementare qualcosa
così, perché questo non lo è
in realtà parliamo finalmente qui
e aspetta il repository dock chiuso così tu
penso che sia migliore di quelli che sono adesso
consentito quindi ciò che essenzialmente facciamo è noi
generare un metodo dietro le quinte
è come questo metodo, tranne che ottiene
chiamarlo viene chiamato dall’inizio
ogni volta e poi ha un mucchio di
se e rami e cose per farti arrivare
il posto tu
l’ultima volta va bene, quindi è un metodo
fa finta che inizi da dove fosse
ma dietro le quinte c’è tutto questo
logica per riportarti dove eri
quello basato su qualche stato che è stato salvato
bene il problema con esso è finalmente quello
non si tratta solo di tornare a
dove sei stato parla anche di
ricordando dove eri diretto così
capire come tenere traccia di dove siamo
dove stavamo andando dopo l’finalmente
dove ne usciremo e
eseguire la prossima dichiarazione o eravamo noi
di ritorno da questo metodo o eravamo noi
in realtà nel mezzo di un’eccezione
venendo fuori o stavamo davvero venendo
con un go- and e tenere traccia di
tutte quelle posizioni e accensione
quale di questi vado e così?
è solo un disastro ma funziona e ora
non c’è bisogno di farlo noi che potevamo fare
va bene per te nel lamentatore va bene
altre piccole cose che abbiamo adesso
filtri di eccezione in modo da poter altri
le lingue su dotnet hanno già questo
supportato diciamo che voglio solo
proprio quando capisco questo
eccezione qui ovviamente posso prenderlo
e vedere se lo volevo e buttarlo
di nuovo se non l’avessi fatto ma poi l’ho fatto saltare
lo stack di chiamate e le tracce di treta sono fuori
di whack e, se lo farò, se c’è un
scarico dopo non riesco a vedere dove il
l’eccezione originariamente da cui proviene
quindi ora puoi solo dire se e poi a
condizione qui, quindi se entrambi
occorrenze è maggiore di tre o
qualcosa del genere quindi l’ eccezione
viene catturato solo se questo è il caso e
allora puoi avere multipli ora che possiamo
avere più blocchi di cattura con lo stesso
digitare ma condizioni diverse lì
se vuoi bene, penso che sia un
buon posto dove fermarsi quindi questo è un po ‘un
ora voglio mostrarne un’altra che io
non abbiamo in realtà non abbiamo in realtà
implementato ancora ma sembra che noi
avrà il tempo di implementare anche la stringa
interpolazione che sta diventando popolare
in questi conosci queste lingue moderne
come JavaScript e così via così dentro
c-sharp devi chiamare stringa che
formato se vuoi fare qualcosa di stravagante
stringa quel formato hai a
segnaposto un numero che corrisponde a
la cosa nella lista degli argomenti al
cosa che vuoi mettere lì dentro
più tardi puoi anche fare varie cose
specificare formalmente una giustificazione e
varie cose di formattazione o qualsiasi altra cosa
vuoi fare qui vogliamo che ti permetta
semplicemente mettere espressioni all’interno del
stringa poco direttamente quindi penso che il
la sintassi finirà su questo se tu se tu
così invece di dire stringa quel formato
e tutto ciò che puoi dire una stringa
letterale e se lo metti se lo metti indietro
i tagli davanti al riccio sono qui
poi diventano fori in questo fori
nella stringa in cui è possibile inserire un
espressione quindi posso solo dire X qui e
Y e loro otterrebbero si coloreranno
ben ovviamente una volta che è implementato
sarebbero stati valutati e incollati
è lì dentro e pensa che siano un po ‘
più bello puoi ancora fare la cosa -3
o qualunque cosa tu possa ancora piacere lo farà
chiama ancora stringa o formato e ha tutto
quell’espressività ma in un molto più bello
modo e questo ci porta a cinque minuti
prima della fine della sessione e voglio
per chiederti se hai altre domande
su questo o su qualsiasi cosa tu abbia sentito
spero che tu lo faccia perché altrimenti noi
hai cinque minuti e poi lo farai
hanno ascoltarmi parlare ancora un po ‘sì
Sì, le nuove funzionalità sono piuttosto ridotte
si si questa è una bella domanda
abbiamo qualche idea su ciò che vogliamo fare
dopo si posso parlare un po ‘
su quali sono le nostre idee, non lo facciamo
può andare tutto bene, ma forse io
non l’ho detto molto chiaramente in
l’inizio ma abbiamo preso abbiamo iniziato
prendendo un approccio molto diverso a come
parliamo del futuro della lingua
invece di sedere in quello che Gilad Bracha
chiamato stanze piene di fumo e e giusto
capire il futuro segretamente noi
abbiamo iniziato a progettare all’aperto
note di progettazione sono in realtà sul
lato codeplex di cui ho parlato prima
cerca il codeplex frusciante che puoi vedere
le note di progettazione del linguaggio c-sharp come
escono così sono felice di parlare
esso
attualmente il e in realtà voi
può trovare anche una bozza di proposta per
caratteristiche e pattern di record completi
corrispondenza in c-sharp così che è uno
la direzione in cui voglio entrare c’è di più
e più bisogno di codificare con plain old
dati essenzialmente
e avere invece di farti sapere
gli oggetti sono grandi per alcune cose ma
invece di avere funzionalità avvolte
con i dati faremo spesso si
voglio solo un piccolo tipo di dati come il
puntare qui in realtà ed è di più
importante come la sua trasformazione e passato
attraverso funzioni esterne di quanto non sia
cosa può fare se stesso e e per quello
avendo la corrispondenza del modello in grado di
decomposizione diritto potendo facilmente
combinare logica di commutazione e
logica di scomposizione e e hanno
essenzialmente il tuo flusso di controllo
seguire la forma dei dati se
lo farai è qualcosa che
le lingue funzionali sono molto belle
è anche in Swift quindi sta iniziando a
insinuarsi nel mainstream e c’è un
proposta molto bella lassù per questo motivo
questo è un tema che cercheremo
a loro hanno fatto ci potrebbero essere altri che sono
un po ‘interessato a forse
guardando alcuni dei c-sharp è in genere
generalmente ha una buona prestazione ma io
penso che ci siano alcuni posti in cui il
la semantica del linguaggio ti ha costretto a
scrivi codice che non funziona
molto bene c’è molto
copia difensiva difensiva di array
e cose del genere a cui possiamo pensare
ci sono funzionalità che possiamo aggiungere per farti
scrivere codice più efficiente e questo è
un altro tema che saremo
indagando di sicuro un terzo tema
che potremmo essere alla ricerca di asincronia
è attualmente per singoli valori possiamo fare
qualcosa con raccolte asincrone
dei flussi in cui si abbassa
sopra il filo forse uno alla volta o in
pezzi e hai accesso altrettanto facile
a due caratteristiche linguistiche da affrontare
che è un’altra cosa che è sul
tavolo e potresti non vederlo mai venire
ma questo è quello che abbiamo in mente okay, sì
a proposito, lo stai guardando
cos’è che dovevo fare?
che posso vedere che succede non l’ho fatto
l’esperienza che ho fatto ho sperimentato ort of a
sottile ricorsione ma dirò che noi
hanno avuto delle analisi reciproche
inversa dove si otterrebbe sempre un
scarabocchio
Voglio dire, è possibile specificare la gravità
ne puoi fare solo informazioni
ti diranno solo cose che puoi
Silenzio loro e roba ma ecco a
ottimo esempio, la metà del mondo ama VAR
e l’altra metà odiava bene
Penso che la metà dell’amante sia probabilmente
più grande ci sono ma la gente ha
opinioni lì e quello che faremo potrebbe
essere di offrire un’analisi e fissare per prendere
var via e voglio introdurlo in tutto
i casi in cui si applica e puoi
vedi che è dove entra la semantica
perché var può essere usato solo a volte
e così lo farà sarà una fantasia
cosa che dirai oh potresti
effettivamente usare var qui se vuoi e
che ti porterà in questa infradito
ma lo faremo anche per poter girare
Diagnostica on e off in modo che le persone
lo farà è accendere uno di loro e uno
di loro fuori e avranno il diritto
comportamento no no perché l’ID non va
nel momento in cui hai visto che non potevo cliccarne uno
livello in basso a destra in modo che solo sta per
e applicherà solo il codice
risolvere quando si chiede che essa da almeno
passando sopra nel menu sopra quell’oggetto
quindi applicherò uno alla volta anche se
hai più correzioni di codice nel menu
puoi solo passare il mouse su uno alla volta e
avrai un’alternativa diversa
universi per ciascuno, anche se lo sono
se sono contrari l’ uno con l’altro
non si influenzeranno a vicenda tutti
destra Credo che abbiamo iniziato attraverso ma se
puoi venire con un esempio che sia
molto divertente
Yep mai questo è spesso riceviamo questo come
quando c-sharp diventerà C ++
nel senso che ha così tanto bagaglio
che le persone tendono ad accamparsi dentro
diversi dialetti della lingua e
no no non usare mai l’ intera lingua
e ciò potrebbe accadere un giorno, quindi noi
abbiamo essenzialmente un ritardo in
evoluzione del linguaggio abbiamo un dilemma fare
manteniamo la lingua come è piccola
e poi le persone in un po ‘ lo faranno
smettere di essere rilevanti persone giuste amano
la maggior parte di ciò che si introduce al
linguaggio da quando è stato creato dobbiamo
aggiungi cose per rimanere rilevante ma un giorno
diventerai troppo grande cosa fai
allora ti chini e muori o fai te
inizia a rimuovere il problema con
rimuovere roba è che abbiamo un forte
impegno di retrocompatibilità
Al momento siamo davvero impegnati a
essere in grado di compilare il codice C short 100
tutta la strada fino ci sono minuscola minuscola
stranezze che conosciamo ma avete il coraggio
per trovare qualcuno di loro e cioè che è un
forte proposta di valore per noi siamo noi
ho un sacco di intendo molto del nostro
i clienti aziendali hanno ragione loro
voglio essere in grado di aggiornare semplicemente
studio visivo e non preoccuparti per loro
codice sorgente tutto ad un tratto no
compilazione e dover andare in giro e
fissando un milione di piccole cose
perché pensavamo che non fosse quello
non è più bello sai che lo sai
pensavo che fossero i metodi che sei così
conosco metà degli anni 2000, ora sai che usiamo
lambda quindi buttiamoci l’ altro
cosa fuori che totalmente non avrebbe funzionato e
è solo sapere che dobbiamo o
evolviti o muori e poi vedremo cosa
succede quando si arriva troppo troppo grande
speriamo di poterlo ritardare provando a
progettare le nostre funzionalità in modo che si adattino
la lingua esistente, nonché
possibile in modo che i concetti si adattino
insieme il più possibile in modo che il
onere concettuale se si è minimi
si spera e cerca di non creare separato
modi di usare C sharp che abbiamo già creato
uno dall’inizio che non è sicuro
codice che è già uno di quelli e noi
voglio provare a non entrare in più di questo
dove hai una modalità in cui ti trovi in a
diverso tipo di diverso tipo di
mondo siamo molto calorosi a riguardo
deve essere
Sì, va bene, grazie mille
tu
Sono ESTOS e sono figlio di questa città è
bello tornare e parlerò
Lavoro per Microsoft okay um così via
squadra che sta facendo c-sharp e visual
basic e f-sharp e ne abbiamo alcuni
nuove cose nelle opere che sto per fare
Ho intenzione di condividere con voi io ho un
alcune diapositive perché voglio essere sicuro
che qualcosa per i manager nel
stanza ma dobbiamo passare la maggior parte del
tempo in Visual Studio mostrando alcuni di
la roba e e parlando del
principi in esso quindi spero che tu non lo faccia
mente che cercherò di far spazio
domande un paio di posti lungo il
come sai alzare la mano se non lo faccio
Guardalo
gridare e poi vedremo se possiamo
ottenere la domanda sulla registrazione come
bene o da un microfono che viene affrettato
al tuo posto o comprimi ripetendo il
domanda ma sono felice di rispondere alle domande
Ho intenzione di dirti quando fermarti
se non filmiamo senza
tempo quindi il principale tipo di tema per noi
e la squadra c-sharp è stata per il
durare come cinque anni o giù di lì davvero ordinamento
di un profondo profondo rinnovamento del c-sharp
compilatore che abbiamo dato in un completo
revisione lo abbiamo effettivamente riscritto
da zero questa volta in modo corretto
linguaggio di programmazione e puoi indovinare
quale che è
e l’abbiamo fatto per diverse ragioni
alcuni di loro solo noi stanno diventando più
produttivo e fiducioso nel nostro codebase
meglio e così via, ma molto ha
stato circa l’apertura del c-sharp
compilatore quindi perché il compilatore davvero
bene in un in un tradizionale
la mentalità è una scatola nera che hai spinto
codice sorgente in e alcuni eseguibili
il codice viene fuori ma non è così
gran parte della verità in questi giorni un compilatore
è davvero una specie di profondità
logica che capisce quale sia la fonte
codice significa e tu vuoi usarlo
la conoscenza che la comprensione da molti
scopi non solo per la produzione del
il codice sorgente in particolare sei
probabilmente tutto ha passato tutto il giorno dentro
degli strumenti all’interno di strumenti di sviluppo e
è importante usare quello strumento
capisce ciò che il codice è di circa e
ti dà un feedback intelligente che conosci
dal completamento automatico a
due errori al volo due refactoring
e così via vuoi capire il tuo
codice e vogliamo prenderlo
comprensione e vogliamo costruire il nostro
tutta la nostra strumentazione oltre a quella ma
vogliamo anche renderlo pubblico che vogliamo
tutti gli altri per avere la possibilità di
accedere a quella comprensione di c-sharp
codice sorgente quindi abbiamo questa API molto
modello oggetto ricco della sintassi e
semantica di c-sharp che è giusta
automaticamente disponibile quando sei in
Visual Studio è possibile collegarsi e utilizzare
questo e fare tutti i tipi di domande
riguardo al codice e lo prendiamo
noi stessi per renderlo facile da collegare a
il livello di strumento e in particolare da fare
questa API robusta ed efficiente e e
intuitivo e ti dà la possibilità di aprirli
opportunità che in precedenza solo noi
abbiamo avuto e sono pienamente consapevole che
ci sono altri strumenti là fuori
che sono state facendo questo per un po ‘così
abbiamo imparato molto da che anche noi
fatto che abbiamo preso il suo compilatore affilato e
lo mettiamo open source quindi se vuoi
aggiungi una nuova funzionalità a c-sharp sai andare
prima però arriviamo anche a richieste di pull
probabilmente non di nuove funzionalità linguistiche
proprio ora ma vai a giocare con lui vedi
come lo implementiamo e poi anche noi
ha aggiunto anche alcune nuove funzionalità linguistiche
un po ‘ come una parte mostra tutto questo
aprendo con i compilatori il principale
cosa stiamo lavorando per il prossimo
Visual Studio ma non volevamo ordinare
di prendere un tema di vediamo quanti
piccole caratteristiche che possiamo inserire nella nostra
tempo libero che aiuta a diventare piccolo
caratteristiche che aiutano a ridurre il boilerplate
e aiuta solo a rendere il codice più bello da guardare
quindi daremo un’occhiata ad alcune di queste come
bene, quindi se pensi a chi siamo noi
per questo è una specie di questo è per il
manager quanti dirigenti sono quanti
Va bene quanti sviluppatori ok buona I
pensiamo che io penso che abbiamo fatto bene
pubblicità così gli sviluppatori davvero noi
voglio solo un prodotto migliore per l’utente finale
Vogliamo un IDE più ricco che vogliamo
continua ad evolvere il linguaggio e così via
questo è stato un obiettivo principale anche qui
abbiamo tipo prendiamo l’esperienza idea
in particolare al prossimo passo e poi a noi
immagina che piaccia a molte persone
davvero un sacco di gente che abbiamo davvero cercato
per renderlo facile
andremo e arricchiremo questa esperienza come
ben basato su questa nuova comprensione
degli strumenti quindi forse farai il tuo
propria diagnostica e in un minuto in realtà
costruiremo una diagnosi insieme o
Lo farò e vedrai che siamo solo
per mostrare quanto sia facile collegarlo al
strumento in un modo molto profondo e averlo
reagire allo stesso modo con il tipo
delle cose che ti interessa mostrare
riguardo al codice nello stesso modo di
compilato nel compilatore e le regole fanno ovviamente
noi come team abbiamo un’architettura migliore
evolvere e pensiamo che questo sia un po ‘
di un investimento per i prossimi anni
per noi che possiamo rimanere vivi
perché ora abbiamo un pozzo produttivo
abbiamo architettato un codice sorgente efficiente così noi
anche come ho detto siamo anche open source
e penso che quel tipo di espansione si allarghi
il pubblico di destinazione su tutti questi livelli
qui certamente abbiamo già avuto bene
buone vibrazioni tra noi e qualunque altra cosa
i venditori di c-sharp sono là fuori
uno è presente qui in tutto ciò che è questo a
marine e parliamo di come possiamo
come possiamo usare il fatto che il
il compilatore c-sharp è ora open source
e e può essere regolato per adattarsi
diverse piattaforme per esempio e
servire bisogni diversi e noi non abbiamo
ad essere quelli che fanno tutto questo
quindi questo è il breve spunto
quello che sto per fare ora è quindi entrare
Visual Studio vedremo alcuni di
queste perienze IDX solo un po ‘
costruiremo un analizzatore personalizzato e quindi
guardiamo tutte le tue funzionalità linguistiche
destra
dovresti dire sì insegnante sì
okay grazie
Oh prima mi dimenticherò di venire
torna a questo quindi se vuoi giocare con
questo c’è un c’è un tecnico
anteprima là fuori in realtà abbiamo messo fuori noi
ne metti uno nuovo ogni sei settimane circa
Penso che probabilmente qualcuno stia uscendo
uno di questi giorni per cercare vai al tuo
motore di ricerca preferito e ricerca
Visual Studio vedi
TP e puoi scaricare una versione di
Visual Studio è una sorta di anteprima
con tutte queste cose e questo è pubblico
anteprima Userò oggi anche se
sei interessato all’open source
siamo su clic di codice del progetto
chiamato Roslyn o si chiama Roslyn così
se andate a cercarlo su CodePlex e
puoi guardare queste belle immagini
in bing quando vai a cercarlo è
davvero la pagina di ricerca più bella
puoi andare a posto così le domande avranno bisogno
più tardi, ma ora andrò in Visual
Studio e parla un po ‘di cose dentro
il giusto contesto del codice reale così
ecco alcuni successi um, sto solo suonando il codice
che sarà guardando un po ‘
oggi e così una di così una delle cose
che voglio sottolineare è che abbiamo
tipo di persone prese persone come Visual
Studio va bene e ma ha molto ha
molte caratteristiche molte campane e
fischietti ma quello che la gente a volte racconta
diteci è che non fa una cosa
che manca un po ‘è non è così
sento come se capisse abbastanza bene il mio codice
così come alcuni altri strumenti
è come se non capisse quando sono
dove sto cercando di fare e questo è davvero
perché vogliamo provare a farlo così solo io
voglio mostrare alcune cose che ho costruito
in cima alla tua API del compilatore, noi tutti
le nostre funzionalità di identificazione sono costruite sul pubblico
API Voglio dire che non abbiamo segreti
comunicazione con il compilatore tu
poteva fare tutto quello che possiamo fare in modo che un
cosa ovvia è che sai realizzare quando
qualcosa che non viene utilizzato il possibile grado fuori
se prendiamo usiamo qualcos’altro
system.com in realtà sto per sbirciare
101 delle nuove funzionalità linguistiche è possibile
importa un tipo statico e poi il suo
i membri diventano direttamente nel campo di applicazione
fammi fare questo puoi vedere che non sono io
non usando nessun membro scontato ma ora
vedi anche che il tipo statico che io
importato diventa grigio qui e io
può evidenziarlo e e correggere tutto il
occorrenze di semplificare il tipo e noi
non ho intenzione di andare troppo in profondità
intuizione profonda ma abbiamo davvero bene
la logica per la realizzazione di quando si può
semplificare qualcosa con
su di esso cambiando il suo significato andiamo anche
vai e andiamo a guardare qui e
guarda una di queste cose che siamo
gli unici che non hanno ancora
è un’esperienza di rinomina in linea dove
cadi in una variabile e tu oh
eccoci qui un po ‘è un po’
troppo tardi qui e tu semplicemente scrivi
alcune cose qui e tu lo sai
aggiornamenti in diretta ovunque così tipo di
questo è un po ‘ di base, ma
loro la cosa interessante è quella
sa davvero come sistemare l’altro
luoghi in modo tale che non lo fanno
cambia il loro significato anche se il nome è
un po ‘strano o ha un altro significato in
quello e quel luogo ho usato una parola chiave
capisce come sfuggire alla parola chiave
in altri posti se si usa , diciamo
usi un nome che come puoi vedere a
Poco più in basso il nome utente
capita di essere nel campo di applicazione in quel punto
sa come metterlo davanti e così via
quindi è solo la comprensione del linguaggio
che finalmente stiamo andando bene
se uso qualcosa che è già un
membro ti dirà questo
il refactoring introdurrà conflitti e
fatelo sapere così è quel tipo
di esperienza e noi e poi vogliamo
per essere in grado di costruire un tipo simile
di esperienza e questo è un po ‘di quello
una specie di cosa sto per mostrare ora, quindi se
lasciamo questo codice e andiamo qui
così sto andando a costruire una diagnostica che è
guarderò qualche sguardo sul codice sorgente
codice sorgente in Visual Studio e tell
tu che qualcosa non va in esso o
potrebbe essere risolto con esso e poi il mio andare
comprare per costruire una correzione del codice per risolvere il problema
ti darò il tipo di in a
senso di quanto sia facile usare un bene
modello a oggetti del codice e possiamo parlare
su alcuni aspetti di come cosa
sembra come andiamo insieme e così cosa io
appena fatto qui sta per presentare una nuova
file nuovo progetto e selezionare il tipo di
progetto chiamato diagnostica con
correzione del codice e se si crea un progetto
in quel modo arriverà ci sarà un completo
progetto a tutti gli effetti che ha un
è una diagnosi stupida ma completamente
diagnostica funzionante già lì
Ho cancellato quel codice da quello che ho
avere qui e il progetto che puoi costruire
che in due modi puoi costruire un visual
estensione di studio e v6 o puoi costruire
un nuovo file di gate e in entrambi i modi è possibile
in modo da poter installare l’estensione
oppure puoi avere quel nuovo file di gate e
e puoi fare riferimento a questo e poi
quelli di diagnostica si applicano al tuo
progetto solo tu puoi costruire questi ragazzi
e installali condividili e fallo
tutto quel genere di cose quindi proviamo a
fai uno di quelli che è questo il
parte dell’analizzatore la parte diagnostica I am a
la maggior parte di questo è stato generato per me
Sto solo implementando un’interfaccia
dicendo che io voglio il tipo di diagnostica
che guarda certi tipi di sintassi
Avvertenze i Sono un analizzatore di sintassi nota che ho appena
devi dichiarare quali tipi di sintassi
note sono interessato e poi il
lo strumento ci chiamerà ogni volta che ne avrà bisogno
soprattutto essenzialmente su ogni
battit dove il codice è in è
visibile sullo schermo lo farà lo farà
chiamaci con la nota sintassi che
potrebbe essere cambiato qui così il se
dichiarazioni e altre clausole sono quelle
Sono interessato a
se premo f5 qui se devo andare al debug
modalità all’interno di questo tipo di progetto
si inizierà un’altra versione correre
un’altra versione di Visual Studio con my
codice installato e quindi posso vederlo
lavorando così è l’ esperienza di debug
correndo stai correndo eri
diagnosticato di nuovo lo strumento quindi se lo faccio
qui puoi vedere che apro il nostro prima
Non ho ancora una diagnosi, quindi è così
non farò altro che quello che posso
usa questo per dirti che tipo di
diagnostica sto andando a scrivere quindi è così
una questione di stile è male per di più
alcune persone consideravano una cattiva forma
una dichiarazione in e se quello non è
circondato da Curly che non è un blocco
e così vogliamo identificare quei posti
e offriti di sistemarli e un altro simile
clausole tranne se è un altro – se poi
non vogliamo il se essere in parentesi così
quindi scriviamo la logica per affrontare
così tornerò al mio progetto qui
tutto quello che devo fare è dichiarare il mio
interesse per le dichiarazioni if e e
altre clausole e poi tutto quello che devo fare
qui è quello di vedere io sono in nella
situazione che voglio e voglio
dare una diagnosi e se così creare il
diagnostica quindi vogliamo solo iniziare
arrivando puoi vedere che mi chiamano
con varie cose mi chiamano con a
nota di sintassi e poi un po ‘di semantica
informazioni che ho intenzione di non andare
per usarlo, ma ne ottieni di tutti i tipi
informazioni vincolanti e così via così puoi
in realtà non basta guardare la forma di a
albero di sintassi ma ma ho aggiunto come funziona
come fanno le cose a legare cosa significano e
e tu stai impostando la tua diagnosi, così siamo
andando a prendere solo quella nota che abbiamo ottenuto
e vedere è in realtà una dichiarazione if
quindi lo consideriamo come una sintassi dell’istruzione if
e se questo non è noto, allora siamo in ordine
di là, quindi, abbiamo ragione
vicinanza qui nel quartiere giusto
e quindi pensiamo a cosa sono
loro qual è la logica per stabilire
che vogliamo evidenziare questo come a
problema bene se è così una delle cose
dobbiamo pensare è che la maggior parte di
il tempo in cui sei nello strumento il tuo codice
non è corretto , stai digitando in anticipo
è solo in realtà è l’eccezionale
casi in cui il tuo codice è effettivamente pari
analizza o figuriamoci compila così noi di
Certo che dobbiamo affrontare un modello che
ha tolleranza agli errori e così abbiamo
euristiche davvero buone per la costruzione
un albero quando il codice non è tranquillo
corretta e se ci troviamo vogliamo solo
per controllare non riesco davvero a ricordare se
puoi mai entrare in un
situazione in cui l’istruzione if la
l’istruzione nidificata è nullo ma facciamo solo
assume puoi quindi cerchiamo di verificare che essa
non è e quindi siamo interessati al
luoghi in cui non è già un blocco così
se non la dichiarazione if è il se
la dichiarazione di dichiarazioni è un blocco noi
non è la sintassi di operatore gentile qui
tipo che blocca già un blocco visitatore
poi vogliamo dire alla gente che
dovrebbe essere e lo facciamo e basta
creando un diagnostico e dicendo
esattamente dove dove mettere un po ‘
linea ondulata sotto
quindi prendiamo una posizione per il ghirigoro
se agitiamo solo il
diciamo che agitiamo solo la parola chiave if in
l’affermazione if così diciamo che se fosse
punto di dichiarazione se la parola chiave è visibile
è un modello a oggetti dell’istruzione if
Posso semplicemente fermarmi e possiamo ottenere il
posizione di quello che sarà a
span di due caratteri da qualche parte in una fonte
codice e quindi vogliamo creare un
diagnostico da quello è uguale a quello che ho fatto io
fare qualcosa di sbagliato
oh non ho fatto niente di sbagliato è solo
un po ‘lento indica il punto diagnostico
creare così è tutto come standard
codice di livello qui ho già un
descrittore che ho creato più in alto
lì abbiamo appena ottenuto la posizione e noi
avere un messaggio qui vogliamo dire
quale sia l’ argomento arco che è se
la dichiarazione è un’affermazione se la mia se
la dichiarazione deve avere parentesi create a
diagnostica e vorrei solo aggiungere
quella diagnostica chiamando un delicato
questo è stato passato in noi qui così ora ho
fatto tutto ciò di cui ho bisogno per fare questo è tutto
Devo fare ora per collegare lo strumento
e per vedere che facciamolo entrare
il debugger e tu puoi vedere
cosa abbiamo conseguito e cosa speriamo di vedere
è quello che ora è nostro se è lì dentro?
strisciante con un piccolo ghirigoro verde
ovviamente questo richiede un po ‘di tempo qui
andiamo si sta scaldando ora lo farà ora
mostra piccoli scarabocchi che rappresentano
esattamente quello che abbiamo chiesto giusto così
non era male , non è male e tu
può effettivamente vedere scusa per il passaggio del mouse qui
sarà anche l’ Italia che me ne darà un po ‘
opzioni uno di loro purtroppo tutto
le opzioni qui ho solo soppresso il
avviso che abbiamo appena creato così ciò che noi
voglio fare ora è costruire una diagnosi
o costruire una correzione del codice che può andare
in questo menu e offrire l’opportunità
per risolvere il problema in modo se andiamo fuori
anche qui dovremmo avere anch’io
sistemato così puoi vedere che è andato
via, ma spero che ti fideresti di me per quello
prima di tutto facciamo questo e basta
incolla in un codice che fa lo stesso
analisi per classi ELL
e poi andiamo a costruire una correzione del codice
fornitore ed è lo stesso tipo di idea
noi questo è un metodo che viene chiamato
ogni volta che questo codice ce n’è
mumbo-jumbo per associare questa correzione con
la diagnosi che hai visto prima ogni volta
la diagnostica è questa correzione del codice ottiene
chiamato e otteniamo un metodo invocato
qui con il documento che è un oggetto
modello dell’intero pezzo di codice in
lì e il testo span per dove
la diagnosi è così poco se
lì e ora possiamo andare ora andiamo
scavando nel documento otteniamo il
sintassi la radice dell’albero della sintassi noi
chiedi il token nel ho già scritto
parte del codice qui chiediamo il caso
token in là troviamo il suo genitore il se
affermazione controlliamo che sia un if
dichiarazione e ora abbiamo il se
dichiarazione di nuovo così ora diventa
interessante come faccio a come realmente
fai il cambio di codice e qui arriva il
il principio importante qui è tutto
alberi di sintassi e tutte le nostre strutture di dati
sono immutabili ok abbiamo un immutabile
modello oggetto così così ogni volta che colpisci un
chiave ottieni un nuovo albero di sintassi nuovo
è quasi come il vecchio ma è così
leggermente diverso tutto bene
e facciamo tutto il lavoro dietro le quinte
per renderlo efficiente facendo condivisione
ed essere pigro e ogni tipo di roba
abbiamo questo è quello che abbiamo trascorso cinque anni
ottenere questa roba efficiente e così via
quello che ho in modo che significa che se devo
creare una nuova versione di I in realtà
per creare una nuova versione di tutti questi
note non posso semplicemente modificarli con con
il compito giusto, quindi devo creare
un nuovo if if così perché
è per questo che sei interessante?
ascolta altri discorsi domani
immutabilità se sei interessato a
quei modelli ma perché è interessante
farlo così bene tu pensi che sia
irrimediabilmente inefficiente ma in realtà
ottimo perché quando hai immutabile
strutture dati puoi paralizzare il
diamine dalle cose e lo facciamo quando
compiliamo ma significa anche che tu
può avere più versioni di questi
alberi vivi allo stesso tempo senza
ci sono conflitti e stiamo andando a
vedi che in effetti è così ciò che tu
spesso questo è un modello comune con
con strutture dati immutabili che hai
Withers dove puoi chiamare
ottenere una versione che è leggermente diversa
dove tu dove sostituisci uno dei
cose lì dentro in modo che possiamo sostituire il
dichiarazione con una dichiarazione di blocco di
andando a peccato abbiamo una fabbrica di sintassi
dove possiamo ottenere un blocco e all’interno di
quel blocco che stiamo per mettere il
affermazione che avevamo prima se
dichiarazione allo stato
tutto bene ora non abbiamo un nuovo se
dichiarazione con cosa abbiamo intenzione di fare
bene, dobbiamo metterlo in un nuovo
sintassi root quindi dobbiamo dire nuovo
perché e dobbiamo creare un nuovo
albero di sintassi per l’intera cosa in cui noi
sostituire lo stesso principio di nuovo dove
sostituiamo la vecchia istruzione if con
nuova affermazione se vogliamo dire
root duh sostituire sostituire il nodo che sostituiamo
la dichiarazione if con il nuovo if
dichiarazione, ma ancora una volta si ottiene il
blocco di questo stile di programmazione è
davvero super facile e ora abbiamo bisogno di
incollare quella nuova radice in un nuovo documento
è proprio come il vecchio documento eccetto
che ha un nuovo albero di sintassi all’interno di
il nuovo documento equivale al punto del documento ora
diciamo con sintassi root e usiamo nel tuo
Road e ora abbiamo creato un
albero di sintassi alternativo per il foro
buffer che è solo un po ‘ diverso
e ora tutto ciò che dobbiamo fare è installare
che come azione di codice quindi creiamo un
codice azione scusa codice a barre un codice azione
equivale a codice azione creaci abbiamo a
stringa che dice aggiungere parentesi questo è il
roba che andrà lì dentro nel menu
che selezioniamo le nostre correzioni da e ora noi
ho bisogno di un nuovo nuovo documento qui e ora
abbiamo detto all’azione del codice
tutto ciò di cui abbiamo bisogno di sapere di cui abbiamo bisogno
per restituirlo lo trasformiamo in un array
perché ci può essere più di un codice
azione associata ad un dato drago
diagnostica in modo da restituire solo un array di
uno qui va bene
e quello è andato a correre così e così è
tutto quello che fai e quello che puoi
immagina di farlo da solo che puoi
immagina di costruire qualcosa
Diagnostica che mantiene gli stili
che vuoi all’interno della tua azienda e
distribuirli a tutti con il codice
correzioni si può immaginare penso che questo è un
scenario importante che puoi immaginare
scrivere biblioteche per pensare a JSON
dotnet o altre librerie che vengono con
correzioni di codice e diagnostica che ti aiutano
usa quelle quelle librerie direttamente è
un po ‘come i commenti scuri sugli steroidi
Giusto tu non ottieni solo
documentazione con la libreria che ottieni
guida automatica su come usarlo e
Penso che sara ‘credo
quello sarà uno scenario importante
per questo quindi ora con un piccolo aiuto per
i miei amici penso che ora ho un
voce di menu in più qui aggiungere parentesi graffe e voi
vederlo in realtà ha un’anteprima del
il codice qui non è così bella
perché non abbiamo aggiunto la formattazione, non lo sono
lo farò perché è molto , è un
linea aggiuntiva di codice da aggiungere per formattarlo
correttamente ma puoi vederlo in
anteprima
ci sono i ricci intorno al
se la dichiarazione di affermazioni qui è possibile
vedi anche da dove viene questa anteprima
da dove pensi che proviene da
è si tratta di un rendering di che
albero alternativo che abbiamo costruito abbiamo
quindi avendo questi due differenti sintassi
alberi due versioni di esso si può si può
mostra uno in un’anteprima puoi avere un
sbirciare nell’universo alternativo che
si avvererà se seleziono questo codice
azione giusta puoi vedere che è pari
anche solo mostra scarabocchi lasciami anche solo
mostra scarabocchi per le altre cose
perché sta eseguendo il nostro analizzatore
in modo ricorsivo lì così una buona cosa
che non posso cliccare qui e ottenere un
lampadina giusta perché altrimenti tu
potrebbe arrivare fino in fondo al coniglio
buco visto che è uno dei tanti
aspetti forti di avere questo immutabile
modello di codice, ecco tutto quello che sto per fare
dite su Diagnostics e io voglio
Pausa rapidamente per domande qui e vedere
se tu ne hai qualcuno , lo spendiamo
circa cinque minuti se hai domande
e questo
i nostri commenti e tu fai così vediamo se
possiamo così JetBrains quindi la domanda è
su JetBrains e se ne abbiamo
interazione con loro ovviamente questo è
sorta di entrare nel territorio dei jetbrain
e il territorio di coderush e abbiamo avuto
diversi noi interagiamo con i loro partner
noi buoni amici però loro fanno il loro
JetBrains viventi fanno la loro vita da
avere un modello di codice molto dettagliato
quello che capiscono e costruiscono
strumenti in cima a quello che la gente vuole
per pagare e ora quello che siamo
essenzialmente fare è fare un modello
un po ‘come quello e rendendolo
disponibile a tutti quindi siamo un po ‘
come minacciandoli un po ‘da
sotto in questo senso ora tutti possono farlo
alcuni di quello che fanno ma io penso per
JetBrains hanno alcuni molto avanzati
cose e che stanno andando a sopravvivere
va bene perché loro perché sono
sarà meglio di chiunque altro
costruendo quelli su cui lavora
superiore anche se c’è un modello pubblico come
per quanto ne so essi bloccano che lo faranno
in realtà non passare a utilizzare il nostro nostro
il modello sotto continueranno a correre
la propria analisi e il proprio
che può essere un po ‘ una performance
problema penso ma vedremo forse loro
può fare una specie di cosa ibrida o
qualunque cosa per accelerare un rush di codice
in realtà hanno annunciato di essere
andando a passare al nostro modello e
e semplicemente costruisci sopra ma è così
un interessante Insomma è una specie di
cambiare il gioco invece di avere un
pochi fornitori abbiamo un chiuso abbiamo a
scatola chiusa che nessuno può usare a
preziosa conoscenza della lingua, se vuoi
e poi ci sono questi proprietari
strumenti che costruiscono la propria analisi e
lavora su questo e ora stiamo democratizzando
quell’analisi e rendendola disponibile
tutti e almeno al minimo
end o midlow al MIT e tutti possono
gioca molto facilmente e quello sarà
cambia il gioco penso molto
in modo significativo
Va bene che era un sì
puoi trasformarlo in una macro conforme
struttura sì, probabilmente è possibile che tu abbia bisogno
una lingua macro sopra e poi
lavorare con questi modelli che tipo di
rientra nella categoria dei meta
programmando puoi immaginare tutti i tipi
di diverse meta programmazioni varie
meccanismi generativi che produrrebbero
codice o trasforma codice o aggiungi cose a
codice e questo è in realtà come è stato
la motivazione originale per pareggiare
iniziando questo progetto ma lungo la strada
abbiamo deciso ok ora non è il momento di farlo
indirizzare la meta-programmazione in modo tale che l’abbiamo esaminata
fuori e ha deciso di affrontare gli strumenti e
e una sorta di oggetti di valore di base per il
milioni ma penso che sia così
sicuramente un posto dove andare in futuro
con questo e noi ne sono sicuro
ci saranno molte persone là fuori
quello cambierà questo qualunque loro modo
possiamo e li guarderemo e vedremo
quali sono le cose che stanno cercando di fare
che non possono ancora fare ancora o quello
stanno facendo in un modo molto arkla
e considerare se dovremmo sostenere
quello più direttamente in una versione futura
quindi penso che sia davvero interessante
spazio solo questo è un passo verso di esso
non siamo ancora lì, probabilmente alcuni
le cose possono essere fatte già ma non
tutto e certamente non abbiamo progettato
per ora va bene, comunque penso di no
guarda le mani , accendimi in faccia , no
vedere le mani quindi andrò al prossimo bit
quindi l’ altra cosa che ti ho detto io
ti ho promesso ne parlerei un po ‘
è il nuovo set di funzionalità del linguaggio visto
in c-sharp è una specie di luce e e
e ammettiamo che non è questo
focus principale non volevamo avere un grande
il tema è abbastanza folle com’è
questo con le cose a livello di API così
essenzialmente stiamo solo cercando
opportunità di rimuovere alcuni
codice boilerplate e fare le cose a
po ‘più facile e sto andando mostrarvi
alcuni di quelli e devo dire questo
questa è una specie di work in progress II
sappi che alcune delle cose che sono sono
mostrerò che probabilmente no
in realtà arriva fino al prodotto e
So anche che alcune cose intorno al
modo che non sono ancora in questo prototipo
portarlo con un sacco di grani di sale
hai già visto una caratteristica della lingua
l’uso di membri statici qui possiamo
fai un altro usando il sistema in matematica
sai che sarà comune
Voglio essere in grado di dire radice quadrata
invece della matematica la radice quadrata
soprattutto se sto facendo un sacco di matematica
vedi la matematica le radici quadrate qui
ora è in grigio
non è meraviglioso prenderlo e basta
buttalo nella spazzatura proprio lì
giusto e quindi sicuramente conosci solo il
capacità di ottenere funzioni di alto livello
essenzialmente che è stato così
manca per molto tempo altre lingue
avere questo questo è un programma che solo
crea una serie di punti rivolti alcuni
in Jason e per incent di nuovo
quindi è un programma davvero poco interessante
e poi la parte più interessante è
solo guardando quali sono le cose che siamo
può fare all’interno di questa classe
dichiarazione qui così una cosa che abbiamo
giocato con e devo ammetterlo
questa è probabilmente la cosa che potrebbe non farlo
farlo per ragioni di costo lungo la strada
sta mettendo mettendo costruttivo
parametri direttamente sulla classe che chiamiamo
questo costruttori primari e permettendo
basta inserire parametri in ambito e
inizializzare direttamente da loro nel
classe e sbarazzarsi di sbarazzarsi del
costruttore quindi è una specie di piacevole a
bel tipo di risparmio di spazio, ma lo facciamo
voglio andare un po ‘oltre il
cose che io penso con c-sharp noi per
da molto tempo ci siamo sentiti come se mi avessi visto
fai tutto questo con un immutabile
modello oggetto è stato bello scrivere che
modello di oggetto immutabile è un po ‘ di a
il dolore in c-sharp in realtà è molto
più facile quando sei mutabile, abbiamo tutto
tipi di cose obiettano gli inizializzatori e
proprietà auto e così via che ha aiutato
l’immutabile va ad aiutare le persone mutabili
giusto e cosa vogliamo fare anche qui
è cercare di livellare un po ‘il campo di gioco
e rendi più facile essere immutabile
okay e quindi dove prima se tu
voluto non avere un campo di supporto
esplicitamente nel tuo codice ma ce l’hai
generato hai dovuto avere un auto
proprietà e per poterti dire allora
devi avere un setter e cosa
le persone fanno a volte e fanno il set
di privato quindi è un po ‘come
non c’era
quello che stiamo ora aggiungendo è invece il
possibilità di avere solo un getter solo auto
proprietà e si può ottenere un valore in
Là
inizializzandolo , per esempio, così posso
inizializzalo direttamente qui perché noi
anche ora si inizializza in Auto
problemi quindi le cose diventano un po ‘ più a
un po ‘più conciso qui e ora possiamo
guarda questo è il prototipo che ho fatto
non vuole che ciò accada va bene
Ho congelato qui succede sempre quando
stanno registrando giusto ora per
raccontare barzellette
questo-questo-questo si è bloccato molto male
non l’ho visto prima d’ora
ha bisogno di scoprire quello che era
avere problemi
ora sta ricominciando così il generale
la cosa qui ti consente solo di non farlo
molto sull’aggiunta di nuovi concetti l’ultima volta
abbiamo aggiunto il concetto di async il tempo
prima di ciò avevamo il concetto di
dinamico sebbene fossero entrambi ciò che sono
chiedendo di recuperare i file sì, penso di si
questa volta non si tratta di aggiungere
nuovi concetti si tratta solo di fare di più
chiaro quello che hai già così sperabilmente
queste nuove funzionalità dovrebbero fondersi
nello sfondo vediamo quanta
ricorda di quello che non ho fatto molto io
ricorda i parametri del costruttore
là fuori così andiamo a sua volta questi in
proprietà auto di nuovo e vedere se ottiene
ci mettiamo nei guai, okay, eccoci qui
quindi queste cose solo per fare il codice
guarda più leggero ed esprimi il tuo intento
un modo più conciso che è quello che noi
erano dopo ok quindi questo è ora valido
codice c-sharp e molto più leggero di quello
hai avuto prima un’altra cosa sei tu
avete questi spesso li avete proprio questi
metodi semplici e proprietà che sono
essenzialmente solo un singolo ritorno
dichiarazione con un’espressione in tal modo
c’è un sacco di peluria intorno a questo
singola espressione per vedere cosa
effettivamente fa e in realtà in lambda
espressioni per molte versioni che abbiamo avuto
la scelta tra voglio un pieno
corpo della dichiarazione o vuoi solo un
espressione per il risultato e ora siamo
aggiungendo questa scelta
a tutti i membri della funzione quindi penso questo
è abbastanza questo sarà abbastanza
cambia significativamente ciò che sembra
quando guardi sopra una classe e di nuovo
è davvero solo zucchero sintattico
ma essere in grado di usare la freccia lambda
di nuovo spero che ti piaccia e che tu sia in grado
per dire questo invece dove sei solo
dire che due stringhe è una funzione
restituisce il risultato di questa espressione I
penso che sia carino e con
proprietà questa è una proprietà calcolata
ho solo un getter il getter è
valutato ogni volta solo un singolo
Espressione in là noi realmente andiamo a
fare un passo avanti e ti lasciamo solo
eliminare entrambi i casi in cui dici get e
dove hai tutti i ricci e
ritorna e così via così ottengo la nostra unica auto
proprietà di nuovo scusate una proprietà calcolata
ora può apparire solo come questo tutto bene
solo che è ancora proprietà che puoi librare
qui e puoi vedere questa proprietà
con il getter ma è super-come
dì ogni volta che le persone chiedono il dist
dai loro il risultato di questo va bene così
membri della funzione corposa espressione noi
chiama questo okay, parliamo di
gli operatori condizionali nulli vanno bene
quindi, nel bene o nel male, abbiamo il nullable
tipi di riferimento e solo nullable
riferimento tipi e vedere che noi non siamo
cambierà che non stiamo andando a
aggiungi un concetto di nessun riferimento nullable
tipi perché è un dolore che abbiamo provato
non può capirlo si può è facile
progettare un linguaggio da zero con quello
ma è davvero difficile aggiungere dopo
fatto, ma quello che possiamo fare è quello di rendere
più facile per te da affrontare quando tu
avere valori nulli quindi diciamo che questo tentativo
ottieni il metodo int qui che prova a prendere
qualche jason e trasformalo in un int, facciamolo
Diciamo che vogliamo che tu possa vederlo
non robusto qui se è se ottiene un
la conoscenza è un ritorno falso, forse noi
potrebbe sbarazzarsi di tutte queste righe di null
controllando che abbiamo tutto il codice
e dì semplicemente diciamo, passiamo a dire
che questo riduca una versione punto questione
del punto che dice se Jason non lo è
Null allora puntare in esso e restituire il
altrimenti torna tutto bene così ora tu
ottenere il tipo qui è un è una struttura qui
ora ottieni la versione nullable di quello
struct ma è possibile passare in annullabile
cose così ora cadrebbe
il caso predefinito qui perché nel caso
Jason per vendere se stesso è nullo quindi lo farà
cadiamo nel caso predefinito che possiamo
effettivamente svolgere il compito qui e
mettilo lì perché ora abbiamo un
interruttore totale e tutto ciò che jason
può essere così chiamiamo questo qualcuno chiama
questo gli operatori di Elvis e pochi altri
lingue puoi vedere i due occhi
e il ciuffo ribelle, se si guarda al tipo di
questo come emoticon, ecco perché è così
perché si chiama così l’operatore Elvis
puoi farlo anche per altre cose
il metodo che chiama il metodo che abbiamo visto
prima di qui prova a ottenere int puoi anche tu
puoi anche fare l’indicizzazione delle domande così sei
dicendo il risultato qui di questo
espressione è nullo se jason è nullo
altrimenti è il risultato dell’essere
indicizzazione in esso con con x qui e
lì il lato destro non ottiene
valutato a meno che non sia la sinistra
lato mano non era nullo e puoi catena
questi quindi l’intera catena di punti e e
indicizzazione e invocazioni in realtà di
metodi e cose così che l’intera catena è
viene valutato solo se non hai avuto un
tutti fuori davanti si può immaginare che per
una delle cose più fastidiose in
c-sharp non ne ho un esempio in
ecco il modo sicuro per farlo
innesca un evento tutto bene quanti
le persone sono programmatori c-sharp e e
e maledica questo thread senza maledizione
evento che non fa scattare lo sheesh
i programmatori stanno bene iniziamo con quello
alcuni devi controllare se il delegato
stai invocando è nullo quindi devi
assicuratevi di prendere una copia di esso
perché deve essere thread sicuro quindi se
quindi non controlli che sia nullo e poi esso
diventa nulla prima che tu decida di no
per farlo o viceversa adesso
puoi farlo in una sola dichiarazione
con un operatore punto interrogativo ok
vediamo che abbiamo ok abbiamo 10
i minuti a sinistra hanno detto poco più di 10
bene
Quindi cerchiamo di guardare in questo modo asincrono
Ho un sacco di cose qui, tranne una
delle cose che così il concetto principale
Ho introdotto in una versione precedente di
il linguaggio stava succedendo così puoi ora
Esprimere metodi asincroni facilmente da
lì per restituire un compito come un futuro
che è qualcosa che puoi quindi aspettare
un altro metodo asincrono che sto aspettando
qui e e voi in modo da ottenere una sorta di appena
sospeso fino a quando quella cosa è completa
e poi tu ti riprendi che è tutto molto
bello ma non l’abbiamo completato
non ce ne sono pochi dove siamo noi
non riuscivo a capire come
implementare un peso e noi in un primo momento noi
pensato bene che proprio non lo fa
qualsiasi senso non è possibile non può essere
fatto e poi abbiamo spedito e poi noi
capito in realtà aveva senso e
ma era difficile da implementare ma poi noi
l’ho fatto lo stesso , adesso
così nel prendere e finalmente blocchi puoi
immagina che un peso si trasformi in uno stato
macchina dal compilatore è davvero
macchina statale complicata che puoi
immagina quindi è qualcosa come quando il
proviamo a farlo qui, quindi facciamolo
voler fare qui è quello di chiamare a
metodo di registrazione , quindi se dico repository
punto log async qui voglio aspettare che
chiama sto registrando che c’era un
eccezione ma che in sé è acing
e vuoi essere in grado di aspettare il
completamento di qualcosa di asincrono dentro
un blocco catch in questo caso qui
ma cosa succede se riesci ad immaginare il tipo di
il dolore di implementare qualcosa
così, perché questo non lo è
in realtà parliamo finalmente qui
e aspetta il repository dock chiuso così tu
penso che sia migliore di quelli che sono adesso
consentito quindi ciò che essenzialmente facciamo è noi
generare un metodo dietro le quinte
è come questo metodo, tranne che ottiene
chiamarlo viene chiamato dall’inizio
ogni volta e poi ha un mucchio di
se e rami e cose per farti arrivare
il posto tu
l’ultima volta va bene, quindi è un metodo
fa finta che inizi da dove fosse
ma dietro le quinte c’è tutto questo
logica per riportarti dove eri
quello basato su qualche stato che è stato salvato
bene il problema con esso è finalmente quello
non si tratta solo di tornare a
dove sei stato parla anche di
ricordando dove eri diretto così
capire come tenere traccia di dove siamo
dove stavamo andando dopo l’finalmente
dove ne usciremo e
eseguire la prossima dichiarazione o eravamo noi
di ritorno da questo metodo o eravamo noi
in realtà nel mezzo di un’eccezione
venendo fuori o stavamo davvero venendo
con un go- and e tenere traccia di
tutte quelle posizioni e accensione
quale di questi vado e così?
è solo un disastro ma funziona e ora
non c’è bisogno di farlo noi che potevamo fare
va bene per te nel lamentatore va bene
altre piccole cose che abbiamo adesso
filtri di eccezione in modo da poter altri
le lingue su dotnet hanno già questo
supportato diciamo che voglio solo
proprio quando capisco questo
eccezione qui ovviamente posso prenderlo
e vedere se lo volevo e buttarlo
di nuovo se non l’avessi fatto ma poi l’ho fatto saltare
lo stack di chiamate e le tracce di treta sono fuori
di whack e, se lo farò, se c’è un
scarico dopo non riesco a vedere dove il
l’eccezione originariamente da cui proviene
quindi ora puoi solo dire se e poi a
condizione qui, quindi se entrambi
occorrenze è maggiore di tre o
qualcosa del genere quindi l’ eccezione
viene catturato solo se questo è il caso e
allora puoi avere multipli ora che possiamo
avere più blocchi di cattura con lo stesso
digitare ma condizioni diverse lì
se vuoi bene, penso che sia un
buon posto dove fermarsi quindi questo è un po ‘un
ora voglio mostrarne un’altra che io
non abbiamo in realtà non abbiamo in realtà
implementato ancora ma sembra che noi
avrà il tempo di implementare anche la stringa
interpolazione che sta diventando popolare
in questi conosci queste lingue moderne
come JavaScript e così via così dentro
c-sharp devi chiamare stringa che
formato se vuoi fare qualcosa di stravagante
stringa quel formato hai a
segnaposto un numero che corrisponde a
la cosa nella lista degli argomenti al
cosa che vuoi mettere lì dentro
più tardi puoi anche fare varie cose
specificare formalmente una giustificazione e
varie cose di formattazione o qualsiasi altra cosa
vuoi fare qui vogliamo che ti permetta
semplicemente mettere espressioni all’interno del
stringa poco direttamente quindi penso che il
la sintassi finirà su questo se tu se tu
così invece di dire stringa quel formato
e tutto ciò che puoi dire una stringa
letterale e se lo metti se lo metti indietro
i tagli davanti al riccio sono qui
poi diventano fori in questo fori
nella stringa in cui è possibile inserire un
espressione quindi posso solo dire X qui e
Y e loro otterrebbero si coloreranno
ben ovviamente una volta che è implementato
sarebbero stati valutati e incollati
è lì dentro e pensa che siano un po ‘
più bello puoi ancora fare la cosa -3
o qualunque cosa tu possa ancora piacere lo farà
chiama ancora stringa o formato e ha tutto
quell’espressività ma in un molto più bello
modo e questo ci porta a cinque minuti
prima della fine della sessione e voglio
per chiederti se hai altre domande
su questo o su qualsiasi cosa tu abbia sentito
spero che tu lo faccia perché altrimenti noi
hai cinque minuti e poi lo farai
hanno ascoltarmi parlare ancora un po ‘sì
Sì, le nuove funzionalità sono piuttosto ridotte
si si questa è una bella domanda
abbiamo qualche idea su ciò che vogliamo fare
dopo si posso parlare un po ‘
su quali sono le nostre idee, non lo facciamo
può andare tutto bene, ma forse io
non l’ho detto molto chiaramente in
l’inizio ma abbiamo preso abbiamo iniziato
prendendo un approccio molto diverso a come
parliamo del futuro della lingua
invece di sedere in quello che Gilad Bracha
chiamato stanze piene di fumo e e giusto
capire il futuro segretamente noi
abbiamo iniziato a progettare all’aperto
note di progettazione sono in realtà sul
lato codeplex di cui ho parlato prima
cerca il codeplex frusciante che puoi vedere
le note di progettazione del linguaggio c-sharp come
escono così sono felice di parlare
esso
attualmente il e in realtà voi
può trovare anche una bozza di proposta per
caratteristiche e pattern di record completi
corrispondenza in c-sharp così che è uno
la direzione in cui voglio entrare c’è di più
e più bisogno di codificare con plain old
dati essenzialmente
e avere invece di farti sapere
gli oggetti sono grandi per alcune cose ma
invece di avere funzionalità avvolte
con i dati faremo spesso si
voglio solo un piccolo tipo di dati come il
puntare qui in realtà ed è di più
importante come la sua trasformazione e passato
attraverso funzioni esterne di quanto non sia
cosa può fare se stesso e e per quello
avendo la corrispondenza del modello in grado di
decomposizione diritto potendo facilmente
combinare logica di commutazione e
logica di scomposizione e e hanno
essenzialmente il tuo flusso di controllo
seguire la forma dei dati se
lo farai è qualcosa che
le lingue funzionali sono molto belle
è anche in Swift quindi sta iniziando a
insinuarsi nel mainstream e c’è un
proposta molto bella lassù per questo motivo
questo è un tema che cercheremo
a loro hanno fatto ci potrebbero essere altri che sono
un po ‘interessato a forse
guardando alcuni dei c-sharp è in genere
generalmente ha una buona prestazione ma io
penso che ci siano alcuni posti in cui il
la semantica del linguaggio ti ha costretto a
scrivi codice che non funziona
molto bene c’è molto
copia difensiva difensiva di array
e cose del genere a cui possiamo pensare
ci sono funzionalità che possiamo aggiungere per farti
scrivere codice più efficiente e questo è
un altro tema che saremo
indagando di sicuro un terzo tema
che potremmo essere alla ricerca di asincronia
è attualmente per singoli valori possiamo fare
qualcosa con raccolte asincrone
dei flussi in cui si abbassa
sopra il filo forse uno alla volta o in
pezzi e hai accesso altrettanto facile
a due caratteristiche linguistiche da affrontare
che è un’altra cosa che è sul
tavolo e potresti non vederlo mai venire
ma questo è quello che abbiamo in mente okay, sì
a proposito, lo stai guardando
cos’è che dovevo fare?
che posso vedere che succede non l’ho fatto
l’esperienza che ho fatto ho sperimentato ort of a
sottile ricorsione ma dirò che noi
hanno avuto delle analisi reciproche
inversa dove si otterrebbe sempre un
scarabocchio
Voglio dire, è possibile specificare la gravità
ne puoi fare solo informazioni
ti diranno solo cose che puoi
Silenzio loro e roba ma ecco a
ottimo esempio, la metà del mondo ama VAR
e l’altra metà odiava bene
Penso che la metà dell’amante sia probabilmente
più grande ci sono ma la gente ha
opinioni lì e quello che faremo potrebbe
essere di offrire un’analisi e fissare per prendere
var via e voglio introdurlo in tutto
i casi in cui si applica e puoi
vedi che è dove entra la semantica
perché var può essere usato solo a volte
e così lo farà sarà una fantasia
cosa che dirai oh potresti
effettivamente usare var qui se vuoi e
che ti porterà in questa infradito
ma lo faremo anche per poter girare
Diagnostica on e off in modo che le persone
lo farà è accendere uno di loro e uno
di loro fuori e avranno il diritto
comportamento no no perché l’ID non va
nel momento in cui hai visto che non potevo cliccarne uno
livello in basso a destra in modo che solo sta per
e applicherà solo il codice
risolvere quando si chiede che essa da almeno
passando sopra nel menu sopra quell’oggetto
quindi applicherò uno alla volta anche se
hai più correzioni di codice nel menu
puoi solo passare il mouse su uno alla volta e
avrai un’alternativa diversa
universi per ciascuno, anche se lo sono
se sono contrari l’ uno con l’altro
non si influenzeranno a vicenda tutti
destra Credo che abbiamo iniziato attraverso ma se
puoi venire con un esempio che sia
molto divertente
Yep mai questo è spesso riceviamo questo come
quando c-sharp diventerà C ++
nel senso che ha così tanto bagaglio
che le persone tendono ad accamparsi dentro
diversi dialetti della lingua e
no no non usare mai l’ intera lingua
e ciò potrebbe accadere un giorno, quindi noi
abbiamo essenzialmente un ritardo in
evoluzione del linguaggio abbiamo un dilemma fare
manteniamo la lingua come è piccola
e poi le persone in un po ‘ lo faranno
smettere di essere rilevanti persone giuste amano
la maggior parte di ciò che si introduce al
linguaggio da quando è stato creato dobbiamo
aggiungi cose per rimanere rilevante ma un giorno
diventerai troppo grande cosa fai
allora ti chini e muori o fai te
inizia a rimuovere il problema con
rimuovere roba è che abbiamo un forte
impegno di retrocompatibilità
Al momento siamo davvero impegnati a
essere in grado di compilare il codice C short 100
tutta la strada fino ci sono minuscola minuscola
stranezze che conosciamo ma avete il coraggio
per trovare qualcuno di loro e cioè che è un
forte proposta di valore per noi siamo noi
ho un sacco di intendo molto del nostro
i clienti aziendali hanno ragione loro
voglio essere in grado di aggiornare semplicemente
studio visivo e non preoccuparti per loro
codice sorgente tutto ad un tratto no
compilazione e dover andare in giro e
fissando un milione di piccole cose
perché pensavamo che non fosse quello
non è più bello sai che lo sai
pensavo che fossero i metodi che sei così
conosco metà degli anni 2000, ora sai che usiamo
lambda quindi buttiamoci l’ altro
cosa fuori che totalmente non avrebbe funzionato e
è solo sapere che dobbiamo o
evolviti o muori e poi vedremo cosa
succede quando si arriva troppo troppo grande
speriamo di poterlo ritardare provando a
progettare le nostre funzionalità in modo che si adattino
la lingua esistente, nonché
possibile in modo che i concetti si adattino
insieme il più possibile in modo che il
onere concettuale se si è minimi
si spera e cerca di non creare separato
modi di usare C sharp che abbiamo già creato
uno dall’inizio che non è sicuro
codice che è già uno di quelli e noi
voglio provare a non entrare in più di questo
dove hai una modalità in cui ti trovi in a
diverso tipo di diverso tipo di
mondo siamo molto calorosi a riguardo
deve essere
Sì, va bene, grazie mille
tu
Please follow and like us: