Hi,
SpyderTL wrote:Brendan wrote:Intellisense, autocomplete and tooltips are only minor conveniences;
Whoa! That's quite a statement.
I'm guessing you haven't actually written any assembly language before. Do you honestly think that (e.g.) auto-complete or tool-tips are helpful for something like "lodsb" for any assembly language programmer that isn't a complete beginner?
SpyderTL wrote:Brendan wrote:while hideously unusable syntax is an extreme inconvenience. The advantages don't justify the disadvantages in the slightest.
I'm, obviously, going to go ahead and, sort of disagree with you there...
<sentence><word>You</word><word>can</word><word>think</word><word>what</word><word>you</word><word>like</word><exclamation/></sentence>
Seriously; why not post an example of your "XML assembly" code somewhere (like the #asm IRC channel on freenode, or alt.lang.asm newsgroup, or the FASM forums), and ask actual assembly language programmers to comment on the syntax? I'm sure that you'll get important feedback.
SpyderTL wrote:Brendan wrote:By storing source code in a binary form (e.g. as "tokens") you don't need a scanner and can improve the efficiency of both IDE and compiler. In addition, (at least in my experience) this reduces source code file sizes to about 80% of the "plain text" equivelent.
Yes, byte code is physically smaller than ASM text files. And .NET IL is physically smaller than C# text files. Binary files are smaller than text files. But no one uses a keyboard to type in binary files. You need a significant user interface in order to "translate" the binary data into something that humans can easily manipulate. Significant user interfaces were pretty difficult to come by in the 50's.
Yes; so instead of doing it right (and implementing a suitable editor), they were lazy.
Note that this isn't technically accurate. For example, in the late 1970s and early 1980s there plenty of systems that encoded text into tokens as you entered it and converted tokens back into text for display (mostly for both performance and space reasons).
SpyderTL wrote:Brendan wrote:Basically, plain text is bad. In 1960 someone was too lazy to define a proper source file format and provide a suitable IDE
That may have been due to the fact that you were limited to about 2-4KB of memory...
The reverse actually - when there's severe limits on RAM and CPU speed you want to do everything you can to avoid wasting RAM and wasting CPU time.
SpyderTL wrote:Brendan wrote: - it amazes me that programmers can't do the same for their own tools.
Same here. That's kind of why I decided to go back and revisit all of those design decisions. But I'll admit that I've tried to come up with a non-text development strategy, and it turns out that it's not quite as easy as you would think. Did you have something specific in mind as a user interface?
The user interface is just an interface - it doesn't effect the source file format, and it's the source file format that I'm mostly talking about.
However, I only have preliminary ideas for the IDE's user interface. The first version of my IDE will be similar to a traditional IDE (e.g. user enters text and sees text, without necessarily knowing or caring that the IDE is converting to/from tokens while they're typing), but probably with a little "source code style" configuration option (so different people can set their IDE to "native style" or "C-like style" or "no braces Python-like style" or whatever they want). Then I'll add features to extract information from the source code and generate diagrams (e.g. dependency diagrams, etc) to make it easier for people to "see the forest amongst the trees" and to aid navigating through the project. After that I'd probably add a "drag and drop" style to it (mostly for children and/or touchpad support).
Beyond that, I don't know. Ideally, I want people to be able to manipulate source code in some sort of 3D environment; possibly where the CPU/s are represented as machines that follow a track, and things like branches, loops and function calls are just track layout, and expressions/statements are devices placed on the track.
SpyderTL wrote:Brendan wrote:It's less human readable for people
... than what? 3 character instruction mnemonics?
Yes.
To improve "<cpu:CopySIAddressToAXAndIncrementSI/>" you could maybe use an easier to remember and easier to type acronym (like "cpSI2AXincSI"); then realise that the "cpu:" part is worthless hassle, and that encasing it in angle brackets is for your convenience not the end users and should be removed. The end result of all these improvements would be "cpSI2AXincSI", but then an even shorter mnemonic like "lodsb" would be even better (even if you ignore the fact that "lodsb" happens to match all the existing documentation everywhere, or that all 80x86 assembly language programmers are already familiar with it). If you actually need a huge wanky paragraph, then add it as a tool-tip.
SpyderTL wrote:Brendan wrote:, and less efficient (more expensive for scanning and parsing, and larger file sizes) for computers.
Yeah, at build time. Who cares if builds take 500 ms longer?
Um, what? You realise 500 ms is half a second?
For my current project; a script builds my own "build utility", then it checks everything and regenerates my any web pages that changed (docs, etc), builds any utilities that changed, uses those utilities to compile anything that needs to be recompiled, and generates a full backup (and manages my backup directory); and this typically takes less than 10 ms. Absolute worst case (everything fully rebuilt entirely from scratch) currently takes 820 ms.
This is important. It means I can press F12 (a keyboard shortcut to build everything) and have everything done very quickly with no silly distractions breaking my train of thought. It means that my "edit, build, edit, build, edit, build, test" cycle is as productive as possible.
SpyderTL wrote:Brendan wrote:The only "benefit" that XML has is that it allows the developer to sacrifice quality to reduce development time. Basically, XML/XSLT are tools that allow lazy/incompetent people to create crap.
Developers are perfectly capable of writing crap code in any language that I'm aware of. Preventing that at the language level would be pretty impressive.
Yes, but the opposite isn't true - it's impossible to write good code in some languages. Basically, it doesn't matter how good you are as a programmer, if you use XML/XSLT the end result will be crap.
SpyderTL wrote:I've already listed numerous "benefits" to using XML in this thread. You'll have to go back and find them... But suffice to say that your statement that XML only has one benefit (reduce development time) has not convinced me.
Don't worry - I understand that you wouldn't want to create a concise list showing that all of the "benefits" are for the developer and not for the end user.
Cheers,
Brendan