- 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 privateprogrammer Alessandro Ghignola beginning in2001 . (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 thesource 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
fractal s,mathematics (such as an implementation ofFast Fourier Transform ), andray 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
LinkFire demo Completed [http://home.versatel.nl/kleinhaneveld/programs/fire.htm Link] Fractal s (Mandelbrot set)Completed [http://home.versatel.nl/kleinhaneveld/programs/mb_gui.htm Link] LinoLife, an implementation of Conway's Life Completed Available with Lino 1.2 package LinoPaint, a clone of Microsoft Paint Alpha [http://www.anywherebb.com/postline/posts.php?t=2454 Link] Noctis V, the sequel to the freeware gameNoctis IV (written inC++ )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 demo Alpha [http://www.anywherebb.com/postline/posts.php?t=31 Link] Text-based gamesCompleted [http://www.anywherebb.com/postline/result.php?m=8547 Link] Text Editor Completed [http://home.versatel.nl/kleinhaneveld/programs/textedit.htm Link] Yahtzee Completed [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
upload ed 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 language s usually have no direct equivalent of theprint
statement found in manyhigh-level language s. Thus, while aHello world example can be done in Lino, it is too long to quote here. ref|HelloWorldRaising 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
invariable A
and the value10
in variableB
. The program pushes the variableB
onto the stack and sets the variableC
equal to1
. Then it multipliesC
by7
for10
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 ofA
,B
, andC
(which areCPU register s) 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 register s, which mosthigh-level language s don't allow the programmer to access. Also, it comes with its ownGUI , called theiGUI , 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 forLinux (see below for further details).Free Lino
compiler s are available for these platforms:* x86 Windows (
32-bit versions) ref|32bitWin
* x86Linux .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 anytext editor , such asNotepad orConTEXT . 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 bitmap s, 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 aprogrammer ."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 studentPeterpaul 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 register s, which mosthigh-level language s don't allow the programmer to access.
# But there "is" an example of aHello World program in the Lino documentation (example #12).
# This example program was written byAlessandro 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 fromWindows NT 3.5 up to and includingWindows Vista .
Wikimedia Foundation. 2010.