You are here -> Thought!
What is it?
When I started programming, I 'hacked' code together and then spent a disproportional amount of time getting it to work properly and fixing the 'bugs'. It quickly occurred to me that there had to be a better way! At the time (1970's and 1980's) a lot of work was being done in the theory of Structured Design. most notably by DeMarco, Wirth, Constantine, Yourdon and Jackson amongst many others. The common theme throughout is the need to plan and design prior to starting to coding.
Of the methods proposed the Jackson structured programming (JSP) method seemed most appropriate for my needs. It is a 'top down' methodology and is probably the simplest to learn and understand. The level of detail is sufficiently flexible to start when there is only a general statement of requirements and subsequently extend it all the way to the detail required at the code level. Whilst JSP was subsequently superceded, the approach remains valid.
My first version was written in Commodore V2 Basic and ran on a Commodore C64. There were serious limitations, most notably that I didn't have a printer and the best resolution was only 320 x 240 pixels! It was also very slow and the machine quickly ran out of memory. I subsequently rewrote Thought! in 6502 assembler, the performance was acceptable and it made better use of the memory, but the serious limitations remained.
The first really usable version was written in Mark Williams C and ran on an Atari ST. This relatively affordable machine was powerful (for the time), had a 640 x 400 monochrome resolution and a printer could be attached. Subsequent hardware upgrades and other improvements made this a very usable machine. The Atari ST version of Thought! was by far the most 'advanced' version. It included its own macro language and a task scheduler to allow limited muti-tasking.
A new job and a pay rise saw me moving to an IBM PC in the early 1990's. The realistic choice of operating system at the time being Microsoft Windows 3.0 or IBM OS2. As OS2 was technically far superior to Windows, I went for OS2 and the next version of Thought! was developed under Presentation Manager and Workplace Shell. Many of the Atari functions became redundant and I did not bother with features that I did not use. I did do a port of OS2 Thought! to Windows but it was very prone to locking up or randomly crashing and I never felt that the effort required to work around the Windows OS issues was justified.
I started with JAVA in the late 1990's, mostly as a learning exercise, and really started to get serious with it around 2003-4 when the performance reached an acceptable level for most general programming tasks. Having ported or rewritten Thought! so many times already, the ability to 'write once, run anywhere' was a major attraction. Printing was a nightmare in the early days of JAVA and whilst it has been improved in newer releases it remains a weak area of the language. For a number of reasons, I didn't start on the JAVA version of Thought! until 2007. It has remained largely unchanged since then other than 'fixes' to resolve JAVA printing issues. I recently included RSyntaxTextArea for text editing and spell checking in place of the somewhat limited JAVA editable object.
The java version uses the RSyntaxTextArea and Spellchecker libraries, both of which are included in the archive. These libraries are required in order to start the Thought! application. The layout uses a heavily modified version of Treelayout which produces exactly the same result as my earlier algorythm but saved me time in the java rewrite. The abego license file is included in the archive.
Thought V1.1 provides the latest versions of RSyntaxTextArea and SpellChecker, saves the window position and size on exit, adds keyboard shortcuts and provides a method of associating the '.tht. extension with the application for Windows users. Linux users can simply associate the extension with the jar file.
I might re-introduce an UNDO function at some point, a major omission for some people. The UNDO function disappeared when I removed the macro language. Its not something I miss a great deal as its absence makes you think a little bit harder before doing anything. The majority of actions do have confirmation prompts (which are enabled and disabled in 'Preferences').
The application is programmed in Java and requires Java V1.6 or newer to be installed on the computer it is being run on.
Java can be installed from: http://www.java.com/en/download/index.jsp
No installation of Thought! is required. Simply copy the contents of the 'ThoughtV1.zip' file to a convenient folder on your computer to which you have write access. It can be run directly by double clicking on it or from the command line by changing to the installation directory and entering: java -jar ThoughtV1.jar
For Microsoft Windows users a batch file and icon have been provided. 'Thought.bat' can be associated the '.tht' file extension so that Thought structures can be opened from Windows Explorer. See your operating system for documentation on how this is done.
A 'Thought.config file with default settings will be created in the same folder on first execution. It is recommended that the user checks the 'Preferences' the first time the application is executed.
Thought! has a 'procedural' interface, harking back to the early days of application software. If you are not familiar with JSP I suggest that you read up on the subject. There are also tutorials available on the Internet, easily located using any of the search engines.
As an introduction to computers, programming and software design you could do worse than to look <here>. Please note that I am not affiliated in any way to the site.
When executed the Thought application will be displayed. The default model can be set in the Options->Preferences dialog. Click on the links below to get basic instruction for using Thought!