C# no mundo de hoje
Soluções tecnológicas freqüentemente precisam autom atizar processos cuja linha de raciocínio utiliza conhecimento implícito.
Este conhecimento pode ser representado na forma de regras, que em conjunto fo rmam uma base de conhecimento capaz de inferir do mundo informações de relevância e tomar determinadas ações quando um conjunto de premissas é satisfeito [1].
Existem abordagens de sistemas de conhecimento bas eados em regras para praticamente todas as linguagens do mercado que seg uem o paradigma de programação orientado a objetos, que desde os anos
90 é o paradigma dominante na indústria de software e o que mais cresce em uso. A relativa abrangência de tais sistemas mostra que há interesse da comunidade tecn ológica na área, no entanto nem sempre a combinação de regras e objetos satisfaz na tentativa de promover um sistema híbrido integrado [3].
Há uma dificuldade em suportar ambos os paradigmas.
Os dois são adequados para diferentes tipos de tarefas e uma integração s atisfatória precisa resolver algumas questões conceituais a respeito desses conflitos de paradigma. Segundo o estudo de François Pachet [3], um ponto c rucial está em conceber uma integração onde haja uma compatibilidade mútua entre as duas linguagens.
Linguagens de regras usualmente acessam a estrutura de seus fatos como elementos de uma memória de trabalho, prática contrária à fil osofia orientada a objetos. A integração também pode encontrar problemas em torno do princípio do encapsulamento. Os objetos, que são projetados para esconder estruturas de dados e detalhes de implementação, podem entrar em conflito com regras que queiram manipular explicitamente a estrutura dos fatos, o q ue não é considerada uma boa prática dentro do paradigma orientado a objetos.
Faz parte da solução para integrar de maneira bem s ucedida ambos os paradigmas encontrar a simbiose lingüística [2] ent re as duas linguagens, isto é, permitir que os programas