Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Is there a programming language that can be used as a bridge for learning several programming paradigms? I am introduced to the Oz programming language but I think there are several more languages that could also be used in learning several paradigms and this thread can be a good survey of those.

I think it is better to learn those paradigms first in order to learn several programming languages, especially if you are jumping from one paradigm to another every time you study a new language.

share|improve this question
    
What do you mean by "programming paradigms"? –  Anna Lear Dec 6 '11 at 2:39
    
you can refer to this en.wikipedia.org/wiki/Programming_paradigm –  edgar Dec 6 '11 at 3:00
3  
Your own wikipedia link provides a list of the programming languages... –  Deco Dec 6 '11 at 3:03
    
As phrased right now, this is essentially "list all the languages." If there's something specific you'd like someone to explain to you, feel free to ask about that, instead. –  user8 Dec 6 '11 at 5:57
add comment

closed as not constructive by Mark Trapp Dec 6 '11 at 5:56

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

5 Answers

Those that I know of :

C++ can be used to create both OOP code and procedural code. C was a procedural language and C++ added OOP concepts in the mix. You can use classes in part of your C++ programs and code like you did in C in other parts.

Scala can be used to create both OOP code and functional code. Scala would be a great example of a language that bridges two paradigms.

Wikipedia also as a list of multi-paradigm languages : http://en.wikipedia.org/wiki/List_of_multi-paradigm_programming_languages

share|improve this answer
1  
C++11 is can be highly functional too. –  DeadMG Dec 6 '11 at 4:16
    
@DeadMG or C++03 with clang blocks. –  rightfold Dec 7 '11 at 21:17
add comment

C++ is going to be the best shot. C++11 allows procedural/imperative, and OO, and functional, plus some strong generics, as well as total freedom in terms of memory management etc.

share|improve this answer
    
What's the status of compiler support for C++11? –  edwardw Dec 6 '11 at 4:19
    
@edwardw: It's incomplete, but many of the core C++11 features (move semantics, auto/decltype, lambdas) has already been implemented in the latest versions of GCC and Visual C++. –  In silico Dec 6 '11 at 4:23
    
Common Lisp has had all of that for more than twenty years now (although few people do their own memory management in it). –  David Thornley Dec 6 '11 at 15:10
add comment

Scheme (a modern Lisp dialect) is a good language to learn. You can code procedurally, functionaly, with objects, with closures, and lots of other styles.

Check out Structure and Interpretation of Computer Programs. This is a structured guild to learning Scheme, and these various programming paradigms.

The one other thing you will learn, going this way, is how many of these paradigms are implemented. This will make it much easier to understand how such paradigms actually work, and what they have as limitations.

share|improve this answer
add comment

I think C# isn't a bad place to start. The language itself is very OO focused, but the recent LINQ additions have done a nice job of allowing declarative syntax and what could be argued is functional programming. It also allows for aspect oriented programming, generics, concurrent computing and others.

share|improve this answer
add comment

Your question could easily trigger a language war. But anyway, as far as I'm concerned, there are two categories most important to me: imperative programming language and functional programming language. I'm not going to give definitions to them, which you can easily find online. Instead, here are some examples for both (in no particular order):

Imperative programming language: C/C++, Java

Functional programming language: Haskell, Erlang, OCaml, Lisp (Clojure being its modern incarnation)

There are also languages trying to be both, like Scala. So probably you can go with Scala. Also, there're plenty of Scala projects hosted in github that you may find useful to try Scala for real.

share|improve this answer
1  
I'm not nearly as familiar with Haskell, Erlang, and OCaml as I'd like, but Common Lisp works just fine as an imperative language, or for that matter as an object-oriented language. You can attach other paradigms if you like. –  David Thornley Dec 6 '11 at 15:09
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.