It was thus said that the Great Tapley, Mark once stated:
On Apr 25, 2016, at 4:46 PM, Brian L. Stuart
<blstuart at bellsouth.net> wrote:
...To tell you the truth, I'm not very likely
to hire anyone who isn't
conversant with at least half a dozen different languages. ...
Although I agree with almost everything Brian said in his post, I?ll posit
at least one exception here. There exist languages (the Mathematica
programming language is the one I?m familiar with) which permit
programming in multiple different styles - procedural, list-processing,
object-oriented, etc.. I would be pretty willing to consider a candidate
who understood the differences, and could select the appropriate
programming style for the task at hand, even if they were familiar with
only the one ?language?. But, it would not be trivial to demonstrate that
the candidate actually had that breadth of understanding; production of
sample code in a half-dozen languages would be an easier metric to apply,
so maybe my exception is not useful.
There are two major language families: declarative and imperative. I feel
ike a programmer should be familiar with the two families. Declarative
langauges are where you describe *what* you want and leave it up to the
computer (technically, the implementation) to figure out how to obtain what
you want. A few langauges under this family:
Prolog
make (and yes, make is a declarative language)
SQL
Imperative is where you describe *how* to do something to the computer and
hope it gives you what you want. Under this family there are three
sub-families:
Procedural---your typical programming languages, C, Pascal, BASIC, COBOL,
Fortran, are all examples of procedural languages and we pretty much know
and understand these languages.
Functional---still a type of imperative, but more centered around code
(functions actually) and side effects are very controlled (and globals right
out!). Global variables are difficult to instantiate (if at all). Examples
are Haskel, F#, ML, Hope.
Object oriented---again, another form of imperative, but centered around
data instead of functions (it's the flip-side of functional). Examples of
this are Smalltalk, Java, C#.
There are languages that can have multiple features, like C++ (procedural
and object-oriented), Lisp (declarative and imperative), Forth (declarative
and imperative), Python (procedural, functional, object-oriented).
-spc (Who likes classical software ... )