SmallBASIC
{{Short description|BASIC programming language dialect with interpreters released as free software}}
{{About|the GPL programming language|the Microsoft programming language|Microsoft Small Basic}}
{{Infobox programming language
| name = SmallBASIC
| logo = File:Smallbasic-screenshot-3spiros.png
| paradigm =
| designer =
| developer =
| typing =
| implementations =
| dialects =
| influenced =
| license = GPL 3
| website = [https://smallbasic.github.io smallbasic.github.io]
| file_ext = .bas
| year =
| latest_release_version = 12.27 (Windows/Linux/Android){{cite web |url = https://smallbasic.github.io |title = Browse Files for SmallBASIC | date = 26 April 2024 | access-date = 23 May 2024 }}
| latest_release_date = {{Start date and age|2024|4|26}}
| latest_test_version =
| latest_test_date =
| influenced_by =
| programming_language = BASIC
| operating_system =
| wikibooks =
}}
SmallBASIC is a BASIC programming language dialect with interpreters released as free software under the GNU General Public License version 3 for Microsoft Windows, Linux and Android.
Description
The dialect is described by the authors as a second generation BASIC, and has a lot in common with QBasic. SmallBASIC includes trigonometric, matrices and algebra functions, a built in IDE, a string library, system, sound, and graphic commands along with structured programming syntax.
Intended application
The "Small" prefix in the name SmallBASIC reflects the project's original intention of being used with the Palm, a small hand-held device. SmallBASIC was designed for portability, and is written in C with separate modules containing any code that is unique to a particular platform.{{cite web |url=http://www.ascii-world.com/about-smallbasic |archive-url=https://web.archive.org/web/20071112084122/http://www.ascii-world.com/about-smallbasic |url-status=dead |archive-date=12 November 2007 |title=About SmallBASIC |publisher=ASCII-World |date=22 February 1999 |access-date=19 January 2011 }}[http://gnosis.cx/publish/programming/palm_languages.html PalmOS Hosted Programming Languages]: Using the Palm as a Development Environment
SmallBASIC is intended to support the same sorts of applications supported by GW-BASIC and QBasic on the IBM PC, with support for drawing Graphic Primitives to the screen, creating sounds, String Manipulation, and displaying text in various fonts. SmallBASIC also adds functions such as "File Save", "Save As", "Close File", and "Open File" to the Palm, a device with no native filesystem. SmallBASIC is also intended as a tool for mathematics, with built-in functions for Unit conversion, Algebra, Matrix math, Trigonometry, Statistics, and for two and three dimensional Equation Graphing.
History
SmallBASIC was designed to run on minimal hardware. One of the primary platforms supported was Palm OS,[http://freshmeat.net/articles/palmos-software Freshmeat.net]: Editing text on PalmOS using SmallBASIC. where memory, CPU cycles, and screen space were limited. The SmallBASIC graphics engine could use ASCII graphics (similar to ASCII art) and therefore ran many programs on pure text devices. SmallBASIC runs even on Palm OS wristwatches made by Fossil, Inc.
Platforms
SmallBASIC is available for all POSIX-Compliant operating systems (including Linux, BSD, and UNIX),{{cite web|url=http://smallbasic.svn.sourceforge.net/viewvc/smallbasic/trunk/smallbasic/src/unix/ |title=SourceForge.net Repository - Unix |publisher=Smallbasic.svn.sourceforge.net |access-date=2011-01-22}} DOS/DJGPP,{{cite web|url=http://smallbasic.svn.sourceforge.net/viewvc/smallbasic/trunk/smallbasic/src/dos-djgpp/ |title=SourceForge.net Repository - DOS-DJGPP |publisher=Smallbasic.svn.sourceforge.net |access-date=2011-01-22}} Win32,{{cite web|url=http://smallbasic.svn.sourceforge.net/viewvc/smallbasic/trunk/smallbasic/src/win32/ |title=SourceForge.net Repository - WIN32 |publisher=Smallbasic.svn.sourceforge.net |access-date=2011-01-22}} FLTK,{{cite book|url=https://archive.org/details/robotbuilderssou00mcco |url-access=registration |page=[https://archive.org/details/robotbuilderssou00mcco/page/411 411] |quote=SmallBASIC. |title=Robot builder's sourcebook |publisher=McGraw-Hill Professional|author=Gordon McComb| isbn=0-07-140685-9 |year=2002 |access-date=19 January 2011}} VTOS, Franklin eBookMan,{{cite web|url=http://smallbasic.svn.sourceforge.net/viewvc/smallbasic/trunk/smallbasic/src/ebm/ |title=SourceForge.net Repository - EBM |publisher=Smallbasic.svn.sourceforge.net |access-date=2011-01-22}} Cygwin/MingW,{{cite web|url=http://smallbasic.svn.sourceforge.net/viewvc/smallbasic/trunk/smallbasic/src/mingw/ |title=Sigwin/MinG |publisher=Smallbasic.svn.sourceforge.net |access-date=2011-01-22}} Helio/VT-OS,{{cite web|url=http://smallbasic.svn.sourceforge.net/viewvc/smallbasic/trunk/smallbasic/src/helio/ |title=SourceForge.net Repository - Helio |publisher=Smallbasic.svn.sourceforge.net |access-date=2011-01-22}} Android,{{cite web|url=https://play.google.com/store/apps/details?id=net.sourceforge.smallbasic |title=SourceForge.net Repository - Android |publisher=Smallbasic.svn.sourceforge.net |access-date=2011-01-22}} the Nokia N770 Internet Tablet.,{{cite web|url=http://sourceforge.net/projects/smallbasic/files/n770/ |title=SmallBASIC - N770 at |publisher=Sourceforge.net |access-date=2011-01-22}} and on any system that supports SDL, FLTK, SVGALib, Linux framebuffer, or Windows GUI.
Syntax
The syntax of SmallBASIC has a lot in common with QBasic. Line numbers are not required, and statements are terminated by newlines. Multiple statements may be written on a single line by separating each statement with a colon (:)
An example "Hello, World!" program is:
PRINT "Hello, World!"
An example of how SmallBASIC allows to load an image file and display the image:
I = IMAGE("image_name.png") 'Loads a png file
I.SHOW(100,100) 'shows the image on screen at the coordinates 100,100
Loadable modules
External modules can be written in C to extend the functionality provided by SmallBASIC.{{cite web|url=https://github.com/smallbasic/smallbasic.plugins |title=SmallBASIC plugins |website=GitHub |access-date=22 March 2022}} Since version 12.20 modules for Raylib, Nuklear and WebSockets are included in the release.{{cite web|url=https://smallbasic.github.io |title=SmallBASIC Home Page |access-date=22 March 2022}} Additionally a loadable module to access the GPIO connector of the Raspberry Pi exists.{{cite web|url=https://joe7m.github.io/SmallBasicPIGPIO/index.html |title=SmallBASIC PiGPIO Home Page |access-date=22 March 2022}}
Reception
- Tech Republic calls it "an excellent tool to begin programming with."{{cite web |last=McPherson |first=James |url=http://articles.techrepublic.com.com/5100-10878_11-5031775.html |title=Development in the palm of your hand, part 2 |publisher=Articles.techrepublic.com.com |date=4 June 2001 |access-date=19 January 2011 |archive-url=https://archive.today/20120904213009/http://www.techrepublic.com/article/development-in-the-palm-of-your-hand-part-2/5031775 |archive-date=4 September 2012 |url-status=dead }}
- ASCII-World says "SmallBASIC is an excellent tool for mathematics"
- David Mertz, Ph.D. and Andrew Blais, Ph.D. of Gnosis Software say "SmallBASIC has one of the better development interfaces [we have] reviewed. "
See also
References
{{Reflist|30em}}
External links
- {{github|smallbasic}}
- [https://smallbasic.github.io SmallBASIC Home Page at Github pages]
{{BASIC}}
{{DEFAULTSORT:SmallBASIC}}
Category:BASIC programming language family
Category:Free and open source interpreters
Category:Cross-platform free software
Category:Free software programmed in C