Periodically, I have another go at using LaTeX to see if it's still as ghastly as I'd remembered. So far, my current attempt has gone on for longer than any of the others, and I haven't yet run screaming back to plain TeX. (
Rant about the evils of LaTeX )
I dislike BiBTeX - mainly because it never has the formats I want. I don't think I should have to sort this out myself. :-)
LaTeX IMO needs rewriting from scratch. I'd like to see a language that allowed for easy editing both by humans and WYSIWYG interfaces. Metafont is fantastically elegant, but typography has moved on in the last twenty years. Even the layout engine needs work - there is no good solution in place for wrapping lines with long words elegantly, for example, and LaTeX's placement of pictures is a pile of crap - I want to specify constraints, eg "this image must be before this other picture, within two pages of the start of that section heading and preferably after it; you can resize it by up to 10% if that helps".
I tried to get a rant about how much I hate Perl's syntax in here but I couldn't make it relevant.
Reply
I agree with you about rewriting (La)TeX from scratch. And about the picture placement. What I'd like to do, actually, is write a TeX-like language as an embedded DSL within (say) O'Caml, so you could take advantage of having an ACTUAL PROGRAMMING LANGUAGE around when writing extensions. A lot of the pain of extending TeX is down to the fact that it's based on macro-expansion, so you have no variable scoping or anything like that. If it were based on a less brain-dead paradigm, then implementing a constraint engine for picture placement ought to be slightly less ghastly than it is now, and you could do stuff like pretty printers for code with relative ease.
LyX is (sort of) a WYSIWYG interface for LaTeX, as is TeXmacs: I've tried LyX (and gave up on it quickly), but not TeXmacs. DocBook might be closer to what you want, but something about it makes me shudder. Verbosity, probably. Ask GDS, he's used it and likes it.
Perl syntax is too complicated, I completely agree. If I don't use a feature much, I end up looking it up every time - references are a major villain here (and why do we even need them? At least by default). I'd be interested to read your rant.
Reply
http://savannah.cern.ch/
I definitely recognise the problem though. GDS and I were writing an internal memo on VCS before he left the department, in reaction to exactly that sentiment. :-)
The perl syntax rant would be hard to write due to my largely successful efforts to forget most of its horrors, but maybe I'll keep notes next time I have to write some...
Reply
The other thought I have about VCS is that it would be very useful for collaborating on documents. Stick your TeX source in a VCS, and away you go... I'm using Darcs for a paper I'm writing atm, and it's been moderately helpful, but it would really come into its own if I had a collaborator.
Reply
I was chatting to an accademic the other day who was so convinced of this fact, that she wrote a web front end to her subversion install, so that her less IT-literate collaborators could still use it to collaborate with her. They reacted very well to the experiment - productivity, as they say, is up.
LFM vs LFSP:
Those that know me will probably have guessed that I instinctively rail against the idea that there is a one dimensional "smartness" axis. Most of us on the net accept that a person can have characteristics which were once considered symtomatic of being "dumb" (an inability to catch sarcasm or irony, for example), while still being first class mathematicians. I believe that people are often different in more ways than is easily enumerable, and that this notion of a hierarchy of 1337ness in programming languages is likely not a useful one. Possibly actively damaging.
I note that my 2 favouriate languages for writing programmes are haskell and java. Haskell helps me to think in elegant ways about little, subtle things and java helps me to think in elegant ways about really big (and sometimes surprisingly subtle) things. I've written quite a lot of java, and never once thought "if I have to write one more while(iterator.hasNext()) I shall scream" - I think because I was always occupied by what was going on at the UML level at the time.
The accademic I mentioned earlier talked in that same conversation about what I shall call the religion of modularity. It's a religion that she takes care to propagate among her students, and it has many names. "the UNIX philosophy of small tools", "structured programming", "modular programming", "OOP", "AOP", etc. At the end of the day, it's all about doccumenting interfaces, and keeping all the little chunks between the interfaces small enough to fit in one head. All these programming paradigms (so she said) are tools for achieving that goal. I think I believe her.
A problem she noticed was that when she was teaching particularly "bright" students (especially in environments full of other particularly "bright" students - for some value of "bright" which is functionally defined on the task in hand), was that they could hold more in their heads than the national average. Getting them to write in units small enough to be maintainable by any programmer they were likely to work with in a future career could be a real challenge.
Perhaps an LFSP - or at least the impression of one - gives us the excuse we need to do just that? To exercise the mind by writing as abstractly as possible, or in as few as possible lines, or as CPU or MEM-effeciently as possible, or whatever? Because writing it the obvious way is just far too dull....
If that's the attraction, then perhaps all languages are LFSPs - you just have to find the metric to brace your mind against when you're writing in it.
Perhaps the world would be a safer place if we took hourly 5 minute perl-golf/ioccc/icfp-programming-contest/whatever breaks from our nuclear coolant system jobs?
--gds
Reply
Leave a comment