Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

What is a the next language to learn after Perl so that I can improve my overall programming language skill set?

Replies are listed 'Best First'.
Re: Next Language to Learn
by Ratazong (Monsignor) on Mar 30, 2010 at 07:15 UTC

    You should ask yourself why you want to learn a new language. And what you will use it for.

    • Do you want it for work? Or just for fun?
    • Do you want to learn new concepts? Or do you want to learn the basics of programming?
    • Do you have some application in mind? GUI-programming, mathematical, financial, database ...?

    If you don't know it yet, C is probably a good choice: It is widespread, the syntax is similar to Perl and there is even an interface between Perl and C.

    Another popular choice is Java: It is a very widespread language, with a huge API for many things, including networking and GUI. And you'll forced to learn the OO-concepts there ...

    If OO is relevant for you, you might also want to have a look at C++.

    On the other hand you may just want to broaden your knowledge of "skripting" and learn new flavours. Then think of Ruby, Python and PHP.

    Or do you want to pick some exotics? Just to think differently? Try Forth or even better Lisp. Or -in the other direction- assembler.

    If you want it for business, check the domain you will work in. For financial, ABAP is probably helpful, for more mathematical oriented busines MATLAB is probably worth a try. Or learn the classical ones: COBOL respectively Fortran.

    And if databases are your focus, why don't you try SQL, which also fits nicely to Perl...

    In the architecture they say "form follows function". It is similar with programming-languages. Decide what you want to do, and the number of possible languages narrows to very few. Or -in many work environments- the language is predefined anyways.

    HTH, Rata

    (who has used over 10 programming-languages till now (plus some experiments in others), and thinks that the basic concepts are the important things, not the languages themselves)
Re: Next Language to Learn
by almut (Canon) on Mar 30, 2010 at 05:46 UTC

    This is kind of like asking "I have studied medicine (or whatever), what should I study next to improve me overall life skills?"

    In other words, it's mostly up to you, your preferences and the requirements of the situation you're in... It doesn't make much sense answering the question without any context.

Re: Next Language to Learn
by cdarke (Prior) on Mar 30, 2010 at 08:13 UTC
    Wow! You know everything about Perl? Moose? Catalyst? XS?

    Then again, I guess you mean "What is a the next language to learn after Perl 5", to which the obvious answer is "Perl 6".

    Here is what over 40 years of programming has taught me:
    1. You will never know everything
    2. Be selective - choose your path
    3. Products have the lifespan of a mayfly
    4. Stuff you learn today will appear to be obsolete tomorrow
    5. Stuff you learn today will be useful the day after tomorrow
    6. Don't believe bozos who try to give you advice based on their own failed careers.

Re: Next Language to Learn
by CountZero (Bishop) on Mar 30, 2010 at 06:31 UTC
    A question to ask yourself is: is it better to know a few languages really well or to know the basics only of many languages?

    It is my experience that unless you regularly use a language you tend to loose your edge in it. I used Visual Basic and Visual Basic for Applications for many years and although the basics are still there, every two lines of code I write I have to consult the manual now and I do not have the subtle shortcuts and nice features "on call" anymore.

    Another path to follow is perhaps to add languages such as SQL or (La)Tex to your toolkit, these are things which can leverage your use of Perl to a higher level.


    A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James

Re: Next Language to Learn
by moritz (Cardinal) on Mar 30, 2010 at 08:54 UTC
    What is a the next language to learn after Perl

    Does this mean you have learned all of Perl? If so, how did you manage that? :-)

    Seriously, many people say that every good programmer should learn at least one procedural, one functional, one object oriented and one declarative/logic-oriented language.

    Procedural you have covered with Perl (though of course Perl is multi-paradigm), so you could next attack functional with Lisp or Haskell, or object oriented with Eiffel (very nice pure OO language) or Java (very wide spread, but IMHO not as elegant as Eiffel), or Prolog.

    Then there a myriad of other languages and protocols that are often used together with Perl that might be worth learning: SQL, javascript, xhtml, CSS, HTTP, shell script, Makefiles, various template system, ...

    Perl 6 - links to (nearly) everything that is Perl 6.
