* 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
Survey
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
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
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