archives

Lowering the barriers to programming

(via the LtU forum)

Lowering the barriers to programming: A taxonomy of programming environments and languages for novice programmers. Caitlin Kelleher, Randy Pausch. ACM Computing Surveys. Vol. 37. No. 2. Jun 2005.

Since the early 1960's, researchers have built a number of programming languages and environments with the intention of making programming accessible to a larger number of people. This article presents a taxonomy of languages and environments designed to make programming more accessible to novice programmers of all ages. The systems are organized by their primary goal, either to teach programming or to use programming to empower their users, and then, by each system's authors' approach, to making learning to program easier for novice programmers. The article explains all categories in the taxonomy, provides a brief description of the systems in each category, and suggests some avenues for future work in novice programming environments and languages.

You might also want to check out this older LtU item.

Pre-LINQ: rich object management in your PL

The definition and long-term management of data in complex systems requires extensive support, including high-level type and behavior modeling, persistence, query-based and navigational access, consistency management, and concurrency control. Traditionally, some of these capabilities have been provided by programming languages (e.g., semantically rich type and behavior models and navigational access), while others have been provided by database management systems (e.g., persistence, queries, and concurrency control). No language or database has provided the full set of required capabilities, however.

We have developed a different approach to addressing the object management needs of complex applications. This approach eliminates the dichotomy between "programming language" and "database"' objects, thus allowing the full set of language and database capabilities to be applied equally to all objects.

I have a smattering of understaning of LINQ; this paper appears to me to describe further functionality than what would be in LINQ at least at first. Apparently implemented as Pleiades for ADA, although that doesn't appear to be available any more.

Would LISP/FP help here?

Hello..

I am working on tools aimed at chips design (I'm hardware designer). I have written a very usefull front-end that allows me to write things like: 'a wire b wire add r wire assign;'
This in actually an adder. To be clearer, 'wire' has 1 argument while 'assign' and 'add' have 2. (I am using a HP-like notation as the parsing is easy using stacks).

My tool creates a abstract tree that is being specialized depending on the domain: functional simulation, register-level simulation, simulation+timing, documentation,...

For instance, if I want to do timed simulation, the tool(C++) will use the abstract tree to create a new tree with nodes taken from classes implementing timed simulation.

It works fine, but I find it hard to add new features (I won't give any details here as this would be too much details). I was wondering whether FP would be of any help to create and/or specialize the abstract tree to a specific application? Any idea, pointers to example implementing something like this would be appreciated.

I am asking this because I've come to believe I would be more helped by a language like LISP than by C++..

Thanks,
Laurent