Sítio do Piropo

B. Piropo

< Coluna em Fórum PCs >
Volte
23/02/2009

< Windows 7 Beta V: o conceito de “Library” >


Sim, vamos explicar as "libraries" do Windows 7. Antes, porém, há que responder uma pergunta primordial: para que serve o Windows Explorer?

É claro que uma pergunta dessas pode receber dezenas de respostas. Mas, ao fim e ao cabo, todas desaguarão no mesmo estuário: Windows Explorer serve para encontrar arquivos.

Não, dirão alguns. WE serve para muito mais que isso: serve para organizar arquivos. O que também não deixa de ser verdade. Mas, pergunto eu, qual o objetivo de organizar arquivos se não o facilitar a tarefa de encontrá-los quando deles precisarmos? Portanto, o WE serve mesmo é para encontrar arquivos. O resto é firula.

Mas este negócio de manter arquivos organizados de forma que seja fácil encontrá-los não é função do tal "sistema de arquivos"?

Sim. É precisamente para isto que serve o sistema de arquivos, seja ele qual for, desde o velho FAT 12 dos disquetes até o NTFS do Windows XT, passando pelo HPFS do OS/2 e dos muitos sistemas usados pelo Linux e assemelhados, como ext*, XFS, JFS e ReiserFS. Está lá na Wikipedia que não me deixa mentir: < http://en.wikipedia.org/wiki/File_system > "file system is a method for storing and organizing computer files and the data they contain to make it easy to find and access them" ("sistema de arquivos é um método para armazenar e organizar arquivos de computador e os dados neles contidos de modo a facilitar encontrá-los e acessá-los").

Sendo assim, fica fácil concluir que, em todas as versões de Windows, o WE pode ser considerado apenas como a interface do sistema de arquivos com o usuário. O que faz com que o WE e o sistema de arquivos, seja ele qual for, estejam intimamente entrelaçados.

Pois muito bem. Para facilitar a vida dos usuários e o entendimento do assunto, as versões mais antigas de Windows apelaram para a metáfora do escritório considerando os arquivos análogos a documentos (em papel) que podem estar sobre a mesa de trabalho ("desktop") ou nestas pastas dobráveis ("folders") que por sua vez podem ser guardadas no interior de outras pastas ou em gavetas de um destes arquivos de aço usados para guardar pastas.

Isso tem funcionado muito bem. É fácil para qualquer pessoa imaginar que cada disco rígido (físico) comporta-se como um arquivo metálico que contém gavetas (metaforicamente associadas a partições ou unidades de disco) cheias de pastas que podem conter tanto documentos quanto outras pastas que por sua vez podem conter ainda outras pastas e documentos e assim por diante, em uma organização hierárquica (disco físico >> partição >> pasta (ou diretório) raiz >> pasta >> .... >> pasta >> documento ou arquivo). Na verdade este arranjo funciona melhor que a metáfora dos "diretórios", incompreensível para os não angloparlantes (em inglês, a acepção corrente da palavra "directory" significa "lista telefônica" e foi neste sentido que se deu sua adoção para designar o "diretório" de um disquete, que nada mais era que uma lista dos nomes dos arquivos e do local onde podiam ser encontrados no disco. O que se constituía em uma metáfora perfeitamente aceitável para um tipo de armazenamento não hierárquico - ou de apenas um nível – o único que havia no tempo em que foi introduzida; depois, com o aumento da capacidade dos disquetes e surgimento dos discos rígidos, desenvolveram o armazenamento hierárquico, criaram a noção de "subdiretório" e esculhambaram com a metáfora; ou alguém já ouviu falar de uma "sub-lista telefônica"?).

O sistema hierárquico, naturalmente, tem suas limitações. A maior delas: por mais eficiente que seja seu sistema de arquivos, para encontrar um arquivo você precisa lembrar onde (em que pasta de que gaveta de qual arquivo de aço) o armazenou. Nada que um mínimo de organização de sua parte não resolva. Afinal, as bibliotecas funcionam assim há séculos (séculos mesmo, desde a de Alexandria) e os bibliotecários sempre encontram o livro pedido (a organização de uma biblioteca é hierárquica: basta saber em qual prateleira de que estante de que sala de qual andar da biblioteca o livro está armazenado, ir até lá e pegá-lo).

