Dear Forum Members, I came across an interesting classification of Programming Languages [1] by Prof Peter Van Roy. Since I did not see a mention of APL and its derivatives, I sent a short mail to him.
In return, he asked him some specific questions [2] with regard to the classification he has come up with: Regarding APL or J, to see where they are placed on the diagram, it depends on how they support fundamental concepts like closures, encapsulation, concurrency, laziness, and state. For example: How does J support concurrency (message passing or shared state)? What kind of encapsulation does J support (with names, giving ADTs, or with closures, giving objects)? Does J support data-driven forms of control (such as monotonic dataflow, nonmonotonic dataflow, by-need synchronization, or synchronization on partial termination)? I am curious to know how the questions posed above are answered. And what position would that lead to for the APL family of languages. Regards, Yuva [1] http://www.info.ucl.ac.be/~pvr/paradigms.html [2] The forwarded message below is the transcript of the conversation. ---------- Forwarded message ---------- From: Peter Van Roy <[email protected]> Date: Wed, Mar 24, 2010 at 3:18 AM Subject: Re: APL and Programming Paradigms To: Yuvaraj Athur Raghuvir <[email protected]> Cc: Peter Van Roy <[email protected]> Yuvaraj Athur Raghuvir wrote: > Hello Prof Peter Van Roy, > > I recently came across your article on the programming paradigms. I am yet > to go through it in detail. > > As I have been looking into APL derivatives like J (www.jsoftware.com < > http://www.jsoftware.com>) for sometime now, I am curious to know how you > would place APL and its derivatives in the chart you have created. > > Thanks, > Yuva > > Dear Yuva, The chart focuses on the fundamental expressiveness of the paradigms. It is the frame on which the domain-specific operations are placed. If the language is a skyscraper, then the chart explains the skeleton of the skyscraper (wood, metal, stone, etc.). You can use the chart to guide language design. Regarding APL or J, to see where they are placed on the diagram, it depends on how they support fundamental concepts like closures, encapsulation, concurrency, laziness, and state. For example: How does J support concurrency (message passing or shared state)? What kind of encapsulation does J support (with names, giving ADTs, or with closures, giving objects)? Does J support data-driven forms of control (such as monotonic dataflow, nonmonotonic dataflow, by-need synchronization, or synchronization on partial termination)? Sincerely, Peter Van Roy ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
