Além da programação assíncrona e da programação paralela, existe um outro termo que normalmente entra nessa conversa: programação concorrente. Você já conhece esse termo? Quer vídeo o canal sobre isso?
Parabéns pelo vídeo! Acho que valia a pena você ter pelo menos comentado o básico sobre o pacote do Guzzle que precisou ser instalado via Composer para ser usado e que para usar o Runtime, teria que usar o PHP com ZTS (Zend Thread Safety) habilitado. Também recomendo que você passe a deixar links na descrição do vídeo para os Slides e esses exemplos prontos no seu Github para as pessoas poderem acessar e testar, nas suas próprias máquinas sem ter que copiar o código (apesar do código ser pequeno), não só o exemplo em PHP, mas colocar no Github também o exemplo Javascript que foi testado no Console do Browser também. Sucesso pra você! Um abraço!
Ótimas sugestões, Diogo. Vou organizar isso tudo e editar a descrição. Quanto a citar as tecnologias do PHP, eu preferi não citar pra focar nos conceitos mesmo. Pra quem não é de PHP seriam informações não muito úteis... Muito obrigado pelo feedback. :-D
Pergunta sincera meu brother, em uma aplicação de pequena escala, para, por exemplo, uso interno de uma pequena empresa, faz tanta diferença assim? Me pareceu que, desde que a demora na requisição paralela não atrapalhe muito na UX, da pra deixar assim mesmo (pensando que maioria dos frameworks não tem o assincrono como padrão). Pergunto, porque estou com um projeto para uma empresa pequena e fiquei com essa dúvida.
Tudo depende. Se você tem que fazer 10 requisições no momento de seu sistema trata a requisição dele, mesmo sendo um sistema interno os usuários vão ficar incomodados com a demora. Tudo depende. Mas em sisteminhas menores performance geralmente é a última preocupação mesmo.
Caso eu receba uma requisição, e a partir desta requisição eu tenho que executar um processamento pesado, e eu resolva utilizar o parallel para acelerar este processamento. Eu posso executar este processamento no mesmo servidor q eu recebo minhas requisições? Ou seria melhor eu transferir esta tarefa para outro servidor fazer o processamento?
Ambas as alternativas são válidas. Só não pode fazer durante o processamento da requisição. :-) Se você quiser separar um servidor específico para tarefas assim, talvez com menos RAM e CPU mais poderosa, pode ser. É até mais seguro pra garantir que não "roube" processamento necessário para processar as requisições.
Show seus vídeos, uma das melhores didáticas que já vi! Se possível, faça um vídeo sobre programação reativa! Programação reativa é algo que não consigo entender, já sabia o conceito do assincronismo x paralelismo, porém o reativo toda hora eu caio em confundo em um desses dois conceitos, e não consigo entender é nada! Valeu!
Fala Vinicius tudo bem, fiquei com uma dúvida. Quando falamos que o PHP e multi-threaded e o JS é single-threaded Será que o JS não funcionaria rodar os processos em paralelo?
Tanto PHP quanto JS são single-threaded por natureza. A diferença é que há na linguagem PHP recursos nativos para criar processos e threads. Em JavaScript não. Algumas libs que rodam na runtime do node fazem chamadas de sistema pra atingir esse propósito. :-)
@@DiasDeDev obrigado pela resposta! Acabei vendo que existe a opção em node de "virtualizar" (Workers e Clusters) a chamada multiplicando as threads mas é perigoso estourar o limite da CPU.
Trabalhar com multi processamento é perigoso em qualquer linguagem. Rs Node só fornece algumas chamadas de sistema mesmo... não adiciona nenhum risco inerente à linguagem ou à runtime não (a não ser bugs que a própria runtime possa ter. acontece)
Olá Vinicius muito foda o conteúdo, estou em uma imersão grande nesse mundo de dev, pode me tirar uma duvida ? Na utilização da programação assíncrona, quem vai ser responsável em organizar os dados digo, se eu precisar receber esses dados em determinada ordem, como ficaria? Obrigado, estou realizando os treinamentos na Alura tbm, muito foda!
Fala, Guilherme. Então, cada lib funciona de um jeito na programação assíncrona. No Guzzle por exemplo você pode receber as respostas HTTP na mesma ordem em que voce fez as requisições. Mas se uma requisição for dependente da outra, você não vai poder fazê-las de forma assíncrona. Já que você é aluno da Alura, em breve vai sair um curso de programação paralela lá! :-D
@@DiasDeDev muito obrigado Vinicius entendi perfeitamente, porém, preciso codar pra ver funcionando, pode deixar irei ficar de olho nas novidades que recebo aqui e na Aulura =DDDDD. Obrigado novamente.
Isso aí, @@guimtts. Com mão na massa eu também entendo bem melhor. Aqui você já tem uma boa noção sobre como fazer vários requests usando Guzzle, por exemplo: docs.guzzlephp.org/en/stable/quickstart.html#concurrent-requests
@@DiasDeDev cara, curto muito tua didática, nesse exato momento estou fazendo teu curso de Doctrine ORM na Alura, dei uma pausa no estudo e vim fazer o que? Ver um vídeo no teu canal kkk
@@mateusdesousaesilva4382 hahahahah Fico muito feliz que você esteja curtindo o conteúdo, de verdade. :-D Tamo junto nesse domingão de estudos. Também to nessa pegada por aqui. hahahah
Opa, Emanoel. Então, na vdd existe bastante confusão. Na faculdade, por exemplo, eu aprendi esses 3 nomes como sendo coisas diferentes. Programação concorrente seria a técnica de programar rotinas que concorrem acesso a recursos. Mesmo que fossem síncronas. Programação assíncrona seria I/O não bloqueante. E paralela seria multi-thread ou multi-processo. Hoje eu vejo da seguinte forma: Programação paralela mantém o mesmo conceito. É o ato de criar rotinas que são executadas realmente ao mesmo tempo. Isso é feito através de processos ou threads. Programação concorrente seria I/O não bloqueante. Programação assíncrona engloba ambos os termos, pois é o ato de programar de forma "não síncrona", ou seja, a ordem das instruções não é previsível.
Além da programação assíncrona e da programação paralela, existe um outro termo que normalmente entra nessa conversa: programação concorrente. Você já conhece esse termo? Quer vídeo o canal sobre isso?
Siiiiiiiimmmmmmmmmmmmmmmmmmmmmmmmmm!!!!!!!!!!!!
Opa, ia ser show!
"Se tudo der certo, vai dar certo" kk
Muito boa a síntese, Vinicius. Um vídeo sobre concorrência seria muito interessante também
Hahahah
Programação orientada a fé!
Valeu pelo feedback, Everton. Vou bolar uns exemplos legais de concorrência.
Obrigado pela qualidade na explicação.
Que bom que gostou, Everson!
😁
Excelente explicação, parabéns.
Que bom que gostou, Rômulo. :-)
Muito obrigado pela explicação, me ajudou bastante.
Fico feliz que tenha sido útil, Rafael.
😁
Agora eu entendi, agora tudo faz sentido
Fico feliz que tenha ficado claro. :-D
Meus alunos adoraram
Opa, que honra!
Parabéns pelo vídeo!
Acho que valia a pena você ter pelo menos comentado o básico sobre o pacote do Guzzle que precisou ser instalado via Composer para ser usado e que para usar o Runtime, teria que usar o PHP com ZTS (Zend Thread Safety) habilitado.
Também recomendo que você passe a deixar links na descrição do vídeo para os Slides e esses exemplos prontos no seu Github para as pessoas poderem acessar e testar, nas suas próprias máquinas sem ter que copiar o código (apesar do código ser pequeno), não só o exemplo em PHP, mas colocar no Github também o exemplo Javascript que foi testado no Console do Browser também.
Sucesso pra você!
Um abraço!
Ótimas sugestões, Diogo. Vou organizar isso tudo e editar a descrição. Quanto a citar as tecnologias do PHP, eu preferi não citar pra focar nos conceitos mesmo. Pra quem não é de PHP seriam informações não muito úteis...
Muito obrigado pelo feedback. :-D
Parabéns. Muito obrigado por disponibilizar seu conhecimento de forma clara e objetiva. Sucesso.
Fico feliz que esteja sendo útil, xará
Gratidão. Seus vídeos estam me ajudo muito. Aos 41 anos buscando mudar de profissão. Um forte abraço e sucesso !
Boa! Ficou bem claro.
Que bom que gostou
Ótima explicação 🎉
Que bom que curtiu! :-D
Parabens, obrigado pelo conteúdo. Esclareceu de forma clara uma duvida que eu tinha.
Fico feliz que tenha sido útil, Danilo. :-D
"essa palavra eu acho bastante bonita então eu decidi falar" KKKKKKK
Perfeita explicação! Canal tá top, ainda vai fazer muito sucesso com ele
Heheheheh
As vezes até pareço alfabetizado, né!?
Valeu pelo feedback! :-D
Parabéns Vinícius. Cara ficou muito fácil de entender sua explicação. Continue assim que vai longe.
Opa, muito obrigado pelo feedback, man. Fico feliz. :-D
Muito show, parabéns! Conteúdo de qualidade de maneira super simples! 😊 não pare de fazer vídeos!!
Obrigado demais pelo feedback, de verdade.
🤩
Top demais. Sou seu aluno Alura
Que massa! Espero que esteja gostando do conteúdo lá. :-D
Pergunta sincera meu brother, em uma aplicação de pequena escala, para, por exemplo, uso interno de uma pequena empresa, faz tanta diferença assim? Me pareceu que, desde que a demora na requisição paralela não atrapalhe muito na UX, da pra deixar assim mesmo (pensando que maioria dos frameworks não tem o assincrono como padrão). Pergunto, porque estou com um projeto para uma empresa pequena e fiquei com essa dúvida.
Tudo depende.
Se você tem que fazer 10 requisições no momento de seu sistema trata a requisição dele, mesmo sendo um sistema interno os usuários vão ficar incomodados com a demora.
Tudo depende.
Mas em sisteminhas menores performance geralmente é a última preocupação mesmo.
Muito bom cara. Parabéns!
Opa. Fico feliz que vc curtiu. Obrigado pelo feedback. :-D
muito bom!
Que bom que gostou! :D
Caso eu receba uma requisição, e a partir desta requisição eu tenho que executar um processamento pesado, e eu resolva utilizar o parallel para acelerar este processamento. Eu posso executar este processamento no mesmo servidor q eu recebo minhas requisições? Ou seria melhor eu transferir esta tarefa para outro servidor fazer o processamento?
Ambas as alternativas são válidas. Só não pode fazer durante o processamento da requisição. :-)
Se você quiser separar um servidor específico para tarefas assim, talvez com menos RAM e CPU mais poderosa, pode ser. É até mais seguro pra garantir que não "roube" processamento necessário para processar as requisições.
Show seus vídeos, uma das melhores didáticas que já vi!
Se possível, faça um vídeo sobre programação reativa!
Programação reativa é algo que não consigo entender, já sabia o conceito do assincronismo x paralelismo, porém o reativo toda hora eu caio em confundo em um desses dois conceitos, e não consigo entender é nada!
Valeu!
Opa, Rafael. Muito obrigado pelo feedback e pela ótima sugestão. Já anotei aqui pra preparar esse conteúdo. :-D
Fala Vinicius tudo bem, fiquei com uma dúvida. Quando falamos que o PHP e multi-threaded e o JS é single-threaded Será que o JS não funcionaria rodar os processos em paralelo?
Tanto PHP quanto JS são single-threaded por natureza. A diferença é que há na linguagem PHP recursos nativos para criar processos e threads. Em JavaScript não. Algumas libs que rodam na runtime do node fazem chamadas de sistema pra atingir esse propósito.
:-)
@@DiasDeDev obrigado pela resposta! Acabei vendo que existe a opção em node de "virtualizar" (Workers e Clusters) a chamada multiplicando as threads mas é perigoso estourar o limite da CPU.
Trabalhar com multi processamento é perigoso em qualquer linguagem.
Rs
Node só fornece algumas chamadas de sistema mesmo... não adiciona nenhum risco inerente à linguagem ou à runtime não (a não ser bugs que a própria runtime possa ter. acontece)
Olá Vinicius muito foda o conteúdo, estou em uma imersão grande nesse mundo de dev, pode me tirar uma duvida ?
Na utilização da programação assíncrona, quem vai ser responsável em organizar os dados digo, se eu precisar receber esses dados em determinada ordem, como ficaria?
Obrigado, estou realizando os treinamentos na Alura tbm, muito foda!
Fala, Guilherme. Então, cada lib funciona de um jeito na programação assíncrona. No Guzzle por exemplo você pode receber as respostas HTTP na mesma ordem em que voce fez as requisições. Mas se uma requisição for dependente da outra, você não vai poder fazê-las de forma assíncrona.
Já que você é aluno da Alura, em breve vai sair um curso de programação paralela lá! :-D
@@DiasDeDev muito obrigado Vinicius entendi perfeitamente, porém, preciso codar pra ver funcionando, pode deixar irei ficar de olho nas novidades que recebo aqui e na Aulura =DDDDD. Obrigado novamente.
Isso aí, @@guimtts. Com mão na massa eu também entendo bem melhor. Aqui você já tem uma boa noção sobre como fazer vários requests usando Guzzle, por exemplo: docs.guzzlephp.org/en/stable/quickstart.html#concurrent-requests
Muito bom o video!
Opa, valeu pelo feedback. Que bom que curtiu! :-D
@@DiasDeDev cara, curto muito tua didática, nesse exato momento estou fazendo teu curso de Doctrine ORM na Alura, dei uma pausa no estudo e vim fazer o que? Ver um vídeo no teu canal kkk
@@mateusdesousaesilva4382 hahahahah
Fico muito feliz que você esteja curtindo o conteúdo, de verdade. :-D
Tamo junto nesse domingão de estudos. Também to nessa pegada por aqui. hahahah
Poderia falar sobre a programação real time com socket, isso também se confunde com programação assíncrona e síncrona.
Opa, ideia sensacional!! Vou estudar mais sobre o assunto.
Legal.
Que bom que curtiu, Andre. :-D
up
Mas programação paralela não é um tipo de programação assíncrona? Assim como a programação concorrente.
Opa, Emanoel. Então, na vdd existe bastante confusão.
Na faculdade, por exemplo, eu aprendi esses 3 nomes como sendo coisas diferentes.
Programação concorrente seria a técnica de programar rotinas que concorrem acesso a recursos. Mesmo que fossem síncronas.
Programação assíncrona seria I/O não bloqueante.
E paralela seria multi-thread ou multi-processo.
Hoje eu vejo da seguinte forma:
Programação paralela mantém o mesmo conceito. É o ato de criar rotinas que são executadas realmente ao mesmo tempo. Isso é feito através de processos ou threads.
Programação concorrente seria I/O não bloqueante.
Programação assíncrona engloba ambos os termos, pois é o ato de programar de forma "não síncrona", ou seja, a ordem das instruções não é previsível.
Programação paralela é a mesma coisa que síncrona ?