[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Wanted: Applesoft BASIC files
- Subject: Re: Wanted: Applesoft BASIC files
- From: mjmahon@aol.com (Michael J. Mahon)
- Date: 10 Mar 2003 11:09:21 GMT
- Newsgroups: comp.sys.apple2
- Organization: AOL http://www.aol.com
- References: <G0Raa.55813$zb.16634376@twister.socal.rr.com>
- Xref: archiver1.google.com comp.sys.apple2:28354
In article <G0Raa.55813$zb.16634376@twister.socal.rr.com>, "Bryan Villados"
<news002@macgeek.org> writes:
>Well, I sort of agree on the spirit of what Bill mentioned, but I have a
>different recommendation. One complaint about BASIC in general is its
>openness to people writing bad code. BASIC doesn't encourage unstructured
>programming, but at the same time it doesn't penalize the programmer either.
>In a software engineering class, I would not have imagined that BASIC would
>still make an appearance today.
The object of the exercise is to have individuals/small teams write a
relatively complex piece of software for which the specifications and
acceptance tests are fixed. This is a quite reasonable exercise in
understanding the specification and implementing it with discipline
and efficiency.
>Instead of a BASIC intepreter, how about designing a totally new language
>and write an intepreter to support it?
Designing a computer language is a _very_ different discipline than
implementing an interpreter for a pre-defined language. In my
experience, less than one in fifty programmers is up to the task of
doing language design (just look at the horrible examples of command
parsers, for a simple example).
A programmer needs to be a good specification reader, a good designer
of execution models to meet the specification, a good implementor
of code to realize the execution model chosen, and a good documentor
of all of the above design choices.
A language designer need to appreciate the full range of intended
uses of a language, the kinds of things that can be correctly and
efficiently implemented on the intended target machine(s), and the
niggley little language details that will make an implementation an
order of magnitude less efficient if decided incorrectly. After being
a master of all of these areas, he/she then needs to be artfully
crafty in designing a language which maximizes expressive power
while minimally obstructing both its use and its implementation.
Very different skill sets. Think of it in natural language terms--how
many good writers are also good metalinguists, able to design a
new, consistent, expressive language. Tolkien (a linguist who
also happened to write) is one of the few who come to mind.
It is a disservice to students to set them tasks for which they are
unprepared to succeed--unless that's the lesson you're trying to
teach them. ;-)
> In my software engineering class
>about 15 years ago, we took an article out of Scientific American and wrote
>our own "red code" interpeter, which basically looks like assembler but a
>lot less opcodes.
There you go--the assignment was to write an interpreter for a pre-
defined language. Quite appropriate.
-michael
Check out amazing quality 8-bit Apple sound on my
Home page: http://members.aol.com/MJMahon/