Archive for the ‘faq’ Category

Does a visualisation system help, if the system has lot of moving parts?

May 21, 2006

All the real world systems have many moving parts. Some examples include web servers, transaction processing systems etc. The typical architecture of such systems would be some processing on the input data by various components which work in a specific fashion.

Program/code visualisation of such systems offer little help because they break the logical continuity of the processing. To visualise such systems we need to use views. Views in NPL UI are special layout of our code which enables easy understanding. Though the special layout helps us, it still is easier to grep the log to trace the execution of a single request through out the system.

This is the condition where we need to use some data tagging. Data tagging is a mechanism in which we mark a particular data as data of interest. Once the data is tagged the visualiser can visualise only the processing related to that peice of data.

The combination of Views and Data tagging can enable better tools for debugging and maintainance of large systems with too many moving parts.

What Pain points does NPL (intend to) address?

May 18, 2006

This is another way of asking "what problems does NPL intend to solve?".

or

"Why NPL?"

NPL intends to address the following problems of software development.

  • Debugging
    • Debugging is a major problem in software projects because all the time you are asking the question why/how did this happen. NPL intends to solve this issue by visualising code with its history intact. Since visulalisation is visualisation of code, the programmer know what peice of code has done something and the history helps him identify the precise steps or states that led him to that specific failure. This is something regular debuggers are very bad at. This history keeping is similar to bi-directional debuggers or reversible interpretters. COP also makes it easy to capture precise high level info needed for visualisation, which is not the case otherwise.
  • Testing
    • We usually test software by writing/setting up test cases. In NPL we can interactively test software by just changing editing the value on a signal. This way we can test most of the software without actually writing any test cases. Moreover, interactive testing helps peers to test your software more easily, because that does not involve writing any new test cases.
  • Software Maintainance
    • One of the major problems of software today is software maintainance. Maintaining a large system is a pain because (i) the system is huge and (ii) the people who have designed the system usually are not the maintainers.
    • Visualisation helps in maintaining software because it provides a higher level interactive view of the source code, which will aid maintaining existing software even for newbies.
  • Manage Complexity
    • Complexity of software is a major problem in software industry. Though writing programs in NPL does not help you reduce the complexity, viewing a visualisation of code will aid in understanding the complex relationships that underly the code.
  • Enable team communication.
    • Communication among software teams is a problem because, we cannot precisely transfer the model in our head to the other persons head. The errors accumulate to create something entirely different from what was originally intended.
    • Visualisation helps communication between software teams because,when code is visualised we can much more precisely inform the other person of what is heppening.
    • This visualisation will not provide solutions in all the scenarios, but if people are smart enough you can always use the visualisation to communicate.
  • Easy to learn
    • Programming languages are difficult to learn because they mostly model a real world concept in the language of the machine, which may hae its own idiosynchrasies. For everything we learn about a language we have an abstract model in our head.
    • But visualisation of code makes learning a language easy because, we can see how a peice of code works in a visualisation. This enhances the understanding of the language while reducing the time it takes to learn a language. If the language is taught in an incremental fashion with good visualisation , an average programmer can start programming in the new language in 2-3 days.

What’s Unique about NPL

May 14, 2006

[NPL Firsts]

  • NPL is the first visualisable programming language.
  • NPL is the first programming language to get the best of both worlds of text and graphics in a single language.
  • NPL also has the simplest design for an interpreter, that actually corresponds to the actual working of an interpreter. Hence, it is a good model to teach students about it.
  • All the pure languages i have seen have homogenous as in “Everything is a(n) X” where X can be an object/list/function. In NPL, everything is either a signal or a connect. There are two components instead of 1, that everything is made up of, which i think is unique to NPL.

There are some more minor things, but lets not add them to this list :D .

Note: Please feel free to prove me wrong on any of these claims. I am only talking from what i have heard and read.

A 2 Minute NPL Sales Pitch

May 9, 2006

This is the 2 minute sales pitch i use to answer questions like "What is NPL?" and "Why use NPL?"

" Reading a Novel is difficult, but watching a movie based on it is easy. Similarly, reading (source) code is difficult, but viewing a visualisation is easy."

What does NPL mean?

May 8, 2006

NPL is an recursive acronym for "NPL Programming Language" (ala GNU or PHP).

Initially NPL was meant to be New Programming Language, but as time passed i felt that it was not that different from existing languages. Moreover the word "New Programming Language" was not sexy and geeky. So i decided to chose a recursive acronym NPL which made it geeky and sexy enough along the lines of APL.