Często muszę zaimplementować jakiś system reguł, który można edytować przez użytkownika - wymagania są na ogół na tyle różne, że ten sam system nie jest bezpośrednio stosowany, więc często napotykam na ten sam problem - jak zaprojektować System zasada, że Dobre referencje/wskazówki dotyczące projektowania systemów reguł?
- jest utrzymaniu
- właściwie równoważy ekspresyjność z łatwością obsługi
- jest łatwo rozszerzyć (jeśli/kiedy się (2) źle).
Myślę, że systemy reguł/DSL są niezwykle cenne, ale nie czuję się dobrze, jeśli chodzi o moją umiejętność właściwego ich zaprojektowania.
Jakie referencje/wskazówki możesz zaoferować, które mogą ułatwić to zadanie?
Z powodu natury napotkanych problemów, istniejące języki zasadniczo nie mają zastosowania. (Na przykład, nie musisz ani wymagać od zwykłych użytkowników komputera uczenia się Pythona w celu napisania filtru wiadomości e-mail.) Podobnie, reguły języki, takie jak JESS, są tylko częściowym rozwiązaniem, ponieważ niektóre (prostsze) potrzeby interfejsu użytkownika do zbudowania na górze języka reguł, aby programiści mogli z niego korzystać. Ten interfejs nieodłącznie wiąże się z usunięciem pewnych funkcji lub utrudnieniem korzystania z tych funkcji, a także, że process stanowi problem opisany powyżej.
Edit: celu wyjaśnienia, jest pytanie o projektowaniu silnik reguła, ja nie szukam gotowych silnika reguł. Jeśli zaproponujesz silnik reguł, wyjaśnij, w jaki sposób rozwiązuje on problem związany z podejmowaniem dobrych decyzji dotyczących projektu.
Nie jestem pewien, czy rozumiem stosowalność drzewek ekspresji. Czy sugerujesz je jako aspekt interpretatora języka reguł, czy używasz ich do reprezentowania opcji dla każdej reguły? Jestem nieco zdezorientowany. – rcreswick