EMMAWiki/TermsAndConcepts/ForDevelopers/ProgrammingLanguages
TermsAndConcepts: Programming Languages
EMMA is mainly written in object-oriented Perl. Perl is an interpreted language which is commonly used for building web-applications. From our point of view the major strengths of perl are string processing, database accessibility and web-applications, but it lacks structured data-types and number crunching capabilities. EMMA relies on numerous third party perl modules to complement this.
The analysis functions are implemented using the statistical environment R. R has excellent support for many statistical methods and the Bioconductor project provides loads of functionality for microarray data analysis within R.
To provide interactive functionality with a web-browser we unfortunately have to use JavaScript. The JavaScript implementations of many browsers differ and this is a real mess. JavaScript is the main cause why EMMA does not work with the AnyBrowser.
By use of fancy Java applets we try to raise the level of interactions to its limit. We also use some Java for doing CodeGeneration.
Another interesting language is XSLT which is in fact a fully functional programming language for transforming XML documents. It is used for CodeGeneration of the O2DBI backend.
Other languages
These are non-programming languages which are used in EMMA
- HTML - guess why (BTW: we are actually using XHTML which is the XML version of HTML)
- XML - MAGE-ML is an example. Also O2DBI uses XML documents for defining the class structure
- CSS 2.0 - For creating our stylish web-interface
- DTD - to define and validate XML-documents
- SQL - The database scheme which is created by O2DBI is defined in SQL. Also some highly optimized queries are written in raw SQL for speed.