vocês viram que o typescript foi portado paraa linguagem go a Microsoft anunciou essa mudança juntamente com o resultado de performance de 10 vezes melhor em alguns cenários então no vídeo de hoje a gente vai discutir um pouquinho sobre alguns impactos dessa mudança na questão do typescript e no desenvolvimento web no [Música] geral Fala galera beleza no dia 11 de Março a Microsoft anunciou uma mudança importante no typescript trazendo uma portabilidade do da linguagem typescript né do compilador do typescript que era escrito no no próprio typescript para a linguagem go que curiosamente é do Google Então
não é que houve uma mudança na sintaxe do typescript mas o que houve Foi uma mudança na ferramenta utilizada para fazer a compilação que agora vai passar a ser escrito em golink então no post oficial aqui né o Anders husberg que é o Líder ali do projeto do typescript ele também é conhecido já na comunidade por ter criado o csharp o Pascal lá no passado também então ele é um cara bem importante né nesse mercado nesse e nessa comunidade de desenvolvimento de linguagens de programação então ele particularmente aqui que fez o post né de anúncio
né falando né que a gente tem agora um typescript 10 vezes mais rápido então a ideia no vídeo de hoje é trazer claro essa notícia para vocês assim como vários outros criadores de conteúdo trouxeram mas eu queria trazer algumas análises aqui para vocês principalmente sobre três questões principais aqui envolvendo essa mudança que é por que que foi escolhido então a golen principalmente que é uma linguagem da do Google os impactos que a gente vai ter né como desenvolvedor que usa o typescript de modo geral e os impactos também para ferramentas de build que utilizam o
typescript principalmente na web então esses são alguns pontos que a gente precisa discutir eh e aí aqui né pessoal por principalmente de você fazer uma mudança dessa então o type script ele era escrito no próprio typescript então o compilador do typescript era escrito na própria linguagem e obviamente o typescript usava ali a runtime do JavaScript que o que é um compilador Just in Time né não é a head of Time e obviamente por isso né não tem uma performance tão grande eh quando a gente tá falando ali de código nativo digamos assim né de compiladores
ferramentas de build e assim por diante então o JavaScript Ele é bem interessante ali quando a gente tá trabalhando com eh user interface né Principalmente por conta dos principais frameworks que a gente tem para ui para desenvolvimento web mas quando a gente tá falando de tooling né de ferramenta ali de build etc eh o JavaScript ele vai penar ali em relação à linguagens nativas ali que vão compilar para código de máquina Então isso é normal tá pessoal linguagens que são interpretadas ali vão ser diferentes em termos de performance de linguagens compiladas pois bem então aqui
no no anúncio oficial né eles já falam alguns resultados eh dessa melhoria né então aqui eles obteram obtiveram né alguns casos ali redução de tempo de Build de 10 vezes o que é bem interessante se a gente pensar em grandes bases de código então você desenvolvedor typescript que utiliza algum grande Framework aí para trabalhar e você tem uma grande base de código saiba que em breve você vai ter ali mudanças que podem ser até superiores a 10 vezes no tempo de build obviamente se você usa uma p Line de c cd você utiliza algum algum
recurso escasso de ferramenta de build você vai ter um ganho em relação a isso obviamente eles também tiveram aqui uma redução de memória então como eu falei tudo impacta no momento final que você vai mandar o teu código né o teu sistema a tua base de código para produção então se você tem uma redução de de memória de de uso de CPU etc você ganha performance tempo nisso é claro que é uma coisa muito boa então é por isso que eh teve essa questão é e também pessoal uma coisa bem legal aqui é em relação
ao analizer né ao linter ali na aquele famoso linter que você tem quanto você desenvolve então tenho certeza que todo mundo que já trabalhou com typescript às vezes estava ali trabalhando no código tinha um erro no código mas o analyzer Não apontou e vice-versa às vezes não tinha um erro no código mas o analyzer ele deu Enfim uma uma alucinada ali e ele falou que tinha algum erro então com essa mudança também o analizer vai ter esse benefício de ser mais rápido então tem alguns casos ali que até oito vezes mais rápido ele vai fazer
essa análise de código então É bem interessante aqui no post né então ele traz aqui por exemplo o vs code lá né que ele teve a redução né o tempo de 10 vezes né a melhoria de 10 vezes o playr 10 vezes o Type ORM para quem utiliza ó 13 vezes o trpc nove vezes são projetos bem populares que vão trazer esse benefício ali pra gente e como eu falei para vocês né Principalmente quem usa frameworks de desenvolvimento vai e sentir isso na na pele ah isso aqui tende a chegar lá no typescript set então
vai demorar um pouquinho para chegar né então é um processo né eles vão manter duas bases de código uma base em typescript e a outra base em em golang e eles vão fazendo essa migração aos poucos para que provavelmente no typescript set isso seja lançado de fato bom aí pessoal obviamente já surgiram algumas questões né então ah por que que foi feita uma portabilidade e não uma escrita por que que não foi usado o Né o Rust ou o próprio csharp que é da própria Microsoft então algumas questões surgiram e na na no no próprio
github Eles já fizeram um fac ali com algumas perguntas principais né para explicar um pouco dessas decisões técnicas e principalmente né pessoal porque o próprio Anders ele é o criador do csharp então era muito natural que ele tentasse utilizar uma preferência dele né que é o c sharp digamos assim para fazer a linguagem então isso já dá uma lição pra gente na questão de negócios que às vezes você vai utilizar uma linguagem que você não é muito familiar com ela mas que ela vai te trazer uma vantagem maior pro teu time pro teu produto ao
invés de uma escolha pessoal né então a gente sempre fala né não existe uma linguagem que é bala de prata para tudo você sempre tem que analisar outras opções e que vai ser melhor no teu contexto então aqui eles falam né A primeira das questões Por que que foi feita uma portabilidade ao invés de uma reescrita né E ele fala um pouquinho aqui da diferença disso Isso é bem importante aqui por quê se por exemplo eles fossem escolher Rust provavelmente um benefício maior seria você reescrever do zero assim como a gente tem casos aí de
eh reescrito eu posso abordar isso num num em outros vídeos Tá mas tem eh alguns bancos de dados aí que estão sendo reescritos em Rust tá e estão tendo ali ganhos de performance absurdo então eles mantêm a compatibilidade com com SQL com tudo que tava rolando Mas eles fazem essa reescrita Rust já otimizando o código Desde da escrita obviamente pessoal que isso demanda muito mais tempo de você fazer essa reescrita e tem uma questão principal que você tira um pouquinho da estabilidade e você começa a inserir bugs você começa a inserir coisas no código que
você não tinha antes Além disso tem uma questão bem importante aqui né que até eles falam aqui nesse nesse post que é a questão da familiaridade Ali da linguagem então no no próprio post ali no vídeo que vocês veem do Enders ele mostra ali lado a lado a comparação do da base de código em typescript com a base de código em linguagem go e por ser uma linguagem mais estruturada né uma uma sintaxe bem simples fica quase um para um essa essa correspondência Então como eles vão ter que manter duas bases de código por algum
tempo para esse compilador faz mais sentido também você por uma linguagem mais simples como go E é claro eles falam aqui que eles fizeram vários benchmarks eh com modelo os híbridos de usar várias linguagens eles testaram linguagens diferentes e o que é melhor se encaixou no de modo geral digamos assim foi a a linguagem go né E aqui obviamente eles falam então da questão de portabilidade também para trazer uma estabilidade porque o JavaScript o o typescript hoje é um projeto grande que é usado amplamente no desenvolvimento web principalmente no front mas também é utilizado em
frameworks de backend então é um é um projeto bem Popular que tá crescendo a cada dia né é uma das linguagens mais mais usadas hoje então você precisa de estabilidade e você reescrever do zero iria demorar muito mais tempo e também iria introduzir esses problemas então eles preferiram né fazer essa portabilidade que é muito mais rápido de de certa forma é como você pegar a base de código typescript e adaptar isso apenas paraa linguagem go fazer de certa forma né grosso modo uma tradução da da linguagem né de typescript para linguagem go então obviamente isso
traz bastante coisa interessante eh E é claro né que eles falaram aqui né Tem vários comentários aqui falando sobre isso então depois vocês podem dar uma olhada né mas ah o resultado aqui né que eles mostram é bem positivo a o outro post É bem interessante eles falam dessa questão que eu já comentei aqui né porque a linguagem go Então por que não usar por exemplo Rust que é uma linguagem bem Popular hoje para pro ferramental de compilação né ferramentas de desenvolvimento no geral até mesmo ids ou quem sabe o próprio csharp que é a
linguagem da própria Microsoft que é uma linguagem bem interessante e aqui né o ryley começa falando que a escolha da linguagem sempre é um tópico quente sempre vai dividir opiniões justamente por conta de preferências pessoais e assim por diante então eles falam aqui né que eles testaram várias opções Diferentes né abordagens híbridas ali eles também testaram né de várias linguagens e assim por diante Mas como eu falei para vocês a ideia aqui principalmente era ter esse benefício de manter estabilidade e fazer uma portabilidade tendo obviamente uma formance a questão também que eu acho que é
bem importante que é a questão eh do tempo que vai levar para fazer a portabilidade do que por exemplo você reescrever lá o código em Rust na aonde você iria ter que se preocupar com questões de gerenciamento de memória eficiência no código em como escrever o código de uma forma correta você tem questão de manutenibilidade então como eu falei para vocês eles vão ter que manter os dois projetos em paralelo por algum tempo então quanto mais similar forem as linguagens melhor até por conta da curva de aprendiz usado de novos programadores que vão ter que
saber as duas linguagens eles falam também da questão do do gerenciamento de memória do do go que ele é feito de forma automática por meio de um garba de collector eh diferente de linguagens como Rust onde você vai ter que ter uma preocupação mais Eh mais manual digamos assim não é bem esse termo né mas bem e mais manual nesse controle de memóri do Que linguagens que vão ter o garb collector e como eles estão trabalhando com uma ferramenta que é para compilação ou seja ele vai executar o processo e no final ele vai descartar
o que tem lá em memória então eles não vão ter tanto problema em relação a isso então é um ganho maior eles usarem o gol nessa questão de tempo de estabilidade em ter o garba de collect do que reescrever tudo né nessa questão de de compilação então uma questão bem interessante e aqui tem vários comentários né falando né o por que não usar o Rust que é uma escolha que tem sido feita no mercado hoje para e o desenvolvimento de ferramental de desenvol movimento eh Por que que não utilizaram por exemplo o csharp que é
uma linguagem da Microsoft é uma linguagem bem interessante que tem um crescimento e algumas pessoas até falam aqui que a linguagem csharp geralmente é mais usada no enterprise mais usada na própria Microsoft né mas ela seria uma escolha pode pode ser interessante né que casaria com a própria Microsoft de usar os próprios produtos né mas enfim eles muitas pessoas aqui discordam dessa escolha né mesmo parecendo mais simples utilizar a linguagem go então depois vocês podem dar uma olhada aqui né na na toda thread né falando sobre isso na questão de GO versus e Rust versus
o próprio C Sharp e tem alguns pontos aqui que são bem interessantes em relação ao csharp né muitas pessoas falam aqui que o csharp ele é mais estruturado numa forma de orientação a objetos então ele é fortemente orientado a objetos enquanto a linguagem go ela é mais estruturada e casou ali quase um para um com o typescript né da forma como o compilador ele typescript é escrito É claro que você pode usar orientação objetos dentro do typescript mas enquanto compilador ele é escrito ali de forma estruturada então você vê ali até as funções ali Elas
têm quase uma correspondência um para um E aí uma coisa que eh foi levantada aqui é a questão da linguagem go por ter o garbage collector como que isso vai funcionar por exemplo na questão do Web assembly E aí o próprio Evan Yu aqui para quem não conhece o Evan H ele foi o desenvolvedor do Framework vijs do Vit que é uma ferramenta hoje que é amplamente utilizada para build no no JavaScript ali pra Construção de servidor etc né parte de testes enfim ele ele desenvolve vários ferramentais e ele comenta né ele fala que que
ele concorda com a questão pragmática do um para um na portabilidade mas ele se preocupa em relação aqui à questão da performance para o Web assembly por quê quando você considera um c+ mais Rust Você tem uma performance praticamente um para um ali com o web assembly e quando você usa uma linguagem como go Dart Java etc que você são linguagens que usa o garb de collector você tem que embutir o garb de collector no web assembly e isso obviamente aumenta ali esse custo na questão de performance Quando você vai usar o Web assem principalmente
porque o o o garbage collector ainda não é bem otimizado para wasmi E então aqui o Evan ele coloca essa questão de que as ferramentas de de build ali que você precisa em typescript geralmente você vai rodar ali na web no navegador mesmo principalmente nas ids que hoje são bem populares de você ter ideias que rodam na web os famosos playgrounds que vão rodar ali na na web e alguma ferramenta que eventualmente você precisa fazer build na na web e você queira utilizar a questão do do Web assembly E ele fala aqui né que ele
fez um teste aqui né e usando lá o TS go né que seria o typescript com go no web assembly ele demora mais que um segundo mais que um segundo ali para fazer um um determinado teste que deveria ser bem rápido né então ele se preocupa em relação a isso provavelmente é vai ser uma coisa que a Microsoft vai olhar melhor né ah obviamente Eles não iam fazer um movimento desse sem eh digamos assim trazendo prejuízo pro ecossistema Principalmente nesse ecossistema que tá crescendo que são o né as ferramentas online e ids online playgrounds etc
Então isso é bem importante e com certeza eles vão olhar para esse lado né É claro que tudo tem tradeoff a gente sempre tem que pensar nesses casos mas é importante a gente e entender como eu falei sempre as questões de decisões de negócio então eu achei interessante né trazer essa notícia para vocês né claro que é uma notícia importante né vai ter mais performance agora no typescript na nessa parte de build né de compilação e mas eu queria trazer essa questão para vocês sempre da gente olhar PR as linguagens de programação né de uma
forma mais desapegada né claro que todo mundo tem sua referência né na na na linguagem principal que vai utilizar Mas a gente sempre tem que entender que cada linguagem ela vai ser usada melhor em um determinado contexto então a gente viu aqui um exemplo claro né da própria Microsoft que tem o typescript e tem o csharp por exemplo e acabou utilizando uma linguagem da Google né que é a linguagem go para escrever o seu compilador e poderia ser o Rust né que foi originada lá pelo pelo Firefox né pela Mozila e tal então você vê
que você tem que ser desapegado dessa questão de linguagem e olhar sempre também para uma questão de contexto o que que é melhor pro teu time o que que é melhor pro seu projeto naquele contexto né para aquele projeto no caso do Gol ali Por que que foi interessante porque eles ganharam performance ganharam controle de memória e ainda assim ficou quase um para um na questão de de curva de aprendizado de legibilidade do código né de facilidade de leitura de trabalhar que a o time os times ali de desenvolvimento eles vão ter que trabalhar com
duas bases de código ali uma em typescript e uma em go por muito tempo então quanto mais próximo for isso é obviamente melhor mais simples de trabalhar então como eu falei é importante a gente sempre olhar para isso e olhar também para essa questão de mercado né olhar né que por exemplo o wenders ali que é um cara que criou C Sharp criou Pascal no passado que tá trabalhando no typescript trouxe uma linguagem que é digamos assim fora do contexto dele que é a linguagem Go Pro contexto dele justamente para ganhar vantagem de negócio né
ou seja melhorar o próprio produto da empresa que é o typescript então eh por isso que eu falei pessoal a gente sempre tem que olhar as linguagens nesse sentido né O que é melhor pro seu projeto e às vezes deixar de lado um pouquinho essa questão de paixão por uma linguagem ou por outra então acho que é bem interessante né trazer e esse contexto aqui para vocês atrelado a essa notícia né E é claro né pessoal H obviamente eu deixei passar aqui vários pontos no vídeo então peço que você deixe seu comentário aqui né com
sua opinião sobre essa questão né de de linguagens né O que que vocês acham né como que vai ficar o typescript agora com o compilador escrito em em golen vocês acham que vai melhorar bastante a performance ali em você escrever o código em typescript vocês acham que vai melhorar muito coisa talvez no futuro a gente tenha alguma coisa ali que melhore a a própria execução né do do typescript em né backends no próprio frontend Então a gente tem que olhar para esse lado também E é claro né pessoal se você gostou do vídeo eu peço
que você deixe o like aqui para apoiar o nosso canal ajudar ele a crescer dentro do YouTube e também né se você não é inscrito tá chegando agora aqui eu peço que você se inscreva para que você receba né os updates as notificações de novos vídeos como esse eu vejo você no próximo vídeo e até mais [Música]