This is not a summary of Jay Fields’ talk but mostly the thoughts it inspired me.
To make it clear, in Martin Fowler’s nomenclature, Business Natural Languages are external Domain Specific Languages. That being said, they tie pretty neatly with the major principle of software development that you should establish a common language between the parties involved in a project (which, in the context of QCon is a tenet of Domain Driven Design).
Anyway, the basic principle is that you create a language that is close to natural language but applies only in a specific context in the business and you create a user interface from it. This is the grand rediscovery of text based interfaces, which many of us know are much more efficient than graphical user interfaces in many cases. The example that specifically spring to my mind is Summit System’s quick entry for some trades that applied that exact principle by enabling the users to use their terse business language, the very same one they use on the phone all the time.
I would go a step further. Defining that language probably is a very useful step in the design of a graphical user interface. Because to be natural and easy to use, the graphical user interface should embody that business’ language.
I can see a few obvious examples of when this kind of textual interface can be very efficient. One case:
- A part of the business that would lead to a fairly complex dialog box with plenty of optional fields,
- That is not constantly and repeatedly used (until there are efficient embeddable language workbenches).
The other (as illustrated in the previous example):
- A terse syntax already exists in the business that would make even a simple GUI clunky (for instance because selection from list is too long).
It could also be very useful to program query in a less formal setting, like processing e-mail business queries in a partially automated fashion.
Jay Fields used regular expressions to create his BNL languages. However, outside the context of his projects, I feel that using formal grammars and tools (like lex/yacc, antlr or similar) would make the language easier to maintain and enrich.
A final point that was stressed during the presentation is that such languages should be very simple and specific to an area of the business. Remember that computer understanding of natural languages in general is a very complex problem.