segunda-feira, 11 de janeiro de 2016

Hardcore Devel #46 - Pipes

Vamos falar um pouco de um conceito que é muito popular nos sistemas Unix.


Parece muito com um encanamento, mas pode ficar tranquilo que não é.

Vamos falar sobre Pipes, que em uma tradução literal para o português significa "Canos", até porque a palavra está no plural mesmo. Quando a gente falar "pipe" você pode pensar em um cano sem problema nenhum, até porque todo o conceito deles esta baseado no mesmo conceito do objeto físico.

Pra que serve um cano? Um cano é um objeto fechado que permite você canalizar alguma coisa. Geralmente a gente utiliza canos para canalizar a água da estação de tratamento até as nossas casas, e na nossa casa tem o encanamento que leva água até os periféricos, que seriam as torneiras, filtros, chuveiros, e etc. Eles geralmente são redondos, mas isso é uma questão de design e custo para se fazer um cano. Eles podem ter a forma que você quiser.

Até uma forma virtual, mas o que poderia um cano virtual fazer?

Vamos pensar nos computadores. Computadores rodam programas, que manipulam dados. Rodam muitos programas, feitos por diversas pessoas diferentes. Um usuário esperto pode manipulá-los e usá-los em conjunto. Nós fazemos isso o tempo todo. Quando você cola o texto de site no notepad pra ficar salvo na sua máquina, podemos dizer que você está fazendo um pipe.

É isso mesmo, canos virtuais canalizam dados. Eles permitem que dados sejam canalizados de um programa para o outro. Isso é importante de diversas formas. Essa é a forma mais básica de comunicação entre processos. O que é mais legal é que você pode fazer isso quando você está programando.

Ou melhor, se você for um usuário de sistema Unix, você geralmente vai fazer isso constantemente pela linha de comando. Não é incomum ver alguém mandar um "ls -l | grep coisa" quando está procurando algum arquivo em alguma pasta. Em programação permite que você redirecione dados de um arquivo para outro arquivo. O pipe que você usa na shell faz o redirecionamento da saida de um programa para a entrada de outro programa. É como se eu tivesse duas casas, uma chama "ls -l" e outra chamda "grep coisa", o símbolo "|" significa que existe um cano que faz com que tudo o que a casa "ls -l" jogasse pelo ralo, fosse jogado para "grep coisa" para que fosse reaproveitado.

Essa visão ainda ta difícil? Então imagine uma linha de produção. O produto é composto pelos dados que são agregados, enquanto o caminho entre um funcionário e outro é um pipe. Ele é um canal de informação e para os sistemas Unix eles são tratados da mesma forma que arquivos.

Você pode fazer pipes na linha de comando do próprio Windows, porém não estamos acostumados a usá-la por isso não vemos isso tantas vezes, mas é um conceito importantíssimo na programação e na computação em geral. O que você acha que é a área de transferência do Windows, afinal de contas?


Imagens:
www.blogtips.org

Nenhum comentário:

Postar um comentário