Lava (programming language)

Lava (programming language)

Lava is an experimental, visual object-oriented, interpreter-based programming language with an associated programming environment (LavaPE = Lava Programming Environment) that gets along without a text editor but is totally based on structure editors. Only comments, constants, and new identifiers must be entered as text.

"Declarations" are represented in LavaPE as tree structures whose subtrees may be collapsed or expanded. The properties of the declared Lava entities can be edited through pop-up dialogs.

Although "executable code" has a traditional text representation in LavaPE, it can be edited only as complete syntactic units, rather than character by character. If you insert a new syntactic construct, it will typically contain "placeholders" (syntactic variables) that can then be replaced by concrete constructs; the latter may in turn contain syntactic variables, etc. LavaPE provides a tool button for every type of syntactic construct, and a button is enabled only if it is syntactically correct to insert the associated construct at the selected place.

Further characteristic properties of Lava and LavaPE include the following:

* It provides strict syntactic separation of interface (= public part) and implementation (= private part) of a Lava class.
* It distinguishes variable "state objects" from constant "value objects"; the latter cannot be modified any longer after creation/initialization.
* It supports "virtual types," type parameters of classes and packages (= families of related classes). As a consequence, undermining of strong type checks by "type casts" is no longer required.
* It uses recursion and logical quantifiers instead of traditional loop constructs.
* It uses single assignment; i.e., a value can be assigned to a variable only once within the same branch of a function.
* It supports refactoring extensively via the LavaPE structure editors.
* It distinguishes between "constituents" (= sub-objects) and "object acquaintances" (= pointers to independent objects). Copying and deletion of complex objects is largely facilitated in this way.
* Since release 0.9.0, LavaPE completely prevents inadvertent access to uninitialized variables and null objects already at programming time by complete static initialization checks.

Lava is open source software using the GPL license. It currently runs on Microsoft Windows and Linux platforms; enhancements of the LavaPE functionality and further ports are planned.

External links

* [http://lavape.sourceforge.net/ Lava, LavaPE] home page
* [http://www.sigs-datacom.de/sd/publications/pub_article_show.htm?&AID=442&TABLE=sd_article Article in OBJEKTspektrum] (German)


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат

Look at other dictionaries:

  • Visual programming language — A Visual programming language (VPL) is any programming language that lets users specify programs by manipulating program elements graphically rather than by specifying them textually. A VPL allows programming with visual expressions, spatial… …   Wikipedia

  • Multi-paradigm programming language — A multi paradigm programming language is a programming language that supports more than one programming paradigm. As Leda designer Tim Budd holds it: The idea of a multiparadigm language is to provide a framework in which programmers can work in… …   Wikipedia

  • Object-oriented programming language — An object oriented programming language (also called an OO language ) is one that allows or encourages, to some degree, object oriented programming techniques such as encapsulation, inheritance, modularity, and polymorphism. Simula (1967) is… …   Wikipedia

  • Lava (disambiguation) — Lava may refer to: *Lava, hot molten rock *Lava (town), a town in West Bengal, India *Lava (Ramayana), one of the sons of Rama and Sita *Lava or Лава, the Russian name of Łyna river which flows through Poland and Russia *Lava (soap) *Laser… …   Wikipedia

  • Delegation (programming) — For the authorization related term, see delegation in IT. In object oriented programming, there are two related notions of delegation. Most commonly, it refers to a programming language feature making use of the method lookup rules for… …   Wikipedia

  • Lava — flow redirects here. For the programming anti pattern, see Lava flow (programming). For other uses, see Lava (disambiguation) …   Wikipedia

  • Toy language — For the toy language named TOY, see TOY (computer simulation). A toy language is a term for a computer programming language that it not considered to fulfill the robustness or completeness requirement of a computer programming language. As such… …   Wikipedia

  • List of programming languages by category — Programming language lists Alphabetical Categorical Chronological Generational This is a list of programming languages grouped by category. Some languages are listed in multiple categories. Contents …   Wikipedia

  • List of programming languages — Programming language lists Alphabetical Categorical Chronological Generational The aim of this list of programming languages is to include all notable programming languages in existence, both those in current use and historical ones, in… …   Wikipedia

  • Hardware description language — In electronics, a hardware description language or HDL is any language from a class of computer languages and/or programming languages for formal description of electronic circuits. It can describe the circuit s operation, its design and… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”