Download Employing the LiCAS analysis framework for MONALISA

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Design Patterns wikipedia , lookup

Abstraction (computer science) wikipedia , lookup

Class (computer programming) wikipedia , lookup

Go (programming language) wikipedia , lookup

Program optimization wikipedia , lookup

Scala (programming language) wikipedia , lookup

Coding theory wikipedia , lookup

Object-relational impedance mismatch wikipedia , lookup

History of compiler construction wikipedia , lookup

Compiler wikipedia , lookup

Interpreter (computing) wikipedia , lookup

Object-oriented programming wikipedia , lookup

One-pass compiler wikipedia , lookup

C++ wikipedia , lookup

Java (programming language) wikipedia , lookup

Name mangling wikipedia , lookup

Java performance wikipedia , lookup

C Sharp syntax wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

Transcript
Employing the
LiCAS analysis framework
for MONALISA
a.k.a. the "Java" project
Analysis starting point
• Pre existing data analysis
– MATLAB routines written by Matt
– Java framework written by LiCAS (John Dale)
– Routines from earlier work (ATLAS group)
– A vast body of algorithms in the literature
Java starting point
• Mature Object Oriented (OO) language
• Important versions have been:
– Ver 1.1 (basic core in place)
– Ver 1.2 aka Java 2 (many new libraries)
– Ver 1.5 aka Java 5 upgraded the language
• We user latest version 1.6 (Java 6)
– code written with Netbeans software
Netbeans IDE
User friendly environment for
• writing,
• compiling,
• testing
• running
– Java
– (and other languages)
What does OO really mean?
• Tasks delegated to "methods" in classes
• Linear programming in functions which become "coupled"
• Dataflow via (long) chains of short messages
• Dataflow is via detailed parameters
• Responsibility is delegated via a method (named after the
task) to a class which agrees to take on the role
• Responsibility for tasks is distributed arbitrarily throughout
the code
• You don't need to know how a job gets done
• You often have to understand what a function is doing
internally when you call it, certainly what the parameters do
OO is often misunderstood
dismissively
• you can design and write linear code to have all
the benefits of OO code but:
– you have to do all the "heavy lifting" (an OO compiler
will do much of that for you)
– the users of linear code can get round your design
and inadvertently miss the benefits of your design
• (C++ "dodgy" OO language for this reason)
– even if linear code is written "OO" style, users still
have to read your functions in detail to know that
Delegating:
Digging a trench
Q: How does an army
officer dig a trench?
A: He yells out
"Sergeant dig me a
trench"
not
"Private! Swing your
axe just here, etc"
ad nausem
Important OO ideas
• Object:
– Any entity to which agrees to handle
messages
• Class:
– An object which gets things done when it
receives a message
• Interface:
– this is a contract for classes to sign up to
– compliance is "enforced" by the compiler
Important OO ideas 2
• Inheritance:
– An implicit compiler convention
• A more specialised version of an object
inherits from its general "super" object
– methods are inherited
– contractual obligations are inherited
– (most) internal data is inherited
Inheritance: Diagram convention
Making a Canine entity bark
public void printBark(Canine c) {
System.out.println(c.getBark());
}
N.B. This method doesn't "care"
which specific kind of canine c is.
Early phase of the project
• Basic steps:
– Learn basics of writing Java in NETBEANS
– Get a simple example of Java code working
– Starting looking over LiCAS framework with
Paul
– Take simple example analysis method from
MATLAB which Matt has written
– Put example method into the framework
– Start working on reading and writing our data
and results using the framework
Advanced parts of the project
• Once you're an expert
– Use GIACoNDE to put our data into a context
– Document a process for moving functions
from MATLAB into the framework
– Run through a "cradle to grave" analysis on
some raw experimental data
– Document a users guide for the analysis run