Hi all,
Semmle's vision sounds very promising to me. I'm a newbie to query languages, but I'll just share my opinion anyway. I've seen an SQL script recently where some action was carried out for every database in the system. What striked me was the fact, that just enumerating the databases took > 100 LOC. Basically, it was like this:
- check if a temporary table exists, and if yes, drop it
- create a temporary table
- select all databases
- filter out system databases
- write the results to the temp table
- while there is a record in the temp table
- process the record
- delete it from the temp table
- repeat until temp table empty
- drop the temp table
I mean c'mon, isn't that just too low level? My impression was that SQL was definitely not expressive enough for this particular purpose. And, SQL is poorly (if at all) extensible. There is no (or hardly no) syntactic sugar. The syntax is awkward only for the sake of easy parseability.
So my opinion is that it's just about time to start filling the gap with query languages and I'm glad to see Semmle doing such a terrific job in this area. It would really be great to have expressive, powerful, flexible and extensible languages and tools specifically created and optimized for querying.
I wonder, what long-term strategy would be the best for query languages? Looking at general purpose programming languages, I can see two trends. First is creating a microkernel language (like Lisp or Nemerle) and allowing users to extend it themselves using syntactic macros or quasi-quotation. The second is explicitly disallow extending the language (like C#), but instead carefully choosing and hard-coding distilled most-wanted features manually. Both ways seem to be promising, so I wonder what path will .QL go...

Anyway, best successes and I'll keep in touch.
Thanks,
Kirill
www.osenkov.com