Skip to main content

Posts

The first BASIC

This blog is about simple computing. I view this from a programmer's rather than a user's perspective. With the BASIC language, though, this line has always been blurred. Simple computing started in 1963 when Kemeny and Kurtz first designed the BASIC language. Here is a scanned PDF of the original Dartmouth BASIC manual. Tools like Liberty Basic and the upcoming Run Basic are the true succesors to Dartmouth BASIC. There is nothing simple about Java, .NET and the tools festering around these platforms. Powerful, yes. Simple, no. Unlike Visual Basic 6 (and its predecessors), there is no attempt to strike a balance between simplicity and power.

Carl Gundel Interviews

Over the past month, I've found several audio interviews with Carl Gundel. If you are interested in a behind-the-scenes look at Liberty Basic and Run Basic, then these are recommended listening: Industry Misinterpretations 22: Liberty Basic with Carl Gundel ( mp3 ). Shareware Radio Podcast: Interview with Carl Gundel ( mp3 ). Enjoy!

Tiny Basic Sieve Benchmark

Compared to the Sieve benchmarks in previous posts, Tiny Basic is very slow. In fact, it's much slower than I anticipated. I ran Tiny Basic on both the Run Basic public server and Liberty Basic 4.03 on my laptop. Here are the numbers: After 5000, the Run Basic program exceeded the allowable time on the public server. The following is the Sieve program. I had to use IF statements because Tiny Basic doesn't have a FOR/NEXT loop yet. 10 REM sieve2 20 REM ported to Tiny Basic from Liberty Basic by David den Haring 30 REM last updated: 8-14-07 40 REM s -- size, a() -- flags array, a -- start time, z -- end time 50 REM i -- loop counter, p -- prime, c -- prime count, k -- temp 60 s = 7000 : i = 1 70 a = ms 80 IF a(i) > 0 THEN GOTO 300 90 p = (i + i + 3) 100 k = i + p 110 IF k > s THEN GOTO 290 120 a(k) = 1 130 k = k + p 140 GOTO 110 290 c = c + 1 300 i = i + 1 310 IF i > s THEN GOTO 400 320 GOTO 80 400 z = ms 410 PRINT c; 420 PRINT...

Tiny Basic v1.1 Released

I posted a new version of Tiny Basic in both the Run Basic and Liberty Basic wikispaces. Here's a list of new features: Added a fixed array accessible from the interpreter -- a(1) to a(7001). The size of the array can be adjusted by changing the ArraySize variable in the code. Added the functions seconds and ms (or milliseconds ) for benchmarking purposes. (LB4 only). Fixed LOAD and SAVE commands. The argument that these commands take is a number. For example, " LOAD 1 ". The file saved in the working directory will be "TinyBas1". (LB4 only). Fixed AutoRun feature. If a file exists in the working directory called "TinyBas0", it will load and run automatically when the interpreter starts up. (LB4 only). Added KILL and DIR commands to round out file management. KILL takes the same numeric argument as LOAD and SAVE. The DIR command has no arguments. It will display a list of Tiny Basic files and the time stamp. Known Issues: There is no file managem...

Tiny Basic tinkering

One of the examples on the Run Basic website is a port of Tiny Basic . It's fun to play with and is very much like the interactive, command line Basics found on early personal computers. In fact, I think Tiny Basic was the dialect used on the TRS-80 Model 1. I'm currently working on modifying Tiny Basic to run the Sieve benchmark. Tiny Basic needs two things: profiling and array support . I've already added profiling support for the RUN command. Tiny Basic now displays the running time of a program in milliseconds. The last step is to add array support. Tiny Basic only supports the numeric variables 'a' to 'z'. I'm adding a single array to the environment in order to port the Sieve program. The array will be called a(). I will post the modified Tiny Basic code to the Run Basic Programming Wiki when finished. The whole point of this exercise, however, is to see how fast the Tiny Basic interpreter runs the Sieve benchmark and compare it to the others i...

Sieve benchmarks

After comparing the performance of Run Basic (Beta) and Liberty Basic 4.03 using the Sieve sample program, I wanted to expand the comparison to include a few other languages. I ported the Sieve program as directly as possible. Here are the test results sorted from low to high: Find primes from 0 to 7000 (10-run average in milliseconds) Visual Basic 6.0 ( 0.0 ) Run Basic ( 28.8 ) REBOL ( 35.9 ) Runtime Revolution ( 63.7 ) Liberty Basic 3.03 ( 146.8 ) Liberty Basic 4.04 ( 170.3 ) Find primes from 0 to 1000000 (10-run average in milliseconds) Visual Basic 6.0 ( 273.5 ) Run Basic ( 4164.4 ) REBOL ( 4767.2 ) Runtime Revolution ( 12421.5 ) Liberty Basic 3.03 ( 20381.1 ) Liberty Basic 4.04 ( 27732.9 ) I ran the 0-1000000 benchmark to get VB off of zero milliseconds for a better comparison.

Run Basic much faster than Liberty Basic 4.03

Just for fun, I ran the sieve2.bas example that ships with LB4. I was a little shocked to find that Run Basic finished about 5-7 times faster than LB4 running on my 1-year-old Dell laptop. The Run Basic time varied between 23-35ms -- and that's on a public server. LB4 on my Dell Inspiron 9600 laptop varied between 156-172ms . The Dell is running XP and has an Intel Core Duo (T2300 @1.66GHz) with 1 gig of RAM. I mentioned this on the Liberty Basic Community Forum and Carl had this to say: "Run BASIC and LB5 are not only using a new development tool, but their design is fundamentally different than older versions." Run Basic and LB5 will be worthwhile upgrades if only for the speed improvements.