Re: HLA History
From: Herbert Kleebauer (klee_at_unibwm.de)
Date: 02/07/05
- Next message: Beth: "Re: HLA History"
- Previous message: Betov: "Re: HLA History"
- In reply to: Randall Hyde: "Re: HLA History"
- Next in thread: Percival: "Re: HLA History"
- Reply: Percival: "Re: HLA History"
- Reply: Randall Hyde: "Re: HLA History"
- Reply: Beth: "Re: HLA History"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Mon, 07 Feb 2005 11:45:31 +0100
Randall Hyde wrote:
> "Herbert Kleebauer" <klee@unibwm.de> wrote in message
> > Assembly programming has nothing to do with the operating
> > system. Assembly programming is the generation of a
> > sequence of processor instructions to solve a given problem.
> > And whether you use 16 or 32 bit operations and addressing
> > modes is decided only by the assembly programmer and not by
> > the OS.
>
> Well, the next time you try and use (*really use*) 32-bit addressing
> modes under "plain old DOS", let me know about how successful you
> are. Yep, "DOS Extenders" can allow this for certain types of programs.
> But under "plain old DOS" you can forget it.
Sorry to disappoint you. I have written my trivial assembler
1992/93 and I use 32 bit addressing modes from the first
day on (in real mode and V86 mode DOS programs). I don't like
the crippled 16 bit addressing modes and use them only
if I want very small programs to include them ascii encoded
in batch programs.
> > Even if both, Randy and Rene, claims, that
> > learning assembly programming in DOS (or the V86 mode
> > in Windows) is obsolete, both are wrong. Using the
> > "DOS API" is still the easiest way to learn assembly
> > programming.
>
> Wait a second, you just said that learning assembly is
> independent of the OS, now you're back pedalling.
As I already said several times, sometimes you have to
switch from write only mode to read mode. Assembly
programing has nothing to do with the OS but that
doesn't mean that some OS doesn't make it easier to learn
assembly programing than other OS. Swimming has nothing
to do with the geographical location of the water. But
if you want to learn to swim, I would suggest a swimming
pool with warm and clear water at a sunny day (DOS) and
not a rough sea with many sharks and whirlpools (Windows).
> Personally, I prefer to do as you say, avoid the OS
> entirely. That's why I provided the HLA Standard Library,
> to skip the whole OS API entirely. That's why, for example,
> programs written in HLA can run under Linux and Windows
> unchanged.
That would be just replacing of one API by an other API.
Why not us an OS like DOS with a simple to use API which
even a newbe can understand in a few minutes (as far as
he needs it to write the first assembly program).
> > You can even learn more this way (try to use
> > 16 bit addressing modes in Windows without generating a
> > crash or try to directly access hardware or to setup
> > your own segment and paging tables).
> But why would anyone want to waste their time learning
> obsolete 16-bit addressing modes and 80x86 real-mode
> operation these days?
When will you stop to claim, that DOS assembly programming
is associated with 16 bit addressing modes. But in opposite
to Windows you can also use the 16 bit addressing modes
and this is also part of the processor and therefore should
also be part of an assembly course.
> > So, if the sole goal is to write an assembler for
> > teaching assembly programming, use an operating system
> > which uses the processor in real mode, which allows
> > the user program to do anything it likes to do.
>
> What does "real mode" have to do with learning assembly
> language anymore than the OS has to do with learning
> assembly language?
Learning assembly programming means to learn and use
the instruction set of the processor. And there are instructions
which you can only use in real mode or ring 0 of protected
mode. And it is not so easy and a little bit dangerous to
convince XP to execute your assembler program in ring 0,
especially if you experiment with the segment and paging
tables.
> "Real mode" may be of interest in
> an architecture course where people are studying the
> history of computer architecture, but there is no need
> to learn this antiquated material in order to learn assembly
> language programming.
It is antiquated material to direct access hardware, to
set up segment and page tables? And for the normal
user instructions and addressing modes, there is no
difference between real mode and protected mode programming.
> > Originally, I
> > (foolishly) assumed that when existing assembly
> > programmers saw how much more powerful HLA was
> > than existing assemblers, they'd switch (in
> > droves) to HLA.
> > This clearly shows, that HLA was designed as a tool
> > for programmers with the potential to replace
> > existing assemblers.
>
> No. It shows that HLA was designed to be very powerful,
> in order to allow me to write intricate macros like the
> stdout.put macro, so that I could simplify I/O access for
> beginning programmers.
That doesn't make any sense. If you needed the powerful
macro system only to provide ready to use macros for the
students (and not for the user of HLA to write their
own macros), you also could have implemented this macros
as build in functions of the language and don't implement
macro support at all. It is like your are writing a
typewriter program to teach pupils to write with 10 fingers
and then assume that many people using MS Word switch to
your program because of it's superior design. Then either you
have lost any sense for reality or the program wasn't designed
for pupils but as a replacement for existing word processing
software. Then, when nobody deletes his Word version in order
to use your program, you claim, that it was only designed for
pupils to learn to write with 10 fingers. And yes, the pupils
really like your program and it becomes a great success. Why?
Because it has a built-in spell checker and an good algorithm
for word completion. Now they can type with two fingers much
faster and make less errors than using 10 fingers with the
old program. Also the teacher is happy, because any pupil
manage to pass the course. But nearly nobody of the pupils
have learned to write with 10 fingers. And yes, if they
really want, they can use 10 finger later. So any student and
teacher is happy with HLA, but nearly nobody has learned
assembly programming, what a great improvement.
> Herbert, you're as bad as Rene, claiming to "know" what HLA
> was designed for.
I never claimed that. All I do is to show the illogical
parts of your argumentation.
> because MASM wasn't cutting it). Therefore, HLA was
> *also* designed for those individuals (specifically, myself)
> who would be writing libraries and macros to support
> teaching assembly language.
Libraries can be written in any language. No need to implement
a powerful "assembly" language to implement the library.
Write it in a HLL and give your students a simple and clean
assembler and link the code to the library.
> My goal is to teach beginners assembly language.
No. If you want to teach to write with 10 fingers, you
don't implement a spell checker and word completion.
If you want to teach assembly programming, you don't
use HL constructs and libraries (and at the beginning
also no macros).
> As I said,
> assembly is the best way to learn this stuff, it's not the
> only way.
That's correct. And it is even better to only read the
processor manual without writing a single line of
code instead of "learning assembly programming" using
HLA.
> > Randy tries to add HLL constructs to make it easier
> > to use. This will not work either. It isn't an assembler
> > anymore but a HLL with a seamless integration of
> > inline assembler code.
>
> No, it's an assembly language with seemless integration
> of in-line HLL code. Big difference. You can do
> *anything* with HLA that you can do with any other
> assembler;
If you compare an assembler with an empty cup, then
you can say, the cup is half full (an assembler with
HL support) or say the cup is half empty (a simple
HLL with a seamless integration of inline assembler code).
In either case it is not an empty cup and using it
is not assembly programming.
> > And this is a very bad design.
>
> So you say. You're welcome to your opinion.
> There are some around here who feel that your
> 68K syntax assembler is a very bad design.
But there is a big difference. My assembler is only
used by me. If only you or people who want to write
a program would use HLA, then there wouldn't be any
problem. But instead it is used as tool for teaching
assembly programming and that is a problem. (There
is also no problem with a spell checker or a word
completion algorithm, but it is a problem if you use
this as a tool to teach to write with 10 fingers and
the pupils now only use two fingers because they are
now faster with two fingers as before with 10 fingers).
> sometime. The bottom line is that those HLL
> statements appear in HLA to allow students
> to *quickly* get up to speed in HLA, allowing
> them to write simple programs their first couple
> of weeks in class without having to master too
> many concepts at once.
Great. They can write simple programs (with nearly no
processor instructions used) in the first couple of weeks.
If you had explained them a dozen instructions and
a few addressing modes, they would have written their
first real assembler program in less than an hour.
> *LIKE* it. I can understand why you would think
> this is dangerous -- it runs counter to what you
> preach around here (never write apps in assembly).
I never said this. If you like to program in assembler
and do it just for fun, then there is nothing wrong
to write an application in assembler. But if you have
to make a living from it, forget it (at least for
for most applications).
> So students should be forced to learn assembly
> in such a way that they *won't* like it, correct?
It doesn't matter whether they like it or not, they
have to learn it. It doesn't matter if you like to
pay taxes, you have to pay them. A teacher has not
to use the tool which the students prefer, but the
tool which is most appropriate to teach them a
subject.
> You also need someone who is dead-set on learning
> assembly if you're going to take this approach. It
> doesn't work with your average programmer (i.e.,
> C.S. student) who isn't partcularly interested in
> learning assembly.
Either teach them assembly programming or abolish the
assembly course at all. It doesn't make sense to retain
the name "assembly programming" but teach something
else just because the students prefer this "else".
- Next message: Beth: "Re: HLA History"
- Previous message: Betov: "Re: HLA History"
- In reply to: Randall Hyde: "Re: HLA History"
- Next in thread: Percival: "Re: HLA History"
- Reply: Percival: "Re: HLA History"
- Reply: Randall Hyde: "Re: HLA History"
- Reply: Beth: "Re: HLA History"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|