Categories
Uncategorized

Parlando dattiloscritto con lingegnere che guida i

TheMummichogblog è un partecipante al Amazon Services LLC Associates programma, un programma di affiliazione pubblicitario progettato per fornire un mezzo per siti per guadagnare tariffe pubblicitarie con la pubblicità e il link al amazon.com. Amazon, il logo di Amazon, AmazonSupply, e il logo AmazonSupply sono marchi di Amazon.com, Inc. o delle sue affiliate.

--------------------------------------------------------------------------------------------------
Booking.com
Se dovessi camminare in una valle oscura, non temerei alcun male, perché tu sei con me. Il tuo bastone e il tuo vincastro mi danno sicurezza.
----------------------------------------------------------------------------------------------

Parlando dattiloscritto con l’ingegnere che guida il team
Volevamo scoprire cosa su dattiloscritto rende amabile così dang, così abbiamo raggiunto fuori a Ryan Cavanaugh, l’iniziativa di ingegneria principale per la lingua dattiloscritto di Microsoft. Era abbastanza generoso per sedersi e rispondere alle nostre domande.
Avatar per Ryan Donovan
Ryan Donovan
Nei nostri 2.020 sviluppatori sondaggio risultati, una delle statistiche più seguita è quella dei più amati lingua. Come è stato per diversi anni, la ruggine è il numero uno. Ma attestandosi a numero due è dattiloscritto, un superset fortemente tipizzato di JavaScript, Python fuori bordo per un pelo. Volevamo scoprire cosa su dattiloscritto rende amabile così dang, così abbiamo raggiunto fuori a Ryan Cavanaugh, l’iniziativa di ingegneria principale per la lingua dattiloscritto di Microsoft. Era abbastanza generoso per sedersi e rispondere alle nostre domande. Senza ulteriori indugi, ecco le nostre conversazioni, a cura leggera per chiarezza.

D: Da quanto tempo sei stato con la squadra dattiloscritto?

A: Ho iniziato nella squadra dattiloscritto circa sei mesi prima della nostra release iniziale, nel febbraio 2012. Così ho lavorato su di esso per circa otto anni.

Q: Interessante, quindi abbastanza vicino ai primi. Ti ricordi il motivo per cui la squadra si avvicinò con tipografico, perché si voleva rilasciare qualcosa di simile?

A: Quando mi sono unito alla squadra, c’erano un sacco di persone in Microsoft che ha voluto sviluppare JavaScript a ciò che noi chiamiamo “scala delle applicazioni.” Squadre come TFS e Office volevano costruire grandi applicazioni JavaScript. Un sacco di queste persone aveva dimestichezza con staticamente tipizzato C lingue-++, C #, Java, questo genere di cose. Volevano avere che tipizzazione statica disponibile sia per la scalabilità concettuale e per l’attrezzatura.

Gli esperti di lingua presso Microsoft hanno esaminato la situazione e ha detto, bene, potremmo provare a scrivere una nuova lingua come le persone avevano fatto prima. Ci sono progetti come Script #, che prende do diesis e lo trasforma in JavaScript, o le lingue come CoffeeScript che ha detto, che cosa se JavaScript aveva una sintassi diversa? Ma che cosa hanno deciso invece è stato quello di prendere solo JavaScript e aggiungere tipi statici in cima a quello.

Al momento, JavaScript stava vivendo una rinascita della crescita, dove sono stati l’aggiunta di funzionalità al linguaggio nuovo per la prima volta in un tempo piuttosto lungo. La gente voleva usare quelle raffreddare le nuove caratteristiche, come le funzioni di direzione e le classi, e non volevano aspettare che tutti i browser di adottare loro. Volevano essere in grado di utilizzare queste funzioni subito. Credo che quelle erano le tre cose che dattiloscritto offerto in anticipo: tipizzazione statica a fini di errore trovare, sfruttando le informazioni di tipo statico per utensili, e fornendo funzionalità JavaScript di domani, oggi.

