What is the difference between a dam, a weir and a barrage?

A weir is an impervious barrier constructed across a river to raise the water level on the upstream side. The water is raised up to the required height and the water then flows over the weir. In a weir the water overflows the weir, but in a dam the water overflows through a special place called a spillway. Weirs have traditionally been used to create mill ponds. They are also used to prevent flooding, measure discharge, and help render a river navigable.

The crest of an overflow spillway on a large dam is often called a weir. Weirs can be built of wood, concrete or moraine material (rocks, gravel, boulders). Small weirs are used many times as one possible mitigation measure in large hydropower developments, along with fish ladders, fish stocking and substrate improvement because low weirs can improve fish recruitment, stabilize groundwater levels and lessen the effects of river regulation that often accompanies very large hydro projects. Small weirs usually have positive benefits on winter fish survival, increased biodiversity and the landscape aesthetics. However, they can also can result in increased sedimentation, changes in the fish community and can pose migration barriers.

A barrage is a weir that has adjustable gates installed over top of it, to allow different water surface heights at different times. The water level is adjusted by operating the adjustable gates.
A dam is a high impervious barrier constructed across a river valley to form a deep storage reservoir. The surplus water is not allowed to flow over the dam, but it flows through the spillways provided at some level built into the dam.