* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Employing the LiCAS analysis framework for MONALISA
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
Interpreter (computing) wikipedia , lookup
Object-oriented programming wikipedia , lookup
One-pass compiler wikipedia , lookup
Java (programming language) wikipedia , lookup
Name mangling wikipedia , lookup
Java performance wikipedia , lookup
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