Collective Wisdom from the Experts 89
Cross-fertilization in the use of programming languages has huge effects. Per-
haps the most obvious is the increased and increasing use of declarative modes
of expression in systems implemented in imperative languages. Anyone versed
in functional programming can easily apply a declarative approach even when
using a language such as C. Using declarative approaches generally leads to
shorter and more comprehensible programs. C++, for instance, certainly takes
this on board with its wholehearted support for generic programming, which
almost necessitates a declarative mode of expression.
The consequence of all this is that it behooves every programmer to be well
skilled in programming in at least two different paradigms, and ideally at least
the aforementioned five. Programmers should always be interested in learning
new languages, preferably from an unfamiliar paradigm. Even if their day job
always uses the same programming language, the increased sophistication of
use of that language when a person can cross-fertilize from other paradigms
should not be underestimated. Employers should take this into account and
allow room in their training budget for employees to learn languages that
are not currently being used, as a way of increasing the sophistication of the
languages that are being used.
Although it’s a start, a one-week training course is not sufficient to learn a new
language: it generally takes a good few months of use, even if part-time, to gain
a proper working knowledge of a language. It is the idioms of use, not just the
syntax and computational model, that are the important factors.