No caso dos livros da biblioteca e dos documentos (em papel) de seu escritório, não há outro jeito. Mas será que no caso dos arquivos (conjuntos de dados binários gravados em um meio de armazenamento qualquer, seja disco magnético, ótico ou de memória flash como um "pen drive") não haveria uma forma mais simples?

Diga-me lá: quando você "pensa" no arquivo que precisa encontrar no WE, a primeira coisa que lhe vem à mente é o local onde ele está armazenado? Ou não seria o assunto? (onde está aquela carta que eu mandei para papai semana passada pedindo dinheiro?) Ou uma palavra ou frase que ela contém? (no caso, "dinheiro"). Que tal, em vez de pedir ao WE que abra o arquivo "carta_papai.doc" armazenado na pasta "papai" contida na pasta "correspondência" contida na pasta "documentos" contida na pasta "seu_nome_de_usuário" contida na pasta "usuários" do disco rígido "C:", pedir simplesmente que ele abra o arquivo que contém as palavras "papai" e "dinheiro" criado nos últimos sete dias? A não ser para quem costuma pedir dinheiro ao pai com muita, mas muita frequência mesmo, seria bem mais fácil, já que o sistema recuperaria uns poucos arquivos dentre os quais bastaria clicar no desejado.

Portanto, usando as características do arquivo é bem mais fácil solicitá-lo. Mas seria igualmente fácil atender à solicitação?

No caso da biblioteca, é mais ou menos como pedir ao bibliotecário que lhe empreste o livro escrito a partir do século XII com a palavra "Comédia" no título e cujo texto contém a frase "Abandonai toda a esperança vós que entrastes". Se o cara for procurar na sala que contém os livros cômicos antigos e folhear um por um em busca da frase, não somente demorará uma eternidade como não encontrará seu livro (trata-se da Divina Comédia, de Dante Alighieri, que nada tem de comédia, e a frase citada está escrita nos umbrais do inferno).

Ou seja: só com estes dados seria praticamente impossível para o bibliotecário satisfazer seu pedido. A não ser...

A não ser que ele tenha digitalizado o conteúdo de todos os livros da biblioteca, tenha armazenado tudo isto no servidor da rede da biblioteca e indexado o conjunto em um bom banco de dados relacional. Assim, ele poderia usar o banco de dados para efetuar uma busca com aquela frase no conteúdo de todos os livros editados após o século XII em cujo título constasse a palavra "Comédia". Se o programa de banco de dados usado pela biblioteca for eficiente e estiver com a indexação em dia, a "Divina Comédia" estará em suas mãos em alguns segundos...

Mas o que tem tudo isto a ver com o WE e o sistema de arquivos de Windows?

Tudo a ver. Porque, afinal, ao contrário do conteúdo da biblioteca (o texto de todos os livros), o de seu computador já está digitalizado. Ou seja: o trabalho maior já está feito. Portanto, para encontrar o documento que contém as palavras "papai" e "dinheiro" criado nos últimos sete dias basta que ele seja incluído em um banco de dados relacional e devidamente indexado.

Mas que banco de dados seria esse?

Ora, seria o próprio sistema de arquivos.

Para que isto seja possível basta abandonar a metáfora do escritório e adotar a de banco de dados relacionais indexado. E é exatamente isto que faz o novo sistema de arquivos proposto pela MS para Windows, o WinFS: tratar os arquivos como um conjunto de dados e metadados, organizar um banco de dados para eles e indexá-los (há alguns meses escrevi um par de colunas sobre o WinFS e seu dispositivo de indexação; quem quiser mais detalhes sobre o assunto ou saber o que são metadados pode consultar estas colunas, cuja primeira intitulou-se "Vista e WinFS: mudança de paradigma").