D: C’è stato un punto in cui si è visto un punto di adozione di non ritorno? C’era qualcosa che è arrivato in cui le persone erano come, oh, sì, facciamo dattiloscritto ora?

A: Oh, è stato sicuramente Google annunciando che stavano andando ad utilizzare dattiloscritto con angolare. Questo è il genere di perso per tempo. Ma se si guardano i grafici per tipografico, letteralmente qualsiasi grafico-GitHub stelle, download, richieste-si tira può vedere il punto esatto in cui tale annuncio angolare è venuto fuori. E il grafico cambia poco. E non guarda mai indietro. Non è possibile vedere quella piccola curva della curva di più perché la curva continuato ad andare. Questo è stato un vero e proprio punto di svolta. E penso che è stato interessante che la gente pensava al momento in cui dattiloscritto stava per essere solo quello che la gente angolari usano e non molto altro. Che non risultano essere il caso. Ovviamente, siamo ancora popolare tra gli sviluppatori angolari. Ma quello era un vero e proprio costruttore di moto per noi.

Dal nostro strumento di tendenze di tag.

D: Nel nostro recente Developer più Survey, Carattere tipografico è il numero due più amata lingua, passando attraverso i ranghi. Perché pensi che la gente piace così tanto?

A: Eh? Perché è grande!

D: penso che abbiamo bisogno di una risposta possiamo difendere oggettivamente.

R: Fondamentalmente, JavaScript ottiene un colpo secco difettoso come lingua, ma in realtà è abbastanza divertente con cui lavorare. Esso consente di essere un po ‘dinamica a volte e un po’ a volte più intenzionali. E ‘solo un grande linguaggio funzionale. Ma la mancanza di tipo statico controllo inibisce davvero capacità delle persone di cose di scrittura che possono essere lavoro volontà sicuri prima di eseguirlo.

sponde dattiloscritto fino quell’ultimo filo grezzo su JavaScript e ti dà qualcosa che è solo molto divertente lavorare con e corre ovunque. Penso che se fosse dattiloscritto un linguaggio che è stato costruito in cima ad un linguaggio meno universale o un linguaggio divertente meno, non credo che sarebbe stato un successo. E ‘davvero prendere qualcosa che è grande e renderlo migliore.

D: Sembra che tipizzazione statica è una sorta di avere un momento all’altro. Ho visto un sacco di commenti circa apprezzare la digitazione anatra a Rust, i suggerimenti in Python. Perché pensi che tipizzazione statica è così popolare in questo momento?

A: Penso che perché la gente ha cercato di costruire applicazioni di grandi dimensioni senza di essa e visto quanto sia doloroso. Voglio dire, la stessa cosa sta accadendo con Hack Facebook, dove sono l’aggiunta di tipi di PHP. Quindi penso che la gente ha capito che si può scrivere un piccolo programma senza tipizzazione statica abbastanza facilmente, ma ha colpito subito una soglia in cui, senza di essa, le cose diventano troppo doloroso. E ‘troppo difficile da ragione, quando si sta cercando di mantenere la loro e indovinare la digitazione e così via.

Credo che la cosa che preferisco che vedo è la gente su Internet dicendo: ‘Ho fatto questo enorme refactoring a macchina e mi è stato refactoring per tre ore. E poi ho incontrato il mio codice e ha funzionato la prima volta.’In un linguaggio dinamico, che sarebbe proprio mai, mai accadere. C’è un elemento di grande soddisfazione essere fatto quando il tipo di controllo, dice il gioco è fatto. Che potrebbe essere ottantacinque per cento indica una. Ma questo è molto meglio di zero. E ‘solo un modo molto migliore per sviluppare, in particolare durante il refactoring grande così.

D: Ho visto alcune persone resistenti alla tipizzazione statica. Pensi che ci sia un posto per la digitazione più dinamica?

