It's been a long time, but ~10ish years ago, I was doing something DNS-heavy in C, and ldns was a pleasure to use after being spoiled by Perl's Net::DNS. I think the ldns API was in fact built to resemble Net::DNS.
Either way, it was a pleasure to use. And if you know dig, drill will feel very familiar.
also, drill helps with dnssec resolution, which I don't know if any recent dig version supports.