Resumindo: se o conteúdo dos dispositivos de armazenamento de um computador é, por natureza, digitalizado, por que não se aproveitar disso e criar um sistema de arquivos que funcione como um banco de dados relacional indexado e encontre os documentos com base nas suas características fáceis de lembrar, em vez de continuar usando um paradigma velho, que trata os arquivos digitalizados como objetos físicos e que nos obriga a saber exatamente onde os armazenamos para que possamos encontrá-los?

Pois pensando assim a MS vem desenvolvendo desde 2000 um sistema de arquivos baseado em um banco de dados relacional para Windows. Batizou-o de WinFS (Windows File System) e continua trabalhando nele. O problema é como fazer com que toda a base de usuários abrace uma mudança de paradigma que, embora venha para facilitar, é demasiadamente radical para ser encarada sem desconfianças.

O primeiro passo foi "embutir" o WinFS no Vista. Sua parte visível ao usuário são as pastas virtuais, criadas a partir de critérios de busca e cujo conteúdo é dinamicamente atualizado. Parece que não deu muito certo.

Por que será?

Bem, a julgar pelos das colunas sobre o WinFS acima citadas, o maior receio e "perder arquivos". Depois de um quarto de século usando um sistema hierárquico onde eles "sabem" (pelo menos pensam que sabem) onde está cada um de seus arquivos, os usuários se sentem inseguros em usar um sistema indexado. O sentimento generalizado é do tipo: "querem que eu bote todos os meus arquivos em um único repositório e misture-os, para depois tentar recuperar cada um deles com base na indexação". A sensação é de insegurança por achar que "misturar tudo em um lugar só" dificulta, em vez de facilitar a recuperação de um arquivo. Acredito que foi por isso que o tal recurso de Vista chamado "pasta virtual" não "vingou". Aliás, paradoxalmente, por mais que use computador, o usuário comum desconfia de tudo o que é "virtual" (talvez pelo uso frequente da palavra em oposição a "real"; afinal, deve ser bem mais seguro guardar alguma coisa em um local real que em um depósito virtual).

O caso é que eles não se dão conta que é exatamente isto que fazem hoje: jogam todos os seus arquivos em um único receptáculo (o disco rígido), misturam tudo (já ouviram falar em arquivos fragmentados?) e, na hora de usá-los, tentam recuperá-los com base em um sistema rudimentar de indexação que depende de diversas tabelas (de partição, de alocação de setores para arquivos e tabelas intermediárias que chamam de "pastas" ou "subdiretórios") gravados e continuamente atualizados em um falível meio magnético.

Ou será que eles pensam que no interior de seus discos rígidos os arquivos ficam guardadinhos, separados por pastas e, se souberem onde os armazenaram, jamais os perderão?

Acho que sim. E não se dão conta que, quando os setores que armazenam uma tabela de partição, ou o diretório raiz, ou as tabelas de alocação de arquivos apresentam um defeito irrecuperável, todos os arquivos vão para o brejo do mesmo jeito. Ou seja: o sistema hierárquico usado hoje, além de arcaico e de não se aproveitar das facilidades oferecidas pelo próprio computador, é tão "virtual" quando o WinFS. Se duvida, tente usar um programa de edição de discos para examinar o conteúdo dos setores que contêm uma pasta e veja se dá para entender alguma coisa...

Mas o que tem tudo isto a ver com as "libraries"?

Muito a ver. Porque, ao que me parece, para facilitar as coisas e não deixar a impressão de "botar tudo no mesmo saco", Windows 7 oferece, por padrão, quatro "sacos" novinhos em folha para que o usuário possa enchê-los de arquivos classificados por tipo. E mais: não somente isto pode ser feito sem abandonar o paradigma das pastas (portanto, mantendo a sensação de aparente segurança) como também os usuários podem criar mais tantos sacos quantos julgarem necessários para acumular seus tesouros.

Estes sacos, naturalmente, são as "libraries".

Pronto, agora já dá para explicar o que é uma "library".

Como as "pastas virtuais" de Vista (que já não mais existem no Windows 7), o uso das "libraries" foi o meio adotado pela MS para abstrair o sistema de arquivos, substituindo os locais onde os arquivos estão efetivamente armazenados (as pastas) por um conjunto de objetos virtuais (as "libraries") que contém "representantes" ou "ponteiros" dos arquivos que, por sua vez, mesmo sendo reunidos na mesma "library", podem estar fisicamente armazenados em distintos locais.