R: Penso di sì. Voglio dire, è un mondo di programmazione grande là fuori. Io non ti credo che ti sbagli di non come tipi statici. Penso che sia una preferenza personale. Ci sono certamente programmi in cui tipizzazione statica otterrà nel vostro senso. Questa è una cosa importante per noi; forniamo anche utensili per JavaScript, e noi continuiamo a pensare che JavaScript è un modo del tutto valida per sviluppare. Vorrei solo dire alle persone, se i tipi statici non sono una buona misura per voi, sia per il vostro stile di programmazione o il problema si sta lavorando, basta saltare. Va bene. Va bene. Non voglio essere offeso. Se qualcuno può ottenere un’applicazione trentamila linea che prende il lavoro fatto, senza tipi statici, sono molto impressionato. Che sembra solo molto difficile. Ma complimenti a quelle persone che fanno il lavoro.

Python è allo stesso modo. Pochissime persone hanno lavorano annotazioni di tipo Python, ma Python è incredibilmente popolare. Credo che i dati parlano da soli, penso Python è numero tre nel sondaggio (Ndr:. Lo è, ma per un pelo). vi garantisco che una percentuale molto piccola di quegli sviluppatori Python hanno tipi statici. Qualunque sia il vostro dominio del problema è, che potrebbe essere la soluzione migliore per voi.

D: So che stiamo arrivando sul 25 ° anniversario di Java. JavaScript è stato con noi per un po ‘pure. E ora, dattiloscritto. Che cosa è circa le tendenze che abbiamo visto negli ultimi dieci anni, passando da offline a lavorare a lavorare sul web, a lavorare sul cellulare, che rendono Javascript e ora dattiloscritto tali strumenti desiderabili?

R: Penso che sia semplicemente un effetto piattaforma. Se ci fosse qualsiasi linguaggio di programmazione che correva su ogni macchina e nel browser, che sarebbe il linguaggio di programmazione più popolare oggi. Voglio dire, io parlo bene di JavaScript, ma onestamente penso che il fatto che è decollato e ha ottenuto nei browser e poi salì sul desktop e il server che è l’altro paio di maniche proprio lì. Non credo che sia qualcosa con la lingua, è solo la sua posizione.

Q: A destra, la possibilità di imparare una lingua che si sta andando ad essere in grado di utilizzare, non importa dove si finisce a, a meno che non sei uno sviluppatore COBOL lavorando su un sistema di governo o qualcosa del genere.

A: Sì. La nube, credo, è un grande aspetto di questa, in cui si desidera il codice che viene eseguito piattaforme Linux, le piattaforme Windows, Mac. Un sacco di linguaggi di programmazione provato e non è riuscito a fornire intenzionalmente esecuzione cross-platform. Forse non è fallito per sé, ma non è riuscito a ottenere l’assorbimento che desideri. JavaScript iniziato in fondo, o forse il top-come linguaggio di altissimo livello che solo funziona nei browser e poi ha lavorato la sua strada verso il basso fino a quando non era qualcosa che si poteva funzionare a un livello più basso che interagisce con il file system.

D: Quindi cosa sei ragazzi della squadra dattiloscritto facendo per mantenere dattiloscritto come lingua molto amato?

A: Siamo sempre alla ricerca a ciò che il feedback degli utenti ci sta dicendo, quello che la gente chiedono, guardare a ciò che le biblioteche popolari in JavaScript ecosistema sono. Tutto ciò che ci aiuta capire ciò che il prossimo lungometraggio diritto di aggiungere la lingua è.

Vue è prossimo e. C’è solo troppi da elencare, davvero. Ma, come i diversi quadri di interfaccia utente o librerie di manipolazione dei dati sottostanti diventare ancora più popolare, abbiamo bisogno di fare in modo che la lingua è in grado di rappresentare quelli. GraphQL sta diventando popolare. Beh, può il nostro sistema di tipo esprimere con precisione le cose che dovete fare con GraphQL? ci sono delle lacune lì?

