27.09.2014 Views

PDF (double-sided) - Physics Department, UCSB - University of ...

PDF (double-sided) - Physics Department, UCSB - University of ...

PDF (double-sided) - Physics Department, UCSB - University of ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

dent modules, but it also provides some valuable clues for attacking the other<br />

requirements.<br />

Most modern programming languages already have the ability to modularize<br />

source-code, but many <strong>of</strong> them lack important features to make the provided<br />

facilities sufficient in a physicist driven project. The biggest problem is that most<br />

languages do not have a way to manage and index the available modules. In most<br />

cases the modules are kept somewhere in the file system and are accessed based<br />

on their location or filename.<br />

In a physics lab, this usually leads to one code<br />

repository per group member. Everyone works in their own directories on their<br />

own code using their own conventions. If code is to be shared, usually a copy<br />

is made from one user to another, effectively branching the development <strong>of</strong> that<br />

module as both users will now make edits to their copies <strong>of</strong> the code. Duplication<br />

<strong>of</strong> effort is extremely common due to the difficulties involved in reusing code. This<br />

is further aggravated by the general lack <strong>of</strong> documentation.<br />

To alleviate these problems, LabRAD takes modularization from the sourcecode<br />

level to the “executable” level. Every module in LabRAD is developed as<br />

a completely independent program (or script) and the interaction with external<br />

functionality happens at runtime. The different modules communicate via a<br />

well defined protocol through a central dispatching agent, the LabRAD Manager.<br />

When connecting, each module has to identify itself as either a Server Module<br />

129

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!