Ué - perguntarão vocês - mas isto não é exatamente a definição de "pasta virtual"? Então estas tão badaladas "libraries" nada mais são que as mesmas "pastas virtuais" de Vista, mas com um nome diferente para "enganar os trouxas"?

Não é bem assim, respondo eu. Embora uma "library" de Windows 7, tecnicamente, seja extremamente parecida com uma "pasta virtual" de Vista e vise o mesmo objetivo (abstrair o sistema de arquivo), a forma pela qual elas se integram aos aplicativos fornecidos com Windows, a forma pela qual elas se entrelaçam com o conceito de "homegroup" e, sobretudo, a forma como elas são criadas e mantidas, faz com que, embora da mesma espécie, "pastas virtuais" e "libraries" sejam animais de comportamento bastante diferente.

Se você está a par do conceito de "pastas virtuais" de Vista sabe que a única forma de criá-las é concebendo um critério de busca, efetuando a busca e salvando o critério. Isso cria um objeto (a pasta virtual) com um conjunto de ponteiros que aponta para (e apenas para) os arquivos que satisfazem o critério. E não há como introduzir novos objetos na pasta virtual exceto alterando o critério (ou seja, não é dado ao usuário "escrever" ou adicionar objetos diretamente a uma "pasta virtual", embora os arquivos criados posteriormente e que obedeçam ao critério venham a ser incorporados à pasta virtual e indexados). Já as "libraries" podem ser criadas a qualquer momento pelo usuário - que pode, por exemplo, criar uma "library" vazia e acrescentar a ela os objetos que desejar (na verdade, ponteiros para objetos).

Creio que a principal razão disso é que, respeitando o receio dos usuários de efetuar uma mudança de paradigma tão radical quanto o abandono da estrutura hierárquica para abraçar o conceito de banco de dados relacional, os desenvolvedores de Windows 7 fizeram com que as novas "libraries" (locais virtuais) possam conviver harmonicamente com (e se integrar a) o sistema hierárquico de pastas, ou locais reais (ou pelo menos pseudorreais como o NTFS).

Clique e amplie...

Figura 1: uma “Library” com suas propriedades expostas.

Eu sei que isso parece uma frase de efeito, mas o resultado prático é extraordinário. Com as "libraries", quem quiser pode continuar armazenando seus arquivos em pastas, exatamente como se acostumou a fazer em vinte anos. Mas, se desejar, pode adicionar estas pastas a uma "library" (o que seria impossível fazer em uma "pasta virtual" a não ser alterando o critério de busca que a criou). Que pode ser uma das quatro fornecidas por padrão por Windows 7 - que, a meu ver, são mais que suficientes para o usuário comum - ou, se preferir, uma criada por ele mesmo (o que pode ensejar a criação de uma "library" para cada projeto, ou cliente, ou seja lá o que for, contendo ponteiros para todos os documentos correlatos e apenas para eles). Como tudo o que for incluído em uma "library" passa, automaticamente, a ser indexado e incluído em um banco de dados relacionais interno (que na verdade nada mais é que o WinFS), ficará muito mais fácil encontrar o arquivo desejado usando a "library" e suas facilidades de busca, organização e arranjo de arquivos que navegando na hierarquia de pastas (que, não obstante, continua disponível). Veja, na Figura 1, o WE aberto na "library" "Pictures", que armazena imagens. Repare, no painel central, a lista de pastas ("folders") nela contidos e veja, sobre a janela do WE, a janela de propriedades desta "library" aberta, listando as pastas que ela contém. Repare no botão "Include a folder", que permite facilmente ao usuário incluir uma nova pasta nesta "library" e perceba, logo abaixo, que a "library" (e, portanto, os modos de exibição e recursos por ela oferecidos) estão otimizados para "Pictures" (imagens).

