Liberty BASIC

Liberty BASIC
Paradigm Event-driven, Procedural
Designed by Carl Gundel
Developer Shoptalk Systems
First appeared 1992 (1992)
Stable release
4.5.0 / August 11, 2015 (2015-08-11)
Typing discipline Dynamic, weak
OS Microsoft Windows; Linux in unreleased Liberty Basic 5
License proprietary
Filename extensions .bas, .fr3
Website libertybasic.com
Major implementations
Run BASIC, GLBCC
Influenced by
QuickBASIC, Smalltalk/V
Influenced
Just BASIC, Leopard
The Liberty Basic v4.03 IDE system

Liberty BASIC (LB) is a commercial computer programming language and integrated development environment (IDE). It has an interpreter, developed in Smalltalk, which recognizes its own dialect of the BASIC programming language. It runs on 16- and 32-bit Windows and OS/2.

Background

Liberty BASIC was written by Carl Gundel and published in its first release by his company, Shoptalk Systems, in 1992. It has progressed steadily since then. The last published update to the software was in 2015. The current version is v4.5.0.

Though Liberty BASIC has its share of limitations in its design for advanced programming, it provides an introductory integrated development environment, IDE, for moderate to advanced users of Windows and OS/2. DLLs are available. In its current version, it runs only on Microsoft Windows, but a future version is planned to run on Mac OS X and Linux systems as well.

Liberty Basic is not a true compiler. Liberty Basic translates the code written in the IDE to an encrypted (not 'tokenized') file with the extension "tkn". This file is then interpreted by an executable file that carries the same file name, although this may change with the release of version 5.

Features

Liberty Basic v4.03 running on Linux with Wine

Distinguishing features

Liberty BASIC allows for programming in a style similar to DOS BASICs that run in console mode, using a default "main window" that displays formatted text and accepts user input. It also supports GUI-based event-driven programming using several types of windows that may contain the standard controls such as buttons, menus, textboxes, etc.

A central idea in creating Liberty BASIC was to model the handling of windows after the syntax for file handling. For example, (from the Liberty BASIC Help File):

"The OPEN command opens communication with a device, which can be a disk file, a window, a dynamic link library or a serial communications port."

OPEN device FOR purpose AS #handle {LEN = n}

Once a “device” is open, data and also commands to control that device can be “printed” to it. For each type of device there is a set of commands which can be sent to it in this way. In the more recent versions of LB the word "print" may be dropped from the "print" statement, making the syntax even simpler.

Simplicity has been at the heart of Liberty BASIC from the beginning. This makes it easier to learn but at some cost, perhaps, in limiting functionality. Only two data types are supported in LB4.03: numeric and string. No type declarations are required: any variable with a $ sign at the end of its name is a string variable; otherwise it is numeric. (The plan for LB5 is to support other types and user defined types as well as these.) For the purpose of making calls to API or 3rd party DLLs there is a STRUCT and the additional types necessary for the DLL. The only other data structure currently supported is the ARRAY. Arrays of one or two dimensions are supported. LB5 may support arrays of user-defined types.

Notable programs written in Liberty BASIC

Example code

Here are some examples of the language:

"Hello world" program:

print "hello world"
end

Program to display a pop-up message box with the words "Hello, World!" on it:

nomainwin
notice "Hello world!"
end
nomainwin
notice "Example program" + CHR$(13) + "Hello world!"
end

Program to display an input box:

nomainwin
prompt "Enter your name:";response$
notice "Response:"+ CHR$(13) +response$
end

Running another application using Liberty BASIC:

nomainwin
run "notepad.exe"
end

Printing multiplication table of 5 on form:

[multi]
  for i = 1 to 10
     res = 5 * i
     print res
  next i
end

Alternative implementations

The GNU/Liberty Basic Compiler Collection (GLBCC), by Anthony Liguori, is a set of tools to compile Liberty Basic programs, runs on Windows and Linux systems, but the project has not been updated since 2001.

In 2011 an alternative Windows implementation of Liberty BASIC, LB Booster (LBB), became available. Although substantially compatible with the Liberty BASIC 4 language syntax, LBB was developed entirely independently by Richard Russell and is written in BBC BASIC.

LBB offers (typically) increased execution speed, smaller self-contained executables and some additional capabilities. However LBB is not 100% compatible with LB4 and whilst many programs will run without modification some may need to be adapted, or even be unsuitable for running under LBB.

See also

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.