There are two lenses through which you can looked at typed computation, intrinsic and extrinsic. From the extrinsic perspective (which I actually prefer for semantical reasons), you are classifying the terms of a computation system which are already endowed with an operational semantics; in this sense, you are constraining computation. But I prefer to use the term "classify" rather than "constrain"; in systems built on this kind of theory, like Nuprl, for instance, you can give a type to any kind of computation you want, even the kinds that are typically ruled out in type theory (such as partiality).
The intrinsic perspective is where the computations and the types are inextricably linked. This is the proof-theoretic, gentzen-style way to look at it. In this case, it is harder to say that you are constraining computation; and in many systems in the intrinsic typing tradition, it is a lot more about inferring computation than constraining it.
However, do not go and think that the extrinsic perspective is "lifeless". I would say that it is the opposite, since this is the result of taking seriously the realizability-style semantics which underly the entire intuitionistic notion of Truth as understood by Brouwer and others. I consider the Curry-Howard Correspondence (the identification of program with proof) to be lifeless, in the sense that nothing is really happening there, since the programs are literally proofs of judgement in a formal system; but the Brouwer-Heyting-Kolmogorov correspondence, which is similar, is much more interesting--this is the classification of computations as witnesses/realizers for propositions.
Intensional type theory is a theory of formal proof, where the terms are literally proofs of judgement: it's pretty dead in there. Type theory based on realizability, though, is more interesting, since the computations exist on their own and we categorize them as the essential computational content of propositions.
Once you go down the rabbit hole, what seems lifeless now may not then. Though based on what you have said about algorithm design, it is entirely possible that we simply have very different aesthetics for theories.
If you are interested in reading further, I wrote something here: http://www.jonmsterling.com/posts/2014-10-29-proof-term-assi.... And follow the links which I give, since those are better than what I wrote!