Linoleum

From Wikibooks, open books for an open world
Jump to: navigation, search

L.In.O.L.E.U.M. (also called Linoleum or Lino) is a programming language developed by Alessandro Ghignola. It is an assembler, easier than native assembly, and twice as fast as C/C++. Uniquely it is designed to be recompilable across CPUs.

Compilers are free. Versions exist for Linux and Windows, although the Linux port is currently incomplete (most features are working). Currently, compilable files use the extension ".txt". After installing, in Windows, right-clicking on a txt file gives the option to read into notepad (as usual) or compile into a Linoleum executable file ".exe".

Code is cleaner and simpler than C, with comments appearing in parentheses (like so), which seems rather obvious and then someone does it.

Installation[edit]

  1. Download the latest Lino package from the Lino website. (Or here: Lino package Lino compiler v1.14 Alpha)
  2. Unzip the file into the "C:\LINOLEUM" folder of your computer
  3. Open the "readme.htm" file and follow the installation instructions placed in the "Terms of use" section.

Sample Code[edit]

Code from MyLinoClock4.0:

     This is a part of the program that gets the position of the mouse pointer, then draws a shape in a companion library.
"mousepointer"
        [Function for the arrow routine] = ERASE IT;
        [Shape data] = Arrow Background;
        => Update Arrow Background;

        [Pointer Command] = READ POINTER; isocall;

        [Current arrow X] = [Pointer X Coordinate];
        [Current arrow Y] = [Pointer Y Coordinate];

        [Function for the arrow routine] = STORE IT;
        => Update Arrow Background;

        [Function for the arrow routine] = ERASE IT;
        => Check Arrow Format;
        => Update Arrow Background;
        end;

Tutorial[edit]

A tutorial to introduce Linoleum to people new to programming has been written by the user known on the anynowhere.com community as Ponche. It is available there, along with French and Italian translations and an editable version, in the "l.in.oleum" section under "Advice For Newbies".

Ghignola has also said the following of learning Lino:

"About learning the programming language (traditional way, if you don't like this one try with the Lino tutorial):

  1. Rest in bed for a few days. When you wake up, make yourself a BIG coffee
  2. Read the Compiling and Programming sections of the manual. Take a global point of view of what is all this about
  3. Now comes the harder part... read all about the periods. This is, the libraries, stockfile, directors, constants, variables, workspace and programme sections.
  4. If you achieve to arrive to this step, try to understand the very first examples placed at the "examples" folder of the package. Experiment with them and check the modifications at runtime
  5. After this you can read other sections of the manual, like Process, and Subroutines. Useful stuff.
  6. During the whole process if you find something strange or a new instruction you didn't met before, check the Glossary, Instructions, Tags and Isokernel sections of the manual (it's a technical reference, but if you want to be a programmer, you must mess up with this later or before...)
  7. Of course, if you have any question, doesn't matter if it is stupid, just post it in the Linoleum forum and I or someone else will be glad to answering you."

Projects[edit]

Probably, the largest project written in Linoleum is the ongoing (started October 2001, not finished as of June 2006) development of the space exploration game Noctis Noctis V by the author of Lino, Alessandro Ghignola. For information about NV, visit the NV page on the anynowhere forum. The largest single collection of Linoleum programs is at Peterpaul kl h's Lino website.

A PNG image exporter has also been written by Peterpaul kl h. A ray tracer has been developed in Lino by the user Ponche - note that updated versions are posted on the above thread.

Future[edit]

Sample program compiled in the upcoming Linoleum version 1.14 (Program created by Jaxe'd, compiled by Alex)

Most assemblers are used to develop programming skills. To generate code that is different can be seen in potential from the look and feel of Lino programs. Whether it moves beyond a small band of enthusiasts depends on creating suitable material that interests a wider audience.

If you have ideas please add:

  1. Where Lino is
  2. Where it is directed
  3. How it will get there

For further reading[edit]

Lino-related sites: