A status rapport from LuxAsm list
From: '\\\\o//'annabee ('\\o//'annabee)
Date: 02/24/05
- Next message: Percival: "Re: Broken links in ASM FAQ???"
- Previous message: Betov: "Re: Math in asm... and limits..."
- Next in thread: NoDot: "Re: A status rapport from LuxAsm list"
- Reply: NoDot: "Re: A status rapport from LuxAsm list"
- Reply: Beth: "Re: A status rapport from LuxAsm list"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Thu, 24 Feb 2005 16:01:30 +0100
I havent read it in full yet. But I am reposting this from the luxasm
devil list, in case someone has no better to do than to read it. Here it
goes.
Bring lots of coffie
Send Luxasm-devel mailing list submissions to
luxasm-devel@lists.sourceforge.net
To subscribe or unsubscribe via the World Wide Web, visit
https://lists.sourceforge.net/lists/listinfo/luxasm-devel
or, via email, send a message with subject or body 'help' to
luxasm-devel-request@lists.sourceforge.net
You can reach the person managing the list at
luxasm-devel-admin@lists.sourceforge.net
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Luxasm-devel digest..."
Today's Topics:
1. Re: Testing, testing...eins, zwei, drei... (Frank Kotler)
2. Re: Testing, testing...eins, zwei, drei... (NoDot)
3. Re: More "unification" and LuxAsm syntax (Beth)
4. Fw: More "unification" and LuxAsm syntax (Beth)
--__--__--
Message: 1
Date: Wed, 23 Feb 2005 06:29:38 -0500
From: Frank Kotler <fbkotler@comcast.net>
Organization: N
To: luxasm-devel@lists.sourceforge.net
Subject: Re: [Luxasm-devel] Testing, testing...eins, zwei, drei...
Reply-To: luxasm-devel@lists.sourceforge.net
Beth wrote:
> Frank, if you can see this post then that means all should now be well
> and
> it would be useful if you could "force unsubscribe" the "hotmail"
> subscription address for me...otherwise, I'm going to get "double vision"
> on everything sent to the list...
Done... or attempted... how many of these do you see? :)
Good to have you back with us ("Welcome" to Sevag, too!)
Best,
Frank
--__--__--
Message: 2
Date: Wed, 23 Feb 2005 07:33:50 -0500
From: NoDot <nodot@ulmail.net>
To: luxasm-devel@lists.sourceforge.net
Subject: Re: [Luxasm-devel] Testing, testing...eins, zwei, drei...
Reply-To: luxasm-devel@lists.sourceforge.net
Beth wrote:
> This is obviously a test of the new subscription to the list once
> more...
You're on.
> Frank, if you can see this post then that means all should now be well
> and
> it would be useful if you could "force unsubscribe" the "hotmail"
> subscription address for me...otherwise, I'm going to get "double vision"
> on everything sent to the list...
What's wrong with that. I still have everything sent to my Yahoo account
too. That way I *know* I didn't miss anything. (I probably should
unsubscribe soon, though.)
> *tap* *tap* Testing...testing...1, 2...1, 2, 3...
> Can y'all hear me at the back there? :)
Loud and clear.
> Beth :)
P.S. I prefer the '@ulmail.net' address ending.
-- The above was written by NoDot. Visit the Website of NoDot: <www.geocities.com/nodot1989/> --__--__-- Message: 3 From: "Beth" <BethStone21@hotmail.NOSPICEDHAM.com> To: <luxasm-devel@lists.sourceforge.net> Date: Thu, 24 Feb 2005 01:25:25 -0000 Subject: [Luxasm-devel] Re: More "unification" and LuxAsm syntax Reply-To: luxasm-devel@lists.sourceforge.net Frankie say: > Ro wrote: > > Why is it[too much "minimalism"] not a good thing? > > Bcs t's hrd 2 rd. And now you've got Wannabee doing it too! > His last reply to you was "." - I guess that's positive, but > if he'd *really* liked it, he would have said "!" :) > > As I said, this *is* a matter of opinion, but I think you'll > find that "most people" prefer a little more "visual clue" > than the extremely "terse" styles provide. Yes; But, well, look at my average post length...does it look like I suffer from the "TXTrs" disease of stunted linguistical growth and maturity? ;) It seems not only "concise" is being confused for "short" but so is "minimal"...allow me to clarify: "Concise" = "information tightly packed; High expressiveness in short distance" "Minimal" = "least necessary; Redundency removed" "Short" = "occupies small distance" For example, though not as extensive or comprehensive at its fuller cousin, the "Oxford Concise Dictionary" is _NOT_ a small or short book...indeed, it occupies a volume similar to a Bible alongside on my bookshelf (and that's with the dictionary using a _smaller font_, abbreviations and wasting no space on "white space" in any of the entries at all, than the Bible does too ;)... If "concise" actually meant the same as "short" or "small" then the "Oxford Concise Dictionary" (and, well, these people _should_ know better than most what English words mean, considering who they are and what the publication itself is ;), then the title would be a lie...as it is one of the least "short-ish" books on my entire bookshelf...in fact, only the UNICODE reference book is larger (but then this one gigantic book, covering all characters in the entire UNICODE range, across hundreds of languages and scripts)... And "minimal" neither means "short" either...I visited an art exhibition by the "minimalist art" movement and the actual pieces of artwork were among the largest I've ever seen (the American ex-billboard painter James Rosenquist earns the "biggest" award, though, because in switching from billboard painter to a "pop artist", he did _NOT_ decide to reduce the scale of his artworks at all...indeed, they got _bigger_...only one room in the entire exhibition could house his work which had to be lifted through the roof by a crane and, even then, placed at a slanted angle because it was longer than the room's length that it couldn't be placed flat against the wall, even then..."big" does not sum up how stupidly massive this "painting" was...the scale of his work has to be seen to be believed...this other famous one by him - http://www.guggenheim.org/exhibitions/rosenquist/highlights3_lg.html - for instance, is 83 feet in length and 10 foot tall!! ;)... There was a large block covered in mirrors, taller than a person, cubed (that is, "taller than a person in all three directions of space"...indeed, it was a perfect cube so each side was the same length, of course ;), as an example...VERY BIG stuff...the point in such "minimalism" is not that the artwork is "small" or "short" but that it is "free of extraneousness"...that is, it was just a large block whose sides were mirrors...that's it...nothing more to it... I give not a crap for "short"...indeed, to be "minimal" might even sometimes require _writing more_...I don't know about Rene's or Ro's "minimal" but my "minimal" has NOTHING to do with "length" but everything to do with _semantics_...when I mean "minimal", I mean "free of redundency", "absent of extraneousness", "least required normalised form" and so forth...it is a _qualitative_, not quantitative measure... For example, if I took a 83 foot long canvas - like Mr.Rosenquist - and painted it completely red and then drew a single white line across it...this would be "minimalist" but it would not be "short" nor "small"...it is a reference, if you like, to the "amount of details" or the "complexity", NOT to its "size"...indeed, it's quite possible that, in some circumstances, making things "simpler" and "minimalist" in that regard, could even lead to the overall "size" getting bigger...due to, interestingly enough, a lack of "conciseness"...are we getting that these words are NOT "synonyms" yet? ;)... Clean, clear, simplicity is what I'm after with "minimalism"...I give NOT a single crap about "saving typing"...this is a trivial concern...what matters with programming - where all the bugs and maintenance nightmares and such stem from - is _COMPREHENSION_...two basic devices aid human comprehension: "Divide and conquer" and "keep it simple, stupid!"...you'll note that "blocks" is the "divide and conquer"...the other component is to attempt to keep everything as "simple" as possible...the "UNIX philosophy" of creating _SINGULAR-PURPOSE_ utilities...you know, "echo" just echoes back whatever command line it's given...that's it...that is "minimal"...no "bells and whistles", no "complex features" nor anything of that kind...it just does _ONE_ job and does it well and does it _simple_... Solving big problems by making them a series of "simple small problems"...each easy to solve...work your way through them and the "big problem" is equally easily solved... This is in contrast to the opposing concept of making a monolithic tool with 97,000 "features", each of such complexity you need a PhD in that specific feature to even begin to understand how to use it, then proposing that "big and complex solutions require big and complex tools"...Bzzt! Wrong answer...the whole problem in the first place is "big and complex"...adding on more "big and complex" makes it _HARDER_ to solve because now you've got twice as much "big and complex" to work your way through...on the contrary, the tool should pursue "minimal" that it does not itself become "part of the problem"...and it should help to "break down" the "big problem" into "a series of smaller, simpler problems" because those are each much easier to deal with and, thus, aids dealing with the "big problem"... Note: Much of the design for LuxAsm that I've provided _IS_ based on the "large-scale" problem...this is with reason...as I'm sure Randy can confirm (he knows these kind of things usually :), projects manifest new and difficult additional problems when they go "large-scale"...it is not simply "small program but slightly larger"...because the "size" begins to outweigh the capacity of the human mind to naturally deal with (there is no shame in this: It's the way all human beings are wired up...some more than others but it is an essential trait we all share...scientists estimate that it's something akin to roughly a "limit" of 7 different concepts can be consciously wielded by the human mind simultaneously...thereafter, you've got to start relying on "memory recall" and that's where problems start to develop...indeed, _some_ people are better at this than others BUT, at some point, _everyone_ will hit their "limits")...also, large projects tend to be "team projects", due to, of course, trying to get something so "big and complex" done by some "deadline"..."team interaction" brings in new problems again...blah-blah-blah... "OOP" is a typical common solution used...it does the "divide and conquer" thing..."encapsulates" the parts to "separate" and "decouple"...to break the "interdependencies" between "modules / objects"...thus, allowing each part to be its own _SMALLER_ "little problem" that's more easily solved...this, indeed, is, in fact, the "WHY?" when it comes to OOP... As an example, I have my little bookshelf here...I just throw the books onto the shelf in any old order because it's just one shelf of books (an "essentials" kind of deal: a Bible, a dictionary, a thesaurus, a "word origins" book, a maths textbook and then a bunch of programming books...indeed, if you like, this is "minimal" again...I do have more books elsewhere but for this "handy reference" shelf, I select the "minimal" amount of "essential references" and put them on this shelf for "easy access" while working away at my desk here)...this works because this is "small project" stuff...the shelf is hardly long nor are there a great many books on it...so, there's no need to "order" them because it takes no time to scan across the shelf to find the book I want... BUT, consider the same situation in the "big and complex" arena: A large city public library...tens of thousands of books, all across large and varied "topics"...with potentially millions of "borrowers" to keep track of...can you see a New York public library adopting the same "hackerish" attitude to ordering and keeping track of their books? Er, no...that just wouldn't work...wouldn't work at all... So, when the "bookshelf" problem enters into the "big and complex" arena, then the "system" changes..._NEEDS_ to change or the "problem" is going to become "undesirable", if not "impossible"...hence, books are categorised with "category numbers" (the "dewy decimal system"...not to be confused with the "duodecimal system", which is a different topic I also like to talk about ;)...they are ordered alphabetically on the shelves...they are divided into "fiction" and "reference" and so forth...when people borrow the books, then they are stamped and the details scanned into a computer system to keep track of all the books and borrowers...and if you do something _short_ of this kind of system, then you're not being "big" nor are you being "clever" because it'll bite you on the bum...you know, a person coming into the library asks you if you have a book about "Fishing" by J.R.Hartley (sorry, there's an "in-joke" there that only Brits will get ;)...and, well, there's tens of thousands of books just randomly scattered on the bookshelves because you couldn't be bothered to "sort" them and just threw them in any old order onto the shelves...finding that particular book amongst the shelves and shelves of books...well, best tell the potential book borrower: "I think you'd better come back in two weeks...it'll take about that long to go through each book one by one until I find the specific one"...and then, when you do find it, you hand it to the borrower, who walks out without giving any details of who he is or when he should bring it back or anything...unsurprisingly, the books in the public library slowly "vanish" one by one, as people just take them away and never bring any of them back...and, hey, you can't do anything about it, really, because you've not been keeping track of what books you did have, what books have been "borrowed", who borrowed them or anything... You couldn't seriosuly run a large public library like that...but, on the other hand, for my small little bookshelf next to me here, this is perfectly fine...I don't really need to sort them alphabetically or give them "category numbers"...there's only about 20 or so books here in total...it's just _one_ bookshelf, hardly a "public library"...and there is only _ONE_ "borrower" of the books and that's me...and I don't take them out of the room (so, yeah, I sometimes don't put them back on the shelf after I'm done but they won't leave the room and will just be sitting on the desk here...so, the next day, I'll pick them up and put them back on the shelf again :)...and if I did ever "borrow" them to a friend...well, it's a "one-off" kind of thing to someone I already know...I'll just be able to remember that, anyway...and, as a friend, they'd generally be no problems about them giving it back...indeed, they'd probably remind me that I lent them the book when they bring it back rather than the other way around... So, it's perfectly okay not to have any great "system" in place for a small personal bookshelf like this...but it's NO WAY AT ALL to run a large public library (say, that of New York City's larger public libraries...or the Library of Congress or the British Library, for that matter :)... The "big and complex" problem is often _NOT_ simply the "small problem just made bigger"...new problems develop, new elements come into play...the "search for a particular book" is easy and fast when there's only 20 books but it becomes a non-trivial problem when we're talking tens of thousands or hundreds of thousands of publications...you _DON'T_ really want to be doing that kind of "search" by hand, yes? ;)... And listening to the typical assembly language "myths", we can cut a very direct "pattern" right through them: "assembly language is complex"...ummm, no...in isolation of individual machine instructions, it's not "complex"...on the contrary, instructions like "AND" and "OR" are _Boolean logic_...based on the _MINIMUM_ practical Turing machine of using _binary_...basically, from one perspective, the universe itself doesn't come any more "simpler" than this... So, what is the _real_ complaint when people say "assembly language is complex"? Ah, well...though individual machine instructions are the very definition of "simplicity", you need a lot of them to do anything useful and they "interplay" with one another...EFLAGS carries around a "context" that effects instructions so you can't look at an instruction in isolation (for example, the most obvious is that an "if" in HLLs is one simple statement but it's "multi-part" in assembly language...do each comparison, set the flags then do a conditional jump on those flags...indeed, the CPU can only do "simple" things and, thus, our more higher-level "complex" requirements of "a spread***" has to broken down and broken down and broken down until, indeed, it reaches a level comparable to Boolean logic and, well, you really _CAN'T_ break anything down much further than that! I don't just mean in programming terms, I mean _UNIVERSALLY_ you can't break anything down much further than that...this is about the most minimal "Turing machine" that's at all possible to create...well, there's "unary" instead of "binary" and "unary operators" only...but that's the only thing "lower" and it isn't a practical way to go about things at all (indeed, _can_ you make a Turing machine with unary and only unary operators? Anyone know the theory better than I? If possible, it's "only just" so and you certainly can't get any lower, in any kind of capacity)...you can't have "zero-nary", it's illogical :)... Anyway, yes...so, the problem isn't really "complex" in the sense that the instructions or such are "complex"...they are, in fact, the very definition of "simple"...it's the "large-scale problem"...there's _LOTS OF IT_ and it all "interacts"..._THAT_ is what's "complex"...hence, mark one down for "large-scale"... Another "myth": "assembly language is not practical for writing complete applications"...again, why? I mean, if you can write small programs and routines in ASM then wouldn't a complete project simply be "more of the same but bigger"? Ah, no...as we've established with the "public library" example, this isn't necessarily so...that when things get "big and complex", the problem itself develops new facets, more "problems" rear their ugly heads and so forth...again, this is "large-scale" behind the complaint... "Assembly language is impossible to maintain"; Again, why exactly? It's simple when looking at the machine instructions themselves...so, it's got to be this "big and complex" thing again...but, this time, from the "interaction" point-of-view...if you like, "too much is going on!! HELP!!" is the order of the day...it is _exceeding_ the limits of typical human thinking...those "global variables" are getting too numerous...the code is turning into a "jungle" of mnemonics and, increasingly, the more you look at it, the less you feel you're understanding anything... The underlying problem is "large-scale"...because most assemblers - in terms of language _AND_ "support" _AND_ how they work - are targetted at _ONE_ source file (though Rene does not pretend otherwise with "monofile programming" that he's _delibrately_ targetting such things, the truth is that most NASM and MASM programs are _ALSO_ "monofile programming" out there...you know, you _CAN_ perhaps make "libraries"...but, well, hands up who's actually done so and does so regularly? Well, we know Randy has done it...but anyone else? Note: My point isn't that it's not possible - on the contrary, it's _very_ possible - but is anyone actually making _regular use_ of that possibility? Ah, now that's a different matter altogether...generally, no, they are not...and, from that perspective, there is one small "saving grace" for Rene that at least he isn't trying to "pretend" otherwise...ironically, his "clips file" is a _step backwards_ - in my opinion, anyway - but it can't be criticised too harshly from the point-of-view that his RosAsm do actually _USE_ this mechanism...this cannot always be said for the "more advanced" BUT "rarely, if ever, used" library support features on other assemblers)...they are targetted at being, as Rene puts it, "a C-side tool" (that is, an "accompanying tool" for C language development, not "sea-side tool", as in a bucket and spade for building sandcastles, even if it does sound similar ;)... Indeed, it's even going as far as "self-fulfilling prophecy" in that the tools are only catering for "C-side tool" stuff because they _pre-determine_ that ASM is only good for such things... And none of this is missed on me in making my LuxAsm proposals..."blocks" introduce "divide and conquer"...keeping things "minimal"...the "seamless development" of the IDE and the associated "incremental" and "feedback" mechanisms to get us there...the "tight integration" (yet, true to "UNIX philosophy" as best as possible, it is composed of _singular-purpose_ "utilities"...the IDE simply - like GCC or HLA - "streamlines" the process by calling the utilities in order...but they are actually individual "singular purpose" modules running the show "behind the scenes"...using the command-line interface, this'll be more obvious :)...and I'm proposing centring on "libraries" as a central "hub" for development to work around... Unapologetically, I'm directly chasing after solutions for the "large-scale" problem...this is, ultimately, the true problem not only with acceptance and usage of assembly language...but is the central problem in _PROGRAMMING IN GENERAL_ too...software is becoming increasingly more difficult to deliver within "schedules", that "shortcuts" are being sought and this is where "bloat" is coming from...in a sense, I bet that not every Microsoft programmer is "ignorant" of the issue of "bloat" or likes it or anything (I mean, _someone_ in Microsoft's employ is an assembly coder too because they do code at this level and MASM, in fact, is still maintained because they _DO_ make some use of assembly language internally that they continue to develop and maintain MASM for themselves...they don't make any money from it anymore...Borland pulled out because that's not possible anymore...and even Microsoft - I mean, this is Microsoft, after all! - don't charge any money for it...a case of "we need this as an internal development tool BUT might as well make it publicly available, if it encourages people to write code for Windows and perhaps migrate to VC++ or something" :)... Crack the "large-scale" nut and _THIS_ is the best way to "kill bloat" and, if assembly shall ever be "reborn", then it's by such mechanisms...to tackle the root cause of all the "complaints"... Of course, I won't succeed...LuxAsm will only be a "half solution" for these issues (I Hope and intend it to be a _BETTER_ "solution" that currently exists but, no, no kind of "miracle"...I have no snake oil to sell...I mean, the world is full enough of salespeople lying about "Utopia" already, yes? But, if you want a hammer, then I'm intending to make it the toughest, shiniest, most useful hammer around...it'll be a good tool...but the "magic" is supplied by the _PROGRAMMER_...always was, always is and always will be...let's put those "shampoo adverts" about Utopia to one side, yes? ;)...I have no "delusions of grandeur" about that...it's too big a problem for that...but it's one "baby step" on the road toward that goal...the "next generation" will Hopefully pick up the gauntlet and "evolve" it all some more... Hence, "minimalism", as I mean it, fits into this picture: "divide, simplify, conquer" then "repeat as necessary" (the one phrase on a shampoo bottle that I _am_ subscribing to ;)...it does not mean "short"...whether it'll be "short" or not completely depends on how "big and complex" this project using LuxAsm is going to be...but the "minimalism" means that when "breaking into small, manageable chunks", those individual chunks are _easy_ problems to solve... To remove the extraneous complexity...to eliminate the "redundency"...a tool should _GET OUT OF THE WAY_ - be "unnoticable" - if it's _REALLY_ doing its job properly...hence, that "seamless development" / "incremental" / "feedback" thing isn't a "gimmick" for me...on the contrary, it's very important and central...with "seamlessness", combined with "minimalism" ("clear", "crisp", "clean", "obvious", "uncomplicated", etc.) and then "divide and conquer" modularity...well, _THAT_ is what I'm chasing after... And, as I've said, things like "assemble speed" are "more haste, less speed" red herrings...waiting for the compiler is NOT the "priority" problem here at all...indeed, modern compilers and assemblers rip through source code incredibly quickly...the problem is not the speed at which they do it, the problem is the amount of source code that they are required to deal with...you know, the problem is that underlying "big and complex" source code issue and, in fact, "assemble speed" is almost trying to "cover over" and "patch up" this problem...speed it up to almost "pretend" that the problem isn't there...that's why I'm proposing "incremental", "feedback" and "seamless development" because the root problem has never really been how fast the compiler can process the source code but the "start / stop" unseamless (or should I say "unseemly" instead? ;) nature of development...the way that authors ain't getting "feedback" until a while later in the development process... I hate advertising...I don't believe in "gimmicks"...every proposal has a _reason_ and some "thinking" behind it...okay, perhaps not the best thinking always or reasons people don't agree with...but it's not arbitrary...it all fits into a bigger "jigsaw"... I've done as much "hacking" as the next...I'm not anywhere near wolfgang, of course - is anyone? - but I have looked through those "hex codes" in the Intel manuals (for an assembler, in fact...but now LuxAsm will be that assembler :)...and I've done OOP stuff in HLLs too...not that this is a cirriculum vitae (for those that don't speak a foreign language: a resume'...sorry, Stephen Fry, but it's a great joke that I had to borrow it there ;)...but my point is that I _don't_ want to put "HLLisms" in there nor add "data typing" in the "core" nor put in "automatic this" or "behind-the-scenes that"...indeed, NASM's "no red tape" mantra I am taking to heart...it won't "please all the people all the time" but I'm trying to delicately tread the "middle path" and "unify" all these things...tackle the "large-scale" that plagues the entire industry, in a small little way for at least assembly language...and, well, "trust me, I know what I'm doing" (ummm, perhaps a bad quotation seeing as Frank Drebin didn't, in fact, have the slightest clue what he was doing...but, well, perhaps I don't either...but I think I do :)... Beth :) --__--__-- Message: 4 From: "Beth" <BethStone@UnlimitedMail.org> To: <luxasm-devel@lists.sourceforge.net> Date: Thu, 24 Feb 2005 01:27:31 -0000 Subject: [Luxasm-devel] Fw: More "unification" and LuxAsm syntax Reply-To: luxasm-devel@lists.sourceforge.net [ Just passing on this from the newsgroup...haven't sorted out the new Email to be the "default" for cross-posting to the mailing-list and posting to the group at the same time as yet :) ] ----- Original Message ----- From: "Beth" <BethStone21@hotmail.NOSPICEDHAM.com> To: <luxasm-devel@lists.sourceforge.net> Sent: Thursday, February 24, 2005 1:25 AM Subject: Re: More "unification" and LuxAsm syntax > Frankie say: > > Ro wrote: > > > Why is it[too much "minimalism"] not a good thing? > > > > Bcs t's hrd 2 rd. And now you've got Wannabee doing it too! > > His last reply to you was "." - I guess that's positive, but > > if he'd *really* liked it, he would have said "!" :) > > > > As I said, this *is* a matter of opinion, but I think you'll > > find that "most people" prefer a little more "visual clue" > > than the extremely "terse" styles provide. > > Yes; But, well, look at my average post length...does it look like I suffer > from the "TXTrs" disease of stunted linguistical growth and maturity? ;) > > It seems not only "concise" is being confused for "short" but so is > "minimal"...allow me to clarify: > > "Concise" = "information tightly packed; High expressiveness in short > distance" > "Minimal" = "least necessary; Redundency removed" > "Short" = "occupies small distance" > > For example, though not as extensive or comprehensive at its fuller cousin, > the "Oxford Concise Dictionary" is _NOT_ a small or short book...indeed, it > occupies a volume similar to a Bible alongside on my bookshelf (and that's > with the dictionary using a _smaller font_, abbreviations and wasting no > space on "white space" in any of the entries at all, than the Bible does > too ;)... > > If "concise" actually meant the same as "short" or "small" then the "Oxford > Concise Dictionary" (and, well, these people _should_ know better than most > what English words mean, considering who they are and what the publication > itself is ;), then the title would be a lie...as it is one of the least > "short-ish" books on my entire bookshelf...in fact, only the UNICODE > reference book is larger (but then this one gigantic book, covering all > characters in the entire UNICODE range, across hundreds of languages and > scripts)... > > And "minimal" neither means "short" either...I visited an art exhibition by > the "minimalist art" movement and the actual pieces of artwork were among > the largest I've ever seen (the American ex-billboard painter James > Rosenquist earns the "biggest" award, though, because in switching from > billboard painter to a "pop artist", he did _NOT_ decide to reduce the > scale of his artworks at all...indeed, they got _bigger_...only one room in > the entire exhibition could house his work which had to be lifted through > the roof by a crane and, even then, placed at a slanted angle because it > was longer than the room's length that it couldn't be placed flat against > the wall, even then..."big" does not sum up how stupidly massive this > "painting" was...the scale of his work has to be seen to be believed...this > other famous one by him - > http://www.guggenheim.org/exhibitions/rosenquist/highlights3_lg.html - for > instance, is 83 feet in length and 10 foot tall!! ;)... > > There was a large block covered in mirrors, taller than a person, cubed > (that is, "taller than a person in all three directions of space"...indeed, > it was a perfect cube so each side was the same length, of course ;), as an > example...VERY BIG stuff...the point in such "minimalism" is not that the > artwork is "small" or "short" but that it is "free of > extraneousness"...that is, it was just a large block whose sides were > mirrors...that's it...nothing more to it... > > I give not a crap for "short"...indeed, to be "minimal" might even > sometimes require _writing more_...I don't know about Rene's or Ro's > "minimal" but my "minimal" has NOTHING to do with "length" but everything > to do with _semantics_...when I mean "minimal", I mean "free of > redundency", "absent of extraneousness", "least required normalised form" > and so forth...it is a _qualitative_, not quantitative measure... > > For example, if I took a 83 foot long canvas - like Mr.Rosenquist - and > painted it completely red and then drew a single white line across > it...this would be "minimalist" but it would not be "short" nor > "small"...it is a reference, if you like, to the "amount of details" or the > "complexity", NOT to its "size"...indeed, it's quite possible that, in some > circumstances, making things "simpler" and "minimalist" in that regard, > could even lead to the overall "size" getting bigger...due to, > interestingly enough, a lack of "conciseness"...are we getting that these > words are NOT "synonyms" yet? ;)... > > Clean, clear, simplicity is what I'm after with "minimalism"...I give NOT a > single crap about "saving typing"...this is a trivial concern...what > matters with programming - where all the bugs and maintenance nightmares > and such stem from - is _COMPREHENSION_...two basic devices aid human > comprehension: "Divide and conquer" and "keep it simple, stupid!"...you'll > note that "blocks" is the "divide and conquer"...the other component is to > attempt to keep everything as "simple" as possible...the "UNIX philosophy" > of creating _SINGULAR-PURPOSE_ utilities...you know, "echo" just echoes > back whatever command line it's given...that's it...that is "minimal"...no > "bells and whistles", no "complex features" nor anything of that kind...it > just does _ONE_ job and does it well and does it _simple_... > > Solving big problems by making them a series of "simple small > problems"...each easy to solve...work your way through them and the "big > problem" is equally easily solved... > > This is in contrast to the opposing concept of making a monolithic tool > with 97,000 "features", each of such complexity you need a PhD in that > specific feature to even begin to understand how to use it, then proposing > that "big and complex solutions require big and complex tools"...Bzzt! > Wrong answer...the whole problem in the first place is "big and > complex"...adding on more "big and complex" makes it _HARDER_ to solve > because now you've got twice as much "big and complex" to work your way > through...on the contrary, the tool should pursue "minimal" that it does > not itself become "part of the problem"...and it should help to "break > down" the "big problem" into "a series of smaller, simpler problems" > because those are each much easier to deal with and, thus, aids dealing > with the "big problem"... > > Note: Much of the design for LuxAsm that I've provided _IS_ based on the > "large-scale" problem...this is with reason...as I'm sure Randy can confirm > (he knows these kind of things usually :), projects manifest new and > difficult additional problems when they go "large-scale"...it is not simply > "small program but slightly larger"...because the "size" begins to outweigh > the capacity of the human mind to naturally deal with (there is no shame in > this: It's the way all human beings are wired up...some more than others > but it is an essential trait we all share...scientists estimate that it's > something akin to roughly a "limit" of 7 different concepts can be > consciously wielded by the human mind simultaneously...thereafter, you've > got to start relying on "memory recall" and that's where problems start to > develop...indeed, _some_ people are better at this than others BUT, at some > point, _everyone_ will hit their "limits")...also, large projects tend to > be "team projects", due to, of course, trying to get something so "big and > complex" done by some "deadline"..."team interaction" brings in new > problems again...blah-blah-blah... > > "OOP" is a typical common solution used...it does the "divide and conquer" > thing..."encapsulates" the parts to "separate" and "decouple"...to break > the "interdependencies" between "modules / objects"...thus, allowing each > part to be its own _SMALLER_ "little problem" that's more easily > solved...this, indeed, is, in fact, the "WHY?" when it comes to OOP... > > As an example, I have my little bookshelf here...I just throw the books > onto the shelf in any old order because it's just one shelf of books (an > "essentials" kind of deal: a Bible, a dictionary, a thesaurus, a "word > origins" book, a maths textbook and then a bunch of programming > books...indeed, if you like, this is "minimal" again...I do have more books > elsewhere but for this "handy reference" shelf, I select the "minimal" > amount of "essential references" and put them on this shelf for "easy > access" while working away at my desk here)...this works because this is > "small project" stuff...the shelf is hardly long nor are there a great many > books on it...so, there's no need to "order" them because it takes no time > to scan across the shelf to find the book I want... > > BUT, consider the same situation in the "big and complex" arena: A large > city public library...tens of thousands of books, all across large and > varied "topics"...with potentially millions of "borrowers" to keep track > of...can you see a New York public library adopting the same "hackerish" > attitude to ordering and keeping track of their books? Er, no...that just > wouldn't work...wouldn't work at all... > > So, when the "bookshelf" problem enters into the "big and complex" arena, > then the "system" changes..._NEEDS_ to change or the "problem" is going to > become "undesirable", if not "impossible"...hence, books are categorised > with "category numbers" (the "dewy decimal system"...not to be confused > with the "duodecimal system", which is a different topic I also like to > talk about ;)...they are ordered alphabetically on the shelves...they are > divided into "fiction" and "reference" and so forth...when people borrow > the books, then they are stamped and the details scanned into a computer > system to keep track of all the books and borrowers...and if you do > something _short_ of this kind of system, then you're not being "big" nor > are you being "clever" because it'll bite you on the bum...you know, a > person coming into the library asks you if you have a book about "Fishing" > by J.R.Hartley (sorry, there's an "in-joke" there that only Brits will get > ;)...and, well, there's tens of thousands of books just randomly scattered > on the bookshelves because you couldn't be bothered to "sort" them and just > threw them in any old order onto the shelves...finding that particular book > amongst the shelves and shelves of books...well, best tell the potential > book borrower: "I think you'd better come back in two weeks...it'll take > about that long to go through each book one by one until I find the > specific one"...and then, when you do find it, you hand it to the borrower, > who walks out without giving any details of who he is or when he should > bring it back or anything...unsurprisingly, the books in the public library > slowly "vanish" one by one, as people just take them away and never bring > any of them back...and, hey, you can't do anything about it, really, > because you've not been keeping track of what books you did have, what > books have been "borrowed", who borrowed them or anything... > > You couldn't seriosuly run a large public library like that...but, on the > other hand, for my small little bookshelf next to me here, this is > perfectly fine...I don't really need to sort them alphabetically or give > them "category numbers"...there's only about 20 or so books here in > total...it's just _one_ bookshelf, hardly a "public library"...and there is > only _ONE_ "borrower" of the books and that's me...and I don't take them > out of the room (so, yeah, I sometimes don't put them back on the shelf > after I'm done but they won't leave the room and will just be sitting on > the desk here...so, the next day, I'll pick them up and put them back on > the shelf again :)...and if I did ever "borrow" them to a friend...well, > it's a "one-off" kind of thing to someone I already know...I'll just be > able to remember that, anyway...and, as a friend, they'd generally be no > problems about them giving it back...indeed, they'd probably remind me that > I lent them the book when they bring it back rather than the other way > around... > > So, it's perfectly okay not to have any great "system" in place for a small > personal bookshelf like this...but it's NO WAY AT ALL to run a large public > library (say, that of New York City's larger public libraries...or the > Library of Congress or the British Library, for that matter :)... > > The "big and complex" problem is often _NOT_ simply the "small problem just > made bigger"...new problems develop, new elements come into play...the > "search for a particular book" is easy and fast when there's only 20 books > but it becomes a non-trivial problem when we're talking tens of thousands > or hundreds of thousands of publications...you _DON'T_ really want to be > doing that kind of "search" by hand, yes? ;)... > > And listening to the typical assembly language "myths", we can cut a very > direct "pattern" right through them: "assembly language is complex"...ummm, > no...in isolation of individual machine instructions, it's not > "complex"...on the contrary, instructions like "AND" and "OR" are _Boolean > logic_...based on the _MINIMUM_ practical Turing machine of using > _binary_...basically, from one perspective, the universe itself doesn't > come any more "simpler" than this... > > So, what is the _real_ complaint when people say "assembly language is > complex"? Ah, well...though individual machine instructions are the very > definition of "simplicity", you need a lot of them to do anything useful > and they "interplay" with one another...EFLAGS carries around a "context" > that effects instructions so you can't look at an instruction in isolation > (for example, the most obvious is that an "if" in HLLs is one simple > statement but it's "multi-part" in assembly language...do each comparison, > set the flags then do a conditional jump on those flags...indeed, the CPU > can only do "simple" things and, thus, our more higher-level "complex" > requirements of "a spread***" has to broken down and broken down and > broken down until, indeed, it reaches a level comparable to Boolean logic > and, well, you really _CAN'T_ break anything down much further than that! I > don't just mean in programming terms, I mean _UNIVERSALLY_ you can't break > anything down much further than that...this is about the most minimal > "Turing machine" that's at all possible to create...well, there's "unary" > instead of "binary" and "unary operators" only...but that's the only thing > "lower" and it isn't a practical way to go about things at all (indeed, > _can_ you make a Turing machine with unary and only unary operators? Anyone > know the theory better than I? If possible, it's "only just" so and you > certainly can't get any lower, in any kind of capacity)...you can't have > "zero-nary", it's illogical :)... > > Anyway, yes...so, the problem isn't really "complex" in the sense that the > instructions or such are "complex"...they are, in fact, the very definition > of "simple"...it's the "large-scale problem"...there's _LOTS OF IT_ and it > all "interacts"..._THAT_ is what's "complex"...hence, mark one down for > "large-scale"... > > Another "myth": "assembly language is not practical for writing complete > applications"...again, why? I mean, if you can write small programs and > routines in ASM then wouldn't a complete project simply be "more of the > same but bigger"? Ah, no...as we've established with the "public library" > example, this isn't necessarily so...that when things get "big and > complex", the problem itself develops new facets, more "problems" rear > their ugly heads and so forth...again, this is "large-scale" behind the > complaint... > > "Assembly language is impossible to maintain"; Again, why exactly? It's > simple when looking at the machine instructions themselves...so, it's got > to be this "big and complex" thing again...but, this time, from the > "interaction" point-of-view...if you like, "too much is going on!! HELP!!" > is the order of the day...it is _exceeding_ the limits of typical human > thinking...those "global variables" are getting too numerous...the code is > turning into a "jungle" of mnemonics and, increasingly, the more you look > at it, the less you feel you're understanding anything... > > The underlying problem is "large-scale"...because most assemblers - in > terms of language _AND_ "support" _AND_ how they work - are targetted at > _ONE_ source file (though Rene does not pretend otherwise with "monofile > programming" that he's _delibrately_ targetting such things, the truth is > that most NASM and MASM programs are _ALSO_ "monofile programming" out > there...you know, you _CAN_ perhaps make "libraries"...but, well, hands up > who's actually done so and does so regularly? Well, we know Randy has done > it...but anyone else? Note: My point isn't that it's not possible - on the > contrary, it's _very_ possible - but is anyone actually making _regular > use_ of that possibility? Ah, now that's a different matter > altogether...generally, no, they are not...and, from that perspective, > there is one small "saving grace" for Rene that at least he isn't trying to > "pretend" otherwise...ironically, his "clips file" is a _step backwards_ - > in my opinion, anyway - but it can't be criticised too harshly from the > point-of-view that his RosAsm do actually _USE_ this mechanism...this > cannot always be said for the "more advanced" BUT "rarely, if ever, used" > library support features on other assemblers)...they are targetted at > being, as Rene puts it, "a C-side tool" (that is, an "accompanying tool" > for C language development, not "sea-side tool", as in a bucket and spade > for building sandcastles, even if it does sound similar ;)... > > Indeed, it's even going as far as "self-fulfilling prophecy" in that the > tools are only catering for "C-side tool" stuff because they > _pre-determine_ that ASM is only good for such things... > > And none of this is missed on me in making my LuxAsm proposals..."blocks" > introduce "divide and conquer"...keeping things "minimal"...the "seamless > development" of the IDE and the associated "incremental" and "feedback" > mechanisms to get us there...the "tight integration" (yet, true to "UNIX > philosophy" as best as possible, it is composed of _singular-purpose_ > "utilities"...the IDE simply - like GCC or HLA - "streamlines" the process > by calling the utilities in order...but they are actually individual > "singular purpose" modules running the show "behind the scenes"...using the > command-line interface, this'll be more obvious :)...and I'm proposing > centring on "libraries" as a central "hub" for development to work > around... > > Unapologetically, I'm directly chasing after solutions for the > "large-scale" problem...this is, ultimately, the true problem not only with > acceptance and usage of assembly language...but is the central problem in > _PROGRAMMING IN GENERAL_ too...software is becoming increasingly more > difficult to deliver within "schedules", that "shortcuts" are being sought > and this is where "bloat" is coming from...in a sense, I bet that not every > Microsoft programmer is "ignorant" of the issue of "bloat" or likes it or > anything (I mean, _someone_ in Microsoft's employ is an assembly coder too > because they do code at this level and MASM, in fact, is still maintained > because they _DO_ make some use of assembly language internally that they > continue to develop and maintain MASM for themselves...they don't make any > money from it anymore...Borland pulled out because that's not possible > anymore...and even Microsoft - I mean, this is Microsoft, after all! - > don't charge any money for it...a case of "we need this as an internal > development tool BUT might as well make it publicly available, if it > encourages people to write code for Windows and perhaps migrate to VC++ or > something" :)... > > Crack the "large-scale" nut and _THIS_ is the best way to "kill bloat" and, > if assembly shall ever be "reborn", then it's by such mechanisms...to > tackle the root cause of all the "complaints"... > > Of course, I won't succeed...LuxAsm will only be a "half solution" for > these issues (I Hope and intend it to be a _BETTER_ "solution" that > currently exists but, no, no kind of "miracle"...I have no snake oil to > sell...I mean, the world is full enough of salespeople lying about "Utopia" > already, yes? But, if you want a hammer, then I'm intending to make it the > toughest, shiniest, most useful hammer around...it'll be a good tool...but > the "magic" is supplied by the _PROGRAMMER_...always was, always is and > always will be...let's put those "shampoo adverts" about Utopia to one > side, yes? ;)...I have no "delusions of grandeur" about that...it's too big > a problem for that...but it's one "baby step" on the road toward that > goal...the "next generation" will Hopefully pick up the gauntlet and > "evolve" it all some more... > > Hence, "minimalism", as I mean it, fits into this picture: "divide, > simplify, conquer" then "repeat as necessary" (the one phrase on a shampoo > bottle that I _am_ subscribing to ;)...it does not mean "short"...whether > it'll be "short" or not completely depends on how "big and complex" this > project using LuxAsm is going to be...but the "minimalism" means that when > "breaking into small, manageable chunks", those individual chunks are > _easy_ problems to solve... > > To remove the extraneous complexity...to eliminate the "redundency"...a > tool should _GET OUT OF THE WAY_ - be "unnoticable" - if it's _REALLY_ > doing its job properly...hence, that "seamless development" / "incremental" > / "feedback" thing isn't a "gimmick" for me...on the contrary, it's very > important and central...with "seamlessness", combined with "minimalism" > ("clear", "crisp", "clean", "obvious", "uncomplicated", etc.) and then > "divide and conquer" modularity...well, _THAT_ is what I'm chasing after... > > And, as I've said, things like "assemble speed" are "more haste, less > speed" red herrings...waiting for the compiler is NOT the "priority" > problem here at all...indeed, modern compilers and assemblers rip through > source code incredibly quickly...the problem is not the speed at which they > do it, the problem is the amount of source code that they are required to > deal with...you know, the problem is that underlying "big and complex" > source code issue and, in fact, "assemble speed" is almost trying to "cover > over" and "patch up" this problem...speed it up to almost "pretend" that > the problem isn't there...that's why I'm proposing "incremental", > "feedback" and "seamless development" because the root problem has never > really been how fast the compiler can process the source code but the > "start / stop" unseamless (or should I say "unseemly" instead? ;) nature of > development...the way that authors ain't getting "feedback" until a while > later in the development process... > > I hate advertising...I don't believe in "gimmicks"...every proposal has a > _reason_ and some "thinking" behind it...okay, perhaps not the best > thinking always or reasons people don't agree with...but it's not > arbitrary...it all fits into a bigger "jigsaw"... > > I've done as much "hacking" as the next...I'm not anywhere near wolfgang, > of course - is anyone? - but I have looked through those "hex codes" in the > Intel manuals (for an assembler, in fact...but now LuxAsm will be that > assembler :)...and I've done OOP stuff in HLLs too...not that this is a > cirriculum vitae (for those that don't speak a foreign language: a > resume'...sorry, Stephen Fry, but it's a great joke that I had to borrow it > there ;)...but my point is that I _don't_ want to put "HLLisms" in there > nor add "data typing" in the "core" nor put in "automatic this" or > "behind-the-scenes that"...indeed, NASM's "no red tape" mantra I am taking > to heart...it won't "please all the people all the time" but I'm trying to > delicately tread the "middle path" and "unify" all these things...tackle > the "large-scale" that plagues the entire industry, in a small little way > for at least assembly language...and, well, "trust me, I know what I'm > doing" (ummm, perhaps a bad quotation seeing as Frank Drebin didn't, in > fact, have the slightest clue what he was doing...but, well, perhaps I > don't either...but I think I do :)... > > Beth :) > -- http://TheWannabee.org
- Next message: Percival: "Re: Broken links in ASM FAQ???"
- Previous message: Betov: "Re: Math in asm... and limits..."
- Next in thread: NoDot: "Re: A status rapport from LuxAsm list"
- Reply: NoDot: "Re: A status rapport from LuxAsm list"
- Reply: Beth: "Re: A status rapport from LuxAsm list"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]