The Artima Developer Community
Sponsored Link

Programming Close to the Domain
A Conversation with Andy Hunt and Dave Thomas, Part VI
by Bill Venners
April 7, 2003

<<  Page 3 of 3


Declarative and Imperative Languages

Bill Venners: Differentiate between declarative and imperative languages. What are the advantages and disadvantages of both?

Dave Thomas: I prefer to code declaratively, because at the business level we're not executing a series of instructions. We're dealing with data. The longer I can keep my code at the data level, the closer I'm coding to the application domain. If I can find a way to express the program in terms of data and the relationships between data, I find that keeps me at a higher level longer. Alternatively, if I need to control, or if I need to be very specific about the order in which I do things, then I want to get down to the imperative level. What I don't want to do is jump back and forth between the two models in the same chunk of code. Because then you get the whiplash effect that Andy was talking about. You go back and forth and back and forth and you aren't sure what you're doing. Everything gets muddled up. If I can instead keep things nice and separate, I find I can focus very strongly on whether I am doing application level code or low level geeky code.

Andy Hunt: Declarative programming is really another example of programming closer to the user's domain. Look at SQL. SQL is a great example, because it is primarily a declarative language. With a typical select statement, you say, "Get me these fields from this table." You don't say how. Your don't say in SQL, "Chase down this pointer. Get this file off disk. Chase through this btree index. Optimize it." You don't say any of that. You say, "This is what I need. You go figure it out. Go get this for me." That's getting closer to programming the intent of the user: "I want this. I don't care how you do it. Just make it happen."

Next Week

Come back Monday, April 14 for Part VII of this conversation with Pragmatic Programmers Andy Hunt and Dave Thomas. If you'd like to receive a brief weekly email announcing new articles at, please subscribe to the Artima Newsletter.

Talk Back!

When do you use domain languages? When do you program in low-level bits and bytes? Discuss this article in the News & Ideas Forum topic, Progamming Close to the Domain.


Andy Hunt and Dave Thomas are authors of The Pragmatic Programmer, which is available on at:

The Pragmatic Programmer's home page is here:

Dave Thomas was not the first person I've interviewed who mentioned the arcade game Whack-a-Mole. James Gosling also called upon the versatile Whack-a-Mole metaphor while pointing out that it is sometimes hard in engineering to know if you've solved a problem or moved it:

The Agile Manifesto is here:

Ward's Wiki, the first WikiWikiWeb, created by Ward Cunningham, is here:

Extreme Programming: A Gentle Introduction: An Extreme Programming Resource:

<<  Page 3 of 3

Sponsored Links

Copyright © 1996-2018 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use