I’ve been using LyX a lot recently. Scientific professionals use LyX for the same reason your Aunt Marge uses Microsoft Word: producing documents on computers. LyX and Word do roughly the same thing, but two taps on the spacebar in LyX have the curious effect of moving the spacebar only one space to the right. In Word, the same two taps would have moved the cursor over two spaces. While a LyX novice might dismiss this minor inconsistency as a bug in the software and move on, this seemingly strange behavior is no accident, and in fact exemplifies a vast disagreement over how computers should handle text.
Microsoft Word is a good example of “What You See is What You Get” behavior. When the program opens up, you get a blank page on the screen. If you’re at all like me, you’ll type about one sentence and then realize that 12-point Times New Roman looks like a train wreck, so you highlight the text you’ve written and pick a different font - maybe Arial? The thing is though, you can only highlight text that’s actually on the screen, not text that you’re about to write, and I’m pretty sure any serious user of Word has, at some point, found themselves in the curious situation of trying to control the font of text that’s going to be onscreen, but isn’t now. After years of using this program, I’m still never quite sure if the next word I write after a font change will be in the new font, or the old one. This future-font conundrum is a direct consequence of Word’s “What You See is What You Get” paradigm - if you want to change a font, highlight some text and click the font, and you’ll see your changes onscreen right away.
LyX is a structural editor. Instead of changing your fonts case-by-case, you tell it the structure of your document - title, heading, section, etc. - and it styles everything for you. If you’re used to typing in Word, the apparent loss of control you’ll experience when you realize that the program simply does not offer the ability to change fonts in a WYSIWYG manner will be quite alarming. For the same reason it doesn’t allow WYSIWYG formatting, it doesn’t allow typing two spaces between words, because that’s not the document’s style.
At this point, you’re probably questioning why I would ever want to use a piece of software that takes so much control out of my hands. Consider this: LyX offers the ability to style an entire document wholesale with the click of a mouse. Want your section headings to be a bit bigger? Then change the size of the “Section Heading” style for the entire document. With structural markup, it is possible to change the styling on a book as thick as a dictionary with about 5 mouse clicks. If you’ve ever tried to highlight multiple pages of text in Word, dragging the mouse like crazy, all the while skipping hand-made formatting changes, you’ll appreciate structural styling. As a bonus, LyX even knows how to hyphenate lines, and better, it will do it between syllables, without you even asking.
If you think I’m a fan of structural markup, you’re right, but that’s not the end of the story. You see, structural markup has real advantages, but it’s got its problems, too. For one, it takes a lot of effort to learn how to use a new piece of software, and I’ll admit that editing documents in a non-WYSIWYG way is far less intuitive. Moreover, structural typesetting requires one to style documents using a style template, which is often a bigger chore than it’s worth when writing a one-page letter. Even so, Microsoft realized that structural typesetting is the only reasonable way to manage a large typesetting project (say, a book), so they actually went ahead and made word capable of structural formatting. If you look deep enough, there’s something like a “Styles and Formatting” sidebar in Word that lets you style headings, and change them as a group. However, most people will never use this feature, because despite its limitations, they find WYSIWYG acceptable for their five-page papers and reports. Additionally, have you ever started to type a few items, only to have Word figure out that you’re typing a bulleted list, and then go ahead and bullet it for you?
The biggest gripe I think many people have with Word is that it is mostly a WYSIWYG editor, but it also tries to incorporate a few structural behaviors here and there, like bulleting and numbering lists. Word’s usability suffers because you’re always left guessing about whether it’s going to do the structural thing or the WYSIWYG thing (ever had the paper clip tell you “It looks like you’re trying to write a letter…”), and I still can’t figure out what to expect. On a good day, Word seems to know what I’m doing, but on a bad day, I can spend five minutes fighting to make it stop changing the (c) subpoint of a list into the copyright symbol.
Interestingly enough, I’ve started to observe the same problem with programming languages. While some languages are explicitly procedural (C comes to mind), other so-called “multi-paradigm” languages exist which try to let the programmer choose whatever paradigm (object-oriented, procedural, imperative, etc.) he prefers. Two especially egregious examples of this are Perl and PHP, both of which grew out of a distinctly procedural heritage (C) but tried to add object-orientation after the fact. What’s resulted is a huge hodgepodge of object-oriented and procedural code in libraries, modules, and even documentation, and it’s very hard to navigate.
I’m not sure that programming language can ever do more than one paradigm effectively. A language can’t really “switch” paradigms when it’s in wide use, as doing so would be a catastrophe for backwards compatibility (of both code and documentation). On the other hand, the language could make a clean break when its designers want to take it in a new direction, but big changes always seem to come a little at a time, and it’s often not clear when one has occurred until after the fact.
“Doug McIlroy, the inventor of Unix pipes and one of the founders of the Unix tradition, summarized the philosophy as follows:
“This is the Unix philosophy:
Write programs that do one thing and do it well.
Write programs to work together.
Write programs to handle text streams, because that is a universal interface.”
This is usually severely abridged to “Do one thing, do it well.”
Of the three tenets, only the third is specific to Unix, though Unix developers often emphasize all three tenets more than other developers.” — wikipedia
Isn’t it ironic that Perl is considered such an icon of the Unix world?