It appears that you have JavaScript disabled. Click here to find out what you're missing on this site.

The Site Formerly Known as Bit Working This site has moved to http://bitworking.org

by Joe Gregorio

Go Forth

Theory can leave questions unanswered, but practice has to come up with something.
-- Mason Cooley

In Language-Centric Software Development I propose a methodology based around an embedded scripting language. I have outlined the benefits of that approach. Now I will demonstrate that methodology, and its benefits, in a concrete example over a series of articles.

Goals

  1. To demonstrate the benefits of language centric design
  2. To show how proper use of the STL can make an application easier to write, maintain and change.
  3. To demonstrate the benefits of Extreme Programming.
  4. To have fun.

Application

I still haven't decided on which of the three following projects I will end up doing. They are all projects I have wanted to build for a long time.
  1. A simple drawing program, along the lines of LOGO. An easy to use tool I can use to introduce programming to my children.
  2. A testbed for generating and receiving SOAP messages.
  3. A system like StarLogo for simulating massively parallel systems, such as ant colonies.

The language I am implementing will start out as a sub-set of Forth. If you are unfamiliar with Forth please see any one of these tutorials courtesy of Google.

Forth

After working on many software projects over the past 10 years I have found a general resistance among software engineers for implementing a language in a product. All of the resistance comes from a fear of languages. Call it language anxiety. We all took our comparitive programming languages classes and were bombarded with finite automata, parsers, and lexical anayzers. The only thing the course drives home is that implementing a language is tough and tricky work and best left to the experts, which is a load of bull. Now the theory is important and depending on how far you want to take your embedded language you may need a parsers or lexical anayzer. But you should only bring in those tools once you know you need them.

Forth is a small language, easy to implement and very fast to execute. It is a good stepping stone to higher languages.

Extreme Programming

I will be following some of the tenets of Extreme Programming. Since I am writing this from my home computer after the whole family is in bed, pair programming is out.

The major Extreme Programming practices I will be following are:

Details

This project will be written in C++.

The compiler I will be using is Borland C++ 5.5 (Freely downloadable from Borland.com) but the code should compile under any ANSI/ISO compliant C++ compiler.

Boost Jam will be used for the project maintenance.

CVS for version control.