Hyper-Programming


Another promising application of persistence technology is visual programming. Current visual development tools, such as Visual Basic or Delphi, only provide a form of limited persistence. For example, Delphi allows a programmer to create long-term objects at design-time. As soon as the programmer closes the project, the Delphi environment saves these design-time objects into some containers and so keeps these objects long-lived. When a Delphi application runs, the Delphi library will automatically fetch all design-time objects and rearrange them in memory. In this way, the Delphi library makes sure the run-time view equal to the design-time view at start-time. At run-time, these objects may change, and the run-time view may become different from the design-time view. However, these changes will be discarded when the application ends. At this point, the design-time objects cannot be regarded as persistent objects. In other words, current visual development tools fail to manipulate real persistent objects.

 

If a visual development tool can really manipulate persistent objects, the boundary between design-time and run-time will be eliminated. In a program developed by this kind of tool, all state changes, either at design-time or at run-time, are preserved. In contrast, state changes of a traditional program only occur at design-time. At run-time, state changes in the memory image are all discarded when the program ends. This new kind of program is known as a hyper-program [], which will challenge "our traditional notions of what constitutes a computer program"[]. Different from a traditional program, a collection of short-term data, a hyper-program is a collection of persistent objects. As persistent objects are usually stored in storage devices with very large capacity, a hyper-program requires a very large address space. This address space can be a flat space. Or, a non-flat address space sounds better since storage devices are usually organized in a non-flat address space like a Unix device namespace. A non-flat persistent space, similar to the hierarchical file system, can offer better scalability and distribution than a flat address space can.

 

With a non-flat persistent space, a hyper-program can be a website composed of many interlinked objects with different lifetimes and locations. Composing a hyper-program actually becomes a work of composing a website, vice versa. The procedure of composing a hyper-program can be named "Hyper-programming"[]. Hyper-programming [] allows the representation of source programs to include hyper-links to both data and code, therefore programming and web designing will converge into a single, universal view. In this universal view, building a large-scale, complex application like a Grid system can be an easy and pleasant job.

 

Based on Hyper-programming, word processing technologies will seamlessly combine with programming technologies. With this combination, programming becomes a work of page making, and vice versa. The document produced by this combination will look smarter, livelier, more interactive, and more versatile than the document produced by current technologies. Think what will happen if a high school student easily uses a word processor to write (not program) a video game like Age of Mythology, or a physical teacher uses a word processor to write an interactive page for demonstrating the theory of Relativity in his/her lesson. In future, a book will be composed of many interactive pages and allow readers to add their ideas or comments by using a word processor to edit these pages.