Linoleum (programming language)
Encyclopedia
The L.in.oleum is an unstructured, untyped, procedural
Procedural programming
Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call...

 programming language
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....

 and a cross-platform
Cross-platform
In computing, cross-platform, or multi-platform, is an attribute conferred to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms...

 assembler developed by Italian
Italy
Italy , officially the Italian Republic languages]] under the European Charter for Regional or Minority Languages. In each of these, Italy's official name is as follows:;;;;;;;;), is a unitary parliamentary republic in South-Central Europe. To the north it borders France, Switzerland, Austria and...

 programmer
Programmer
A programmer, computer programmer or coder is someone who writes computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software. One who practices or professes a formal approach to...

 Alessandro Ghignola beginning in 2001. The initials stand for Low-level
Low-level programming language
In computer science, a low-level programming language is a programming language that provides little or no abstraction from a computer's instruction set architecture. Generally this refers to either machine code or assembly language...

 INterfaced
Interface (computer science)
In the field of computer science, an interface is a tool and concept that refers to a point of interaction between components, and is applicable at the level of both hardware and software...

 OverLanguage for Extremely Universal Machine-coding
Machine code
Machine code or machine language is a system of impartible instructions executed directly by a computer's central processing unit. Each instruction performs a very specific task, typically either an operation on a unit of data Machine code or machine language is a system of impartible instructions...

. The L.in.oleum programming language (hereafter referred to as Lino) is easier to learn than assembly language
Assembly language
An assembly language is a low-level programming language for computers, microprocessors, microcontrollers, and other programmable devices. It implements a symbolic representation of the machine codes and other constants needed to program a given CPU architecture...

s. The Lino assembler is designed to assemble executable code for different central processing unit
Central processing unit
The central processing unit is the portion of a computer system that carries out the instructions of a computer program, to perform the basic arithmetical, logical, and input/output operations of the system. The CPU plays a role somewhat analogous to the brain in the computer. The term has been in...

s (CPU) without needing changes to the source code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

.

Design

Lino is intended for writing general-purpose programs
General-purpose programming language
In computer software a general-purpose programming language is a programming language designed to be used for writing software in a wide variety of application domains...

, especially when portability
Porting
In computer science, porting is the process of adapting software so that an executable program can be created for a computing environment that is different from the one for which it was originally designed...

, execution speed
Execution (computers)
Execution in computer and software engineering is the process by which a computer or a virtual machine carries out the instructions of a computer program. The instructions in the program trigger sequences of simple actions on the executing machine...

, and module size are critical to the application
Application software
Application software, also known as an application or an "app", is computer software designed to help the user to perform specific tasks. Examples include enterprise software, accounting software, office suites, graphics software and media players. Many application programs deal principally with...

's success. These traits are especially important in fields of study that demand performance-intensive programs
Computer program
A computer program is a sequence of instructions written to perform a specified task with a computer. A computer requires programs to function, typically executing the program's instructions in a central processor. The program has an executable form that the computer can use directly to execute...

. Examples of such fields (in which Lino is actually being used) include fractal
Fractal
A fractal has been defined as "a rough or fragmented geometric shape that can be split into parts, each of which is a reduced-size copy of the whole," a property called self-similarity...

s, mathematics
Mathematics
Mathematics is the study of quantity, space, structure, and change. Mathematicians seek out patterns and formulate new conjectures. Mathematicians resolve the truth or falsity of conjectures by mathematical proofs, which are arguments sufficient to convince other mathematicians of their validity...

 (such as an implementation of fast Fourier transform
Fast Fourier transform
A fast Fourier transform is an efficient algorithm to compute the discrete Fourier transform and its inverse. "The FFT has been called the most important numerical algorithm of our lifetime ." There are many distinct FFT algorithms involving a wide range of mathematics, from simple...

), 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
Instruction cycle
An instruction cycle is the basic operation cycle of a computer. It is the process by which a computer retrieves a program instruction from its memory, determines what actions the instruction requires, and carries out those actions...

, due to the way the language is set up. This gives a skilled programmer increased control over the computer
Computer
A computer is a programmable machine designed to sequentially and automatically carry out a sequence of arithmetic or logical operations. The particular sequence of operations can be changed readily, allowing the computer to solve more than one kind of problem...

