Historical overview
Pluk language was developed in the collaboration of Laboratory of Medical Imaging of the Nuclear Physics Institute and Institute of Physical and Chemical Biology of Moscow State University in the 1994-1995. The original goal of project was creation of platform for analysis experimental data in the biophysical research. Experience of authors in analysis of experimental data and algorithm prototyping was formulated in the following desiderata.
Desiderata:
- Language has to be fast interpreter which allows convenient manipulation of code and data from the integrated development environment (IDE). The IDE has to include integrated debugger
- Language has to support object-oriented and procedural programing styles
- The stop-on-error condition has to preserve the current data.
- The structure of data (class specification) can be changed (e.g. new data fields could be added/removed to/from the class specification) runtime. The existed at the moment of changes variables must be modified in accordance with new specification. The content of variables, which is compatible with new specification, must be preserved.
- The code can be changed any time and calculation must continue with new code
- Object-oriented architecture has to support multiple inheritances. The structure of inheritances could be modified runtime.
- Language has to support dynamic typing (typeless variables) as well as overloaded methods discriminated by parameter types.
- Simple and transparent interface to the C/C++ libraries
- Easy way to move prototype algorithms to production: Simple interface to create classes where methods are partially implemented on Pluk and partially implemented on C/C++. Support a simple way to move Pluk methods on C/C++ level
- Basic mathematical library has to include state-of-art deconvolution of experimental curves on sum of exponents, sum of Gaussians etc.
Later this list was expanded by:
- Seamless call of remote procedure and converting local objects into the proxy for remote one, in order to support distributed calculation. The conversion to the remote objects and back must be supported runtime to simplify debugging of the program.
- Automatic generation of second order languages to generate as declarative specification as simplified scripts on base of Backus-Naur-specifications.
- Automatically generate mapping of object-oriented data scheme into relational database with generation appropriate declarative specification
- Automatically generate code to decompose object-oriented OSQL queries into multiple standard SQL queries as well as a code for assembly-disassembly Pluk object into relational database
- Automatic synchronization of objects in the program memory with relational database presentation.
On basis of Pluk platform were developed:
- Medical image analysis stations (Ultrasound3D, Multivox2D/Multivod3D), PACS servers and medical automated information systems (AIS) (1994-2004). This packages were installed in more than 60 hospitals ( http://www.multivox.ru, http://techheim.com/kor/main/index.html )
- Mathematical libraries and utilities for biophysical data analysis (1994-2015)
- Fluorescent microscopy image analysis software MotionTracking (2001-2015) / Kalaimoscope (2007-2011)
- FitModel software for fitting kinetic model (based on system of non-linear ODEs) to the experimental data (1998-2015)
- FitModelPDE_2 software for fitting kinetic model (based on system of non-linear PDEs) to the experimental data (2012-2014)