Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

19
Go! - LP for the Internet era Go! - LP for the Internet era Francis G. McCabe Laboratories of America

description

Problem #2 Navigational complexity •Software systems meeting without prior intention on the part of the designers •Highly heterogenous, highly complex

Transcript of Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

Page 1: Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

Go! - LP for the Internet eraGo! - LP for the Internet era

Francis G. McCabe

Laboratories of America

Page 2: Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

Problem #1Problem #1

On average 3~10 security updates to Linux per week Most caused by buffer overflow holes C is too weak for secure programming

Page 3: Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

Problem #2Problem #2

Navigational complexity Software systems meeting without prior

intention on the part of the designers Highly heterogenous, highly complex

Page 4: Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

Problem #3Problem #3

The software development cycle is too long By the time a system has been built, in

`Internet time' it is already obsolete

Page 5: Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

Problem #4Problem #4

Programmers and developers are not liable Accountants, architects, lawyers, journalists

are all liable for the quality of their product So are software developers

Page 6: Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

Our world has changedOur world has changed

The Internet changes everything Even programming languages

Page 7: Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

Go!Go!

Go! is an Internet ready logic programming language Aimed at high integrity, high security Aimed at agent based systems

Page 8: Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

Logic programming basedLogic programming based

Strong semantic basis What you see is what you mean c.f. `Proof by compiler' semantics of C, Java

Rule based Closer to human intention

Simple elements Functions, relations and theta expressions

Page 9: Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

Strong static typingStrong static typing

High correctness confidence Gets rid of `stupid' errors

Types are usually inferred automatically Significantly reduced programmer burden

Page 10: Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

Higher OrderHigher Order

Programs are 1st class entities More disciplined than meta-logical Much clearer interfaces between programs Supports `fancy' features such as code

repositories, code mobility easilyNot higher-order logic

Functionally equivalent to FOL Avoids some nasty pitfalls of HOL

Page 11: Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

DisciplineDiscipline

Disciplined access to resources File system `sand box' Code verification built in

Disciplined assignment Assignable variables are lexically scoped Only updateable by programs defined within

the same scope Not visible otherwise

Page 12: Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

Distributed and multi-taskingDistributed and multi-tasking

Based on notions of active processProcesses only communicate via visible

mechanismsUniform messaging infrastructure

Communication is the same across the network as within a single activation

Page 13: Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

A simple program about ancestorsA simple program about ancestors

{ p('a','b'); p('a','c'); p('b','d'); p('e','d'); p('f','e');

an(x,y) :- p(x,y); an(x,y) :- p(x,z), an(z,y);}

Page 14: Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

Inside an agentInside an agent

Page 15: Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

A fragment of an agent controllerA fragment of an agent controller

{ Active := []; mgr() :- proposal(T)<<H, profitable(T,H), Active := [spawn task(proposal(T),H),..Active], mgr();

profitable(T,H) :- ...

}.mgr

Page 16: Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

A code repositoryA code repository

{ DB := []; inter ::= face(t) | prov(t,handle);

cr() :- repeat { face(C)<<client ->> { prov(C,server) in DB, face(C) >> client } | prov(F,S) ->> DB := [prov(F,S),..DB] } forever}

Page 17: Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

Access the codeAccess the code

{ inter ::= face(t) | prov(t,handle);

Pan = Px::{ face(Px:(p:(symbol,symbol){},an:...))) >> CR, face(Px)<<CR};

goGo() :- Pan.an('me','you');}.goGo

Page 18: Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

Publish codePublish code

{ inter ::= face(t) | prov(t,handle);

proxy = { p('a','b'); ... p('f','e');

an(x,y) :- p(x,y); an(x,y) :- p(x,z), an(z,y); };

publishPan() :- prov(proxy,self()) >> CR; }.pubishPan

Page 19: Go! - LP for the Internet era Francis G. McCabe Laboratories of America.

Wrap upWrap up

Go! is still in design stages Most of the elements are in place Compiler being constructed

Go! is targetted at the right problems!LP is the right framework for building agents

themselvesGo! prototype system will be available under an

Open Source Licence