Take the 2-minute tour ×
English Language & Usage Stack Exchange is a question and answer site for linguists, etymologists, and serious English language enthusiasts. It's 100% free, no registration required.

I am not very clear about the word boilerplate when it comes to programming. How is it different to other similar terms such as template and prototype? I would appreciate some examples that clearly explain the difference.

share|improve this question
3  
Isn't this question more appropriate to SO? –  Em1 Nov 2 '12 at 14:01
1  
@Em1 I would tend to disagree, since it is purely a question on English terminology. "How do you write boilerplate code?" is more like something that belongs on SO. –  Ataraxia Nov 2 '12 at 14:22
    
What these terms mean in the context of programming, as the OP clearly sets out in his question, is in the expertise of SO. –  Kris Nov 2 '12 at 14:48
2  
IMHO, nine times out of ten, boilerplate is dismissive/derogatory, and this is a more significant difference than the finer semantic distinctions between OP's three terms, since the other two are invariably either positive or at least neutral. –  FumbleFingers Nov 2 '12 at 15:21
    
I would see this better at programmers.SE than here. But then again it got moved from there in the first place... –  MPelletier Nov 2 '12 at 16:00
add comment

5 Answers 5

There are, of course, many definitions. As we can see in these answers, even in programming it can have different meanings. I'm here to provide a web development perspective.

The New Oxford American Dictionary (via Dictionary.app) defines "boilerplate" as follows (among other definitions, but this one applies to technology):

… standardized pieces of text for use as clauses in contracts or as part of a computer program: some sections have been written as boilerplate for use in all proposals.

To me, as I put on my developer hat, it can be described as a starting point. When I hear boilerplate, I immediately think of the HTML5 Boilerplate, which describes itself as a "professional front-end template for building fast, robust, and adaptable web apps or sites." It's consists of a simple folder structure and some basic files (most importantly the feature-rich and cross-browser compatible CSS and HTML)—a very useful starting point to kick-start web projects.

Basically, these are my personal definitions in the context of the great Interwebs:

A prototype is a bare-bones version of a specific project. I may make a simple prototype of an application and include only the most important features to send to colleagues or a client to look at—a demo. We may then evaluate if and how to move forward, perhaps with the help of some UX testing.

A template is a generic file or snippet that can be used in a project—often providing some sort of structure to build upon. For example, it can be a basic home page consisting of some HTML and CSS. Or, it can be a generic resume or contract (often an NDA) that you change according to your needs. Its purpose is to save time, and the point is to not have to write it all from scratch.

A boilerplate is thus very similar to a template, but in my mind it's more complete and thorough, and may consist of more than one template. For example, I personally would only use a subset of the HTML5 Boilerplate, removing things like JavaScript libraries I don't need.

share|improve this answer
add comment

Boilerplate has a negative connotation and refers to repetitive code that does't really contribute to the logic of the program, but is required by the language or the framework. It indicates tedium and a violation of the "Don't Repeat Yourself" programming ethos.

For example, in Java, it's common to provide getter and setter methods to access certain properties on an object. Say we want a class to represent brands of hot sauce:

class HotSauce {
   String name;
   float scovilleRating;
}

This is a simple data object without any real internal logic. However, the standard practice is to provide "getter" and "setter" methods in case we want to add logic later or use the object with frameworks that make use of the getter and setter pattern:

public class HotSauce {
    private String name;
    private float scovilleRating;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public float getScovilleRating() {
        return scovilleRating;
    }

    public void setScovilleRating(float scovilleRating) {
        this.scovilleRating = scovilleRating;
    }
}

These methods are boilerplate. They take up most of the file, yet they contain no real logic and do not tell us anything more about the HotSauce class. They are tedious to write, and are often automatically generated by the editor program.

Boilerplate can also come from a buildup of declarations that normally save effort. For example, when using the Spring framework with Java, one must declare several things at the top of every unit test class:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/com/stackexchange/english/example/applicationContext.xml)
@ActiveProfiles("example")
public class BoilerPlateExampleTest {

    @Test
    public void testExample() throws Exception {
        // ...
    }
}

The declarations at the top of the file convey important information: that we want these tests to be Spring-enabled, and to be initialized in the given context with the given active profile. The Spring framework uses those lines to do a great deal of initialization, yet they are still a bit verbose, and they must be repeated at top of every test class. Thus, even though they are useful, they become boilerplate.

share|improve this answer
add comment

Well, this is the meaning of the three words you asked, in a programming context:

Template: it is usually referred in web design or programming as a base you take to make your own fixes. But you do not usually use a template witouth your own fixes/changes.

Prototype: this word is quite different since it refers to the small work you code before making the final proyect. It is like a previous test to check if your idea is going to work in the right way or if you should check for an alternative.

Boilerplate: this is not really different, but we say some piece of code is a boilerplate if you are going to include it in several differents places of your entire project (they can also be called includes). For example, you may have a programm that shows products for a catalog, and you've created a function to show the product image. When you include this function in all the files where you are going to execute it, you can say this function is your boilerplate. Or in C programming, they call it “headings boilerplate” when they include all the basic libraries in their code.

Note that in the general case, template is something you take from others (posted on the Internet, for example), while prototype or boilerplate is something you make on your own.

share|improve this answer
3  
Please do not use backticks on ELU: it looks horrible. Carefully use italics when necessary, but avoid making things look like ransom notes. Thank you. –  tchrist Nov 2 '12 at 14:13
1  
I would not say that the function is "part of the boilerplate". boilerplate is text that is literally inserted wherever it is needed. The "header boilerplate" you mention is a good example. you just copy this huge block of headers stuff into your source. But you don't copy the function. You call it. It's part of a library. The bit of text that includes/loads/references that library is boilerplate. The copyright comments at the top of every file are boilerplate. A template might contain lots of boilerplate code or might require you to write some boilerplate code. –  Mr. Shiny and New 安宇 Nov 2 '12 at 14:36
    
Thank you, I said it is a part because some definitions say the boilerplate is the whole included stuff (and the function might not be the whole included stuff on this specific project). –  Lucky Horse Nov 2 '12 at 14:42
    
@tchrist Oh dear, I am a prime offender. I am an increasingly ardent fan of backticks. They do look much worse on ELU than other SE sites. You are correct. Yet the "ransom note" effect is so dramatic ;o) in lieu of a full-blown rebus. –  Feral Oink Nov 19 '12 at 19:54
add comment

Non-technically:

  • a template is a pattern in which some few items can be modified. The general structure is preserved but free changing items are inserted at specific places. This can be used for non-text things like a graphical layout or an artistic pattern.

  • boilerplate (a mass noun) is simply an unchanging piece of text. It is inserted as is without change.

With respect to programming, a template can have a very technical meaning, which usually involves a class that has some type parameters, and boilerplate is just a piece of code that is inserted verbatim (both these uses respect the non-technical meanings).

share|improve this answer
add comment

In the context of programming, I do not believe that boilerplate is strictly a technical term like prototype and template.

An actual boilerplate is something that was placed on a boiler. It is usually pre-printed with the exception of a serial number, boiler capacity, etc. In this respect, it is closer to a template.

share|improve this answer
3  
boilerplate was standard text made up for printing. It is called boiler plate because it's a big heavy curved bit of metal, on an original printing press, like the rolled steel plates to make a boiler. It's also a bit derogatory - it's boring crude pointless text rather the importnt content –  mgb Nov 2 '12 at 15:46
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.