Microsoft announced Small Basic in October 2008, and released the first stable version for distribution on July 12, 2011, on a Microsoft Developer Network website, together with a teaching curriculum and an introductory guide. Between announcement and stable release, a number of Community Technology Preview releases were made. On March 27, 2015, Microsoft released Small Basic version 1.1, which fixed a bug and upgraded the targeted.NET Framework version from version 3.5 to version 4.5. Microsoft released Small Basic version 1.2 on October 1, 2015. Version 1.2 was the first update after a four-year hiatus to introduce new features to Small Basic. The update added classes for working with Microsoft's Kinectmotion sensors, increased the number of languages supported by the included Dictionary object, and fixed a number of bugs. On February 19, 2019, Microsoft announced Small Basic Online. It is open source software released under MIT License on GitHub.
Language
In Small Basic, one writes the illustrative "Hello, World!" program as follows: TextWindow.WriteLine
The following example demonstrates conditional branching. It requests the current temperature in Fahrenheit and comments on the answer. TextWindow.Write temp = TextWindow.ReadNumber If temp > 100 Then TextWindow.WriteLine ElseIf temp > 70 Then TextWindow.WriteLine ElseIf temp > 50 Then TextWindow.WriteLine Else TextWindow.WriteLine EndIf
Looping
This example demonstrates a loop. Starting from one and ending with ten, it multiplies each number by four and displays the result of the multiplication. TextWindow.WriteLine For i = 1 To 10 TextWindow.Write EndFor Whileloops are also supported, and the demonstrated For loop can be augmented through the use of the Step keyword. The Step keyword is used in setting the value by which the counter variable, i, is incremented each iteration.
Data types
Small Basic supports basic data types, like strings, integers and decimals, and will readily convert one type to another as required by the situation. In the example, both the Read and ReadNumber methods read a string from the command line, but ReadNumber rejects any non-numeric characters. This allows the string to be converted to a numeric type and treated as a number rather than a string by the + operator. TextWindow.WriteLine name = TextWindow.Read TextWindow.Write age = TextWindow.ReadNumber TextWindow.WriteLine TextWindow.WriteLine
As Small Basic will readily convert among data types, numbers can be manipulated as strings and numeric strings as numbers. This is demonstrated through the second example. TextWindow.WriteLine 'Prints 2 TextWindow.WriteLine ' Prints 3100 TextWindow.WriteLine ' Prints Windows 8 TextWindow.WriteLine ' Prints 7
In the second example, both strings are treated as numbers and added together, producing the output 3100. To concatenate the two values, producing the output 1003000, it is necessary to use the Text.Append method.
Libraries
Standard library
The Small Basic standard library includes basic classes for mathematics, string handling, and input/output, as well as more exotic classes that are intended to make using the language more fun for learners. Examples of these include a Turtle graphics class, a class for retrieving photos from Flickr, and classes for interacting with Microsoft Kinect sensors. To make the classes easier to use for learners, they have been simplified. This simplification is demonstrated through the code used to retrieve a random mountain-themed image from Flickr: For i = 1 To 10 pic = Flickr.GetRandomPicture Desktop.SetWallPaper Program.Delay EndFor
Turtle graphics
Small Basic includes a "Turtle" graphics library that borrows from the Logo family of programming languages. For example, to draw a square using the turtle, the turtle is moved forward by a given number of pixels and rotated 90 degrees in a given direction. This action is then repeated four times to draw the four sides of the square. For i = 1 to 4 Turtle.Move ' Forward 100 pixels Turtle.Turn ' Turn 90 degrees right EndFor
More complex drawings are possible by altering the turning angle of the turtle and the number of iterations of the loop. For example, one can draw a hexagon by setting the turn angle to 60 degrees and the number of iterations to six.
Third-party libraries
Small Basic allows the use of third-party libraries. These libraries must be written in a CLR-compatible language, and the compiled binaries must target a compatible.NET Framework version. The classes provided by the library are required to be static, flagged with a specific attribute, and must use a specific data type. An example of a class to be used in Small Basic is provided below, written in C#. public static class ExampleClass
If available, the Small Basic development environment will display documentation for third-party libraries. The development environment accepts documentation in the form of an XML file, which can be automatically generated from source code comments by tools such as Microsoft Visual Studio and MonoDevelop.