It was thus said that the Great Tapley, Mark once stated: > On Apr 25, 2016, at 4:46 PM, Brian L. Stuart <blstu...@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 ... )