Linoleum (programming language)

Linoleum (programming language)

Infobox programming language
name = Linoleum

paradigm = procedural
year = 1996Verify source|date=July 2007
designer = Alessandro Ghignola
developer = Alessandro Ghignola
latest_release_version = 1.2
latest_release_date = 2007Clarifyme|date=March 2008
typing = weak, dynamic
implementations = Windows, Linux (alpha)
dialects = none
operating_system = Windows, Linux (alpha)
license = WTOF (Lino 1.13), LGPL (Lino 1.2)
website = [http://www.anywherebb.com Home Sweet Pixel]

The L.in.oleum (often called "Linoleum" or simply "Lino") programming language is an unstructured, untyped, procedural, cross-platform assembler developed by Italian private programmer Alessandro Ghignola beginning in 2001. (The unusual acronym stands for Low-level INterfaced OverLanguage for Extremely Universal Machine-coding.) L.in.oleum (hereafter referred to as "Lino") is easier than native assembler. Uniquely for an assembler, it is designed to be recompilable across different CPUs without requiring changes to the source code of a program written in Lino. (For more details, read the section on portability below.)


= Applications =

Lino is intended for writing general-purpose programs, especially when high portability, execution speed, and module compactness are critical to the application's success. These traits are especially important in fields of study that demand performance-intensive programs. Examples of such fields (in which Lino is actually being used) include fractals, mathematics (such as an implementation of Fast Fourier Transform), and ray tracing, to name a few.

This increased performance is achieved by Lino's nearly one-to-one ratio between Lino instructions and CPU instructions. That is, most instructions in Lino can be executed in one machine cycle, due to the way the language is set up. This gives a skilled programmer increased control over the computer, allowing for further optimization and tighter loops.

Although Lino is a relatively new language, several useful programs are already being written in it. These programs, most of which are available via the [http://www.anywherebb.com/postline/threads.php?f=4 official Lino discussion forums] or from [http://www.kleinhaneveld.tk/ Peterpaul Klein Haneveld's site] , are in various stages of development. The list below is by no means comprehensive.



A selection of Lino programs

Name

Status

Link
Fire demoCompleted [http://home.versatel.nl/kleinhaneveld/programs/fire.htm Link]
Fractals (Mandelbrot set)Completed [http://home.versatel.nl/kleinhaneveld/programs/mb_gui.htm Link]
LinoLife, an implementation of Conway's LifeCompletedAvailable with Lino 1.2 package
LinoPaint, a clone of Microsoft PaintAlpha [http://www.anywherebb.com/postline/posts.php?t=2454 Link]
Noctis V, the sequel to the freeware game Noctis IV (written in C++)Beta (Unreleased) [http://www.anywherebb.com/postline/index.php?l=D4JeGEdhacS6Srr6NfweDCUh&r=lYUhcug3l3hh9gr6Rtv1flhhT4s6Spx5 Link]
Ray tracer (static and real-time) demoKaizen [http://www.anywherebb.com/postline/posts.php?t=2449 Link]
Terrain mapping demoAlpha [http://www.anywherebb.com/postline/posts.php?t=31 Link]
Text-based gamesCompleted [http://www.anywherebb.com/postline/result.php?m=8547 Link]
Text EditorCompleted [http://home.versatel.nl/kleinhaneveld/programs/textedit.htm Link]
YahtzeeCompleted [http://home.versatel.nl/kleinhaneveld/programs/yahtzee.htm Link]

Note that many of the above links take you to forum threads where these programs are uploaded and discussed.

In addition to the above programs, there are many more programs written in Lino, as well as dozens of libraries written in Lino. Interest in this unique language is maintained by a small but dedicated community of programmers.

Examples and screen shots

Hello world

Low-level languages usually have no direct equivalent of the print statement found in many high-level languages. Thus, while a Hello world example can be done in Lino, it is too long to quote here. ref|HelloWorld

Raising the power

Rather, Alex introduces Lino by an example of its stack and mathematical abilities. Here is an example of a full Lino program. ref|RaisingThePower

( *** LINOLEUM Example 1: Raising the power! *** ) "directors" program name = { Raise_the_power! } unit = 32; "programme" A = 7; B = 10; "raise" --> B; C = 1; ? B = 0 -> finished; "raise again" C * A; B ^ raise again; "finished" <-- B; show registers;

The preceding program stores the value 7 in variable A and the value 10 in variable B. The program pushes the variable B onto the stack and sets the variable C equal to 1. Then it multiplies C by 7 for 10 loops. In other words:

C = 1 * 7 * 7 * 7 * ...

Finally the program pops B off the stack and (in its last line) shows the values of A, B, and C (which are CPU registers) on the screen.

The above example is a nontraditional introduction to a programming language. But the language itself is nontraditional. For example, it allows access to the CPU registers, which most high-level languages don't allow the programmer to access. Also, it comes with its own GUI, called the iGUI, although the programmer is not forced to use it.


= Portability =

Each Lino program comes bundled with a Run Time Module included in the .exe file, so there is no installation process needed. In other words, each Lino program is essentially self-contained, though it may need external files (i.e. data files) in order to perform correctly.

A Lino program does, however, need to be recompiled for each platform it's meant to run on—but the source code doesn't need to be changed. Dutch university student Peterpaul Klein Haneveld is currently working to create a fully functional Lino compiler for Linux (see below for further details).

Free Lino compilers are available for these platforms:

* x86 Windows (32-bit versions) ref|32bitWin
* x86 Linux.

A port to a new platform requires ...

The Lino compiler is written in Lino as of version 1.13. And as of version 1.2 (see below), the Lino compiler is itself a Lino library, which means it no longer needs to be ported. (For more details, read the section on portability above.) Lino libraries are stored as plain text files, just like programs.

Source code is stored in .txt files. Such files can easily be read and edited by any text editor, such as Notepad or ConTEXT. Currently, you can compile a file by right-clicking on it and choosing the option "Compile as LINOLEUM Source" or by dragging the file over the compiler's icon.

Latest versions

The latest stable versions of the Lino compiler (Windows) are 1.13.11b and 1.2 (formerly version 1.14).

Lino 1.2 (available from the main [http://www.anywherebb.com/ website] ) features an improved visual compiler and several minor improvements to the language, enough to warrant a jump from 1.14 to 1.2. Many of the improvements are bug fixes and improvements to existing features. There are also new features, such as the ability to print monochrome bitmaps, and to insert "jump alignment directives", which allow programs (if optimized by skilled programmers) to run more efficiently.

The Lino 1.2 compiler can still compile as before, but it is now a visual compiler. This means that, unlike before, it can compile programs and view output from one place. The "read-only" (to prevent forking) code for the compiler (written in Lino as of this version) is available with the downloaded package (see the External links section below).

The "Linux Linoleum Compiler" is still in alpha. It is currently being developed by Dutch university student Peterpaul Klein Haneveld. Development is now inactive but may resume with the release of Lino 1.2. Additionally, Peterpaul has released the source code for the Linux run-time module, available on the main website, for those interested in continuing the project.

Advocacy poem

From an old version of the Lino site, as retrieved by [http://web.archive.org/web/20011004021915/members.designheaven.com/~44/lino/index.html www.archive.org] on 4 October 2001:


"Stop hiding into Basic:"
"you know there's more."
"Stop lying to yourself,"
"one day your system"
"will be obsolete."
"Stop playing with toys,"
"be a programmer."

External links

* [http://www.anywherebb.com/ Home Sweet Pixel] This is Alessandro Ghignola's personal software house. Home Sweet Pixel, often abbreviated as HSP, is the official website of Lino, Noctis, and other programs, all of which are free.
** [http://www.anywherebb.com/postline/index.php?l=D4JeGEdhacS6Srr6QLQgZpWesA4&r=lYUhcug3l3hh9gr6Rtv1flhhT4s6lfk5 Linoleum] This is a direct link to the Linoleum section of the HSP site.
* [http://www.kleinhaneveld.tk/ Peterpaul's Place] This is the website of Dutch university student Peterpaul Klein Haneveld, an avid Lino programmer who is developing the Linux compiler.
* Herbert Glarner's [http://herbert.gandraxa.com/herbert/lsc.asp Linoleum libraries] (data structures and algorithms)
* [http://www.uolang.org/sourcecode/linoleum/linoleum.html Unified Programming Languages Archive: LINOLEUM] This is a repository for archived Lino code.

Footnotes

# This last claim is supported by example in the "programme" section of the Lino documentation. It involves the use of CPU registers, which most high-level languages don't allow the programmer to access.
# But there "is" an example of a Hello World program in the Lino documentation (example #12).
# This example program was written by Alessandro Ghignola and is copyrighted by him. It is presented here unchanged except for the deletion of comments for the sake of brevity.
# 32-bit versions of Windows range from Windows NT 3.5 up to and including Windows Vista.


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Look at other dictionaries:

  • Linoleum (disambiguation) — Linoleum can mean several things, including:*Linoleum (programming language), cross platform assembler. *Linoleum or similar materials that are used as floor covering. *Artists linoleum that is used as a material for linocut prints. *Linoleum… …   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

  • Procedural programming — can sometimes be used as a synonym for imperative programming (specifying the steps the program must take to reach the desired state), but can also refer (as in this article) to a programming paradigm based upon the concept of the procedure call …   Wikipedia

  • Noctis — Panorama screenshot from the game. Developer(s) Alessandro Ghignola …   Wikipedia

  • Liste des langages de programmation — Le but de cette Liste des langages de programmation est d inclure tous les langages de programmation existants, qu ils soient actuellement utilisés ou historiques, par ordre alphabétique. Ne sont pas listés ici les langages informatiques de… …   Wikipédia en Français

  • High-level assembler — High level assemblers are assembly language translators that incorporate features found in modern high level programming languages into an assembler.Some high level assemblers are Borland s TASM, Microsoft s MASM, IBM s HLASM (for z/Architecture… …   Wikipedia

  • interior design — 1. the design and coordination of the decorative elements of the interior of a house, apartment, office, or other structural space, including color schemes, fittings, furnishings, and sometimes architectural features. 2. the art, business, or… …   Universalium

Share the article and excerpts

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