Recursividade // Dicionário do Programador

  Рет қаралды 51,731

Código Fonte TV

Código Fonte TV

Күн бұрын

Пікірлер: 114
@AndreAntonioDantas
@AndreAntonioDantas 6 жыл бұрын
Vocês são felizes e não sabem... Eu, como programador das antigas (e bota antigas nisso) trabalhei muito em computadores que hoje não passariam de brinquedos. Vocês não sabem o que é programar um microcontrolador 8051 com exultantes 128 bytes (bytes mesmo, não kbytes ou Mbytes). E olhem que tinha compilador C para esse microcontrolador!... Porque eu lembrei disso? Porque existiam N problemas que seriam mais facilmente resolvidos em termos de programação utilizando recursividade, porém a recursividade impõe dois grandes problemas para a máquina: ela exige muita memória e é mais lenta. Quando você executa uma função, o compilador gera uma sequência de instruções que reserva um espaço de memória para aquela instância de função. É algo que a linguagem esconde do programador, mas que estará lá quando o código fonte for transformado em binário executável. Porém, numa função recursiva, cada vez que a função é chamada por si mesma, toda a memória reservada para aquela instância é preservada na pilha de máquina enquanto um novo espaço é aberto sobre ela na pilha. Imagine que uma função seja chamada recursivamente 100 vezes. Teremos então 100 espaços de memória empilhados um sobre o outro, esperando que a instância seguinte retorne. O gasto de memória é absurdo. Outro fato é que existe todo um código que é executado para preparar o início da execução da nova instância da função e depois outro código para finalizá-la e transferir os resultados para a instância anterior. Num computador moderno, com tanta memória e velocidade, isso não é problema, mas num PC XT com processador 8088 de 4,77 MHz e 256 kB de memória lá dos anos 80, um programa de altíssima recursividade para "mastigação de números" podia levar meia hora ou mais de trabalho, contra 5 ou 10 minutos com um código equivalente não recursivo e sem usar tanta memória. Então agradeçam. Vocês são felizes e não sabem. Posso fazer uma sugestão? É algo que com certeza é bem diferente do que vocês estão acostumados, cheira a naftalina mas é um problema bem atual. Estamos vendo que a era dos processadores que dobravam de velocidade a cada ano já passou e agora a moda é a multiplicação de cores e threads para processamento paralelo. O que pouca gente sabe é que os princípios da programação paralela (e sua irmã, concorrente) tem seus primórdios nos anos 80. Quando comecei um mestrado em nanotecnologia naquela época, eu precisava de um supercomputador (para os padrões daquela época), e para isso comecei me aventurar no mundo dos chamados Transputers, fabricados por uma empresa chamada INMOS. Esses transputers eram processadores que podiam ser colocados em paralelo numa placa mãe e automaticamente dividiam as diferentes threads paralelas e concorrentes sem necessidade de qualquer configuração. Só que para isso, esses processadores tinham uma linguagem especial, chamada OCCAM, muito parecida com C, e que oferecia suporte a funções especiais para paralelizar procedimentos. Vocês falaram neste vídeo numa comparação entre um loop e uma função recursiva, sendo que a função recursiva é uma sequência em série. A programação paralela escalável também é comparável a um loop, mas cada interação do loop é uma função que pode ser executada de forma independente por diferentes processadores em paralelo. Mas o que essa naftalina dos anos 80 tem a ver com hoje em dia? Simples: os Transputers são os bisavóes dos processadores multi-core e multi-thread. Até mesmo a ideia de processadores Xeon funcionando em paralelo na mesma placa mãe vem dos transputers. Só que se muita gente tem dificuldade em pensar um algoritmo de forma recursiva, pensar numa programação em paralelo e concorrente é de deixar o sujeito maluquinho e por isso até hoje é uma parte da ciência da computação que não avançou muito daquela época para hoje. Exemplo: uma planilha de cálculo hoje é fácil de programar dentro da progamação clássica, linear, de thread única. O defeito dessa planilha é que ela vai sempre sobrecarregar 1 thread de um core do processador. Não há ganho de desempenho ter um computador com múltiplos cores e threads para processar essa planilha. Para isso a planilha precisaria de uma programação paralela escalável. Cada célula é um processo paralelo para que possa ser processada usando todas as threads de um processador, tenha ele quantas threads e cores possuir. Só que aí temos um problema clássico de quem nasceu primeiro, o ovo ou a galinha. Uma célula só pode ser processada se todas as células das quais ela depende já foram processadas. Isso é fácil de fazer num processo linear onde colocamos as células em fila única. Porém, num programa com paralelismo, onde cada célula é executada de forma independente por diferentes processadores e cada célula tem uma velocidade diferente para ser processada, isso se torna um problema bem mais complexo de gerenciar. Porque estou tocando nesse assunto? Porque as pessoas acreditam que a tecnologia de software irá absorver essa multiplicação dos cores/threads dos novos processadores e isso não é bem assim. Aliás esta é uma das fronteiras que a engenharia da computação ainda precisa avançar para tirarmos bom proveito dela.
@BrExodusZoneDayzServers
@BrExodusZoneDayzServers 5 жыл бұрын
Mimimimimi...
@Ulusamay
@Ulusamay 4 жыл бұрын
@@luiscazuriaga2628 sim,quem inventou a luz nem deu os credito pro cara que tentou a primeira vez,passou conhecimento de geração em geração kakaka o famoso foi o ultimo a descobrir,e depois só foram aprimorando
@eduardoaihara
@eduardoaihara 4 жыл бұрын
Caramba, a galera parece q se enfurece por causa de uma frase e ignora o restante da história. Apesar de não entender 100% do q foi dito, achei bem interessante saber um pouco como as coisas eram e mais feliz ainda por termos linguagem de alto nível e principalmente que preço de memória hoje é bem mais barato que antigamente. Obrigado por compartilhar seu conhecimento!
@thiagosantos3236
@thiagosantos3236 4 жыл бұрын
Gostei muito do conhecimento passado meu nobre.
@julioulisseslima
@julioulisseslima 4 жыл бұрын
Cara, não sou tão velho (tenho 36 anos), mas aprendi a dirigir em um fusca ano 78 do meu tio, daqueles que a gente tinha que acelerar com o "calcanhar" para o carro não morrer hehehehe. Ai vejo uma geração de hoje que reclama que a direção hidráulica é mais pesada que a direção elétrica... Em outras palavras obrigado pelo relato histórico, principalmente sobre a ideia de eficiência e aproveitamento de todos os recursos de um computador, pois de fato muitos "programadores", inclusive de grandes corporações, fazem testes de códigos em ambientes controlados, quando funcionam a mil maravilhas, ai soltam a aplicação para uso simultâneo por muitos usuários, e ficam sem entender o motivo do sistema travar do nada, quando ocorreram míseros 90 mil acessos simultâneos... Programar não é a parte mais difícil, entender a regra do negócio e otimizar recursos é o diferencial hoje em dia.
@joaoranulfoeloia4777
@joaoranulfoeloia4777 23 күн бұрын
Voces são maravilhosos ! Obrigado demais !
@wellingtonsilva-vd8bf
@wellingtonsilva-vd8bf Жыл бұрын
Excelente vídeo vocês estão de parabéns, desde 2022 iniciei meu de superior de ciência de dados, tenho 44 anos sempre amei essa área de tecnologia qual caminho para se especializar na área enquanto estudo, como buscar trabalhos nesse período.
@joanteixeira1
@joanteixeira1 11 ай бұрын
Essa função enrolar desenrolou minha mente, obrigado!!
@danielcardoso6301
@danielcardoso6301 4 ай бұрын
O exemplo foi top, de verdade, simplificar pra depois complicar, são show vocês!!!!!
@rensopa
@rensopa 11 ай бұрын
Vocês são ótimos!!! Parabéns pelo conteúdo.
@i_am_batman-0309
@i_am_batman-0309 3 жыл бұрын
só tenho que agradecer e reconhecer o trabalho de vocês. Obrigado por serem tão fundamentais no nosso aprendizado! :)
@lincoln_berto
@lincoln_berto 2 жыл бұрын
Muito bom. Estou estudando para a faculdade e gostei bastante, me ajudou a entender mais sobre o assunto.
@codechannel7304
@codechannel7304 6 жыл бұрын
Tenho duas sugestões para vocês falarem no dicionário do programador: 1º - Web Service 2º - Biblioteca de Classe Além de dar essas sugestões quero Parabenizá-los pelos vídeos postados. Sempre fico ansioso para que postem os seus vídeos. Que bom que nós(CDFs) temos vocês como exemplo. Parabéns pelo trabalho!
@codigofontetv
@codigofontetv 6 жыл бұрын
Olá Jô! Muito obrigada, ficamos muito felizes em ver depoimentos como o seu! Sugestões anotadas.
@MartioViss
@MartioViss 6 жыл бұрын
Muito bom o vídeo, obrigado.
@andrejunior9616
@andrejunior9616 5 жыл бұрын
Ajudou pra caramba na minha prova de técnicas de programação, muito obrigado!!!!
@BrExodusZoneDayzServers
@BrExodusZoneDayzServers 5 жыл бұрын
Casal mais top desse KZbin 😎👊🙏
@MrWeblima
@MrWeblima 6 жыл бұрын
Vocês mandam muito bem! Isso sim é didática.
@Johnnie_MG
@Johnnie_MG 6 жыл бұрын
Sou provável formando em ciência da computação 2018, adoro os vídeos de vocês, estou na área de jogos, vocês tem dicas dessa área? Grande abraço.
@codigofontetv
@codigofontetv 6 жыл бұрын
Olá Johnnie, muito obrigada! Ainda não temos um conteúdo específico pra desenvolvedores de games, mas em breve teremos. Até lá!
@marcoantoniosilva795
@marcoantoniosilva795 3 жыл бұрын
Parabéns sempre pela iniciativa de vocês em fazer este vídeo, pois me ajuda muito na minha faculdade, pois a suas explicações sua são tão claras... Parabéns.
@FarukAFeres
@FarukAFeres 6 жыл бұрын
Eu entendi recursividade com uma função fatorial. achei mais simples... function fatorial(n) { if (n
@johnsykes4513
@johnsykes4513 4 жыл бұрын
@@morningbae valeu kkk não tinha entendido
@kratos11ist
@kratos11ist 4 жыл бұрын
@@morningbae Até o num2 chegar a 1 na verdade
@thenriquedb
@thenriquedb 3 жыл бұрын
classica!
@danielpolitico1447
@danielpolitico1447 3 жыл бұрын
Cara, se você está aqui lendo meu comentário você tem a sorte de ler o único lugar do planeta que tem uma definição de recursividade com lógica, sério, só eu sei explicar saporra. Esquece Google. Vamos lá: Recursividade é um fenômeno que ocorre quando uma criação possui a mesma estrutura do seu criador. Pronto, é isso. Se uma impressora imprime um papel não é recursão, mas se um dia uma impressora 3D imprimir outra impressora 3D é recursão. A reprodução dos seres vivos é recursão, pois um ser vivo possui a estrutura do seu pai. O cálculo fatorial é recursividade, porque é definido por etapas de cálculo fatorial. As pessoas têm dificuldade de explicar ou entender recursividade porque é pouco intuitiva a ideia de que uma coisa pode criar algo como a si mesma, porque para o cérebro isso a princípio pode parecer ilógico, já que, sendo assim, como será criado o primeiro criador de todos? A resposta é que o fato de uma coisa ser criada por um criador semelhante não exclui a possibilidade de o primeiro ter sido criado por um criador diferente. No exemplo das impressoras 3D a primeira delas obviamente não seria criada por outra impressora e sim por humanos. Da mesma forma, o primeiro ser humano não foi criado por outro, mas por uma variação genética de outra espécie ou por Deus, se preferir. Esse conceito é importante porque quem entende consegue subir um patamar na capacidade de criar e resolver questões, especialmente no empreendedorismo (a ideia de uma impressora imprimindo outra não é disruptiva?), na computação onde o uso de recursividade é corriqueiro, também para linguistas e filósofos, mas também em qualquer área. Ainda aproveitando o exemplo, o sujeito que criou o conceito de fatorial só pôde fazê-lo por entender o conceito, pois, por exemplo, fatorial de cinco é cinco vezes o fatorial de quatro e fatorial de quatro é quatro vezes o fatorial de três e assim consecutivamente até fatorial de 1 que por definição é um, que é a condição de parada. Então existe a chance de você ter aprendido algo aqui que pode ser útil na sua vida.
@FarukAFeres
@FarukAFeres 3 жыл бұрын
@@danielpolitico1447 quando eu vi essa função de fatorial foi uma epifania. Eu gosto de matemática e ver 4~5 aulas de matemática no ensino médio ser representada por 4 linhas de código foi mágico. O seu texto é lindo e concordo 100% com ele mas programação é complicado quando o indivíduo tem que se empenhar pra conseguir esses momentos de epifania que eu comentei. Infelizmente ele só vai fazer sentido pra quem já entendeu recursividade.
@Edson_Staack
@Edson_Staack 6 жыл бұрын
Mais um vídeo show de bola, com o casal mais simpático do universo! \o/
@codigofontetv
@codigofontetv 6 жыл бұрын
Olá Edson! Do universo! Será?! rsrsrs Muito obrigada!
@BrExodusZoneDayzServers
@BrExodusZoneDayzServers 5 жыл бұрын
@@codigofontetv de acordo com o Edson 😎👊👊👊👊
@CamilaCPio
@CamilaCPio 11 ай бұрын
Coisa boa! Obrigada pelo conteúdo incrivel! Vocês são demais
@carloseduardolima7443
@carloseduardolima7443 6 жыл бұрын
Haha!! Ficou muito bommm! Faz sobre UI e UX Machine learning, Big data, Deep learning, Thread....
@paulocristo1
@paulocristo1 2 жыл бұрын
aprendi recursividade em um livro que comprei java8 e des daquela epoca sempre uso em php swift e tudo . muito bom ecenomiza e fica top
@longuinni
@longuinni 6 жыл бұрын
Muito legal. Lembrando que recursividade nada mais é do que a quebra de um problema complexo em pequenos pedaços, em alguns casos é preciso tomar cuidado com problema de stackoverflow após estourar o empilhamento máximo do processador ou da linguagem. Muitas vezes é melhor optar por uma solução não recursiva devido a complexidade do código gerado!! Abraço CFTV! Continuem com o bom trabalho.
@bfzff7608
@bfzff7608 3 жыл бұрын
Ótima explicação!
@gabrieldavid7664
@gabrieldavid7664 Жыл бұрын
Muito bom, obrigado pela aula!
@oriadne
@oriadne 6 жыл бұрын
Boa tarde, belo trabalho. Mas o exemplo do barbante cria um erro de lógica, pois a ideia da recursividade é dividir o problema até que ele não possa mais ser dividido ai só então vir retornando a solução das pequenas partes até a primeira chamada, no caso do barbante se a função enrolar for executada a cada chamada o problema está a se resolver de forma direta e não recursiva.
6 жыл бұрын
O exemplo do barbante é um laço comum
@codigofontetv
@codigofontetv 6 жыл бұрын
Oi oriadne! Faz sentido se comentário. Poderíamos ter mostrado o exemplo apenas fazendo as medições e só ao fim da última medição possível "voltar" com as chamadas enrolando o barbante, de uma vez só. Sem dúvida ficaria melhor. :D Muito obrigado pelo seu feedback.
@alexiasantos6249
@alexiasantos6249 Жыл бұрын
Muito obrigada ! foi muito util
@julianocanuto7592
@julianocanuto7592 6 жыл бұрын
Ficou muito bom o exemplo com o barbante. Gostei. Mais um ótimo vídeo. Os erros de gravação são uma comédia a parte kkkkkk
@codigofontetv
@codigofontetv 6 жыл бұрын
Muito obrigado Juliano!!! :D
@paulosoads856
@paulosoads856 5 жыл бұрын
Quer ver uma recursão legal? faz assim: -Abra o bloco de notas e escreva start cmd -Salve o arquivo como o nome cmd.bat -abra o arquivo Esteja com gerenciador de tarefas aberto. Você vai precisar
@Ulusamay
@Ulusamay 4 жыл бұрын
mano ala tu é um Corno kakakaka fiz isso fez um loop da poxa,quase eu não consiguia fechar os prompts ala kakakakaakak mas foi top dá uma ideia de virus simples kdaskkas
@tiagodmota5840
@tiagodmota5840 3 жыл бұрын
Quebrou uma das leis, não é recursividade autêntica.
@jaderpacheco9585
@jaderpacheco9585 6 жыл бұрын
Vocês ajudam muito programadores iniciantes (como eu). Obrigado casalzão da por***
@codigofontetv
@codigofontetv 6 жыл бұрын
Muito obrigada Jader!!!
@adrianorigonato8082
@adrianorigonato8082 Жыл бұрын
já tá senior, jader?
@joaopedrogomesdesena8674
@joaopedrogomesdesena8674 Жыл бұрын
já deu tempo né? kkkkkk@@adrianorigonato8082
@JoseChiniapala-jt1fy
@JoseChiniapala-jt1fy 6 ай бұрын
Vocês me ajudaram muito
@Samuel-Ferreira-Inocencio
@Samuel-Ferreira-Inocencio 6 ай бұрын
Em 2024 estou aprendendo programação com apoio da Alura. Recursividade ainda é um quebra-cabeça que estou desvendando.
@marciogomes3090
@marciogomes3090 Жыл бұрын
Eu só entendi com a metáfora da linha lakakakakakkaka Obrigado! Adorei
@eduardolima1227
@eduardolima1227 6 жыл бұрын
Eu sinto falta de um canal ou assunto que vá além do abordado aqui, sou formado em Engenharia de Computação à 12 anos mas trabalho à pelo menos 21 anos na área, desde década de 90, e não há praticamente nada que ultrapassa o academicismo no KZbin, deixo esta dica para este canal, pois as experiências cotidianas na área computacional e de mercado têm muito a dizer e a contribuição disto é de grande valor, mas caso saibam de algum canal neste aspecto que possam indicar, por favor me digam o link, no mais parabéns pelo trabalho, vou ajudando com os likes, na medida do possível.
@codigofontetv
@codigofontetv 6 жыл бұрын
Oi Eduardo, muito obrigado pelo seu comentário. Quando tiver um tempinho assista outros vídeos do nosso canal. Temos muitos vídeos, principalmente os vlogs, onde falamos mais do dia a dia de nossa profissão, inclusive, esse é um dos grandes objetivos do canal. Grande abraço e obrigado pela sua companhia por aqui.
@eduardolima1227
@eduardolima1227 6 жыл бұрын
@@codigofontetv Eu que agradeço, a iniciativa de vocês é de grande valor, parabéns!
@RobsonAlvesJJ
@RobsonAlvesJJ 6 жыл бұрын
Foi muito bom parabéns.....
@brunofelix5434
@brunofelix5434 6 жыл бұрын
Ótimo vídeo... conheci a pouco tempo o canal de vcs e já vi quase todos os vídeos... adorei vcs.
@danielschneider5251
@danielschneider5251 3 жыл бұрын
Estou aprendendo python. Hoje estava escrevendo um código e me deparei com um problema. A lógica não estava acontecendo da maneira que eu esperava. Consegui solucionar essa questão aplicando a recursividade. Mais uma lição de aprendizado para o meu banco de dados neural kkkk
@jonatanmsd
@jonatanmsd Жыл бұрын
Video top! Boa aula dmais!!!
@ermesondesousaflamengo9293
@ermesondesousaflamengo9293 5 жыл бұрын
olá gostaria de saber qual é o melhor programa de software para se especializar e iniciar na carreira na programador ?(sei que essa pergunta não tem haver com vídeos ,mas só uma dúvida minha )grato pela resposta
@pr.rafaelnascimento
@pr.rafaelnascimento Жыл бұрын
Excelente explicação
@razor0wn3d
@razor0wn3d 6 жыл бұрын
Mandaram bem.
@andresousa6820
@andresousa6820 5 жыл бұрын
Uma boa forma de treinar Recursividade são alguns dos problemas usados em competições de programação (como a OBI e a Maratona de Programação). Já ouviram falar da Olimpíada Brasileira de Informática (OBI) ou da Maratona de Programação ? são competições voltada para alunos tanto do Ensino Fundamental e Médio (OBI) quanto para alunos de faculdade (Maratona) com foco em programação competitiva (algoritmos e estruturas de dados principalmente). Vai muito em linha com o conteúdo do canal de vocês. Pode nos ajudar a difundir as competições de programação pelo Brasil ? Acredito que está bem alinhado com o conteúdo do seu canal e seria de grande ajuda. Caso haja interesse entre em contato.
@caldasyahoo
@caldasyahoo Жыл бұрын
Cara vc me deu a dica de ouro para o que eu estava procurando, grato
@boscherof
@boscherof 6 жыл бұрын
Tenho sonho em entrar profissionalmente nesse mundo, mas como? É muito abrangente ! Ó Deus da programação, me ajuda !
@kratos11ist
@kratos11ist 4 жыл бұрын
E aí, conseguiu emprego na área depois de 2 anos?
@flavioaugusto4106
@flavioaugusto4106 6 жыл бұрын
Muito bom parabéns!!
@fontanadnb
@fontanadnb 6 жыл бұрын
Faltou dizer das desvantagens da recursividade como alta taxa de alocação de memória, dependo do caso. A recursividade as vezes parece a forma menos complexa de resolver o problema, mas pode causar grandes perdas de performance, etc, etc, etc.
@diadetediotedio6918
@diadetediotedio6918 2 жыл бұрын
Isso não funciona assim.
@debaixodatampa
@debaixodatampa 4 жыл бұрын
Ô menina... Eu sou bom nessa função ENROLAR aí hein!!! hahahahah Muito obrigado pelo vídeo elucidativo!
@heightSky
@heightSky 10 ай бұрын
muito bom
@matheuscastro4124
@matheuscastro4124 4 жыл бұрын
Adiciona no dicionário o termo "DLL - Dynamic Link Library"
@canon61837
@canon61837 6 жыл бұрын
Muito bom essa serie de videos!! parabéns!
@codigofontetv
@codigofontetv 6 жыл бұрын
Muito obrigado Jeh! :D
@MatheusdaRochaSena
@MatheusdaRochaSena Жыл бұрын
Gente, Muito bom o vídeo mas eu realmente não entendi a aplicação da função multiplica.... Eu consigo ver o num2( 4 ) reduzindo, mas eu não vejo o 5 somando. -> Toda vez que a função é chamada o num2 reduz 1 ao entrar no novo parâmetro funcionando como o passo de um laço. parando no else if, quando o número for 1, porém.... ela retorna para onde? kkkk fiquei confuso, por exemplo, se ela foi chamada por ela mesma 5 vezes ela dá return para a quarta, ou para o programa principal?...... Acho que eu tô pegando, alguns neurônios cansados a mais e eu entendo a abstração até o fim da tarde... -> Mas o que eu não visualizo é o "return (num1 + multiplica(num1, num2 - 1));" Eu tô estudando recursividade agora, juntando tudo que eu sei, o programa entraria na função antes de somar o num1 ( 5 ), não somando ele, reduzindo o 4 mas não somando o 5, gerando um erro. Com certeza estou errado, mas realmente não consigo ver o num1 somando ali, talvez por eu ter começado recursividade agora. Se alguém puder ajudar nessa dúvida agradeceria muito.
@catalunham.j.1895
@catalunham.j.1895 4 жыл бұрын
Fiz um estes dias, para um caso de navegacao em cat e subcat de indices...
@andreylima5469
@andreylima5469 3 жыл бұрын
Então podemos dizer que a recursividade é um laço?
@tiagodmota5840
@tiagodmota5840 3 жыл бұрын
Aparentemente se comporta como um laço, mas por debaixo dos panos cada chamada recursiva armazena valores na pilha de chamadas, e quando o caso base é satisfeito a recursão acontece de forma reversa até chegar na função pai de todas as chamadas, os resultados vão sendo desempilhados e retornados um a um. Pra entender plenamente você tem de estudar Algoritmos e Estruturas de Dados.
@AP-gc5ss
@AP-gc5ss 6 жыл бұрын
+Código Fonte TV serio mesmo que você não vão explicar o algortimo que mostraram???
@Bitcoio
@Bitcoio 4 жыл бұрын
Toda recursão gera uma pilha?
@tiagodmota5840
@tiagodmota5840 3 жыл бұрын
Até onde eu sei sim. Mas consulta a documentação da linguagem pra ter certeza de como o compilador vai lidar com isso.
@hammersteinir
@hammersteinir 5 жыл бұрын
Ótimo vídeo! Agora... Prq essa quantidade de canetas? kk
@juansoares2108
@juansoares2108 6 жыл бұрын
Estou com dúvidas será que alguém pode me responder? Qual é a diferença entre C C++ e C#? Desde já agradeço!
@nasrudin3
@nasrudin3 6 жыл бұрын
Juan, C é uma LP do paradigma estruturado, compilada, criada em 1972 por Dennis Ritchie no Bell Labs - que na época pertencia à AT&T - considerada mãe de inúmeras LPs modernas. C++ é uma LP do paradigma orientado a objetos, compilada, baseada em C, criada por Bjarne Stroustrup em 1985 no Bell Labs. C# é uma LP do paradigma orientado a objetos, híbrida - ou seja, é primeiro compilada e depois interpretada - lançada em 2002 pela Microsoft. Outra LP importante é Java - orientada a objetos, híbrida - lançada pela Sun Microsystems em 1995, e hoje desenvolvida pela Oracle.
@tiagodmota5840
@tiagodmota5840 3 жыл бұрын
C veio antes das duas (C++ e C#). Ela foi feita em 1972 num laboratório de pesquisa e inovação subsidiária da Nokia, chamado AT&T Bell Laboratories, com o propósito de criar um sistema operacional para o computador PDP-11, esse sistema é o Unix, a base do Linux atual, feito por Linus Torvalds. (Bell Laboratories foi responsável por criar uma série de tecnologias usadas hoje, como os transistores, os LEDs, etc. É um verdadeiro mar de inovações importantes) C++ surgiu com o propósito de ser um C com classes, ou seja, um C com programação orientada a objetos, mas ao longo dos anos ela se tornou uma linguagem recheadada de mais paradigmas e completamente à parte, apesar de ainda ser possível misturar código C com C++ e os seus compiladores suportarem código em C puro. C# foi criada pela Microsoft pra competir com o Java , não tem nada a ver com C e C++, apesar destas duas terem influenciado a criação de Java pela Sun Microsystems, posteriormente comprada pela atual Oracle. Assim como Java não tem nada a ver com JavaScript, C# não tem nada a ver com C/C++.
@jerryaugusto95
@jerryaugusto95 6 жыл бұрын
INTEROPERABILIDADE nos próximos vídeos, por favor!
@geovannaaraujo2849
@geovannaaraujo2849 4 жыл бұрын
5:09 Como ficaria esse exemplo em Python? Alguém pode me responder por favor?
@ImLuanGFX
@ImLuanGFX 3 жыл бұрын
def multiplica(num1, num2): if num1 == 0 or num2 == 0: return 0 elif num2 == 1: return num1 else: return (num1 + multiplica(num1, num2 - 1)) print(multiplica(5, 4))
@carlosdemetrio2647
@carlosdemetrio2647 6 жыл бұрын
Tava aprendendo isso semana passada na faculdade kkk
@codigofontetv
@codigofontetv 6 жыл бұрын
Que coincidência! Espero que o conteúdo tenha complementado as aulas. Abraços.
@marceloh6206
@marceloh6206 Жыл бұрын
03:55 vocês são chatos, mas amamos vocês
@pedrolobo1081
@pedrolobo1081 6 жыл бұрын
Fiquei esperando a caneta no exemplo =/
@phelipefox
@phelipefox 6 жыл бұрын
Por que há tantas canetas em teus bolsos?!?
@gabrielsantos-mo2nu
@gabrielsantos-mo2nu 8 ай бұрын
tó vendo isso em java e não tó entendendo essa lógica
@jonaspetty8767
@jonaspetty8767 2 жыл бұрын
Eu entendo a recursividade, mas minha mente da muito nó na hora de refatorar ou até mesmo de implementar, putz grila
@vendettabr2022
@vendettabr2022 4 жыл бұрын
Putz grilo, ainda nao entendi como funciona recursividade, q saco mano >:( Ah deixa quieto! Vou rebobinar minhas fita cassete aqui...
6 жыл бұрын
Porque não usar um while para resolver um problema de recursividade?
@tiagodmota5840
@tiagodmota5840 3 жыл бұрын
Problemas que são melhores resolvidos com recursividade são mais chatos de entender, eles só apresentaram o conceito com exemplos simples que com while daria pra resolver mais facilmente mesmo.
3 жыл бұрын
@@tiagodmota5840 acho que em baixo nível, faz diferença. Mas a maioria fica muito mais simples de visualizar o problema sem recursividade. Ai fica a se pensar, deixar simples ou veloz
@tiagodmota5840
@tiagodmota5840 3 жыл бұрын
@ Alguns problemas ficam mais complexos de serem resolvidos com while, um exemplo é rotação de nós em Árvores Binárias de Busca. Recursividade consome mais memória e é mais lenta que um loop comum, mas facilita a implementação de problemas que possuem uma natureza recursiva inerente: "Ao tentar resolver o problema, encontrei obstáculos dentro de obstáculos. Por isso, adotei uma solução recursiva." - Aluno S.Y.
3 жыл бұрын
@@tiagodmota5840 baita exemplo. Muito mais simples trabalhar com ponteiros em recursividade
@EmanoelLucas8552
@EmanoelLucas8552 3 жыл бұрын
na verdade, tem problema que só dá pra ser resolvido com recursividade
@OsTaualegres
@OsTaualegres 4 жыл бұрын
3:58 não tem recursividade nenhuma nessa relação ❤️
@wellingtonaraujo5418
@wellingtonaraujo5418 3 жыл бұрын
boa aula =) asudhasuidasiud
@LucasNunesK
@LucasNunesK 6 жыл бұрын
Recomendo esse vídeo sobre recursividade: kzbin.info/www/bejne/hHzcnnR6adV9kKs
@codigofontetv
@codigofontetv 6 жыл бұрын
😱😱😱 gênio!!!
@tiagodmota5840
@tiagodmota5840 3 жыл бұрын
Já eu recomendo esse vídeo sobre recursividade: kzbin.info/www/bejne/hHzcnnR6adV9kKs
@andreranulfo-dev8607
@andreranulfo-dev8607 4 жыл бұрын
Poxa... Citar as três leis da robótica e citar "Eu, Robô" sem falar no seu autor, Isaac Azimov, foi quase um sacrilégio. Poderiam ter pelo menos citado que o filme foi baseado nesse clássico da ficção-científica.
@andreranulfo-dev8607
@andreranulfo-dev8607 4 жыл бұрын
Poxa... Citar as três leis da robótica e "Eu, Robô" sem falar no seu autor, Isaac Azimov, foi quase um sacrilégio. Poderiam ter pelo menos citado que o filme foi baseado nesse clássico da ficção-científica.
@1919Reid
@1919Reid Жыл бұрын
function fatorialComRecurssividade(n) { if (n === 0) return 1 return n * fatorialComRecurssividade(n - 1) } console.log(fatorialComRecurssividade(5)) /* NOTA!!! EU SO ESCREVI "n = 3", por exemplo, para lembrar que o numero se refere a "n". ordem dos acontecimentos-> 5 * ((n = 5)-1) presta a a atenção na primeira vez "n" vale 5, ok; 4 * ((n = 4)-1) na segunda vez "n" vale 4 os dois "n" tanto o do calculo de multiplicação quanto o do "n"-1; 3 * ((n = 3)-1) depois vale 3 2 * ((n = 2)-1) depois vale 2 1 * ((n = 1)-1) e por fim vale 1 //recurssividade ((n = 1)-1) = 0 ativa o booleano-> if (n === 0) return 1 //lembrando estou chamando novamente a função do inicio então "n" assume o valor do resultado do retorno anterior, no caso n = 1 1 * (1) = 1 essa parte aqui -> 2 * ((n = 2)-1) esta esperando para receber o retorno do resultado da recurssão anterior ou seja 1, ficando-> 2 * (1) que resulta em 2 essa parte aqui -> 3 * ((n = 3)-1) esta esperando para receber o retorno do resultado da recurssão anterior anterior ou seja 2, ficando -> 3 * (2) que resulta em 6 essa parte aqui -> 4 * ((n = 4)-1) esta esperando para receber o retorno do resultado da recurssão anterior anterior ou seja 6, ficando -> 4 * (6) que resulta em 24 essa parte aqui -> 5 * ((n = 5)-1) esta esperando para receber o retorno do resultado da recurssão anterior anterior ou seja 24, ficando-> 5 * (24) = que resulta por fim em 120
Lógica de Programação - Recursividade - 30
18:33
Bóson Treinamentos
Рет қаралды 51 М.
Cookies // Dicionário do Programador
12:59
Código Fonte TV
Рет қаралды 47 М.
Human vs Jet Engine
00:19
MrBeast
Рет қаралды 189 МЛН
Yay, My Dad Is a Vending Machine! 🛍️😆 #funny #prank #comedy
00:17
Wait… Maxim, did you just eat 8 BURGERS?!🍔😳| Free Fire Official
00:13
Garena Free Fire Global
Рет қаралды 9 МЛН
When mom gets home, but you're in rollerblades.
00:40
Daniel LaBelle
Рет қаралды 134 МЛН
JSON // Dicionário do Programador
6:51
Código Fonte TV
Рет қаралды 123 М.
Curso de Java 35 - Recursividade
15:19
Loiane Groner
Рет қаралды 52 М.
Recursão em Python - Como Funciona e Quando Usar?
31:26
Hashtag Programação
Рет қаралды 11 М.
Frameworks // Dicionário do Programador
6:22
Código Fonte TV
Рет қаралды 135 М.
Programação Funcional // Dicionário do Programador
8:16
Código Fonte TV
Рет қаралды 58 М.
REST // Dicionário do Programador
8:11
Código Fonte TV
Рет қаралды 109 М.
Clean Code // Dicionário do Programador
14:22
Código Fonte TV
Рет қаралды 168 М.
Programar em  C - Funções Recursivas - Aula 35
12:31
De aluno para aluno
Рет қаралды 175 М.
Human vs Jet Engine
00:19
MrBeast
Рет қаралды 189 МЛН