Re: [QD-Filosof ia] Excelência vs liberdade

Alexandre Oliva <[email protected]>
Newsgroups gmane.org.user-groups.quilombo
Organization Red Hat Global Engineering Services Compiler Team
Message-ID <[email protected]>
On Feb  2, 2005, Leandro Guimaraens Faria Corsetti Dutra <[email protected]> wrote:

> Em Wed, 02 Feb 2005 16:06:03 -0200, Ricardo Andere de Mello escreveu:

>> se você leu a resposta do klaus no link que você mesmo deu
>> (http://www.dbdebunk.com/page/page/806810.htm) saberia que o klaus
>> mexe com smalltalk e bancos de dados há muitos anos.

> 	E...?  Conheço muita gente enganada sobre muita coisa há
> muitos anos.

Você percebe que esse argumento funciona pros dois lados?

> 	Eu já trabalhei com bilhetagem e faturamento, devo dizer que
> não conheço nenhum sistema de bilhetagem e faturamento
> decente... todos que vi até agora funcionam com base no sangue, suor e
> lágrimas, não porque sejam bem feitos.

Talvez porque não usem os progressos da engenharia de software
alcançados nos últimos 20+ anos (desde o surgimento dos conceitos de
orientação a objetos)?

> Há questões muitso sérias sobre OO e dados.

Certamente.

> Devo avisar que o juízo da comunidade de dados sobre o Prevayler é
> *muito* severo.

Assim como o juízo da comunidade de programação estruturada sobre OO é
*muito* severo.  Assim como o juízo da comunidade de engenharia de
software tradicional sobre extreme programming é *muito* severo.  Ou
eram, e a aceitação foi aumentando com o tempo, à medida em que os
benefícios se comprovavam mais.  São todos exemplos de quebras de
paradigma.  Significam que talvez os tantos anos de investimento e
pesquisa numa área tenham sido em vão, em face da descoberta de uma
forma muito melhor de alcançar resultados similares.

> Vai quebrar a cara também.  Aliás paradigma é o tipo da palavra que
> ofusca em vez de esclarecer.

Argumento ad-hominem (ou, no caso, ad-palavrorum :-)

> Olha, há 35 anos de pesquisa sobre o modelo relacional, e mais
> ainda sobre sistemas de gestão de bases de dados em geral.  Coisas
> muito básicas como os requerimentos ACID, controles de transações e
> segurança, independência de dados, a teoria dos conjuntos e a lógica
> dos predicados, os modelos gerais de dados...

Exatamente.  Estão fundamentados sobre conceitos que são
essencialmente distintos do modelo de programação concorrente na
maioria das linguagens em uso na atualidade.  Essa diferença de modelo
exige camadas de adaptação, e essas camadas causam dificuldades e, às
vezes, problemas.

O que o Prevayler faz é acabar com a necessidade dessa camada de
adaptação, e aplicar um único modelo aos dados.  Em vez de considerar
a cópia em disco dos dados a cópia primária, considera-se a cópia em
memória a cópia primária, e se aplica a ela o modelo de concorrência
vigente na linguagem de programação Java.  Que esse modelo tem lá suas
dificuldades de implementação, tem.  Mas é o modelo da linguagem.
Adicionando-se a ele a teoria de snapshots, que é essencialmente o que
o Prevayler tira do estado do repositório de dados da aplicação de
tempos em tempos, obtém-se não um banco de dados tradicional em
memória, mas a capacidade de preservar um estado bem definido de um
repositório de dados em memória num meio persistente.

Não há os recursos transacionais, não há múltiplas versões de objetos,
não há logs, não há consultas otimizadas dinamicamente, procedimentos
armazenados, etc, além daqueles codificados na própria aplicação.
Dispensa-se a camada de adaptação para banco de dados porque ela é
desnecessária e até prejudicial nos casos em que o modelo de dados é,
efetivamente, parte de um modelo orientado a objetos, e não apenas um
modelo relacional encapsulado por uma camada orientada a objetos.

> é preciso muita fundamentação para 'quebrar este paradigma', e isso
> nem o Klaus nem ninguém mais nem sequer chegou perto de conseguir.

A fundamentação de modelos de programação concorrente, snapshots e
orientação a objetos está aí pra quem mais se dispuser a estudar.
Quem se fechou no mundo de SGBD provavelmente não viu quando a
engenharia de software e os outros modelos teóricos acima passaram
zunindo.

> Só para introduzir: me aponte para uma descrição do modelo de
> dados de prevalência.

Que tal a descrição do modelo de concorrência de Java?  Tudo bem, há
artigos que apontam erros na descrição do modelo, mas, que eu me
lembre, não no modelo propriamente dito.

> Renato, administração de dados não é arte, é ciência.

Mas felizmente não é a única ciência.

> O fato, no frigir dos ovos, é que não há nenhuma
> incompatibilidade de OO com o modelo relacional,

Essa é a opinião típica que eu vi em todo cara fechado em SGBD que
tenta ver OO.  O cara deixa pra lá herança, especialização de métodos
e outras coisas mais que são o grande diferencial de OO, e modelam o
que sobrou como tabelas relacionais.  Aí, é claro que não vê
incompatibilidade nenhuma, porque está comparando o modelo relacional
com ele mesmo, e não com OO.

> mas sim com o SQL; e que os BDOO, incluído aí o Prevayler, são um
> retrocesso de 35 anos aos tempos pré-relacionais.

A falácia aqui é a afirmação implícita de que a teoria relacional é um
progresso.  Foi certamente um progresso sobre o que havia 35 anos
atrás.  Houve outros progressos, e infelizmente alguns deles, como OO,
entram em conflito com o modelo relacional, porque o modelo relacional
foca primária e essencialmente nos dados, enquanto o modelo de objetos
foca (surpresa!) em objetos, como entidades que compreendem não apenas
dados, mas também modelos de comportamento e encapsulamento.

A meu ver, encapsulamento é uma idéia fundamentalmente incompatível
com modelo relacional e, no entanto, é um dos pilares do modelo de
orientação a objetos.  Modelos de comportamento (métodos) não são
apenas procedimentos pré-otimizados ou restrições a modificações para
fim de preservação de consistência: são a única forma de interagir com
um objeto, num modelo OO puro.

> Se o Klaus ou qualquer outra pessoa tivesse conseguido fazer
> isso, não precisava usar mumbo-jumbo de prevalência ou ficar
> comparando com Oracle.  Bastava se colocar.

Ele não conseguiu um SGBD.  Ele desenvolveu um sistema que tira
snapshots do estado relevante de uma aplicação para posterior
recuperação em caso de falha.  Só isso.  Não carrega toda a semântica
adicional de um SGBD porque ela não só é desnecessária para algumas
aplicações, ela é incompatível com o modelo de programação em que
essas aplicações são desenvolvidas.

> 	Tirando isso, há as famosas camadas de persistência... o
> Prevayler é na verdade isso, uma camada de persistência que tenta
> fazer o trabalho de um SGBD, mas sendo apenas arquivo...

Não tenta fazer o trabalho de um SGBD.  É *apenas* uma camada de
persistência.  E muitas vezes isso é exatamente o que você precisa.

> Eu sei que pode parecer incrível a um programador, mas dados
> não é uma área que dependa somente da experiência.  Há um corpo
> teórico, um conjunto de requisitos conceituais.

Uau!  Sabia que os bancos de dados são desenvolvidos por programadores
que, supostamente, se apóiam não só na teoria de BD, mas também nos
modelos teóricos das linguagens de programação utilizadas para
garantir o bom comportamento das aplicações que desenvolvem (no caso,
o BD)? :-)

Sinto em informá-lo que BD não é a única frente de pesquisa em
computação que se apóia fortemente em teoria.  Não é a primeira, e
nem vai ser a última.

-- 
Alexandre Oliva             http://www.ic.unicamp.br/~oliva/
Red Hat Compiler Engineer   aoliva@{redhat.com, gcc.gnu.org}
Free Software Evangelist  oliva@{lsd.ic.unicamp.br, gnu.org}

_______________________________________________
Quilombodigital-filosofia mailing list
Quilombodigital-filosofia-lWjjnNBg0S7cOli+L/M/[email protected]
http://listas.quilombodigital.org/mailman/listinfo/quilombodigital-filosofia
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.