Vogliamo solo fare in modo che noi stiamo rappresentando l’ecosistema JavaScript così com’è, perché in ultima analisi, se la gente vuole usare il fresco nuova tecnologia JavaScript, ma non funziona bene con dattiloscritto, che stanno andando ad abbandonare dattiloscritto prima abbandonano JavaScript, giusto? È per questo che siete qui. Vuoi scrivere programmi che fanno roba, non solo soddisfare un tipo di controllo. Quindi penso che sia la cosa più importante per noi.

Ma vogliamo anche a crescere molto intenzionalmente. linguaggi di programmazione, come hai detto tu, sono venticinque, trenta, trentacinque anni ormai. E siamo alla chiusura di otto. Se abbiamo solo un quarto delle caratteristiche che abbiamo effettivamente bisogno, siamo ancora sul passo.

D: La maggior parte del tempo, dattiloscritto è transpiled in JavaScript. Con Deno, E ‘un linguaggio di prima classe. Cosa ne pensi sforzi del genere? E pensi che i browser potrà mai fare dattiloscritto prima?

A: Deno è super cool. Mi piace che qualcuno ha costruito questa tecnologia e sta vedendo cosa sarebbe successo con esso. Credo che il caso del browser è davvero interessante perché sembra che abbia senso. Poi, ogni volta che camminare cinque passi avanti nella mia testa, tutto si esaurisce per me.

Quindi per me, è come, OK, si sta andando a servire dattiloscritto al cliente. E poi i clienti possono interpretare il dattiloscritto. Beh, se non si vuole il controllo di tipo su quel file che hai mandato giù, quindi non c’è davvero nessun punto. Togliendo le annotazioni di tipo è un processo molto meccanico e non c’è un sacco di valore lì. È possibile inviare le mappe di origine o qualsiasi altra cosa, ma questo è più di un’esperienza debugger diagnostica. Così otteniamo in questo modo in cui stiamo inviando questa giù come dattiloscritto in modo che possa essere di tipo controllato dal cliente.

La mia prima domanda è, perché è questo il lavoro del cliente? Perché si spingere questo codice dattiloscritto fino al server, e spero che sia di tipo controlli al punto che hai fatto. Se così non fosse, sarebbe strano di prendere in considerazione il motivo per cui si sarebbe fatto. E ancora, gli scenari di sviluppo sono solo una bestia completamente diversa qui. Mi piacerebbe vedere maggiori investimenti nello spazio di sviluppo per domande come, avrebbe più senso avere questo?

Ma in ogni caso, diciamo che andare avanti e tipo di controllo sul client. Beh, non si può davvero iniziare questo processo di verifica tipo fino a quando hai tirato tutte le dipendenze. E poi hai intenzione di finire per l’invio di file verso il basso .d.ts che in realtà non fare nulla. E come ha fatto il file .d.ts ottenere sul vostro server?

