Desmistificando Rust: A Evolução do C++ e Java? | PPT Não Compila Podcast
Convidados
Bruno Campos
CTO @ Klever
Clauber Stipkovic
Engenheiro de Software @ InteliFi
🔊 Bem-vindos ao episódio 133 do podcast PPT Não Compila! Neste episódio, recebemos Bruno Campos, CTO da Klever, e Clauber Stipkovic, engenheiro de software da InteliFi, para uma discussão aprofundada e técnica sobre a linguagem de programação Rust. 🚀 Se você é desenvolvedor, engenheiro de software ou entusiasta de tecnologia, prepare-se para explorar como Rust está transformando o desenvolvimento de software com sua segurança e performance inigualáveis. 💡 No coração da conversa, Bruno e Clauber compartilham suas experiências práticas com Rust, abordando e desmistificando desde os fundamentos da linguagem até sua aplicação em projetos reais na Klever. Descubra por que a Klever decidiu adotar Rust em seu stack tecnológico, como a linguagem se destaca em termos de gerenciamento de memória e segurança, e quais são os desafios e soluções encontradas no dia a dia de um desenvolvedor Rust. Se você já se perguntou como evitar problemas como data races e NullPointerExceptions, este episódio é para você! 🎧 Aperte o play e mergulhe em tópicos como Ownership, Borrowing e comparações com outras linguagens. Aprenda com exemplos de código práticos e se Rust é mesmo a evolução do C++ e Java. Não perca esta oportunidade de expandir seus conhecimentos e descobrir porque Rust está ganhando cada vez mais espaço no mundo da programação. 🔥 #Podcast #PPTNãoCompila #Rust #DesenvolvimentoDeSoftware #Tecnologia #Programação Convidados: Clauber Stipkovic : linkedin.com/in/cstipkovic/ Bruno Campos : linkedin.com/in/brunocamposssa/ 00:30 Abertura e apresentação 03:39 Novidades na Klever 12:42 Tecnologias Front end na Klever 14:25 Back End na Klever 22:51 Criação e uso da linguagem Rust 28:47 Paralelismo no Rust 48:48 Demonstração de código 58:45 Sintaxe de Rust 59:35 Debug em Rust 1:01:32 Símbolo de "Annotation" 1:02:19 Ownership 1:05:23 Demora em compilação no Rust 1:09:40 Refatoração 1:17:44 Agradecimentos e considerações finais Spotify: https://spoti.fi/3RyhIeL Youtube: https://youtu.be/SOEMBDy5e1k Outras plataformas: https://linktr.ee/pptnaocompila Acompanhe nas redes Instagram e Twitter: @pptnaocompila LinkedIn: https://www.linkedin.com/company/pptnaocompila Produção: Voz e conteúdo | https://www.vozeconteudo.com.br - @estudiosvoz
- Introdução Técnica e do Podcast
- Apresentação dos Participantes e Tema
- História do PPT no Compila
- Stack Tecnológica da Clever (Geral)
- Golang: Características e Tratamento de Erros
- Tipagem e Compilação de Linguagens
- Java vs. Go: Compilação e JVM
- Discussão sobre Frameworks Java
- Frontend Mobile e Web da Clever
- Backend com Ruby on Rails
- Patrocínio: Clever.io
- Adoção do Rust na Clever (Blockchain)
- Comunicação Blockchain (gRPC/JSON-RPC)
- Ascensão e Casos de Uso do Rust
- Fundamentos do Rust: Binários e Paradigmas
- Rust: Gerenciamento de Memória (Ownership)
- Humor: Stack Overflow e Null Pointer
- Demonstração de Código Rust (Introdução)
- Patrocínio: VMB.io
- Exemplo Prático de Ownership em Rust
- Comparativo de Atribuição: C vs. Rust
- Resolvendo Problemas de Ownership
- Rust: Paralelismo e Performance com Ownership
- Sintaxe Rust e WebAssembly
- Reflexão sobre o Paradigma Ownership
- Considerações Finais sobre o Episódio
- Rust no Mercado e Desafios de Refatoração
- Encerramento e Agradecimentos Finais
ele é compilado só que ao invés de ser gerado para uma arquitetura específica é gerado um bite code que vai rodar numa máquina chamada j o o Rust pelo pouco que eu conheci ele semelha ali uma coisa mais minimalista né Aí você tira muita responsabilidade do compilador para ter que chicar tudo isso na hora de compilar ponteiro que eu passei e eu t tentando reutilizar caramba eu que fiz merda realmente ch faz muito bem muito bem meus amigos do PPT não compila estamos aqui para mais um episódio nem sei mais um número clá já já perdi a conta já estamos aqui a contador já subiu já já subiu estamos aqui mais vai fazer dois anos sim aqui fazendo essa brincadeira aqui que na verdade é uma grande desculpa a gente tomar cerveja e falar nerdice é isso é uma grande desculpa e hoje a gente tá aqui cara para falar de um assunto acho eu acho que eu sinto um cheiro isso aqui pode ser o episódio mais nerd e mais técnico do PPT no comp pilo será que a gente vai conseguir Também tô achando viu sinto cheirinhos de bits e byes aí eu sinto eu sinto Clauber Obrigado por est aqui com a gente cara junto você tá sempre nosso fiel co-host aqui precisando é só chamar sempre PR assessoria de assuntos nerdes e aqui o nosso padrinho do PPT no Cila do concur que isso Bruno baiano Campos eu jo sou Joe o o o Carioca Mais baiano que eu conheço ou ou baiano mais carioca É e tem Paulista no meio né Mori aqui muito tempo né dia você solt me cidadão do mundo s tá humano pô Pior que eu acho que sotaque Paulista e eu fiquei devendo Eu nunca peguei realmente nada aliás eu peguei o então quando eu morava falava muito então Uhum Então mas não falava o meu né porque então meu eu não falava falava só então fala né lenda é lenda Fala mano [ __ ] mano é mano fala muito mano a meu também para com isso não meu ninguém fala mais é 1980 Só a galera da Moca Moca galera qua ver o jogo do Juventus lá javar isso galera do Faustão lá n orra meu isso O louco bicho Bruno Campos o city da Clever que está aqui para contar um pouco das novidades de Tecnologia da Clever temos aqui um componente especial falar muito sobre linguagem Rust Uhum que estamos aqui discutindo sobre enfim bano vai contar pra gente aqui a a história da da Clever em relação ao Rust tem uma uma uma demanda aqui e ele vai trazer alguns pontos interessantes aqui pra gente né bana sobre as diferenças da linguagem etc Porque que a Clever tá adotando essa linguagem dentro do stack dela acho que pode ser um papo muito bom né Assim espero Tomara que seja show de bola Obrigado aí novamente Cara você sabe que o dia que você tiver aqui em São Paulo a mesa é tua pô Obrigado estamos juntos T hrado aí já te falei não tenho mais roupa para vir para cá não hein Sept não compila tá tá High level Esperamos que só gente de Garbo e elegância tipo baiano tipo B isso aí acompanha pra gente que o episódio tá muito bom Bora vamos PP
[Música] Clauber eu sou sempre muito feliz de receber esse cara aqui no no PPT no compila concordo com você porque acho que poucos sabem a gente tá no Episódio 130 não sei quantos já e mas o PPT do compila quando eu tive a ideia tava no bar falei cara podia fazer um POD de de de ti falar de de nerdicas no geral o primeiro cara que eu liguei foi esse cara aqui eu falei cara Você topa gravar um piloto comigo pra gente ver o que que sai disso daí foi esse cara esse cara é um padrinho do podcast ISS Então não é qualquer padrinho né É pô o cara é um padrinho de de Garbo e elegância é isso obrigado obrigado Que legal cara você aqui mim obrigado sabe que você pisou aqui em São Paulo tem que a que dar um jeito né tem que dar um jeito de vir aqui gravar com a gente hora que você falou Pô esse episódio vamos gravar com o baiano eu falei eu quero tá lá tô dentro dentro maluco isso aí e e baiano fala pra gente cara que que a gente tem de de novidade na Clever tecnologia a gente tem um tem tem temos aqui um cheiro de alguma coisa que a gente vai descer a fundo Mas fala pra gente como é que tá você como s ou como como é que a gente tá lá steack steack Tech né de textech né que que vocês estão olhando de tecnologia é hoje nossa base tecnológica é forte ainda em Gol mesmo né tudo que é backend maioria das coisas que a gente constrói é muito forte ainda geng e vai eu comas piadinhas né e erro né o go leng é a linguagem do e erro né não tem não tem e não tem aquela ideia de tricat né para tratamento de excessão tratamento de erros né na verdade não tem um erro handler né Uhum Então tudo que você faz que pode retornar um erro você tem que testar logo em seguida você tem um erro ele não tem um mecanismo de tratamento de erro tipo java padrão não tem Exception né é a gente par até quando for mais a fundo discutir isso também mostrar né É bem interessante muda porque muda um pouco a forma como você escreve né o código e já já tô tumultuando aqui a tua resposta mas o gol com zero de Gol nunca fiz um hello world de de Gol mas ele é orientado objeto é eu acho que é multi paradigma é exato É hoje em dia acho que essa é pegada né mas é é você pode fazer várias coisas com ela só funcional ou só orientado objeto igual Rush também muito paradigma não tem assim um não é só uma coisa né tipo o Java é orientado objeto de paradigma de Java é orientação objeto S você não consegue fazer uma classe estruturada no Java por exemplo posso causar o rancor e a discórdia comigo eu vou apanhar é tipo o Java script não mas é é mas é é mais ou menos né É É que o JavaScript não é bem orientado objeto né Não sei ecma scpt se lá pra frente mas é o ecma já é um pouco já é orientado mas não mas acho que o JavaScript nesse caso é multi paradigma mesmo ele é multi paradigma é funcional e a Parma procedural aquelas coisas que a gente estudou em análise de de linguagens na faculdade é ele só ia comentar a diferença aí que que falei pô comparação mas assim ele ele é ele é é dinamicamente tipado versus estaticamente tipado Então nesse caso o J vai para outro é vai para outro patamar até uma coisa interessante assim eu cheguei a fazer um hello world em go eu já tô mais avançado que você mas o gol ele é interpretado ou é compilado não compilado o gol é compilado né tanto que você ele Gol Se não me engano foi construído em C né construído em C ele é totalmente compilado você compila ver um binário mesmo tanto que você tem que passar Qual a arquitetura que você tá compilando no go interessante se você compilar PR PR Apple Silicon você compila para Intel ou se compila então é compilado mesmo porque dizem dizem e agora você acha que você é causar discórdia agora vou causa da discórdia diz que Java é compilado I Cuidado hein galera de jav mas Java é compilado Mas você passa o a arquitetura que você vai buildar o Java Não mas ele é compilado de uma maneira diferente ele é Ó a pegadinha aí eu acho ele é compilado só que ao invés de ser gerado para uma arquitetura específica é gerado um bite code que vai rodar numa máquina chamada jvm Algumas pessoas dizem que isso é interpretação pela jvm não é porque a jvm é aí também é uma praia que eu gosto né já viram minha vida inteira né Mas não é igual os jave os Jairo é mas não é porque não é tanto que Java é performático senão eles seria uma carroça realmente embora gente que briga e diga que é uma carroça Depende qual qual load fo o primeiro tem Cash envolvido nisso aí ou não tem cas é partida frio ou não n Vamos por partes é então mas o esse bite code que é interpretado que a gente fala né interpretado na na na máquina eh ele já é bite code né ele não vai mais compilar nada né ele só vai realmente de fato interpretar aquilo pr pra pra linguagem de máquina que tá rodando pra plataforma que ele tá rodando Mas ele já tem tudo estaticamente linkado né já tá tá lá tudo pronto né na jbm é mas toda linguagem quando vai fazer o o o build ele tem tem as duas fases né sim que é primeiro a tokenização ali que você faz a linkagem etc e a terceira que de fato é a compilação para linguagem de máquina então conceitualmente o Java ele fica no meio do caminho mas não é nosso foco ó o jit aí surgindo também o Justin Time compiler exato então o Git é é é então tem ah contando contra né tipo assim ah é interpretado é é interpretado nesse nível aí né entre o que ele vai o bite code que ele vai realmente ler aquele bite code dizer ah isso é isso isso tá lincado com aquilo né É É que a diferença do no pelo que eu tô lembrando aqui a diferença acho que então do Java nesse caso que você tá levantando o Java ele não não é adj in Time porque ele não vai pegar só o trecho que você tá usando ali ele compilou tudo ou seja ele fez uma camada de código intermediário isso que quem vai ler é a JM que é o equivalente lá quando você gera quem começ tem ter uma uma um background mais purista aqui lá no C você tem a linguagem objeto tem você tem um ponto o uhum do C exatamente que é o é é é meio que a camada intermediária do Bat code do Java sim é você gerar o ponto o e só que do ponto o você gera um o binário de Fato e a nesse cas exatamente e na no no Java Isso já é interpretado direto pela jvm mas isso dá um episódio e vai ter gente que entende da forma que eu coloquei que eu entendo assim que é compilada estaticamente compilado tudo estaticamente linkado etc e tal ele sabe o que ele vai executar então é compilado ele não vai interpretar o código Ele já sabe o ele vai executar é assim Issa é uma briga antiga mas acho que as tecnologias novas de Java são de fato compiladas inclusive tudo isso eu tô lembrando da minha iniciação científica que foi baseado num esquema desse de estudar Git e tudo mais mas voltado pro JavaScript que tem essa camada intermediária que cara como é o nome daquele Framework de que starta o Java extremamente rápido em Spring não é caramba esqueci não Framework não não Framework não um que gera um binário isso pô É um roper né que ele cham ele faz tudo em tempo de build E aí você inicia um microsserviço tipo em microssegundos assim nossa cara eu vou lembrar durante o episódio não qual que você tá falando cara tô tentando lembrar aqui a gente usava muito Spring boot é Spring boot é m famoso é é que o Spring é um Java clássico otimizado né eu vou lembrar eu vou lembrar e vou vou falar aqui eh mas enfim fizemos um mega parentes Chaves colchetes aqui na introdução do Baiano não esquece Deon continua aí no sem esquecer do ponto e vírgula senão quebra tudo continua aí falando das novidades lá da Clever baiano [Música] eh então eu tava falando falei do go leng né que não é a base realmente e a gente tem né pensando em frontend aí tem nativo mesmo a gente tem implementação Nativa né quando é App Android é cotlin né E quando é iOS Swift mesmo né que é aí outra coisinha que é linda né você ver para para não falar o contrário S até aproveitando que você você falou de cotlin que e a gente tava falando de Java aqui fazendo esse link eh vocês chegaram a a pegar a época de escrever a apps em Java pro Android e até falando assim não não chegaram a fal chegou ja cotl mesmo Como foi essa transição assim né porque teve muita empresa que provavelmente precisou fazer essa essa transição para cotlin agora não a gente já começou em cotlin Já começamos em cotlin sim sim porque a gente o nosso app a gente reformulou ele né tem o mobile né Tem uns dois anos mais ou menos acho que foi o tempo que chegou cotl mesmo mais ou menos isso acho que é isso e aí já era cotlin realmente pelo menos hoje a base de C eu não lembro de ser java em nenhum momento sempre cotlin legal e até trazendo a sardinha pro meu lado e frontend PR browser que vocês então frontend PR browser aí vai de tudo lá tem V kit react já vi o pessoal usando também é de de server server Side né render server Side né mais os V kit mesmo pô mas tem um outro não não isso é outra coisa vi vijs não VII é vi não VII né vi sei lá sei lá nunca consigo pronunciar mas é is flutter a galora já se aventurou em flutter se angular provavelmente vocês devem não acho que nunca teve angular legal acho que muito muito muito muito tempo atrás muito muito agora é mais a gente tem mais kit mesmo em react eu diria que esses dois browser legal interessante diria que esses dois e backend vocês estão experimentando coisas novas é e a gente tem de tudo assim né Por exemplo a gente tem eh a gente tem coisas em em Ruben rails cara Ruben rails é guerreiro hein é porque Pô você precisa de um admin Uhum não tem melhor melhor forma de criar um admin ali que um quando a gente não usa um que tem pronto mesmo aa a gente tem um que tem prontos que pronto mesmo o pessoal se a gente usa já pronto mesmo só os sai usando não precisa nem codar nada quero falar com você agora que Quem ainda não conhece é Clever Clever é uma empresa que já tem mais de 3 milhões de usuários em 30 países com 30 idiomas diferentes que tem trazido Soluções em blockchain criptomoedas e ativos digitais o objetivo da Clever é te dar liberdade financeira para operar nesse mercado de cripto então se você acredita nisso se você acredita nessa Liberdade você já Pensa como a Clever vai conhecer os caras é Clever Paio estão contratando também pessoal para trabalhar com crypto com blockchain então se você tem interesse se você tem conhecimento Ness área procura Clever se você gosta de criptomoedas se você opera no mercado você precisa conhecer a Clever precisa conhecer as soluções da Clever então o endereço tá aqui embaixo no vídeo para quem não tá no YouTube é Clever Paio Vai lá vai conhecer que realmente é o mercado sensacional E aí no backend vocês estão fazendo umas experimentações aí né na verdade não é nem experimentação não a gente já tá firme mesmo é vocês vocês usam o que hoje no backend assim então comentei do golang né É golang E agora na verdade não é nem tanto backend né que acontece eu falei um pouco do backend mesmo golang eu acho que é a base mesmo e tal e aí do lado do blockchain tem que lembrar que a gente A tá desenvolvendo um blockchain né Uhum e do lado do blockchain a gente fez um fork do multiverse X é da VM dele e essa VM deles é baseada em Rush Ah tá interessante e aí a gente trouxe adaptou PR Clever né fez fez a o porte né Vamos chamar assim então os Smart contracts na Clever VM todos são escritos em Rush né e a gente começou a ter esse contato com Rush nosso primeiro contato com Rush é é do nosso primeiro projeto opens da Clever que chama co RS cois que vende de Clever os é uma biblioteca de abstração de de chamadas a blockchain chamada Bitcoin ethereum clav chain n Tron etc etc Ti falei ti por aí vai então o cara ele quer fazer uma implementação de uma aplicação que fala com a chain você pode usar o cos RS você pode usar o cos que é o Clever os is E aí você não vai ter que fazer toda aquela implementação de contrato chamada protocolo com com a uma transação ele já tem lá um método para montar a transação você quer criar uma Wallet já tem um método lá para você criar um Wallet começando de tudo uma distração de toda essa essa camada isso em brush tudo em brush eu vou deixar até o link aqui em cima porque quem fala sempre em integração chamada de rede etc imagina sempre um rest bonitinho uma ap ali que o cara chama o token Barry tudo funciona lindamente e não é bem assim não é bem assim então teve episódio que a gente gravou aqui com o pessoal da Clever que a gente fala um pouco mais sobre como funciona integração cara que foi uma aula para mim eu aprendi muito dali para cá é um dos primeiros episódios do PPT no compir eu vou deixar o link aqui a gente tá até com a identidade antiga logo Amarelo etc mas é um episódio muito rico então se você quiser entender um pouco melhor como é essa parte de escrita e consulta na blockchain esse episódio vai te dar um background interessante é é porque não é como a galera pensa mas tem a Api para você acessar o Block que normalmente é grpc E aí normalmente tem alguma algum end Point Jon jpc né que você consegue chamar VH TPS mesmo é chamada Jason normal sim mais ou menos normal né aquele chama jpc normalmente tem que mandar tudo em cado recebe tudo em cado tem que é um outro é um outro é você faz o protocolo que você tem que não é tão Popular quanto o http rest né É porque o a diferença no caso do grpc é que você vai ter os pros que vai definir todo o seu dto vamos chamar assim né seu os suas entidades que você vão trocar e todo passe do que vai ou volta vai é baseado nesse nesse proto só que tudo que trafega realmente no nível da rede trafega em bytes uhum né então quando você faz Jason grpc normalmente você trafega lá um um bite encordado vamos chamar assim que é um você ver um monte de letrinhas esquisitas né ele ele passando tanto a requisição quanto na response né né porque você são são esses modos já carregados en codad né em bytes sim que torna o o processo mais eficiente justamente com você trafega Strings ex e e e não entidades como o protocolo http E aí o o o tamanho também dos pacotes terminam sendo menores né porque você é roda tudo em bite né sim por isso que o jpc tão performático né sim é exatamente ap que você tem várias formas é mas tem várias formas de Exposição porque você pode chamar de RPC puro mesmo Uhum que não tem nada a ver com uma chamada Jason jpc htp você vai cham lá Jason puro ou e grpc puro mesmo né fazer um Call né um dial né E vai chamar os métodos grpc ou você pode ter um grpc stream também que vai se comportar como um websocket né Mais ou menos né que vai ficar uma conexão persistente e você vai ficar trocando e os dados ou recebendo eventos né através do stream é muito usado por por por camada financeira né com maquininha de dados etc Justamente que o tamanho dos pacotes é menor você geralmente tem a largura de banda limitada né E blockchain também a maioria dos blockchains implementa de RPC a maioria A grande maioria Então tá esclarecendo esse ponto e pensando nos principais que começaram tudo mesmo Bitcoin eum Começou assim tudo de RPC e depois todo mundo seguiu né o padrão né então é tudo mais nesse nesse nesse padrãozinho mesmo de de chamada de PC né os falando dos nodes né Uhum E aí vocês fizeram Esse fork dessa do multivers x divers x VM E aí começou a ter o esse contato com mas o primeiro realmente é isso o primeiro realmente foi com cois RS que a gente chama de RS camb Rush que é essa camada de abstração E ali a gente começou a a ter esse esse interesse por Rush porque começou a se falar de Rush né todo mundo esse Rush virou hum aquela coisa de todo mundo tá falando todo mundo comentando sobre eh porque é mais seguro aí vocês comentaram até aí até mais falar até o Linus toch comentou não sei o qu todo mundo comentou ele tá falando de mudar o Kernel do Linux Kel do Linux é até até interessante que assim eu tava comentando com com o baiano antes da gente começar a gravar que of the records tem tem a questão muito da da Mozila se envolveu muito no começo né eh e inclusive lá atrás muitas partes de c+ mais do Firefox do c do Firefox foram reescritas em Rust né então assim a questão do do Rust já tá em projetos grandes já rola há muito tempo né tanto o Firefox tem tem trechos em Rust Ah o Linus já tá querendo colocar coisas no Kel há um tempo se já não tem algumas coisas ali perdidas já de teste dele Ah eu também Li que pessoal da Amazon tá usando pessoal da Microsoft já tem projetos internos rodando em Rust também o discord usa Rust então você vê que essa questão com Rust já tá bem mais pavimentada não é mais uma linguagem tão experimental assim né pessoal tá usando realmente PR tirar essa dependência do CC mais mais e PR para esclarecer assim para quem tá nos ouvindo e não tem tanto contato com com o mundo de linguagens de programação né a gente tem geralmente ali as linguagens mães que a gente chama né que é o c Java assembler que é uma linguagem né quase um instrução direto de de de processamento etc eh e a gente tem as linguagens que são criadas em cima das linguagens mães né que nem o o banano comentou que o golang foi feito em cima do c né então ele já é uma uma abstração em cima do ser e assim como outras foram criadas a maioria ali decidente do do próprio ser né e o Rust ele parece ser E aí uma pergunta para vocês porque eu não tenho conhecimento sobre isso ele parece ser uma uma nova linguagem ali independente mãe que não é meio que derivada de tudo e que inclusive implementa paradigmas um pouco diferentes do que a gente vê nas outras linguagens né sim porque todas elas as outras linguagens Elas têm meio que paradigmas muito semelhantes ali né Eh até por por ter essa essa herança das linguagens da onde elas surgiram né com c como o c+ mais então as linguagens que são orientadas aos objetos são muito semelhantes ali a a ao paradigma do do próprio ser enfim ser mais mais no caso né e as funcionais do do ser e o Rust parece que ele veio que meio que um um um uma parada nova sim dentro desse dessa linguagem mais baixo nível que gera já direto um binário muito próximo do processamento né sim não Rush não leva um ele ele cria um binário mesmo totalmente é um binário binário Total não tem nada de Uhum mas é igual go lenga também é um binário binário mesmo já é binário da da plataforma uhum né inclusive ele é bem eficiente nisso né gera um binário bem leve gera um binário eh time também ele é mais eficiente porque ele não tem GB de collector né ele eh pela questão de gerenciamento de memória que ele faz que eu comentei do ownership né evita evita que você tenha e a gente brincou aqui no Pointer Exception acostumado no Pointer Exception não existe no rush né Não existe nada que vai dar lá no no Pointer Exception nada não existe né pensando no go leng aí o o e e o Neil lá que ele dá né o not the new er no Pointer de escrito do jeito Gol não existe essa possibilidade no rush né então evita de ter Memory leak evita de ter no Pointer Exception evita evita que você como programador faça merda no fundo é isso n é uma babá M doutrinador de program isso que ele tem tem todo esse mecanismo de de ownership para resolver a questão de de gerenciamento de memória né Tem uma questão melhorada também de de com isso melhora a questão de data data Racing né de quando você vai realmente ter que ter concorrência no acesso a um determinado ponteiro né Então res um monte de coisa ele tem o cargo que é o package Manager dele padrão e é o legal do Rush também você faz lá o Rush app pronto você tem tudo você não precisa de nada além daquilo não precisa um monte de ferramenta né ele vem ele vem um toolbox realmente todo completinho já né você não precisa ficar instalando mais nada Esso também achei bem legal né como experiência assim eh e quando você eh tem essas características né termina tendo no final um um binário mais leve e mais performático em R por conta disso não tem garbas de collector também então então não tem nada que fica uma trad eh rodando em paralelo para verificar se tem coisa em memória que precisa ser limpo ou não e etc isso porque ele roda direto na instrução do processador ele vário diro quando você quando você compila você tem que passar a plataforma que tá cont diferente do Java que tem um garbage collector porque ele tá dentro de um wrapper não só isso porque C c+ Mais também tem garba de collector não tá dentro de VM nenhuma né Eh tem várias outras linguagens go né enfim tem vári outra linguagem que tem garb de collector e não tá rodando em VM nenhuma mas tem um garba de collector ali é é é que é diferente que ele tá trelado direto o processo da da aplicação né ISO processo da aplicação ali mas e não no processo da do environment né exato É interessante entender como provavelmente ele faz esse gerenciamento de memória né porque a maioria das linguagens um dos calcanhares de Aquiles é o gerenciamento mó memória maioria né gerenciamento e a locação né é s a locação e de a locação Esse é o problema do mundo né que o mundo de computação existe exatamente desde que o stack overflow surgiu né até antes antes bem antes dele surgir stack overflow né bem antes né não não o não stack overflow o site é o o problema stack overflow deixar claro pros pros nossos audentes aí porque tem a galera que provavelmente nunca programou em C em c+ mais e não sabe esse não sabe o que é um stack over Flow Exatamente é isso é verdade é verdade não é o site tá galerinha não é o a o erro de fato para quem não sabe o site foi criado em homenagem a Exatamente é exatamente o site foi criado em homenagem ao isso poderia ser no Point Exception também também né Se fosse Nutella porque aí seria jav não exato não seria um abraço meus amigos javos mas baiano quer quer botar aqui na TV para você dar uma tá aqui né É tô tentando montar um negocinho aqui para não eu tô trabalhando num código aqui mas eu tô tô com meu código mesmo aberto né não tem problema você tá codando en quando você tá falando com a galera é isso quase isso é até vou até então pegar esse gancho você já chegou a usar alguma coisa de paralelismo dentro do Rust paralelismo Não ainda não que eu lembro porque eu eu eu li uma o pessoal comentando muito de Gol até você comentou de Gol pessoal comparando algumas questões de paralelismo com gol e com Rust né então a briga ali tá legal porque até pensando quando a a gente começa a aprender paralelismo lá com c né ou com fortran a gente que que an é hoje o padrão de mercado ainda é o kuda Né que é o Framework de C para paralelismo né exato que inclusive usa aí com com com GPU e etc focado para GPU etc mas o c ainda reina meio que absoluto nessa parada né sim mas eu tenho visto que o pessoal tá começando a fazer algumas coisinhas ali meio que de test a gente vai ter o ruda um bom nome Framework he melhor do que eu como criativo humorista provavelmente bom nesse momento temos baiano aqui codando em Rust uma coisa que a gente comentou off the records no nosso grupo do PPT no compila é que a sint ainda te inoda um pouco é isso tem um criou uma piadinha essa semana aí que eu acho que é bem isso né como é o Rush é um como é que ele falou cara é uma como é é um negócio é um negócio massa legal mas é feio é é bem é bem esquisito mas é feio mas eu acho que isso é é é é vício do javer será eu acho eu vou te falar que não viu o código JAVA ele aí entra aqui o meu meu rcor com Java é ser verboso PR caramba absurdamente Mas é lindo um código JAVA sim é entend é lindo é quase um livro é maravilhoso é lindo o código jav só que tipo tu nunca vai codar uma uma uma classe ja uma ide é out tu vai ganhar uma tendinit né que escrever tudo isso exatamente então é é um copia colola de de um aut completion sim de É né você vai dando os Tab ali só isso eu como já venho de uma escola mais node pegp tu me ofende mas abraço meus amigos pegp eh uma coisa mais Python node e tal [ __ ] e o o Rust pelo pouco que eu conheci ele sempre semelha ali uma coisa mais minimalista né sim tem tem muitos trechos no no no no Rust que você nota a influência de ser mais mais por exemplo a gente tava até comentando aqui num código do do baiano antes de de começar a gravar eh você você lembra bastante aquela coisa de se ser mais mais ali ainda intrínseca dentro do código né sim sim então faz sentido porque Muito provavelmente quando eles criaram Isso tudo foi ó vamos fazer um c novo mas sem CC Ficou esquisito essa frase masc sem CC né sem sem sem cc um cezinho é desodorante eh a gente ó quem quem tá acompanhando a gente agora no Spotify o Spotify também tem vídeo então você pode acompanhar a gente no vídeo aqui do Spotify caso você não esteja ouvindo a gente no no no vídeo do Spotify vai no vídeo do YouTube porque a gente vai botar o a TV o o vídeo do baiano aqui agora para ele demonstrar algumas coisas e dar uma explicação geral aqui do do Rust para pra gente mas se você não não pode trocar agora e não quer ver o vídeo a gente vai narrar e vai explicar aqui a diferença Então continua aí não não desliga segue aí com a gente que vai ser interessante aqui pra gente desvendar uma linguagem nova bom você que tá vendo esse podcast da hora tá vendo um monte de problema aqui que a gente tá colocando né e Quer uma ajuda aí na sua empresa faz o seguinte entra no site aqui da VMB que a gente pode te ajudar vem be.io nós somos uma empresa relacionada à arquitetura de soluções a modernizações de aplicações também atuamos na frente devops para ajudar vocês a serem extremamente ágeis então dá uma olhada no nosso site que vai est aqui embaixo vem be.io e lá você vai poder ver um pouquinho da nossa história dos nossos profissionais e aproveitando se você for um profissional da área de tecnologia que tá Aim de trabalhar numa empresa legal um monte de colega gente boa e tecnologia de ponta manda o e-mail para people care@gmail.com [Música]
aqui ó para não dizer que eu t aqui ó Break Point ó tá vendo eu tava de bugando esse código e na verdade acho que quase todos sitiou met no código vai é é é acho quase todos vamos dizer que sim é eu acho que sim Tod acho que que eu conheço sim mas enfim e aí Aqui um exemplo mesmo né assim que eu falei do ownership né como é que ele evita que você faça merda né E aí eu botei aí na alta tela aí a a a documentação porque ele explica isso né na documentação isso também bem legal do Rush você consegue rodar essa documentação local você pode estar até no avião Como já aconteceu comigo você pode começar a estudar você sei lá um Rush up doc não lembro agora comando de cor Mas enfim e você consegue rodar essa documentação local e consegue trabalhar ali local não precisa de internet consegue fazer os exemplos que tá aqui né tudo local mesmo legal né Eh sve engano maioria das coisas não tem dependência de nada então dá para você rodar tudo local mesmo é é ó acho que tem uns exemplos que ele faz uns cargos para baixar dependência lógica não vai funcionar Mas os que não depende de internet você consegue rodar localmente uns exemplos mais bobo nisso mas aqui ele tá falando ownership é o capítulo ó understanding ownership e ele vai explicar aqui como funciona nas outras linguagens né quando você faz uma uma uma uma instancia de F meio feia mas é isso né quando você instancia né Um no instanciamento distanciamento né cri uma nova palavra horrível Eh aí você faz aqui né Instância que ele criou um relo aí um string né os os dois pontos dois pontos é o equivalente à setinha do das outras linguagens equivalente ao ao traço sinal maior é mais ou menos isso o ponto do Java é é o ponto do Java o ponto do Java É É aí você vê que essa parte por exemplo ali do código lembra muito C C mais mais aliás é é isso aqui é bem C né Isso aqui é bem C aqui é bem C eele let ali para quem programa em JavaScript aí com não o l é total no de família né É mas não tem outras linguagens também out ling assim até para para quem tá familiarizado com JavaScript né já sabe o que que é isso aí também sim hum E aí ele mostrando aqui pô distanciou e fez um uma atribuição né de o S1 para S2 né como é que normalmente as linguagens fazem isso né primeiro S1 S1 Na verdade é um ponteiro né Uhum que aponta para realmente o o o dado né onde tá realmente o dado lá um index né que você é uma string né normalmente é uma rede de de char em algumas linguagens é isso aquilo outro eh e vir até uma piada né no no rush porque no rush string é string não é uma rede char não é nada é string né E nesse caso aqui não uma Red char Não é ele é uma string pô mas como é que funciona uma string por dentro que não seja é uma string byes é é então é acho que essa é a uma das partes interessantes do do do Rush né de como eles devem ter criado isso por dentro sim como isso é locado né porque a gente tá acostumado a que seja um uma rede bikes rede é uma rede char né É É uma rede char P Enfim uma rede caracter né que rede de letra letra Não não é uma stringa mesmo é interessante é dá pra gente falar um pouco sobre isso mas é assim é uma string de Fato né e ele vai ter aqui o índex para cada né letra e vai lá criar né E aí quando você faz ah S1 eh equivale a S2 né is Você tem dois ponteiros apontando pro mesmo indereço exatamente você tem dois ponteiros que apontam pro pro mesmo uhum né endereço mes elemento mesmo endereço de memória exato e porque a invés de você copiar né o dado né tipo de dois dados não você o mesmo ponteiro né para mesmo Uhum é tem tem linguagens que fazem ISO essa atribuição por cópia isso ele fala Exatamente isso aqui isso e algumas fazem por referência é que aí tem a Shell cop tem a jep cop né enfim é exatamente isso mesmo e as linguagens que são mais como qual seria o conceito de verboso tem linguagem que faz isso né É É isso aí é tem linguagem que faz isso tem linguagem que faz isso que é que consome memória para [ __ ] né porque ela vai fazer cópia de tudo fazer cópia né sim porque ela não trabalha com ponteiro de memória né É aqui ó uma possibilidade é essa certo de linguagens isso ele faz um dois ponteiros apontando por referência a cópia é por referência a outra possibilidade né É o quê eu tenho um S1 e faz uma cópia minha uhum isso E aí se você altera um não altera outro exato É aí quando você faz cópia por referência alter duis alar um altera as dois beleza e no rush esse isso aqui ó dá erro de compilação de compilação tá não é que dá erro h de compilação não compila esse código aqui é igual o PPT esse código é igual com o PPT não compila não compila Caraca é e assim para quem tá nos ouvindo não tá vendo né assim é só uma atribuição gente de variável eu tem uma let S1 que recebe uma string relow E aí no rush é string dois pontos dois pontos from e abre parênteses entre aspas relo né E tem que ter sempre o ponto e vírgula Rush parecido com Java nesse sentido tem que ter o ponto vírgula é toda afim de de linha e aí no na linha seguinte ele faz um LED S2 tipo string 2 que recebe string 1 S1 é só isso e no final ele faz um Alen de S1 S que que vai não é nem o S2 porque Teoricamente você poderia ter um erro de referência mas é o S1 que é o S1 sim é a a primeira variável que ele que ele criou e atribuiu a string N E por que eu trouxe esse assunto assim na gente comentar aqui no podcast porque isso quando você vai para Rush é o que buga sua mente é o que buga sua mente eu tô bugado nesse momento Espero que você explique esse exemplo simples aí Imagine você pegar um código assim quando vai ter muito mais linhas de código Muito mais coisa para ser analisar ó queria comercial ali eu conheço é ponteiro é ponteiro tô passando ponteiro exatamente que aí você passa mas aí funciona se eu fizer isso porque então eu vou eu vou para exemplo lá vamos para mais simples aqui para poder ficar uma coisa mais né porque eu lembro que não sei se você referencia a variável você faz a a cópia por por por sim sim se você usa o e- comercial você faz a referência a cópia por referência por referência que aí você passa o ponteiro é no no rush só só diz respeito ao que é aquilo eu posso dizer que aquela variável porque o o Rush é e como eles falam estaticamente tipado né Uhum Então assim quando ele vai compilar ele já sabem que aquela variável é daquele tipo e eu posso dizer que aquele tipo é um tipo ponteiro de alguma coisa tipo um ponteiro de um ponteiro de inteiro tipo sim eu posso dizer que aquele tipo é um tipo é um tipo Weliton É um tipo pessoa uhum né ou eu posso dizer que é um ponteiro de pessoa é mas é semelhante é o se que pode eu posso criar um struct sim certo que é um um um um tipo de dado organizado E aí eu posso mas a diferença volta aqui ó que nem por exemplo isso aqui no C vamos supor que o meu S1 fosse uma struct sim nome endereço e telefone beleza que é esse exemplo aí tá até mais simples vamos pensar mais string é é que eu quero voltar no no no no primário ali né como se fosse e porque dizem que o struct é o avô da do Class né sim mas é isso o STR é uma Class eu ia comentar isso E terminei não falando mas é porque se a gente voltar lá no o struct a variável ele a e você poderia definir Você pode definir um ponteiro PR função e aí você poderia criar uma classe n se é que é complicado ess essas essas Como é que se diz essas esses entendimentos né Essas equivalências né equivalências porque às vezes não existe equivalência comentar porque a gente falou um struct é um CL que struct o struct do do do Rush não vai ser uma uma CL completa o struct do go também não vai ser uma CL sim sim porque não são interfaces não são interfaces é isso assim como no se também não era assim como no se também não era era só uma estrutura de dados de dado exato É exatamente ih caiu não que você ah entrou num descanso desculpa gente no se também não era se tanto que no se para você emular o comportamento de uma classe no struct você tinha que acessar a estrutura de dados e chamar a função que tá lá dentro vi ponteiro isso para para executar aquele aquele bloco de memória né exato Opa até Desci aqui de então mas é o que a gente tava comentando né tipo eh mas a a questão dos dos Trucks que a gente fugi um pouco mas é isso né Mas a questão de equivalência às vezes é é complicado você dar uma a igual mas é como se fosse realmente né então mas aí ó no C se esse string from Hello que tá aqui não não sei se ia funcionar não ia dar erro de compilação não não ia dar erro não ia mas ele seria e e nesse caso o S2 da forma que tá declarado aqui ele faria uma cópia cópia do S1 Uhum eu teria eu teria duplicado né o S2 e S1 no C se eu colocasse S2 igual e Comercial S1 aí eu faria a cópia por referência uhum e apontaria pro mesmo endereço mas os dois os dois métodos iam funcionar seria o ponteiro ponteiro S você tá pensando em C né isso no rush não porque Rush o conceito é desse ownership Então a partir do momento que você pegou o S1 e passou para S2 tipo você atribuiu a S2 o que estava em S1 o valor que estava em S1 que é um ponteiro para alguma coisa uhum passou a ser ownership de S2 e S1 perdeu o ownership ou seja o S1 não sabe mais quem que é ele não ele não tem essa string ele não tem mais não tem mais ele não não ele tem mas ele não ele não é mas o a na ship ele não permite que isso aconteça ele não pode ser acionado na memória você pensou assim ó na na memória continua igual entendi mas vamos pros problemas aqui vamos pras imagens Pera aí pera a Deixa eu ver se eu entendi eu criei S1 baseado num ponteiro para uma string certo isso E aí eu atribuí S2 para S1 S1 deixou de existir agora S2 atribuiu o que tava em S1 S2 isso então eu não posso mais referenciar S1 não pode mais nunca mais na vida agora referenciar S1 S1 virou S2 exato [ __ ] é uma quebra de paradigma loua né isso porque vamos vamos lá pros problema né assim porque esse exemplo da documentação acho muito legal né não sei se ele mostra aqui mostra mais embaixo tem mais figurinhas não vamos voltar aqui para figurinha porque aqui por exemplo né Vamos pensar s no garb de collector Java etc tudo que tem garba de collector aí ele não S2 S1 instanci e depois S2 também recebeu por referência a mesma coisa mas vão pensando nesse modelo né Aí quando acabar né Eh o escopo né ali né o contexto de vida de S2 ou S1 o garb de collector vai lá remove os caras e vai remover esse pon assim não tem mais ninguém na verdade assim vai ver que não tem mais ninguém usando esse cara aquele endereço de memória não é mais válido né isso e se não tiver nesse caso aqui ó se não tiver mais ninguém referenciando esse cara ele vai apagar isso aqui da memória SIM é isso que o Car de col vai fazer ele vai verificar de tempos em tempos se ainda existe algum ponteiro válido O que é um ponteiro válido um ponteiro em contexto válido em contexto instanciado ativo contexto instanciado se tem esse cara apontando para esse dado ah existe não posso limpar não existe eu posso limpar e aí ele vai lá e pum limpa ele vê se a referência está íntegra ainda isso e aqui é a mesma coisa né no caso do Rush o que que ele faz a partir do momento que você faz o que ele chama de você faz a o move né você moveu esse cara daqui para cá né esse cara automaticamente tá marcado para fazer o de loock ou o free né como a gente chama então eu não posso ter dois ponteiros ao mesmo tempo apontando pro mesmo ereo jamais e assim de uma maneira simples que eu demorei para caramba para entender Provavelmente porque eu sou meio burrinho mesmo mas eu demorei muito para entender codando mesmo assim dando erro erro de compilação falar meu Deus tem não sei mais compilar velho tá dando erro de compilação se voltar PR escola voltar pra escola velho não tô conseguindo nem fazer o negócio compilar e mas eu demorei a entender e e e entender que tem que mudar a forma às vezes que a gente programa porque às vezes a gente faz isso a gente passa referência depois reutiliza né que aqui não dá para falar isso não rola mas cara isso eu entendi e aqui assim ó exemplo na hora aqui ó um exemplo aqui bem bobo mas só para mostrar um código real mesmo né que tá rodando aluma co tudo bem que é um código de teste aqui é um exemplo de teste né Mas você vê que só fazer um parêntese quem quiser saber como é um código de blockchain é tá aqui ainda esse é um código de cliente de block ch mas é um é um esse cara ele tá fazendo uma uma criação de uma transação né no na red Tron é um código que eu tava debugando mesmo tô fazendo trampo em cima disso e é o que tava aberto aqui quando a gente ah vamos mostrar um código e tal então só para você ter uma ideia ó aqui ó esse tá recebendo esse o valor que tá nesse ponteiro né que eu tô fazendo un Wap aqui né que é para ele pegar o valor mesmo né e jogar lá no no rwo Beleza isso significa aí tudo tudo banito significa que eu não posso jis jamais usar o TX de novo ou seja se eu pegar fazer só um aret ali né Só um só para ver o que é que tem aqui né se eu só descar essa linha eu já tinha criado a linha só para Ant mostrar n exemplo mesmo uhum se comentei salvei ele já vai mostrar que tem tem um problema aí mas o mesmo erro que tá lá ó lá mas a o baianao aqui é uma dúvida honesta tem erro ou seja ele não deixa usar mas ali você tá tirando o valor você tá transferindo um ponteiro para outro ponteiro beleza Beleza se você não usasse o e-comercio e fizesse essa transferência por cópia iso é a mesma coisa não ele também não pode não não tem é não existe isso não tem por cópia é não aqui ó seria isso né que você queria que eu fizesse seria mais ou menos isso é a mesma coisa mudou tudo pera aí é que seria em vez de eu de eu de eu fazer a cópia de ponteiro fazer a cópia por valor ele ele cria automaticamente ele separa automaticamente que nem o se é nesse caso aqui vai funcionar né aqui ele deu erro porque na verdade eu passei Opa eu eu passei o valor que tá aqui não fiz um WP e é o valor que tá aqui dentro do outro objeto referenciando né F ele faz a cópia fazer a cópia Não não é cópia nesse caso é porque o seguinte aqui aqui eu tô passando uma outra coisa PR esse cara eu mudei esse aqui ó é um option lembra que eu falei estaticamente isso aqui é um option R quando eu tava antes é volta antes lá aqui Você tá jogando esse cara é um ponteiro de É um tipo mesmo de Raw isso Beleza então desse jeito aqui ele vai dar o erro de move né isso beleza que aí você tá movendo um endereço para outro endereço e aí não posso usar mais aquele endereço pode usar o outro não posso usar mais do jeito que você tava antes você troca porque aí você tem que instanciar o tipo é porque nesse caso aqui ó eu tenho um tx vamos lá tenho um tx pon RW data Uhum E aí se eu fizer isso se eu tirar esse é um rap aqui que aí eu vou pegar o que tá lá já no é o conteúdo aí você tem que declarar o tipo que é o option tirei ele é no caso aí ele permite eh automatizar isso o r não é tão você não prisa escrever tudo Ainda bem né Ainda bem senão seria pior ainda nég você não seria Java Tô brincando é porque isso é isso aqui quem tá colocando é ideia tá uh Mas você pode escrever mas você pode também omitir ele vai entender que como é a primeira a primeira vez que você tá instanciando isso ele vai entender que é tem o Raw data el do tipo option então ele tá criando um não é é é isso mesmo é option É um tipo do Rush você tem lá opção né vai ter então é o tipo que você tá criando o RW dentro dele R data isso dat tá então tô passando agora esse cara então Aí como eu tô passando esse cara eu posso usar o TX ainda né sim porque aí aí faz sentido porque aí você tá instanciando o novo objeto option com o valor de Raw data não é um novo na verdade tô passando objeto que tá lá para Roll ali né Uhum ah tá tá tá entendeu igual o exemplo lá da string só que ou seja o restante das coisas que tem dentro do TX você consegue usar não mais o TX P RW data seria isso não o TX p r nesse caso você é não pode usar vamos lá eu eu consigo ainda usar o TX p r datata ele não reclamou aqui agora é porque eles estão eles estão Independentes né o problema o problema é quando você tá com ponteiro exato o mesmo lugar mesmo lugar exato ex que aqui você fez cópia por valor e não por referência aí é outra é outro entendi você criou um outro e objeto entre aspas é uma outra Instância de memória não é uma Instância de objeto nova mas é uma Instância de mó aqui agora ele tá reclamando é do na real do Contract porque eu teria que fazer ess porque mudou o tipo né é isso aqui eu teria que fazer um você mudou o tipo é na verdade teria que fazer um un WP aqui né teria que fazer um Roll ponto unwrap aqui esse unwrap seria um cast ou não não é uma função entre aspas del é meio que o nome que tá ali mesmo rap ele vai tirar desenv opar daquele tipo do option para o tipo que tá dentro do option é cara Acho que a gente nunca desceu tão merde E aí Contract nesse podcast n hoje tá Ah ele vai dar o erro mais embaixo agora né provavelmente é aqui que também tá send um rap tá vendo mas aí aqui mas é que ali você tá com referência de ponteiro ainda né quero teu código anterior lá no raw.com s Sim vamos voltar lá pro pra ideia do ponteiro que é o que eu queria mostrar mesmo Ferram o código do cara não tem nada is caos cara mas agora eh entendi animal uhum a premissa é boa evita você ter no Poter Exception porque você nunca vai ter ninguém apontando pro vazio não tem é exato você não tem não existe essa possibilidade mas cara a a pergunta é isso é isso que eu queria mostrar Realmente você sim você ficou bem claro mas não para mim tá claro talvez nunca vai ter no Pointer Exception nunca nunca não vai ter para quem tá ouvindo no udio aí tá persistindo com a gente até agora vê a a a explicação no código que vai ficar mais claro mas eu eu acho muito louco pelo seguinte a pergunta do do do do Clauber no começo faz mais sentido agora porque o paralelismo ele é todo baseado em interesso de memória velho Sim e como é que faz isso no Rust então e ele faz ainda melhor do que qualquer outra linguagem como velho é por contra desse modelo porque se eu não consigo tá porque geralmente você mantém uma locação de memória só e aí você instancia outros projetos apontando pro mesmo endereço de memória mas aí você tem data Rac data Racing Em algum momento você tem o quê alguém esperando aquele cara sair dali para ele também olhar aquele aquele valor né que ninguém olha mesmo tempo não sei o que pensar tô pensando porque você concorda queed se você tem só um ponteiro aprontando para cada endereço de memória isso pressupõe é um tipo de processamento sequencial não mas vamos lá não pô vamos lá como acontece mesmo multitrade que você quiser aí go Java enfim eu tenho data Race né tenho eu tenho essa cerveja aqui e ten um 100 ponteiros apontando para essa cerveja na hora realmente que eu vou usar que eu vou pegar o líquido aqui dentro só pode ter um apontando só pode ter uma não é nem apontando usando né Realmente buscando o dado dali realmente olhando realmente sim fazendo o fet né só posso ter um você só pode ocupar aqui quando chegar dois o que que vai acontecer com o segundo vai entrar em Lock e vai esperar o primeiro terminar para data databas ou tomar um no Exception né Caso esteja apontando pro lugar errado e no caso do Rush isso nem acontece por causa desse modelo aí eu só tenho um e é um só mesmo não sei o que pensar só sentir é e provavelmente também você acaba ã como o baiano falou a questão de velocidade porque você tem menos checagem o o próprio compilador vai tratar isso antes de você criar ele ele não deixa você criar você pega em tempo de build exatamente você não pega você não vai tomar um no Pointer quando já tá compilado você é não erro de runtime é quase nulo aqui você pode ter erro em tempo de build né sim porque aí o cara não vai deixar se buildar é você vai ter outros erros de runtime né acontece é Rush tem penic tem tudo vai ter outros mas não vai não vai ter por no point não no então aí você tira muita responsabilidade do compilador para ter que checar tudo isso na hora de compilar né sim então o compilador deve ser mais enxuto o código também não no caso do ver a contrário o compilador é Porradão né o compilador não tá certo ele que vai ter que checar isso analise sintática e léxica dele deve ser pesada pesada não e ess checagens extras né de ponteiro ou de verdade é E aí por isso que o código depois sai sai mais enxuto Aí sim depois o código sai mais enxuto que ele sai blindado você não tem que ter todo aqueles boundaries que a gente tem para runtime das é então isso daí então essa técnica na verdade ela meio que dá aquela lustrados né dá dá uma limpada ali Tira aquela poeira que não precisa na verdade ela faz o deve fazer isso ele é o próprio deve ter que começar a fazer um um código mais enxuto né É isso mesmo cara que animal Ô mas você acha essa essa essa sintaxe feia Ah é um pouquinho vai cara é cara de Python isso aqui é cara de Python né total cara de Python só ponto e vírgula né é só só botaram o ponto e vírgula no Python uma ó aink e tal o cara que fez isso ele era ele era piteiro com cesiro com javascrip teiro né também tinha um método lá esse som é o quê fiquei curioso é o for é um tipo também não não é um som pode pode ter eh é som na verdade é o é Onde você viu o Sam ali aqui isso aqui já é o valor que eu tô passando né não não na linha 465 is 459 465 aqui 4 igual aqui também ó espar que ele parou da hora aí aí eu vi mostrar aqui o debug né em brush que também é bem interessante Porque como a base dele é um uma porrada de ponteiros O que que você tem no debug um monte de ponteiro Pointer caraca olha que interessante aqui no Framework análise léxica dele lexic ele já carrega ali direto n é ele faz essa camada léxica já no no no momento de build Ah é na ide sim and receive né cadê Aqui foi do Sí que um ponteiro de string é o quê é uma string né string ó como é que vem aí sensacional ô baiano até uma uma dúvida agora aqui que Ah aquele teste que tem no seu código ali é como se fosse uma annotation do Java é uma annotation tem anation aqui ó annotation de pra compilação wasmi anation Ah wasmi no ele vai fazer um bind desse no no OSM com esse cara aqui como send mesmo DS vai ser send lembra do Web assembly ele é o Web assembly aqui o OSM e ele compila lindamente o web assembly web assembly super enxuto melhor do qualquer coisa que você é melhor programar em Rush gerar we do que programar em JavaScript é na verdade assim lembra que eu falei naquele episódio que a gente fez sobre o Web sobre o frontend e falei um pouquinho do Web assembly o você consegue fazer em outras linguagens em C c+ mais CSP e gerar um bite code para ter depois essa interpretação dentro do do browser e interagir com JavaScript mas a melhor linguagem como o o o bano falou realmente é o Rust o Rust ele já tem ah suporte nativo para we ass assembly é você não precisa instalar nada de fora ou fazer nenhum workar ali para poder funcionar o símbolo do annotation dele é o essa lasanha aí lasanha é o Sharp né o Sharp é Sharp o con shate né o cara se o cara tá acostumado com outra linguagem vai achar que é comentário né vai vai achar que é comentário é e aqui por exemplo para indicar que é um teste né É É anation né sim o princípio como quiser se eu chamo já Ane é o a referência que a gente tem geralmente dessas coisas é do Java não que eu tenho alguma coisa contra o Java mas é mais bonito que ara não tenho nada contra o Java gosto de Java um abraço pro Java Pag até o csharp tem também né só que no chama notation um outro nome mas o conceito é o mesmo é o conceito é o mesmo conceito É mesmo é mas o legal é esse né assim do que eu acho maneiro mesmo essa questão da gestão de memória dele mesmo que é um negócio cara Fantástico dá para falar de outras coisas das das outras questões mas acho que foi um foi uma uma uma bela introdução coisa é é só essa parte Don ship que eu acho que é que rouba atenção realmente e muda né você tem que mudar aqui a forma que você pensa o conceito do ponto é você tem um valor alocado e cada e aquele ponteiro tem ownership sobre aquele valor e não pode ser dois sim é é bem isso aqui que ele mostra né tipo assim uma vez que você fez isso aqui tem valid já era é aqui ó has been validator ele resolveu um problema de de alocação de memória forçando você a programar direito basicamente basicamente é isso é eu eu ainda estou processando essa informação porque eu acho útil ter dois ponteiros pra mesma memória Uhum mas eu ainda estou em outro paradigma ainda estou em outro momento né Você ainda tá ainda tá processando isso é eu ainda tô ainda ainda vai vir um delite Cascade de todo o conceito que eu tenho aqui ainda é não mas buga porque dá bugado buga eu eu demorei eu confesso que eu demorei um bom tempo para entender realmente E você só vai entender realmente codando Quando você começar a codar e meio que coisas reais mesmo sim que você vai se bater em problema assim cara não tô conseguindo nem compilar o que que tá acontecendo aí você vai puts aquele ponteiro que eu passei tá e eu tô tentando reutilizar caramba é eu que fiz merda realmente ele não tá deixando fazer ou aquilo pode dar merda ele já ele já tá me prevenindo de um problema maior L é não camente pode ser merda você pode saber o que você fazendo mas enfim você pode não saber sim geralmente você não sabe geralmente você não sabe é porque assim eu tô enfim eu tô tô tô no momento de reflexão qualquer coisa que eu dizia aqui pode ser liviano danet e contemplação momento então at porque se você Porque de fato é o que o bano falou você vai ter ali um um conflito de acesso a memória de qualquer formaum né então os casos que eu consigo imaginar que eu poderia trabalhar com dois ponteiros em processo paralelo acessando o mesmo endereço eh no mínimo vou ter tá rompendo alguns constraints aqui de de de organização de código uhum não deveria ter esse tipo de coisa é porque na prática se eu acessar o mesmo endereço ao mesmo tempo é impossível fisicamente impossível né então eu vou ter que ter por trás um tipo de gerenciamento que vai me gerar fila etc problema de performance etc então é é melhor que eu Organize isso de fato num paradigma dentro do meu código já tratando isso de forma mais estruturada do que ter que levar isso pro runtime pro runtime poder resolver e e como você colocou pesando o runtime aqui não o runtime tá leve sim el eu sei tá em chutro não tem que ter aqueles boundaries ali não tem é não tem que ter controle não tem o controle tá antes no compilador compilador se matou mas beleza compilou acabou é desconstruiu muita coisa que a gente tem na e o ponto que a galera ficar zoando o Rush realmente compilação às vezes demora no rush é é porque o compilador tem que fazer todo esse tipo de validação né a você não vai se você for parar para pensar você não precisa ficar compilando toda vez cara mas né Eu acho isso muito justo uhum porque você compila uma vez e executa n vezes exatamente então é melhor que eu tenha os processos no meu no meu tempo de compilação do que no meu tempo de runtime sim e até trazendo um pouco de volta do do dos Bits e bytes nossos aqui como é que a gente executa assim ó lá ah o processo de compilação dele isso que já tinha muita coisa em cche aí tá sim sim vamos deixar o rodan e ver quanto tempo leva esse projeto que não é lá muito grande aí você vê que ele tem bastante dependência também né biblioteca ah foi rápido vai 15 segundos segund 15 segundos tá ótimo mas já tinha coisa em cche aí cara baiano [ __ ] animal animal animal Obrigado cara pô quando o episódio é técnico você v como passa rápido né fica meio é já passou né já foi 11 horas pô já 11 horas cara estamos aqui pô animal Obrigado 11 hor da noite viu galera a gente grava à noite aqui tá não achar que a gente Ih esses cara vagabundo não trabalha 11 hor da manhã tá gravando T gravando podcast brinc é 11 hor da noite a gente podia estar fazendo Qualquer coisa a gente T que gravar podcast que como diz o Wellington a nossa geração dorme tarde porque antigamente você tinha que acessar a internet só depois da meite todo mundo tem cho de sono todo mundo ninguém dorme Anes da meia-noite Pô o grupo lá tá muito legal cara Eu só não tem mais roupa para est naquele grupo né Tem gente muito tá em outra no level ali pô mas você um é um doce eu não eu não que isso eu eu só escuto ali só eu tô logo a gente vai ter uma comunidade um grupo também pros nossos ouvintes do PPT no compila principalmente para os membros é se você acredita os membros podiam ter contato lem exatamente se você acredita que pode contribuir com o nosso trabalho se você acha que a gente Ó teve uma mini aula aqui sobre Rust sobre Ah foi só uma peladinha aqui eu não sou o melhor cara de Rush não tô aprendendo tá galera deixar bem claro tô aprendendo ainda tô estudando O legal é isso é tipo a experiência de quem tá aprendendo com quem tá aprendendo e tal é isso eu fiquei empolgado em dividir a experiência mesmo de aprendizar ess do ownership então que bugou minha mente Você pode trocar a experiência da sua aprendizagem de Rust com o Cold da Clever olha aí que maneiro n então se você acha que você pode contribuir com o podcast se você acha que pode pagar uma servija gente para gravar esse episódio você pode ser membro lá no YouTube Legal E aí você vai ter eh conteúdos exclusivos que a gente vai lançar daqui algumas semanas conteúdos exclusivos que todos os nossos convidados gravam só para os convidados do do pros membros do do canal exatamente mas se você não pode se você tá aí no momento financeiro não tão interessante você pode ajudar demais a gente ajuda muito e compartilhando o episódio dando like compartilhando e fazendo parte da nossa comunidade você já ajuda demais comentando se você tá no YouTube então Peg esse episódio joga no grupo de Dev aí do da tua empresa isso já ajuda demais a gente sem dúvida então é e pensa em Rush realmente para backend PR Pensa aí porque mais seguro é bem mais seguro realmente é um dos motivos que a gente realmente tá indo aí pr tá usando pra gente que trabalha com blockchain é muito importante questão de segurança e é uma linguagem que realmente tá meio que ganhando realmente muita relevância né no mercado se não fosse uma linguagem de fato relevante disruptiva mestre Linus não não não estava pensando em em levar o ker reescrever o k e como a gente comentou aqui também né Eh provavelmente se você tá usando aí o discord ou se tiver usando Firefox você já tá usando Rust por baixo dos panos ali e não sabe e não sabe então aí só uma reflexão aqui para puxar até um gancho para outro Episódio a gente vê tanta empresa falando porque tem um tem um um lago um oceano de diferença onde o cara realmente tem e ownership técnico sobre a parada sobre o oceano que a gente vive nas empresas né quantas empresas a gente fala tipo de modernização de de legado modernização de aplicações etc e a gente encontra tanta dificuldade e a gente vê o cara falando de reescrever o kér de um dos dos sistema operacion ional mais utilizado para operação técnica do mundo vamos reescrever essa [ __ ] né Vamos reescrever mas mas é um grande desafio isso eu gostei do do do que você tá puxando aí porque assim como aí realmente vesti no papel de o chapéu né de c é uma grande dificuldade Você às vezes colocar na balança a questão de refatorar é algo que você sabe que tem débito técnico que você sabe que não foi feito da melhor maneira por n motivos não adianta voltar no tempo por n motivos aquilo não não está como deveria estar né às vezes eh você como gestor tem que colocar na balança se realmente vale a pena mexer naquilo uhum eh porque Qual o ganho real pro negócio nesse refactor né nesse nessa assim tem que existir realmente um ganho comercial um ganho financeiro sim né quando falar de empresa né quando não tem retorno a gente como arquitetos aqui que somos somos os primeiros a defender que você não precisa o problema é quando você encontra impíos para evoluir aquilo que o negócio precisa não mas mas às vezes é difícil eu tô falando isso porque realmente é difícil Ó tem coisas às vezes p a gente tá lá e pô isso aqui era melhor a gente refatorar mas cara a gente às vezes a não consegue porque assim tem outras coisas que aquilo tá f primeiro aquilo primeiro ponto aquilo tá funcionando é primeiro primo ponto tá funcionando né E tá funcionando Não não é da melhor maneira possível mas tá funcionando né Aí você tem que colocar na balança assim o quanto de esforço você o quanto você vai deixar de entregar coisas que vão são novas não e que vão Ger algum vão gerar ganho financeiro retorno financeiro pra empresa versus refatorar um negócio que no no final assim como tá funcionando Vai continuar funcionando né o que vai mudar assim tem que ter um ganho realmente porque se se for uma coisa só de tipo ah eu vou refatorar para melhorar a manutenabilidade de um negócio que já tá pronto não tem mas tem muita manutenção n começa esses questionamentos sim é acho que a gente entra aí numa questão até um pouco de de produto também que é o a questão de você gerar valor pro pro seu usuário ou pra sua empresa e aí você chega naquele paradigma de o que é valor define valor para mim porque é como você falou se a aplicação tá funcionando e não tá dando problema nenhum Sai daí meu filho ó temos as inteligências o cara tá conversa gente cara eh se você se aquela aplicação tá funcionando e não tá gerando problema Ok mas se tá gerando uma lentidão Pro usuário se aquela aplicação não tá mais entregando o que precisava se você precisa e adicionar mais coisas naquela aplicação eu acho que aí vale um começo de refaturar Eu acho que eu acho que esse é o ponto Mas falando mesma coisa o seguinte ó eh o o valor ele é ele é absoluto o valor pro negócio o que eu acho que tem a gente tem muito problema é a gente tem alguns gestores de tecnologia que claramente aquela aplicação não entrega o que deveria ela claramente tem necessidade de evoluir e gerar valor pro negócio mas a gente tem a resistência na na refaturar e isso acaba você sabe melhor do que eu bano que você trabalhou comigo em infraestrutura levando a demandas acessórias para segurar uma aplicação que ela já não não atende né que leva demanda de infra leva demanda de de de contornos de que não são de código e a gente tá vendo aqui o exemplo que eu dei tipo o cara que fez o sistema operacional o cara falou cara vamos reescrever essa parada porque pode ser melhor e e ou seja ele el e fazendo um paralelo baiano Tipo ele tá dizendo que melhor reescrever do que botar mais memória no seu PC tá ligado que é o que a gente faz na geralmente na infraestrutura das empresas entendeu perfeito perfeito mas ex mas eu digo que esse é um Desafio aí eu volto pro chapéu de assim é um desafio cara porque assim eu enfrento isso no meu dia a dia ó hoje mesmo eu tô com problema eh hoje mesmo assim hoje falando de hoje hoje agora né Tipo eu tenho um um dentro do Nossa da nossa stack de eventos né eu tenho websocket que é o cara que te dá o saldo o balance em tempo real inclusive pra sua Wallet ali em tempo real você tá ali olhando o saldo chegou uma transação para você vou abrir aqui agora ele vai atualizar sozinho você não vai precisar dar p o refresh nada é balance em tempo real né é um websocket que recebe eventos do blockchain escuta e e e manda para você pois eu tô vou tampar aqui ó para não acharem que eu sou milionário é não tem como tirar lá mesmo podia se não tivesse esse comprado Bitcoin lás não tem como não ver aí o ah verdade aqui ó tem um olinho tem um olinho aí boto o olhinho aqui ó põ um olinho aí cadê olinho [ __ ] aí Ah tá aqui ó aí ó aí então Aí tem um balance ali em tempo real que você ele pega essess web socket né beleza pois bem hoje eu tô com esse problema agora a gente tem um componente desse websocket que a gente chama lá internamente streamer e esse streamer el tá fazendo num determinado momento para pegar esse balance requisição demais e a gente já parou para olhar e tipo assim não é coisa de 5 minutos sem um café que a gente tem essa brincadeira lá 5 minutos sem um café ou 15 minutos sem um café quando é alguma coisa simples de resolver rápida e não é a gente tentou olhar mexer fal cara o buraco é mais embaixo né vai precisar de um refactor mesmo isso aqui um ref grande solução vamos pegar um node de blockchain colocar do lado do streamer e não usar mais node compartilhado com ninguém é a solução Agora sim mas você não vai perpetuar isso não vou perpetuar mas cara esse desafio é cara é sim eu entendo eu entend o PPT tem licens para falar isso né É [ __ ] porque você fica ali entre a cruz e a espada assim no sentido cara eu sei que eu tenho mas tem coisas que às vezes é melhor tocar assim do que realmente prender o tempo ali porque o mercado não vai te esperar sim o Lead time é é você encontrar o meio-termo ali entre vou refaturar e vou manter né é uma balança mas isso dá outro Episódio epas vezes eu bato lá o pé não isso a gente tem que refaturar porque assim é o que você falou Tem coisas que são óbvias ó se eu não refaturar isso eu não consigo passar de E aí vem o Feeling do C out saber o que realmente precisa ser feito ou não né um exemplo pô se eu não refatorar isso eu não vou conseguir passar de 100.000 Daily Active users questão de escala eu quero chegar em 100.000 eu quero chegar em 200 quero chegar 1 milhão de Daily Active users então preciso fazer um negócio que suporte o que eu quero isso pró isso aí mas é é um desafio é Um Desafio assim a gente quando é tá lá muito no técnico né que é isso que que com a gente fica realmente pô mas é óbvio mas cara às vezes esse Óbvio tão óbvio que deveria ser refatorado tão ó é tão tão Óbvio S ponto de vista de negócio é isso cber muito obrigado meu caro te agradeço mestre muito bom cara Obrigado por contribuir aqui bom poder vir aqui e participar show de bola baiano você é padrinho já prata da casa quadrinho do do do do PPT obrigado novamente por contribuir aqui com a gente cara iso é isso estamos junto Foi você conseguiu fazer o episódio mais técnico da história do PPT depois de quase 140 episódios escovamos bites escovamos hoje foi que é isso a gente chegou no EC comercial da variável chegamos Noal a locação de memória não tem como só se o cara vir mover registrador aqui mostrar mostrar o o processador ali programar sempr fazer de loock Deal só se o cara fazer MX de registrador de obgado fazer free P mas esses lá no grupo foi mais barato ficou lembrando essas coisas lá qu já programou Obrigado maninho você que acompanhou a gente até agora muito obrigado pelo Episódio técnico por acompanhar a gente até aqui Siga a gente nas redes seja membro ajuda a gente na divulgação Muito obrigado valeu obrigado C [Música] [Aplausos] [Música]
Episódios Relacionados
1h 41minComo a tecnologia poderia ter evitado a crise do Metanol? | PPT Não Compila Podcast
Bruno Campos
29 de out. de 2025
1h 29minUPDATE SEM WHERE: Era tudo mato - ICQ, Netscape e a Origem da Web | PPT Não Compila Podcast
Bruno Campos, Clauber Stipkovic, Fábio Martinelli
11 de out. de 2023
1h 43minInternacionalização Bancária na Avenue: Produto e Tecnologia | PPT Não Compila Podcast
Paulo Victor Gross de Souza, Rogério Pereira
19 de nov. de 2025
2h 2minO Ataque Hacker ao Banco Central | PPT Não Compila Podcast
Bruno Campos, Rafael Lachi
30 de jul. de 2025