Com isto a MS fornece um meio indolor, simples e eficaz para que os usuários migrem de paradigma sem sequer perceberem. E o uso das "libraries" é tão simples e intuitivo (muito mais que o das pastas virtuais) que a tendência é que os usuários passem a adotá-las tão logo descubram suas facilidades - que são evidentes. O que me faz presumir que, pouco a pouco, o conceito de armazenamento em pastas venha a ser substituído pelo de armazenamento em "libraries", mais intuitivo e mais fácil de usar (por tornar mais fácil encontrar o arquivo que se deseja, que afinal é a finalidade última de um sistema de arquivos). Quando isto ocorrer, dentro de mais uma ou duas gerações de Windows, provavelmente o sistema baseado na estrutura hierárquica desaparecerá naturalmente por desnecessário.

Em suma: as "libraries" de Windows 7, como as "pastas virtuais" de Vista, são um meio oferecido ao usuário para que possa migrar, da forma mais indolor e amigável possível, de um paradigma de sistema de arquivo baseado em estrutura hierárquica para outro baseado em banco de dados relacionais. Tão indolor e amigável que ninguém será obrigado a fazê-lo: quem quiser simplesmente esquecer que as "libraries" existem e preferir continuar amarrado a seu bom e velho (desculpe; neste caso melhor dizer "mau e velho") sistema de estrutura hierárquica, pode. Mas elas estão ali, ao alcance de um clique, oferecendo tantas vantagens que muito provavelmente a maioria dos usuários recorrerá a elas.

Ou seja: com as "libraries" a MS tornou a migração para o WinFS mais fácil e intuitiva. Sobretudo porque ela não exige que o usuário "desmanche" sua estrutura atual de pastas dentro de pastas, que ele mesmo construiu e que domina tão bem, para "jogar tudo em um mesmo saco". Isto porque - e esta é a maior e mais importante diferença - ao contrário das "pastas virtuais", as "libraries" podem receber pastas inteiras. Ou seja: para obter os benefícios da organização em "libraries" sem perder os da organização estruturada, basta continuar guardando seus arquivos nas mesmas pastas de sempre e incui-las inteiras na “library” que mais vantagens ofereça (ou em uma criada especificamente para tais e quais arquivos). E, como vimos na Figura, incluir uma pasta em uma "library" é extremamente fácil. O fato extraordinário de que com isto se está mesclando uma estrutura "real" com uma estrutura "virtual" passará totalmente despercebido, já que será absolutamente transparente para o usuário. E o fato ainda mais estranho de que qualquer novo documento introduzido na pasta que se integrou à "library" será automaticamente integrado à "library" (e imediatamente indexado no banco de dados) será ainda mais transparente.

Se o final do parágrafo anterior não lhe causou admiração é que provavelmente você o leu sem a devida atenção. Leia novamente e raciocine: qualquer coisa que você criar e armazenar em uma pasta comum que foi previamente integrada a uma "library" será automaticamente acrescentado à "library" e poderá ser encontrado usando seus mecanismos de busca, organização e classificação de arquivos. Ou seja: como no sistema de “pastas virtuais”, o usuário não precisa de se preocupar em atualizar frequentemente suas “libraries”. Mas ao contrário das “pastas virtuais”, se desejar alterar seu conteúdo, pode fazê-lo sem dificuldade.

Mas talvez a parte mais estranha de toda esta mudança conceitual seja o fato de uma "library" não se limitar a conter arquivos e pastas (melhor: referências a, ou ponteiros para, arquivos e pastas) armazenados na máquina onde ela existe. Graças à sua integração com as demais máquinas do "homegroup" e com os dispositivos compartilhados, você pode misturar na mesma pasta arquivos espalhados por todo o grupo. E a integração com os aplicativos de Windows, como por exemplo o Media Player, é tão grande que você pode abrir o programa, escolher um álbum e mandar reproduzi-lo sem sequer saber se os arquivos das músicas estão na "library" "Music" de sua própria máquina ou de alguma outra do "homegroup" que a compartilhou com você.

Agora que examinamos o conceito das "libraries", vamos ver como elas funcionam na prática. Mas na próxima coluna, naturalmente, que esta já está grande demais.

 

B. Piropo