, allowing for further optimization
Optimization (computer science)
In computer science, program optimization or software optimization is the process of modifying a software system to make some aspect of it work more efficiently or use fewer resources...

 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 official Lino discussion forums or from 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 demo Completed Link
Fractal
Fractal
A fractal has been defined as "a rough or fragmented geometric shape that can be split into parts, each of which is a reduced-size copy of the whole," a property called self-similarity...

s (Mandelbrot
Benoît Mandelbrot
Benoît B. Mandelbrot was a French American mathematician. Born in Poland, he moved to France with his family when he was a child...

 set
Mandelbrot set
The Mandelbrot set is a particular mathematical set of points, whose boundary generates a distinctive and easily recognisable two-dimensional fractal shape...

)
Completed Link
LinoLife, an implementation of Conway
John Horton Conway
John Horton Conway is a prolific mathematician active in the theory of finite groups, knot theory, number theory, combinatorial game theory and coding theory...

's Life
Conway's Game of Life
The Game of Life, also known simply as Life, is a cellular automaton devised by the British mathematician John Horton Conway in 1970....

Completed Available with Lino 1.2 package
LinoPaint, a clone of Microsoft Paint
Microsoft Paint
Paint is a simple graphics painting program that has been included with all versions of Microsoft Windows. It is often referred to as MS Paint or Microsoft Paint...

Alpha Link
Noctis
Noctis
Noctis is an open source computer space flight simulator featuring first-person visual exploration of an imaginary galaxy...

 V, the sequel to the freeware game Noctis
Noctis
Noctis is an open source computer space flight simulator featuring first-person visual exploration of an imaginary galaxy...

 IV (written in C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

)
Beta (Unreleased) Link
Ray tracer (static and real-time) demo Kaizen
Kaizen
, Japanese for "improvement", or "change for the better" refers to philosophy or practices that focus upon continuous improvement of processes in manufacturing, engineering, game development, and business management. It has been applied in healthcare, psychotherapy, life-coaching, government,...

Link
Terrain mapping demo Alpha Link
Text-based
Text-based
Usually used in reference to a computer application, a text-based application is one whose primary input and output are based on text rather than graphics or sound. This does not mean that text-based applications do not have graphics or sound, just that the graphics or sound are secondary to the...

 games
Completed Link
Text editor
Text editor
A text editor is a type of program used for editing plain text files.Text editors are often provided with operating systems or software development packages, and can be used to change configuration files and programming language source code....

Completed Link
Yahtzee
Yahtzee
Yahtzee is a dice game made by Milton Bradley , which was first marketed by game entrepreneur Edwin S. Lowe in 1956. The game is a development of earlier dice games, such as Yacht and Generala. The object of the game is to score the most points by rolling five dice to make certain combinations...

Completed Link



Note that many of the above links take you to forum
Internet forum
An Internet forum, or message board, is an online discussion site where people can hold conversations in the form of posted messages. They differ from chat rooms in that messages are at least temporarily archived...

 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
Library (computer science)
In computer science, a library is a collection of resources used to develop software. These may include pre-written code and subroutines, classes, values or type specifications....

 written in Lino. Interest in this unique language is maintained by a small but dedicated community of programmers.

Hello world

"Low-level programming language
Low-level programming language
In computer science, a low-level programming language is a programming language that provides little or no abstraction from a computer's instruction set architecture. Generally this refers to either machine code or assembly language...

s usually have no direct equivalent of the print statement found in many high-level programming language
High-level programming language
A high-level programming language is a programming language with strong abstraction from the details of the computer. In comparison to low-level programming languages, it may use natural language elements, be easier to use, or be from the specification of the program, making the process of...

s. Thus, while a Hello world example can be done in Lino, it is too long to quote here."

Raising the power

Rather, Ghignola introduces Lino by an example of its stack
Stack (data structure)
In computer science, a stack is a last in, first out abstract data type and linear data structure. A stack can have any abstract data type as an element, but is characterized by only three fundamental operations: push, pop and stack top. The push operation adds a new item to the top of the stack,...

 and mathematical abilities. Here is an example of a full Lino program.

