Re: Helpful Practical Uses of Conditional Assembly
From: Beth (BethStone21_at_hotmail.NOSPICEDHAM.com)
Date: 09/11/04
- Next message: Beyond2000!: "Re: How many here think we should close down alt.lang.asm?"
- Previous message: Al Leitch: "Re: How many here think we should close down alt.lang.asm?"
- In reply to: Robert Redelmeier: "Re: Helpful Practical Uses of Conditional Assembly"
- Next in thread: Betov: "Re: Helpful Practical Uses of Conditional Assembly"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Sat, 11 Sep 2004 01:11:33 GMT
Robert Redelmeier wrote:
> The best ASM for apps is likely to be extremely powerful
> with a full set of features (Marcros within macros) and
> syntax (especially for flexible interfacing with HLLs).
>
> The best ASM for teaching is likely to be very uncluttered
> and simple so that teaching points are not obstructed
> by crufty details like ENDP, ASSUME and .segment .
> Powerful ASMs need these for their power.
I simply don't believe that whatsoever...
FORTH's "power" comes from the _LACK_ of "cruft" added onto it...C's
"power" comes from its "minimalistic" attitude...ASM's "power" comes from
its Liberty to do anything possible with the CPU...
You may find this unintuitive but I'd say the reverse is truer...if you add
on keyword upon keyword, construct upon construct then your "powerful ASM"
is heading towards _BASIC_ programming, not hex coding...it's going in the
wrong direction because as we climb the "programming language tree" from
ASM - which is capable of anything - towards C - capable of mostly
anything - towards BASIC - capable of not much - towards COBOL - capable of
practically nothing but horridly bad "database" programs, the "power"
_WANES_ as we throw on those keywords, not increases...
My proposed "unified model" syntax is immensely "powerful" because it
_LACKS_ "ENDP", "ASSUME" and other nonsense...it's, I'd say, the cleanest,
clutter-free assembly syntax I've seen (note: that's not a coincidence,
it's meant to be like that ;)...yet, it can create things that don't even
have formal names in other programming languages because their structures
aren't powerful enough to match...well, my inspiration is a phrase from
Aristotle: "Elegant perfection"...or Einstein's "harmonious structure" /
"everything should be as simple as possible"...
Indeed, you're quoting a "CISC mentality" at us, if we were talking
hardware...you'd be saying that CPUs are made "powerful" by having lots of
large, complex CISC instructions...seems intuitive, doesn't it? "Bigger is
better"...but, nope, wrong...as RISC consistently beats CISC that CPU
manufacturers don't really look at anything else...even the CISC style of
the x86 is only a "backwards compatible" optical illusion, in that there's
a RISC "core" in the actual chip doing all the work...and RISC preaches the
complete opposite: many, small, simple, common instructions...a "reduced"
instruction set...an attitude of "minimalism"...
Don't like the RISC analogy? What about "UNIX philosophy" instead? Rather
than big, complicated monolithic applications, the "UNIX philosophy" is
lots of small, simple, _single purpose_ utilities - "GREP", "MAKE", "MORE",
"CAT", etc. - that make use of "pipes" and "redirection" to work in
combination for larger operations...what you can do with a handful of UNIX
tools is frighteningly more powerful than even Microsoft's bloatiest,
slowest, most monolithic "bells and whistles" pile of crap...
I mean, us ASM programmer should get the basic idea from the idea of having
a separate assembler and linker and librarian and all the various
tools...indeed, most assemblers are, in fact, "toolsets", not merely single
tools...and when thrown altogether into one monolithic application, is that
in any way more "powerful" or "better" or more "flexible"? I'll avoid the
obvious comparison to point out that this is where something like RosAsm
has some of its greatest weaknesses...
The best assembler for applications writing is free of pointless
"cruft"...as NASM and its "attitude" put it: "no red tape"...this is also
more condusive for assembly learning...
Moreover, let's check our logic here...what is it we're actually trying to
"learn" with our "learning assembler"? How to best write assembly
applications? Then wouldn't the tool that writes the best assembly
applications be implicitly the best tool to learn how to write the best
assembly applications?
Okay, we're too close to this...it's hard to see the woods for the
trees...let's make the logic clear by analogy instead...you want to become
a house builder (as Rene used to be :)...is it better to learn with
textbooks, theory and simplified lego bricks...or to "learn on the job" -
under the "tutorial" of a "master" who's teaching their "apprentice" - and
actually learn by doing?
Because, you know, I know all the basic "musical theory" for playing many
instruments like a piano or a guitar (what all the notes are, what an
"octave" is, what a "fifth" is, how to derive chords, their "ratio"
relationships to each other, how to read musical notation, that the strings
are "E A D G B E" on a guitar from lowest to highest...blah-blah-blah ;)
but I can't actually _play_ any instrument...not properly...not without
lots of hesitation that ruins everything...it's not a lack of "theory" at
all - I'm very interested in that, that I've looked it all up and know how
most of it all works - but a total and utter lack of _practice_...I could -
using a MIDI sequencer - compose you a pretty tune or two but I couldn't
actually play a single note of it on a real instrument...
The best teacher is reality...actually doing and seeing what happens...the
best tool to learn playing a guitar is, obviously, a guitar (and _only_ a
guitar...if you're using a capo across the strings then you're _avoiding_
complex fingering and comprehending how to "transpose" (that's the whole
point of it ;)...you _DON'T_ learn how to drive by having a chaffeur drive
you around everywhere...if it's being done for you then you aren't actually
_learning_ at all...the "embellishment" is _STEALING AWAY_ your education
from you)...
_IF_ the best applications assembler has lots of "cruft" like "ENDP",
"ASSUME" and such then _that's what you want to learn_...this is what
you're going to be using to create assembly language applications
(apparently) so that's what you need to learn to learn how to write
assembly language applications...
To learn to play the piano, then I need a piano in front of me...trust me,
I'm not talking "theory" here at all...I _DO_ sit in front of a piano and
it frustrates me so because I learnt how it all works from "textbooks" and
"theory" and such...I never actually sat down to learn to actually _PLAY_
(never had a piano at home)...and, thus, I can't actually really play a
note...you know, play one chord and then there's a minute delay before I
manage to finger the next chord...but if I pop myself down in front of a PC
with a MIDI sequencer - where the program does all the "hard work" of
actually playing things - I can _compose_ (as _that_ part can happily
depend on "theory" only ;) well, well in advance of what I can actually
play on any actual instrument...
Because, in truth, you don't play the piano with your conscious mind at
all...whatever "theory" you read, putting "facts" into your conscious mind,
it's your subconscious that actually does all the actual work...and those
subconscious "muscles" only learn by _practice_....nothing else
works...there's no "shortcut" or "substiture" for that...it's the _sole_
way the subconscious learns anything...by _practice_...by
_repetition_...it's more like a "muscle" than a "brain" at times for that,
in fact...
If assembly language applications writing and its tools are all very
complex then you do yourself no favours avoiding the complexity...if that
is going to be the "currency" you work with then that is what you should be
learning...indeed, if you learn on something "simplified" then it could
lead you into _bad habits_ (hmmm, that "simplified assembly emulator" I was
using has "src, dest" ordering...but the x86 I'm actually working on is
"dest, src"...except I spent so much time learning on that "simplified
emulation" that I still keep on typing "src, dest" by accident all the time
;)...you could come to _FALSE CONCLUSIONS_ because you're actually learning
on a simplified _model_, NOT the real thing...
On the contrary, the best teacher is _experience_...the only thing worth
learning is what you'll _actually be doing in applications development_,
not some "simplified model" of it that has no bearing on anything that
you'd actually do in reality...and "less is more" when it comes to those
"features"...RISC vs. CISC, C "minimalism", "UNIX philosophy", NASM "no red
tape"...don't take "the Microsoft way" as any kind of "role model", for
sure...
The curse of the modern world: Everything's "courses" and "jargon" and
"theory"...white-collar, cerebral, managerial...everyone knows "what's
best" until you put them onto the actual shop floor and, simply, they have
absolutely no idea what to do at all...even artists no longer understand
the marble they chisel or oil paints they drag over canvas...nope, they
don't understand perspective, volume, light / shadow or anything else these
days...they put two bricks onto the floor and call it "art"...why, it's
about the "feeeeelings" of the artist...it's, ummm, a "socio-political
statement", apparently...a world full of critics and you know what critics
are? Those who do, do...those who can't, become critics and teachers...a
joke but more than a grain of truth behind it...you don't learn to move on
with your life...no, no...you go on "Oprah" and spend the next ten years
talking to a psycho-babbling shrink full of useless Barnum
statements...then, hey, write a "novel" all about it and "get over it" by
just becoming another soul-less multi-millionaire who has no idea what on
Earth they even exist for...
Well...that's the "theory", anyway...hehehe ;)
Beth :)
- Next message: Beyond2000!: "Re: How many here think we should close down alt.lang.asm?"
- Previous message: Al Leitch: "Re: How many here think we should close down alt.lang.asm?"
- In reply to: Robert Redelmeier: "Re: Helpful Practical Uses of Conditional Assembly"
- Next in thread: Betov: "Re: Helpful Practical Uses of Conditional Assembly"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|