peters@pulman.dec.com (Don Peters, APO-1/F8, 289-1242) (01/21/87)
I've just had a chance to give a preliminary checkout of GFA Basic, and I LOVE it!! Here's a bit more background: I enjoy doing program development in a responsive environment with good hardware and plenty of memory. The ST satisfies my hardware needs, and my 1 meg upgrade gives me all the memory I need. But my experience with ST Basic was not good. It is very slow, has bugs, and I find the human interface cumbersome to use. On the other hand, Pascal, C, and Modula II have nice block structure. But I don't like the wait for compiling and linking. So when I heard about the availability of GFA Basic from Michtron (imported from Germany), I ordered it as soon as I could. Five days later it arrived, and I began converting some of my ST software over to it, and tried writing some of my own programs. Performance was astounding. I had been reading lots of rave reviews of Action! for the 8-bit line, and this implementation of Basic looked as good, but for the ST. The program is only about 57K, leaving plenty of room for code (compare that to the size of ST Basic). The language needs NO line numbers, and is extremely rich in commands. Commands such as INC to increment a variable are really convenient with long variable names. Well, to continue with tests: I maintain a large mailing list for a youth organization. It has about 2800 records of 109 characters per record. I use a commercial database program to sort it. The sort takes 8 HOURS to sort HALF of it. I project it would take 16 hours to sort it all! I start in the evening, turn off the crt, and store the results the next morning. After talking to the author of the program, I found out he uses a bubble sort algorithm, one of slowest techniques going. So I used GFA Basic to write my own, using a Quicksort algorithm. I copied the sort algorithm almost directly out of the book by Wirth ("Programming + Data = Programs"?). He had it in Pascal. All the same Pascal block structures could be entered without change (a really nice benefit). After fixing a few mistakes on my part (using a % suffix to indicate integers), I tried it and it worked the first time on a test run! Then I threw the whole database at it, knowing it should be faster, and settled in for a long wait. Forty seconds later it was finished!! In disbelief I stepped thru the entire database to make sure it really sorted - it did. I am now a true believer in Quicksort and GFA Basic. I later converted several programs from ST Basic to GFA Basic. The implementations turned out very clean. For example, the Quicksort program really came out nice due to use of commands such as INC and SWAP, which eliminated unnecessary verbosity. Execution-debug turnaround time is very fast, and I like the way the interpreter automatically indents my block structures - I don't have to worry about doing it myself. I've been wanting a language that not only did all the above, but also had full access to GEM, VDI, BIOS, etc. GFA Basic has all this, such as easy-to-use alert boxes, menus, etc. As for bugs, so far I've found only one: the second time I call for a file-select form, the default filename doesn't get filled in. But I can still select a file from the list. Alas, all is not perfect. Since GFA Basic originated in Germany, with documentation in German, the manual had to be translated. In my opinion, the person doing the translation didn't know the ST nor English very well. And no one seems to have proofread the manual. There are lots of errors in it, from typos, to improper terminology, to just plain errors. This is NOT the language to learn Basic or the ST with. You should have some familiarity with both. But the manual is comprehensive. I get the feeling that the program authors really tried, but the translators didn't. Too bad, since it detracts from an excellent product. But I can much more easily live with these shortcomings than I can with shortcomings in the language itself. While this is an interpreter, and a fast one at that, a compiler for the language is promised as coming soon. It will generate standalone code. To me that is the best of both worlds - an interpreter for rapid development, and a compiler to achieve really fast execution speed in the final version of a program. In summary, I very highly recommend GFA Basic. I've been programming professionally for some 20 years now, and I find this language the most fun and possibly the most powerful to use. (The January 1987 issue of Compute! also has a very favorible review of the language) Finally, I have no connection with Michtron nor with the company that makes GFA Basic whatsoever. Don Peters (617-689-1242) ...decvax!decwrl!dec-rhea!dec-pulman!peters