Friday, December 27, 2013

Self Programmable Applications/Systems

Taking clues from teaching programming for kids (Scratch, App Inventor, Alice, Blockly) and domain specific languages (DSLs), I started thinking about what is a Self Programmable Application/System. In commercial world or in an enterprise, a Self Programmable Application is not a general purpose application but something designed for a specific business domain and is meant for power users who want to program it themselves without developer's involvement. 

In my view, following are some of the characteristics:
  • You program to be programmed by user
  • Very domain specific to provide common blocks with well defined connectors
  • Visual composition of program by user
  • Being able to configure blocks using visual tools
  • We are talking about high level composition of function blocks not low level programming
  • Using DSLs (common high level programming language like Python) or rules for customization
This concept is not new since we can leverage work done from the following areas 

  • Visual Programming Language
  • Programming With Blocks
  • Domain Specific Language
  • Generative Programming
  • Meta Programming
  • Function Program Blocks in PLCs (Programmable Logic Controller)
  • Workflow/Business Process Model

It should be noted that it takes more time and money to build Self Programmable Applications and they will be cost effective only when we have common set of blocks/components that need to configured in innumerable combinations with minimal customization.

In finance, I can think of some areas where Self Programmable Applications will be very useful:

  • Data Transformation or ETL (Market/Reference Data from different vendors, systems)
  • Pricing

1 comment: