O InterProlog e a Declarativa Miguel Calejo Declarativa
Apresentação no 4º CNPL, Copyright Declarativa Estrutura da apresentação InterProlog –Fundamentos –Resumo da funcionalidade Incursão pelo “mundo real” –XJ, gerador de GUIs sobre InterProlog –A Declarativa e oportunidades part-time
Apresentação no 4º CNPL, Copyright Declarativa InterProlog: Java Reflection All objects know their class: –Class C = X.getClass(); Since JDK 1.1, classes provide info about public methods and variables –Method M = C.getMethod(“anyMethod”,Class arg array) No Prolog meta-call, but close –M.invoke(Target,Object arg array)
Apresentação no 4º CNPL, Copyright Declarativa InterProlog: Java Serialization Cleaner than in other languages: Reflection allows a system mechanism to introspect any object and serialize it... Cf. classes ObjectOutputStream, InputObjectStream...oos.writeObject(ANYOBJECT); Object ANY = ios.readObject();...using a public stream format :) Writes/reads an object graph, including class descriptions, without repeating objects
Apresentação no 4º CNPL, Copyright Declarativa InterProlog architecture sockets, console redirection Java VM InterProlog classes XSB executable InterProlog predicates A Java application A Prolog application Objects Terms
Apresentação no 4º CNPL, Copyright Declarativa InterProlog Java program linked to Prolog program through I/O and object sockets Java program launches “PrologEngines” Dynamic Prolog->Java calls with Reflection Serialized objects are parsed/generated by a Definite Clause Gramnmar
Apresentação no 4º CNPL, Copyright Declarativa Programming on the Prolog side Object specification helpers I think I’m under a console process Handle Java events as top goals javaMessage(Target,Message(Args)) –EX: javaMessage(‘java.lang.System’- out,println(string(‘hello, world’))). –Wide open API, as far as Java security allows –Variations handle exceptions, return value
Apresentação no 4º CNPL, Copyright Declarativa Programming on the Java side One PrologEngine One XSB subprocess isAvailable() sendAndFlush(String s) Object[] deterministicGoal( String G, String Ovars, Object[] objectsP, String RVars ) registerJavaObject(Object x) interrupt(), shutdown()
Apresentação no 4º CNPL, Copyright Declarativa InterProlog Term displayers browseList([one(X),two(Y),1+1+1,X/Y]). browseLiteralInstances(foo('First','Last'), [foo('Miguel','Calejo'),foo('Terry','Swift'),foo('David','Warren'),foo('Robert','Pokorn y')]). browseTreeTerm(t(root,[t(child1,[]),t(child2,[]),t(child3,[t(granchild31,[t(grandgr andchild311,[])])])])).
Apresentação no 4º CNPL, Copyright Declarativa XJ - declarative GUI construction Vision –GUI deduced from logic program + annotations Application development with XJ –Prolog program is developed, ignoring GUI issues –GUI Term declarations added –Additional Java classes may be added for specifics Developed for XSB, Inc. over InterProlog to support DLA and other applications
Apresentação no 4º CNPL, Copyright Declarativa XJ example: term annotations alloy_shape( 'STEEL'( alloy('852') ), 'MOLD CASTING’ ). labels(alloy_shape/2,'Alloy shape'('Alloy','Shape')). guiTerm(alloy_shape(_M,_S), gt(_,[],[gt(_,[operation(XXX,sisa('OBJECT',XXX),'Show in Ontology'), biGuiLink(X1,sub(X1,_),isa(X1,'METAL')) ], [gt(alloy,[constant], [gt(_,[atomUPPER,minSize=3,maxSize=10,typicalSize=8,name='Name'],[]) ]) ]), gt(_,[atomUPPER,typicalSize=15, biGuiLink(X2,sub(X2,_),isa(X2,'CASTING'))],[]) ])).
Apresentação no 4º CNPL, Copyright Declarativa XJ example: derived GUI editList(alloy_shape(_,_)). Double-click Inplace editing w/ basic type checking For term For list Navigation to other windows
Apresentação no 4º CNPL, Copyright Declarativa XJ - another example editList(spec_attr(S,_,_), (name(S,Chars),append("AMS 40",_,Chars)), _).
Apresentação no 4º CNPL, Copyright Declarativa Declarativa 10 meses de idade, 5 pessoas 3 licenciados e 1 doutorado em Informática –1 Prémio IBM, 3 Prémios Microsoft, médias >= 14 Contratos em curso com DoD/XSB Inc. (USA); ME, CVRVV, Servisoft (Portugal) Abordagem declarativa :-) –WAM (SQL Server+JavaScript) –InterProlog/XJ (Prolog+Java)
Apresentação no 4º CNPL, Copyright Declarativa Declarativa - WAM Web Application Maker –Model-driven, centralizado no MS SQL Server “Disruptive technology”; com um só click: –Dada uma boa BD com stored procedures, etc... –E algumas anotações de interface... –...obtém aplicação p/ WWW (browsers) sobre intranet/extranet com perfis de utilizador, etc.
Apresentação no 4º CNPL, Copyright Declarativa Oportunidades na Declarativa - I InterProlog –Documentação –Integração de frameworks Java Grafos, edição de diagramas com restrições, edição de texto orientada a sintaxe, agentes distribuídos –Evolução do InterProlog e do XJ
Apresentação no 4º CNPL, Copyright Declarativa Oportunidades na Declarativa - II Evolução do WAM –Algoritmos (Java/Prolog/Transact-SQL...) transformando modelos em SQL-Server –Uso de informação linguistica, reconhecimento de padrões de análise –Runtime alternativo com GUI Java/Swing Programação de aplicações WAM –Microsoft SQL Server (Transact-SQL) –Active Server Pages (JavaScript)
Apresentação no 4º CNPL, Copyright Declarativa Conclusão InterProlog, XJ; WAM Declarativa procura neurónios remotos ou locais para colaboração –Tarefas curtas –Trabalhos práticos numa disciplina –Projectos de férias de verão –Projectos de licenciatura