Imperativo: bool antep(node *a, *b) { node *p; for( p = b; p != NULL; p = p->padre ) if( a == p ) return(TRUE); return(FALSE); } --> Ventajas: eficiencia, cercania a la maquina --> Desventajas: mantencion, reusabilidad, claridad --> Usos: Compiladores, embebidos, controladores, Sistemas Operativos Funcional: (define antep(a b) (if (= a b) #t (if (not (= (padre b) nil) (antep a (padre b)) #f) )) --> Ventajas: sin efectos de borde, mas predecible, paralelizable --> Desventajas: ineficiente, lejano a la maquina, mantencion dificil --> Usos: Lenguajes intermedios, arboles sintacticos OO: Class persona { method boolean antep(); } Class hijo extends persona { persona padre; method boolean antep(persona b) { if( this == b ) return(true); return( padre.antep(b) ); } } Class huerfano extends persona { method boolean antep(persona b) { return( this == b ); } } --> Ventajas: reusabilidad, alto nivel, eficiencia razonable --> Desventajas: costo fijo de diseƱo/desarrollo --> Usos: Aplicaciones grandes Logico: antep(a,a) antep(a,b) :- padre(a,x), antep(x,b) --> Ventajas: Reglas genericas --> Desventajas: Falta de generalidad, ineficiencia --> Usos: reglas de firewalls, bases de datos, data mining, sistemas expertos