Non ho intenzione di dire non è mai succederà, ma penso che ci sia una stanza più molto per le tecnologie, come quello che si vede con `create-reazione-app`, dove c’è un server in diretta web per scopi di sviluppo, controllando i tipi in lo sfondo in cui serve il JavaScript transpiled al volo. Come, questo è un modello fantastico che rende tutte le mie obiezioni del tutto discutibile, perché il tipo di controllo che sta accadendo in un momento più logico. Forse c’è un po ‘di spazio per un browser plug in. Ma questo modello è un po’ di confusione, troppo, perché in ultima analisi il vostro `

Diventa una questione di se si sta debug o di carico, per esempio, la produzione di HTML che fa riferimento al file .js. Dove nel processo abbiamo effettivamente ottenere file anziché i .ts? Mai dire mai. Ma per me è una specie di una situazione non più presto. Deno completamente la sua cosa, perché c’è un nuovo runtime. In modo che lo scenario rende molto più senso per me, almeno per essere di tipo il controllo durante la prima volta che si esegue uno script e fare in modo che hai alcuni ambienti compatibili.

D: Qual è lo stato in questo momento del team di Microsoft? Quanto l’ha cresciuta da quando ti sei iscritto e quanto grande è?

A: Per tutto il tempo che abbiamo lavorato su questo, abbiamo avuto tra quattro e otto ingegneri di base del compilatore, uno o due PM, e quattro a zero tester dedicati. Questo è stato abbastanza costante. Siamo stati in crescita la squadra un po ‘più intenzionalmente ultimamente.

Abbiamo storicamente avuto un core team compilatore e poi un altro gruppo di lavoro sul lato di Visual Studio delle cose, perché l’integrazione in un prodotto di grandi dimensioni come Visual Studio si rivela essere una grande quantità abbastanza lavoro. Ma alcuni miglioramenti architetturali sul lato VS hanno liberato un po ‘di potere ingegnere laggiù. Quindi stiamo roping in quella squadra per aiutarci con il refactoring e andare a Definizione e questo genere di cose. Stesse dimensioni squadra nel complesso, solo che adesso dovremo più persone che lavorano sui servizi di base del compilatore che si vedono sul repo GitHub.

D: Potresti darmi un po ‘di prospettiva al di fuori di Microsoft, dove ti vedi persone che aiutano a costruire questo in modi diversi? Abbiamo parlato di Deno e cosa fa con il dattiloscritto. Dove si vede altre persone che aiutano a costruire questo ecosistema?

Noi siamo completamente dipendente sull’ecosistema di fare un prodotto che funziona in un ambiente integrato. Quindi, se questo è WebPack oi plugin come ts-loader o il modo in cui lavorano con rollup o parcella o … un nome al bundler, giusto? Questo è tutto molto complicato.

Non stiamo personale a un livello tale da farci possediamo pienamente questa esperienza. E noi non vogliamo. La comunità dovrebbe guidare come tipografico viene sussunto in questi processi di build più grandi e l’ecosistema più grande nel suo complesso. Come la costruzione gasdotto JavaScript si espande e diventa più complesso, vediamo persone intensificare e fornire tale funzionalità. Questo potrebbe essere dattiloscritto e `Create-reagiscono-app` o quanto integra dattiloscritto con le cose come Vue. Vogliamo solo fare in modo che stiamo costruendo la roba che solo noi sappiamo come costruire e poi aiutare gli altri con roba che solo loro sanno come costruire. Qualche pietre miliari fa, abbiamo lavorato in particolare con la gente ts-loader per ottenere un’implementazione di riferimenti del progetto buona andare lì.

Il numero di cose nell’ecosistema JavaScript continua a crescere. Invece di crescere la squadra, speriamo solo di crescere la comunità a sostenere dattiloscritto in tutte quelle situazioni. Abbiamo anche guardando come possiamo essere un po ‘più intelligente su come ottenere contributi esterni in dattiloscritto. La sfida principale che ci vediamo è che l’aggiunta di funzionalità alla base di codice dattiloscritto è in realtà facile e correggere i bug è davvero difficile. Le persone sono molto più eccitato per aggiungere funzionalità di bug fix perché è divertente. Chi può biasimarli? Capire che cosa possiamo fare di questo e incoraggiare le persone ad aiutarci fuori sulle cose che abbiamo bisogno di più aiuto con sarebbe una sfida comunità. Non ho intenzione di andare là fuori e dire ho bisogno di più lavoro gratis. Le persone possono venire a open source con ciò che sono qui per l’offerta. È fantastico. Ma questo è qualcosa che mi piacerebbe fare di più intenzionalmente.

Tags: elettronica, StackOverflow, dattiloscritto

Talking TypeScript with the engineer who leads the team

Amazon e il logo di Amazon sono marchi di Amazon.com, Inc., o delle sue affiliate.