I just read a brief job description for a software developer in which it says the software is efficient because it is language driven. I had never heard that term before so I tried looking it up. I found some papers that were theoretical in nature but I could not easily find anything explaining in practice what “language driven” means.
This particular company makes business software. It is not writing new languages or anything like that.
It is, yet again, Lisp in new clothing; this time, it’s people noticing that once you have a real macro system, you can design domain-specific languages (hence ‘language-driven’) to express your program in a more readable form.
That is, read macros and macros, all compiling to a common s-expression syntax to run on a given Lisp implementation. Except they won’t be called macros and the underlying language won’t be called Lisp.
There is definitely a sweet spot for any kind of tool. Often, the number of times a specific “tool” (or portion of a tool) can be used isn’t frequent enough to offset the development time or training time required to use it efficiently.
I see things all the time I would like to automate, but frequently they are maddeningly just below the line of “makes sense to automate”.
Derleth, I saw that page and I could not understand how it could pertain to a Java software developer job, which was what was being described as “language driven”. Actually it was not clear whether “language driven” pertained to the company, the development process, or the software itself, so I am guessing that they were referring to the development process.
The exact quote was: “[Company name] does this much more efficiently because it is language driven.”
I think I figured it out. The website of the company says they have developed their own “language” that non-programmers in their target industry can use to customize their software. I don’t think it has anything to do directly with the job I would be doing. But while trying to figure this out I found a whole world of stuff that I had never heard about. So I would still be interested in hearing responses from anyone who actually knows what this stuff means (e.g. the papers I linked to).
Oh, shit. I would pay to see some of the crap those ‘non-programmers’ (read: untrained, inexperienced programmers who don’t see themselves as programmers and don’t know how to learn to program better) are going to churn out if their product takes off. Excel alone probably accounts for a large fraction of the software written in the business world, and practically none of it is written by people who have been taught how to write software maintainably.
Oh well. Someone has to keep The Daily WTF supplied with object lessons.
It all depends on what we call “programming”. You’re right that programming requires a programmer for it to be decent.
But I have created and used many tools that allow paint-by-numbers style development of reports, queries, data entry forms, etc. - and it can be effective for developing business related stuff.
Donald Knuth developed a language, Tex, that enables non-programmers (me) to set mathematics into type. It works beautifully. While it is possible to just use it and not program in it (that is, make macros) it certainly simplifies life to use it as a language. Of course, complex macros are developed by programmers, but using it as a language. And programmers have also supplied support software (e.g. makeindex, which does exactly that, out of instructions in the source file). And I have almost always found it saved time and effort to turn long or complicated things into macros if used more than a few times.
Yeah, both of you have a very good point; I’ll add R and C++ templates to that list, given that they’re both ‘Pareto-optimal’ languages in that 1% of the features cover 99% of the real-world use-cases (and, yes, they’re both Turing-equivalent, with C++ templates being a pretty fair implementation of the lambda calculus evaluated entirely at compile time).
(R is a statistical language, a prime example of a domain-specific language that’s mainly valuable for sitting on top of a very large, very useful library of functions.)