Re: Next Language to Learn
by JavaFan (Canon) on Mar 30, 2010 at 09:34 UTC
    That's very hard to say. First of all, it would depend on the languages one already knows - I could make a recommendation, but that's not very useful if you already know the language.

    But to give a few ideas. Knowledge of C is always useful. Even if you'll never code a single line of C, knowledge of C (and its standard libraries) makes one understand Perl better. It'll make one understand better why Perl is as it is (there are quite a number of core Perl functions that are just a thin layer above the underlaying C infrastructure). It make one understand Unix better as well.

    Knowledge of SQL is useful as well. Many applications (both Web and non-Web) use a relational database; SQL knowledge is almost essential to retrieve data. But even if you're more of an administrator person is knowledge of SQL handy - it will improve one ability to troubleshoot and fix problems. Furthermore, since SQL is based on relational algebra, it exposes you to a very different way of programming than procedural, functional, or object-oriented languages do.

    But in general, what to learn next depends on which direction you want to go in. Domain specific languages may be very useful if you get to use them. Learning them won't be of much use if you're not heading in a direction where they are used.

    Perhaps you want job-security. Then learn a hardly used language - it may take you a while to get a job using it, but once in, you're hard to replace. Or you could go the other way, learn Java. Tons of jobs, but also a gazillion of other programmers with the same school. Useful if you want to be a job hopper.

Re: Next Language to Learn
by GrandFather (Saint) on Mar 30, 2010 at 06:38 UTC

    What have you tried already? How much Perl do you actually know? What manner of things are you interested in learning and why?

    True laziness is hard work
Re: Next Language to Learn
by LanX (Sage) on Mar 30, 2010 at 07:40 UTC
    >What is a the next language to learn after Perl so that I can improve my overall programming language skill set?

    I recommend tlhIngan Hol!

    You have not experienced O'Reilly, until you have read it in the original Klingon...

    Cheers Rolf

Re: Next Language to Learn
by Marshall (Canon) on Mar 30, 2010 at 08:40 UTC
    I'm not sure that you have "learned Perl". Take a few classes in 'C' and get A's. Then re-learn Perl.
Re: Next Language to Learn
by rovf (Priest) on Mar 30, 2010 at 11:16 UTC

    Haskell ?

    Ronald Fischer <>
      > Haskell ?

      Well I'm the only one in my local perlmongers group not learning or talking about Haskell for 1 years now.

      And so far I haven't seen anyone of them using it in any "useful" manner...

      IMHO its not even a hype like Ruby, it's mostly only "chic".

      I have the impression many communities are mostly positive about Haskell is due to the fact that subconsciously they don't consider it a serious threat.

      No flame intended...

      Cheers Rolf

        It can be quite an eye-opener to learn a functional language. On some universities the first language you learn is a functional language. When I started studying computer science I had never programmed before, so for me learning a functional language (Miranda in that case) was like doing mathematics on the computer. Seemed very natural (all the others having written programs in C already found Miranda really really strange... ;-)
        IMHO its not even a hype like Ruby, it's mostly only "chic".
        It *is* chic. I didn't suggest it because of this though, neither for its general usefulness (I don't want to open this box of worms), but because the OP expressed explicitly:

        .... so that I can improve my overall programming language skill set

        I could equally well have proposed Prolog, BCPL or Scheme....
        Ronald Fischer <>
Re: Next Language to Learn
by jacaril (Beadle) on Mar 30, 2010 at 13:22 UTC

    What languages do you all ready "know"?

    If Perl is your only language then pick up something compiled like C, learn SQL syntax, or go the OO route with Java/C#.

    Maybe the route isn't to learn a language but set yourself up with a problem first and come up with your toolset later.

Re: Next Language to Learn
by bichonfrise74 (Vicar) on Mar 30, 2010 at 23:13 UTC
    Maybe the question is not really to learn a new language but rather to learn different styles of programming in general?