Research areas: Programming Paradigms, Applications, Foundations, SE
Slide for different areas + James' quote + Brodner quote
2. Programming Paradigms
Relevance to complexity theory, where there is a significant lack
of appropriate ways to measure performance formally. Want to count abstract
operations generally, so declarative languages are useless here, but procedural
languages do not necessarily have the right expressive power. Not enough
to construct abstract data types and calculate numbers of abstract operations.
Of particular interest are complexity measures that concern maintenance
of dynamic data structures. Possible interest in exploring definitive models
in that area.
Abstractions to be more fully analysed and exploited
Higher-order definitions (EG UK'96 + Gehring)
Data structures (cf heapsort, ARCA, CADNO + R I Cartwright)
Examples of interesting challenges for definitive programming:
1) write an LR parser in such a way that the finite state machine associated with the grammar is specified by a definitive script.3. AI and Applications2) write a text editor (developing Edward Yung's Unconventional Text Editor, the first EDEN program to be devised)
3) write definitive implementations of definitive software tools
4. Foundations
How to express "all"! notions of CS in terms of semantics we are developing for LSD and definitive notations. Examples of concepts we can deal with to some extent:
agent, process, object, observation, experiment, program, execution.
More work needed on synchronisation, data types (specify the stack etc), time, constraints, hypermedia ...
How to represent models? Jaratsri's lines, chcruise etc
1. Investigate a computer architecture based on a definitive paradigm
2. Enhancement of the ADM
3. Parallel implementation of EDEN
4. Parallel implementation of ADM
5. Comparative study of concurrent systems modelling techniques
e.g. SDL vs Agent-oriented modelling, Statecharts vs LSD
6. Extension of LSD design:
parametrisation, roles and subagents, agent references
7. Code generation for parallel machine from definitive specification
8. Definitive implementation of EDEN
9. From requirements to formal specification of reactive systems
10. Formal association of requirements and testing
11. Applications in scientific visualisation with parallelism (cf GRN and Valery Adzhiev)
12. A definitive notation to specify synchronisation of events
13. Communications network simulation (BT)
14. Development of an environment for modelling reactive systems
15. Comprehensive formal analysis of a small LSD specification
16. Elaboration of LSD concepts in respect of
intention, obligation of agents
agents, roles, objects, processes etc
17. Detailed analysis and modelling of railway scenarios, such as in- depth study of one or more historic railway accidents
18. Investigate relevance of empirical modelling techniques to protocol analysis and specification (e.g. alternating bit protocol)
19. Physically-based modelling (SBR)
20. LSD specification of a specific machine architecture e.g. Parsytec or Acorn RiscPC
21. Applications to modelling Intelligent Agent interaction (ML)
Not so much directly parallel in orientation:
Donald with objects
ARCA revisited
Abstract definitive programming
Definitive Methods for Programming and Parallelism
How to approach parallelism?
1. Adaptation to existing parallel machines
"Powerful" parallel architectures exist, but who can program them?2. Translation techniques from a definitive specificationHardware technology outstrips software technology?
Will future developments be hardware or software driven?
Definitive approach:
So far primarily model the application, but could model the machine
[no clear distinction between modelling devices and system context]
Examples of this in a small way:
cf tank.e / tank.s, SCOUT for OpenWindows, Peco Rail, Systolic Arrays
SAND: systolic array definitive notation devised by Sockett in 1991
How about the Parsytec??
Interface with existing machines via an appropriate "high-level" language3. Architecture software-driven by (generalised/adapted) ADM modelGenerate efficient code in OCCAM from high-level specification
Is this really just strategy 1 in disguise?
Definitive approach:
Use definitive methods as a requirements capture agent-oriented rather than object-oriented analysis technique.Ingredients:
ATC moves the plane vs low-level divisible protocol
Could treat as preliminary phase in OOD for distributed machine
definitive state-transition models to Petri nets, CCS (Paul Ness)
[ small-scale case studies, as explored on Concurrency WorkBench ]
Possibly related projects
translation from EDEN to procedural language
[ most successful effort yet is to procedural EDEN ]
translation from ADM to procedural language
admira: a definitive miranda
Presume definitive script good for parallelism in following respects:
How can we exploit this? (if at all)
[cf efficient parallel implementation of spreadsheet challenge]
VN bottleneck connected with need when updating procedural vars to update all the dependent variables ?? ... how about having background processing in memory maintaining updates, shipping only key actions from processor to memory? Obligatory update on call-by-need. Possibility of clever maintenance of update by virtual calls for values.Possibly related project
definitive interpretation of definitive interpreters