e aí pessoal meu nome é vinícius dias sejam bem-vindos ao canal programando com vinícius dias hoje a gente vai bater um papo bem rápido sobre paradigmas de programação no último vídeo que eu postei aqui no canal a gente conversou um pouquinho sobre os tipos de linguagens e suas relações com tipos sejam linguagens estrita o dinamicamente tipadas fraca ou fortemente equipados a gente conversou um pouquinho sobre isso eu vou deixar um card aqui para você dar uma olhada hoje a gente vai falar um pouquinho ainda sobre linguagem de programação ainda sobre esse estudo mas sobre os
paradigmas em que as linguagens podem se encaixar então se você gosta desse tipo de conteúdo se você acha que isso é relevante deixa o gostei aqui para eu ficar sabendo se isso é interessante e continuar produzindo conteúdo sobre isso então indo direto ao assunto antes da gente falar sobre os paradigmas de programação existente é muito válido a gente falar o que é um paradigma existem obviamente várias definições formais do que é um paradigma de programação os basicamente é um paradigma de programação um padrão um molde que a gente vai seguir para resolver algum problema para
chegar na solução de algum problema então dois paradigmas de programação ou mais podem ser utilizados para chegar a soluções diferentes para o mesmo problema então um paradigma não é uma solução um paradigma é uma forma de chegar à solução pelo definido mesmo que por alto o que é um paradigma de programação existem dois grandes grupos de paradigmas de programação provavelmente existem outros por aí mas eu vou falar sobre o meu conhecimento e eu obviamente e não sou especialista em todos os paradigmas mas caso inclusive você queira que eu me aprofundo demais em algum para de
um específico deixe um comentário aqui no final do vídeo falando qual o paradigma você quer que eu faço um vídeo específico mas voltando ao assunto eu conheço dois tipos é duas grandes famílias de paradigmas de programação esses duas famílias são paradigmas interativos e paradigmas declarativos e é de forró bem resumidas a diferença entre esses dois tipos de paradigmas no paradigma imperativo você chega e diz de forma imperativa você diz de forma explícita pelo computador o que ele vai fazer passo a passo como ele vai fazer já no para de uma declarativo você diz para ele
o que você quer fazer você declara a sua intenção e o programador a linguagem perdeu o o computador a linguagem de programação vai decidir como vai implementar então dentro desses dois grandes tipos existem nos paradigmas específicos vamos falar um pouquinho sobre a família dos paradigmas imperativos primeiro a programação em si começou como uma sequência de instruções onde eu tinha por exemplo as instruções separe esse espaço de memória para eu colocar uma variável com esse nome e adicione esse valor nesse espaço de memória e vai passo a passo top dão como a gente ama passo a
passo as instruções para o computador de forma e com certeza assim nasce a programação imperativa e conforme os programas de um ficando complexos e a tecnologia evolui foram surgindo novas linguagens e algumas dessas linguagens trouxeram a possibilidade da gente separar pequenos procedimentos para que nessa programação imperativa a gente pudesse ir chamando esses procedimentos e dizem olha agora eu quero executar esse procedimento agora é esse agora esse hoje nós chamamos esses procedimentos de funções é muito comum mas dessa forma nasceu a programação procedural que a programação imperativa mas hoje eu consigo separar blocos de instrução em
procedimentos que hoje a gente chama de funções então a programação imperativa inicialmente surgiu como uma sequência de instruções evoluiu para programação procedural e surgiu a necessidade de representar alguns tipos mais abstratos vamos dizer assim tipos do negócio que uma linguagem de programação não poderia implementar é relativamente esdrúxulo seria um tipo pessoa como que eu poderia representar uma pessoa em linguagens antigas tendo o comportamento de para essa pessoa abstrações do mundo real mesmo então para resolver esse problema surgiu a programação orientada a objetos então a famosa programação orientada a objetos dentro daquele grupo de programação imperativa
também porque teoricamente com utilizando soluções de linguagens orientadas a objetos a gente em forma explicitamente para o computador como a gente quer resolver aquele problema passo a passo então a gente conversou um pouquinho sobre a os paradigmas interativos como falar um pouco sobre linguagens e um pouco sobre o paradigma declarativo dentro dos grandes paradigmas que estão nessa família é de paradigmas declarativos existe o paradigma funcional existe o paradigma lógico e existem algumas algumas linguagens que nem se enquadram necessariamente em linguagens bom então por exemplo sql é uma linguagem declarativa a gente utiliza o paradigma de
programação declarativo quando a gente está realizando consultas sql por exemplo imagina que você quer buscar é todos os dados de uma tabela você vai lá digitar será que tinha asteristico from a tabela e o que que o seu banco de dados de fazer ele vai pegar essa declaração o que você quer fazer e vai decidir como que ele vai encontrar essa tabela qual algoritmo ele vai utilizar para encontrar essa tabela como ele vai trazer os dados como ele vai botar os dados de uma sequência ali para você então é caso você queira ordenar por exemplo
você só diz que era ordenar por nome e aí o banco de dados vai definir qual algoritmo de ordenação utilizar então isso é uma linguagem declarativa um outro paradigma declarativo como eu falei o paradigma funcional e um paradigma de programação funcional trouxe coisas muito interessante inclusive são aproveitados hoje por outros para de mim como conceito de emoji o que basicamente é você não alterar o estado nunca você sempre precisa de alguma modificação você devolve um novo estado é o conceito de funções furaste justamente não é não interfere no mundo exterior vamos dizer assim enfim existem
diversos conceitos muito interessantes que a programação funcional trouxe a gente utiliza é inclusive em linguagem de não necessariamente puramente funcionais isso também é um assunto bastante interessante de citar é difícil você encontrar hoje uma linguagem de programação e utilize de apenas um paradigma php por exemplo é uma linguagem que a gente chama de multi paradigma você pode utilizar a programação procedural programação orientada a objetos programação funcional você pode utilizar de ferramentas de todos esses paradigmas para chegar a uma solução interessante no seu programa então é muito comum você vê por exemplo um sistema utilizando orientação
a objetos para sua arquitetura mas como micro soluções vamos dizer assim utilizando programação funcional para filtrar e esse tipo de coisa existe ainda um paradigma que o sistema eu expliquei o paradigma lógico paradigma lógico não é muito utilizado no mercado eu pelo menos honestamente nunca vi sendo utilizado mas é utilizado na academia para trabalhos de pesquisa científica trabalhos acadêmicos e o paradigma lógico basicamente você entrega prêmios e baseado nos prémios o computador vai te devolver afirmações afirmações verdadeiras falsas enfim é um assunto bastante interessante eu ainda não me aprofundo aí mais vale a pena dar
um estudar um pouquinho também mas tendo falado bastante voltando para aquele ritmo aqui do canal vamos ver um pouquinho da diferença na prática de um algoritmo utilizando a programação imperativa e o meio algoritmo utilizando programação declarativa vamos pra tela pra gente ver um exemplo muito simples eu vou declarar uma variável aqui nomes assim homens eu vou colocar uma lista de nome e dessa lista eu vou querer eu vou tentar buscar só os nomes que contém o espaço eu vou declarar aqui o meu nome não sei nem escrever o nome vim esses dias é maria josé
o josé maría e ronaldo beleza então o que eu quero fazer é dizer olha só computador eu só quero esses nomes aqui beleza eu não quero nem um nome que não tem espaço não declarada a variável o nome que que eu vou fazer como quero pegar os nomes com o espaço eu vou declarar essa nova variável nomes com espaço a beleza e agora vou fazer aqui um foco para cada um nome ou seja para cada um dos itens daquela lista para cada nome naquela lista de nomes eu vou verificar e se o nome tem o
espaço ou seja se tem o espaço no nome atual em cada um desses nomes o que que eu vou fazer deixa eu quebrar a linha aqui primeiro eu vou adicionar em nome com o espaço esse nome então linha a linha eu tô dizendo para o computador que fazer olha percorre todos os nossos ir para cada um desses nomes se o nome estiver o espaço o caractere espaço nele então adiciona lá na lista que eu criei nomes como espaço então a executei e vamos ver aqui nomes com o espaço show de bola tenho ademir o mouse
aqui eu tenho vinícius de tenho maria josé e josé maria sem o ronaldo qual que eu posso fazer isso também com programação declarativa dessa forma foi com a programação imperativa ou informando o passo a passo para o programa duplo o computador o que ele vai fazer o vamos fazer agora utilizando programação declarativa então vou os novos nomes com o espaço vai ser igual ao dos meus nomes eu quero como o computador quiser fazer não importa eu quero filtrar para buscar apenas o nome que tenha espaço e aqui esse é o nome de nenhuma bobeira aqui
em novos nomes com espaço eu tenho mesmo resultado somente os nomes como faço então essa é basicamente de forma bem básica mesmo a diferença entre um paradigma é imperativo onde eu informo especificamente como eu quero executar algo e um paradigma de criativo hoje eu informo o que eu quero fazer e o computador vai tomar conta de decidir o como ele vai executar essa tarefa eu não sei aqui se o motorzinho javascript foi lá realmente fez um só verificou item a item eu não sei isso não importa para mim eu não preciso da melhor solução possível
eu preciso da solução que funciona então não existe paradigma melhor do que o outro por exemplo aqui no nosso caso o paradigma imperativo o paradigma imperativo dá para gente um pouco mais de flexibilidade ele deixa a gente escolher exatamente como a gente vai fazer algo e o paradigma declarativo entrega é certa facilidade nesse exemplo onde a gente simplesmente fala o que a gente quer e não como a gente quer existem ainda algumas outras diferenças algumas outras vantagens e desvantagens de cada um mas basicamente esses são os dois grupos de paradigma de programação interativos e declarativos
eu citei alguns desses paradigmas estão para recapitular dentro da família dos imperativos nós temos programação procedural programação orientada a objectos já nos declarativos a gente tem programação funcional programação lógica e é muito comum a gente ver projetos reais projetos prontos utilizando mais de um desses paradigmas como por exemplo orientação a objetos e programação funcional é bastante comum inclusive em um artigo que eu escrevi há um tempinho eu citei um pouco sobre isso eu vou deixar aqui na descrição caso você queira dar uma olhada nos basicamente era isso que eu queria trazer para o vídeo de
hoje caso esse conteúdo seja interessante caso você tenha curtido não esquece de não esqueça de deixar que eu gostei e também só para saber se você quer algum vídeo específico sobre algum para de uma desses com sugestões em geral para vídeos aqui no canal abraço