( *** 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
Variable (programming)
In computer programming, a variable is a symbolic name given to some known or unknown quantity or information, for the purpose of allowing the name to be used independently of the information it represents...

 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 programming language
High-level programming language
A high-level programming language is a programming language with strong abstraction from the details of the computer. In comparison to low-level programming languages, it may use natural language elements, be easier to use, or be from the specification of the program, making the process of...

s don't allow the programmer to access. Also, it comes with its own GUI
Gui
Gui or guee is a generic term to refer to grilled dishes in Korean cuisine. These most commonly have meat or fish as their primary ingredient, but may in some cases also comprise grilled vegetables or other vegetarian ingredients. The term derives from the verb, "gupda" in Korean, which literally...

, 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
Platform (computing)
A computing platform includes some sort of hardware architecture and a software framework , where the combination allows software, particularly application software, to run...

 it's meant to run on—but the source code doesn't need to be changed. Dutch
Netherlands
The Netherlands is a constituent country of the Kingdom of the Netherlands, located mainly in North-West Europe and with several islands in the Caribbean. Mainland Netherlands borders the North Sea to the north and west, Belgium to the south, and Germany to the east, and shares maritime borders...

 university student Peterpaul Klein Haneveld is currently working to create a fully functional Lino compiler for Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

 (see below for further details).

Free Lino compiler
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...

s are available for these platforms:
  • x86 Windows
    Microsoft Windows
    Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

    , 32-bit
    32-bit
    The range of integer values that can be stored in 32 bits is 0 through 4,294,967,295. Hence, a processor with 32-bit memory addresses can directly access 4 GB of byte-addressable memory....

     versions
  • x86 Linux
    Linux
    Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...



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 Portability section above.) Lino libraries are stored as plain text files, just like programs.

Source code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

 is stored in .txt files. Such files can easily be read and edited by any text editor
Text editor
A text editor is a type of program used for editing plain text files.Text editors are often provided with operating systems or software development packages, and can be used to change configuration files and programming language source code....

, such as Notepad. 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). The latest non-stable version is 2.0.

Lino 1.2 (available from the main 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
Software bug
A software bug is the common term used to describe an error, flaw, mistake, failure, or fault in a computer program or system that produces an incorrect or unexpected result, or causes it to behave in unintended ways. Most bugs arise from mistakes and errors made by people in either a program's...

 fixes and improvements to existing features. There are also new features, such as the ability to print monochrome
Monochrome
Monochrome describes paintings, drawings, design, or photographs in one color or shades of one color. A monochromatic object or image has colors in shades of limited colors or hues. Images using only shades of grey are called grayscale or black-and-white...

 bitmap
Bitmap
In computer graphics, a bitmap or pixmap is a type of memory organization or image file format used to store digital images. The term bitmap comes from the computer programming terminology, meaning just a map of bits, a spatially mapped array of bits. Now, along with pixmap, it commonly refers to...

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. As of 2010, it is 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.

The first version of Linoleum 2 is available for download as of January of 2010. It features a new set of libraries, a smaller run-time module and a text display mode, along with a refreshed code syntax. However, this release isn't as stable as the 1.2, and it lacks the module extensions required for additional features, such as network and audio support.

External links

This is Alessandro Ghignola's personal software house. Home Sweet Pixel, often abbreviated as HSP, is the official website of Lino, Noctis
Noctis
Noctis is an open source computer space flight simulator featuring first-person visual exploration of an imaginary galaxy...

, and other programs, all of which are free.

Footnotes

  1. But there is an example of a Hello World program
    Hello world program
    A "Hello world" program is a computer program that outputs "Hello world" on a display device. Because it is typically one of the simplest programs possible in most programming languages, it is by tradition often used to illustrate to beginners the most basic syntax of a programming language, or to...

     in the Lino documentation (example #12).
  2. 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.
  3. This example program was written by Alessandro Ghignola and is copyrighted by him. It is presented here unchanged except for deleting comments for the sake of brevity.
  4. 32-bit versions of Windows range from Windows NT 3.5
    Windows NT 3.5
    Windows NT 3.5 is the second release of the Microsoft Windows NT operating system. It was released on 21 September 1994.One of the primary goals during Windows NT 3.5's development was to increase the speed of the operating system; as a result, the project was given the codename "Daytona" in...

     up to and including Windows 7.
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK