Тёмный

finalmente aprenda PONTEIROS (C/Rust/Python) 

Augusto Galego
Подписаться 44 тыс.
Просмотров 18 тыс.
50% 1

📚 Livro para entender estruturas de dados e algoritmos: amzn.to/4bYu4VE

Опубликовано:

 

5 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 81   
@angelo_aosol
@angelo_aosol 6 месяцев назад
Um adendo: Variaveis de tamanho fixo como numbers e boolean, ficam armazenadas na Stack de memoria, por esse motivo, quando vc atribui y = x, sendo x um Number, o programa consegue copiar o valor de x para y. Quando estamos lidando com variaveis de tamanho relativo (podem ser alteradas, sem serem recriadas) como arrays, na Stack apenas ficara alocado o endereco de memoria do Heap onde o valor da variavel esta armazenado. Desse modo, quando vc atribui y = x, sendo x um array, vc esta atribuindo a y um endereco (ou ponteiro) que esta alocado na Stack, e nao o valor de x. Isso ocorre porque a Stack precisa ter um tamanho determinado na hora da execucao, entao algumas linguagens como Rust, escolhem fazer deste modo sua arquitetura (alocando variaveis de tamanho relativo no Heap). Posso ter me enganado em algo, mas eh por ai... li essa explicacao no livro The Rust Programming Language.
@Lucs-ku5cb
@Lucs-ku5cb 6 месяцев назад
Certíssimo! Em rust você também pode criar seus próprios tipos que clonam por padrão sem a necessidade de chamar o metodo clone() explicitamente Basta adicionar #[derive(Copy, Clone)]
@novawarebr
@novawarebr 6 месяцев назад
Ponteiros são importantes em Go também e é uma linguagem que tá crescendo bastante. Ótimo vídeo Galego.
@ruizlenato
@ruizlenato 6 месяцев назад
realmente
@lufebr
@lufebr Месяц назад
No exemplo de python com lista, x já é um ponteiro que aponta para um objeto do tipo lista. Quando rodar x = y, o valor de x é copiado para y, portanto a referência contida em x é passada por valor para y. E assim, tanto x como y passam a apontar para o mesmo objeto do tipo lista.
@moimsk8
@moimsk8 6 месяцев назад
Incrível que certas coisas que aprendemos há 10, 15 ou n anos atrás voltam a evidência, como no caso dos ponteiros. Minha segunda linguagem na faculdade foi C e isso foi o "Mindblowing" naquele momento. Quando chegamos no Java (na minha época era a matéria de linguagem de programação III) o professor tinha falado: ponteiros? Você até pode mexer isso no Java, mas esquece isso porque nossa máquina virtual Java vai cuidar disso pra você. É isso aí
@airtonfabian2765
@airtonfabian2765 Месяц назад
Muito legal você abordar os ponteiros. Mesmo quem desenvolve em linguagens que não tem ponteiros é bom conhecer e entender o funcionamento. Isso que você se ateve somente ao ponteiro de uma variável, mas há ponteiros para estrutura (struct) , ponteiros para funções que acho demais. Já deixei o C há um bom tempo, hoje trabalho com Perl que não é muito comum no mercado mas tem um poder grande em passagem de ponteiros de estruturas hash, pode tanto passar o ponteiro de um hash inteiro quanto só único item do hash para aumentar velocidade de processamento.
@Edulira17
@Edulira17 6 месяцев назад
Muito bom !! Estou no 3 período da faculdade e estou aprendendo Estrutura de Dados com C, seu vídeo me ajudou muito cara, obrigadao!
@HansMüller-t2s
@HansMüller-t2s 11 дней назад
Augusto, já disseram que você é o cara? Bem, to dizendo agora!
@keuwey
@keuwey 5 месяцев назад
Que conteúdo bom. Tô gostando muito do seu canal. Python foi a minha primeira linguagem, antes mesmo do HTML. Recentemente venho aprendendo java por causa da faculdade e apesar de entender o porquê dos memes com ela, tô achando bem legal. Também planejo estudar C, C++ e Rust pra aprender mais sobre esses conceitos avançados de ponteiros, stack, heap, threads, garbage collector, Big O notation etc.
@user-iy8sx1ko4x
@user-iy8sx1ko4x 6 месяцев назад
na hora que voce explica a declaração do porque o ponteiro é um int, sua explicação foi equivocada. Você declara o ponteiro como int *y porque o endereço de memória que você está guardando armazena um inteiro, logo, caso fosse um ponto flutuante, seria float *y. Isso porque espaços de memória sao reservados de acordo com a demanda de bits do respectivo tipo de dado armazenado, portanto o tipo deve ser especificado. Não tem nada a ver com o identificador do espaço de memória
@luizfilipe7630
@luizfilipe7630 6 месяцев назад
sim, tbm estranhei isso. em 5:28, eu queria tbm q ele explicasse q o x n guarda o vetor, e sim o ponteiro tbm, mas pelo menos ele avisou q foi uma simplificação. no mais o vídeo tá mto bom, o Augusto faz um trabalho excepcional introduzindo esses assuntos pros javascriptos
@user-iy8sx1ko4x
@user-iy8sx1ko4x 6 месяцев назад
@@luizfilipe7630 concordo. tive bastante prática com C, ponteiros nao é um assunto obvio de fato kkkk, ele deu uma boa introdução
@TheMaxwell1982
@TheMaxwell1982 6 месяцев назад
Em C vc não é obrigado a especificar o tipo do ponteiro, tanto que pode declarar algo como void *i e fazer i = malloc(sizeof(float)); ou i = (void *) &. Os tipos são úteis na hora de fazer aritmética de ponteiros.
@TokaGado
@TokaGado 6 месяцев назад
Muito bem, um int em C armazenamento 4 Bytes por exemplo(na maioria dos compilers), um char 1 Byte. Arrais é são uma sequência de endereços alocados em sequencia a partir do primeiro índice, é quase que lindo qnd entendemos isso em C. Mas queima neurônios até consagrar a sabedoria.
@luizfilipe7630
@luizfilipe7630 6 месяцев назад
@@TheMaxwell1982 sim, mas a discussão aqui é q no vídeo ele diz q devemos colocar int* pelo motivo do endereço ser expresso em um número inteiro
@ferreiiratech
@ferreiiratech 6 месяцев назад
Excelente vídeo e didática. Muito bom!
@victorvilela_
@victorvilela_ 6 месяцев назад
Excelente conteúdo e didática!
@eovinicius10
@eovinicius10 6 месяцев назад
conteúdo e qualidade fantástica, parabéns !
@JustCandAngular
@JustCandAngular 6 месяцев назад
Eu tinha um conceito muito mais complexo na cabeça kkkkk obrigado augusto por resumir tudo que eu aprendi na faculdade.
@vrnrx27
@vrnrx27 6 месяцев назад
Gostei do video, confesso q eu nao tenho tanto conhecimento afundo da linguagem, mas eu entendi o que você quis dizer, e realmente, eu nunca vi ponteiros e fiquei um pouco perdido mas entendi sua explicação !
@ithallotulio
@ithallotulio 6 месяцев назад
Tava querendo aprender ponteiro e vc lança esse video, sabe muito
@ojuliomiguel
@ojuliomiguel 6 месяцев назад
Um dos problemas muito comum no javascript é passar uma variável por um parâmetro de uma função e modificar esse parâmetro internamente na função refletindo na variável passada. function modificarObjeto(obj) { // Modificando a propriedade do objeto obj.nome = "Novo Nome"; } Esse tipo de uso já vi causar muitos problemas - inclusive o lint nem deixa fazer isso.
@marcuspessanha1237
@marcuspessanha1237 6 месяцев назад
Baita vídeo Galego! Creio que nós pythonicos só aprendemos isso quando esbarramos na necessidade de usar .deepcopy kkkkk pelo menos comigo foi assim. Um abraço!
@thyagooliveira7
@thyagooliveira7 5 месяцев назад
Noossa, que inferno foi depurar um código gigante sem fazer ideia de onde estava o problema por não conhecer o .deepcopy. Tu rssgatou traumas que eu não lembrava kkkkkkkkk
@marcuspessanha1237
@marcuspessanha1237 5 месяцев назад
@@thyagooliveira7 kkkkkkkkkkkkkkkk sorry man
@rodrigogois3790
@rodrigogois3790 6 месяцев назад
No gráfico vc tem um ponteiro que guarda outro ponteiro. Mas na implementacao nao. x e y teriam o mesmo endereço 0xcccc.
@Ellipsis_
@Ellipsis_ 5 месяцев назад
eu aprendi tudo isso em Go kkk, e os Slices que seriam os Arrays sem tamanho fixo de la, tem o atributo de apontar pro endereço de memória por de baixo dos panos, por isso em Go fica claro questões de uso do Array e de Slices q sao bem mais utilizados la, do q outras linguagens
@lacrador_idiota
@lacrador_idiota 6 месяцев назад
python e js poderiam ter algum esquema de especificar ponteiros, iria ser mto util
@PauloSGM
@PauloSGM 6 месяцев назад
Muito bom. Adquiri um novo soft skill.
@glavila
@glavila 6 месяцев назад
5:32 No meu entendimento, o que aconteceria então, seria y apontando para o primeiro elemento da lista de x (index 0), e por meio de aritmética de ponteiros, conseguiríamos acessar os outros valores, e aplicar funções como no caso, o append( ), certo? Ou é algo além disso?
@luizfilipe7630
@luizfilipe7630 6 месяцев назад
no python se eu n me engano, quando vc dá um append num array, ele cria um completamente novo com tamanho n+1 pra conseguir inserir o q vc quer
@glavila
@glavila 6 месяцев назад
​@@luizfilipe7630Faz sentido. Se estivéssemos lidando com um array dinâmico, surgiriam algumas considerações adicionais. Adicionar elementos no início e no final da fila seria facilmente resolvido utilizando uma lista encadeada circular. Mas isso apenas resolveria o problema para a função append, outras funcionalidades, que necessitariam acessar um elemento na lista de index qualquer teriam mais trabalho para encontrar o índice apropriado. Isso com certeza ia ter mais custo computacional do que simplesmente criar uma nova instância da lista de tamanho n+1 com os valores copiados. Depois é só desalocar a antiga lista, o que provavelmente é feito de forma automática em python, imagino eu.
@Luc4s_unu
@Luc4s_unu 6 месяцев назад
top dms!
@Jhonegao
@Jhonegao 29 дней назад
Bons tempos de faculdade.
@KLORETO
@KLORETO 6 месяцев назад
O Y é o amiguinho da 'cola', não tem valor, apenas uma referência. O (Y) próprio valor pode ser outro.😅
@clintonrocha4980
@clintonrocha4980 6 месяцев назад
Pf, coloca um zoom nesse vscode, obrigado!
@isackcosta5660
@isackcosta5660 6 месяцев назад
cara, aprendi
@FakeLewis
@FakeLewis 6 месяцев назад
Quabdo comecei com JS e descobri a "passagem por referência" que tanta gente reclamava, eu imediatamente imaginei "parece com ponteiros"
@TokaGado
@TokaGado 6 месяцев назад
Em JS não tem um lance que variáveis décadas com let são locais e com var são globais?
@FakeLewis
@FakeLewis 6 месяцев назад
@@TokaGado sim, mas isso tem mais a ver com escopo de código que com ponteiros
@mangycornet2395
@mangycornet2395 6 месяцев назад
​@@TokaGado a estrutura dos ponteiros de uma variável pode ser local ou global e isso gera comportamentos estranhos no JS se comparado com outras linguagens.
@WitWeight
@WitWeight 5 месяцев назад
Cara isso é mt legal vei, quero aprender mais disso onde eu posso ler ou aprender esse tipo de conteúdo? (Eu vou pesquisar mas se vocês tiverem uma boa fonte por favor compartilhar)
@hzlucasf
@hzlucasf 15 дней назад
Aprenda C e construa suas próprias estruturas de dados. É uma ótima forma de estudar mais sobre o assunto.
@lacrador_idiota
@lacrador_idiota 6 месяцев назад
javascripto, nova versão de calabreso
@Chapeu_de_aluminio
@Chapeu_de_aluminio 6 месяцев назад
Só parece difícil, não é. Programo em c/c++ há anos, e amo ter esse controle.
@PenseBaixoNivel
@PenseBaixoNivel 6 месяцев назад
To a 12 anos mexendo com o assembly da at & t e te digo, não existe "variaveis" são apelidos dados a endereços de memoria, e o quanto antes o pessoal novato entender isso, mais facil fica ponteiros....
@PenseBaixoNivel
@PenseBaixoNivel 6 месяцев назад
Imagina os novatos entenderem registradores...e operaçoes bit a bit...
@ruelcio3353
@ruelcio3353 5 месяцев назад
@@PenseBaixoNivelqueria entender isso, mas tem pouco conteúdo sobre..
@PenseBaixoNivel
@PenseBaixoNivel 5 месяцев назад
@@ruelcio3353 Ter conteudo tem, porem em ingles...
@PenseBaixoNivel
@PenseBaixoNivel 5 месяцев назад
@@ruelcio3353 É bem simples, mas é preciso q a pessoa tenha uma base solida de Sistemas operacionais antes....
@JoSanInk
@JoSanInk 5 месяцев назад
eu sou iniciante e uma coisa que eu não entendo é: pq eu iria querer o mesmo valor em 2 variáveis diferentes?
@joshuaoliveira8059
@joshuaoliveira8059 6 месяцев назад
5:55 / 6:33 Pera, quer dizer então que, em python, quando é criada uma variável que recebe outra variável individual , `y = x`, indiretamente é um 'ponteiro' da variável individual. Mas e se for passada um complemento para essa variável? `y = x + 1` Vai ser criado um endereço novo diretamente na memória?
@kaehm9054
@kaehm9054 6 месяцев назад
Cara isso depende mais de qual tipo de dado você está trabalhando. Geralmente nos temos os tipos "primitivos" que criariam um novo endereço de memoria só que se você trabalha com JavaScript, especialmente com a biblioteca React você vai ver muitas bizarrices se você não entender sobre o que o Augusto falou. Por exemplo, em React trabalhamos com estados e se o seu estado for um objeto, você vai ter que ter uma atenção a mais para altera-lo, e você vai usar muito o conceito de "DeepCopy" e "ShadowCopy". Eu não vou me estender porque se eu fosse escrever tudo iria dar um texto gigantesco, mas só com esses conceitos você pode procurar e entender melhor.
@bruno.obatista
@bruno.obatista 6 месяцев назад
Pelo que entendi, quando são valores como inteiros, ele apenas faz uma cópia e não usa referência. Ele vai utilizar de ponteiros quando são listas, e ai sim ele altera o mesmo valor indepentende de qual variável é alterado.
@wellingtonferreira474
@wellingtonferreira474 6 месяцев назад
É interessante ver um pouco sobre variáveis mutáveis e imutáveis. No geral as imutáveis tem seus valores copiados para o endereço de memória da nova variável e os mutáveis tem o a sua referência de memória atribuído a nova variável. Entao x = 5 e y = x, o x não tem a mesmo referência de memoria de y, mas no exemplo mostrado no video o array é mutável.
@joshuaoliveira8059
@joshuaoliveira8059 6 месяцев назад
vou pesquisar mais sobre esses assuntos, obg a ajuda@@kaehm9054 😀
@adrianbueno6894
@adrianbueno6894 6 месяцев назад
ENTREI NO VIDEO SO PQ TINHA RUST
@Kl4us13
@Kl4us13 5 месяцев назад
Entao meu x e um ponteiro para o valor?
@Lucas-km8fr
@Lucas-km8fr 5 месяцев назад
Só ficou muito pequeno o tamanho da fonte😢
@oenzolopes
@oenzolopes 6 месяцев назад
Qual o nome desse programa de desenho?
@thalesedu1372
@thalesedu1372 6 месяцев назад
Excalidraw
@julianodibai7334
@julianodibai7334 6 месяцев назад
Alguém sabe qual site desse quadro negro que ele usa para a explicação?
@GutoGalego
@GutoGalego 6 месяцев назад
Excalidraw
@caiozampini2112
@caiozampini2112 6 месяцев назад
junior explica o que são pointers Edit: terminei de ver o vídeo e é um absurdo de desinformação, não fez o mínimo de pesquisa
@Bernardo_Steffens
@Bernardo_Steffens 5 месяцев назад
O que ele falou de errado?
@guiseila_ok
@guiseila_ok 5 месяцев назад
cara da a crítica e não justifica o que ele errou kkkkk, depois quer ter razão
@kkkippy
@kkkippy 6 месяцев назад
03:08 - Bem, eu acho que você poderia ter só dito que era um operador address-of, que é um E comercial (&) que antecede uma variável, retornando seu endereço de memória
@yamsol1911
@yamsol1911 6 месяцев назад
Olá! Por favor, alguém sabe qual o nome do aplicativo de desenhos usado pelo @GutoGalego (8:12)?
@GutoGalego
@GutoGalego 6 месяцев назад
Excalidraw
Далее
Being Competent With Coding Is More Fun
11:13
Просмотров 89 тыс.
O problema que só 1% dos devs consegue resolver
18:25
All Rust string types explained
22:13
Просмотров 174 тыс.
Os 3 LeetCodes que mais caem em entrevista
32:07
Просмотров 13 тыс.
Top 10 perguntas para entrevistas Python
11:32
Просмотров 11 тыс.
Use Arc Instead of Vec
15:21
Просмотров 147 тыс.
My 10 “Clean” Code Principles (Start These Now)
15:12
Should you learn C++?? | Prime Reacts
20:29
Просмотров 370 тыс.
esse programador competitivo é muito rápido....
32:58