Tuesday, January 12, 2010

mini languages that non programmers can understand

There are hopefully a number of mini text based programming languages that non-programmers can understand. But what are they?

One that I've used in the past is something like this:

Which would parse into a python/javascript data structure like this:
{name: 'Bob',
gender: 'male/female',

It's suprisingly common in things like search engines. Grandmas who occasionally check their email might not get it (but many do I'm sure!)... but I think a lot of others do. For things like search it is ok, if people know the magic 'terms'. If they do not know the terms, then they can just enter text to search normally. The mini language is used by advanced users.

This is quite good for single line free form data entry. Since people only need to know the concept that you have 'key:value'. It's slightly easier than using urls, since separators can be different things.

csv files

Next up are comma separated files - csv.
For example:
These are like spread sheets. Many people seem to be able to edit these quite fine. Especially if they have a spread sheet program to do the editing.


URLs are a mini language. With things like # anchors, query strings, and even paths being used by people all the time.


ini files

Common as configuration files.

subsitution templates

Common for web sites, and email systems.

Hi ${name},

${age} ${gender}

basic html and other mark up languages

Quite a lot of people know bits of html. 'How do I do a new line? oh, that's right: brrrrrrrr.'

However, I think that html is on the edge of too complicated. Modern html is especially complicated.

Things like markdown, bbcode, and wiki languages all fall into this category. The languages can sometimes have only 5-10 elements - which make them easy to learn the basics.

Older Wiki language text could look just like text someone would write in notepad. However modern ones - like html - now have all sorts of ${}[]==++ characters with special meanings.

Are there any other mini languages which are easy to understand for non-programmers?


Dougal said...

Python is probably easier to read than some of those if just parts are used.

For example, just like a Django settings file.

Otherwise, JSON?

illume said...

ah yeah. json and python are both good examples. However json is more on the simple side, and python can get quite complicated. I guess some people use a subset of python, just like json is a subset of javascript.

Others are twitter, irc and even sms speak I guess. 'send your age to 9293XXX now' type stuff is kind of a mini programming language.

Juho Vepsäläinen said...

Perhaps BibTeX? Interestingly Lua supports it directly by design.

kindly said...

I quite like making parsers for mini languages and have made a few.

If you are going to use json, you might as well use YAML (you can even have directives). I like yaml but users seem not too (or json of course).

Even though it makes my blood boil to say it, lots of non technical users know basic html. So a little horrible xml syntax people get used to tags. ie
bob. Its verbose and horrible, but it goes down pretty well and there are plenty of parsers around.

Also wiki markup is a language of sorts (so is reStructuredText).

Other than that write your own. I use pyparsing. There are plenty that do in the python world.

Pyparsing Users

There is a Bibtex parser in there.

Also look ay the examples

fumanchu said...

$ ls -la

Most UNIX users get that one, even if they're not programmers.

2 + 2 = 4

Most modern Westerners understand that one.

The problem with calling such things "mini-languages" is there's no real floor--there's a pretty continuous line of simpler and simpler "languages" until you devolve into symbology and semiology. Cutting them off at "text-based" seems pretty arbitrary.