Dear Monks

Question: What should I do: Learn More perl or something else?

I have been programming perl for sometime. The good background in math and math-logic combined with professional US Education has made a good bond for me with computer programming. I have enjoyed it over the years and learned few other languages.

My work requirement is at 90% perl, 10% html and javascript. Mainly it is about data processing, conversion, done with some intelligent logic and algorithms, which is fun.

Where should I take my programming soul? Few things that come to the mind are programming techniques, other programming languages, business oriented programming, visual programming, perl internals etc..

Your insight would be of great help. I love our community.

Update: My aspect is not just solving computational problems at hand. It's about gaining more mileage out of programming knowledge.

Thanks,
Artist

Replies are listed 'Best First'.
Re: Future Programming Direction
by Ovid (Cardinal) on Mar 17, 2003 at 22:15 UTC

    What you should do next depends upon your personal goals. Do you want to increase the chances of getting a job? Do you want to learn new ways of analyzing problems? Do you want to start writing device drivers and operating system hacks? Any of the above could suggest a radically different answer.

    If you're looking for employability, Java is pretty tough to beat. It will also help to demystify why many people claim that OO is "bolted on the side" of Perl.

    Ruby is great if you want a pure OO language. If you really get daring, though, you could try Smalltalk or Squeek.

    To really wrench your programming brain and look at things in a new light, I would strongly recommend checking out a logical (Prolog) or functional (Haskell, Lisp) language. Logical languages allow you to specify facts and rules and can infer answers for you. Functional languages allow you to provide function definitions and incrementally extend the language in a way that you won't see in an OO or procedural world. (it can also be bizarre to see a variable declared after it's used)

    I could go on for a long time, but you get the idea. Where you go depends upon what you want. Good luck!

    Cheers,
    Ovid

    New address of my CGI Course.
    Silence is Evil (feel free to copy and distribute widely - note copyright text)

Re: Future Programming Direction
by Steve_p (Priest) on Mar 18, 2003 at 00:08 UTC
Re: Future Programming Direction
by elusion (Curate) on Mar 18, 2003 at 00:37 UTC
    You learn by doing.

    That having been said, pick an interesting problem and try to solve it. Something that can't necessarily be solved probably works best, like Artificial Intelligence problems. I'm been working on a Machine Translation Engine (think babelfish) and that's really stretched me. I've implemented a mini language using eval, done some complex parsing with regexes, and other things that have allowed me to understand perl (and programming) much better.

    Pick something that interests you and try to come up with a solution. It doesn't even matter if it's in perl. A couple of ideas:

    • Genetic algorithms
    • A program that creates photo mosaics
    • Swarm intelligence
    • Pattern recognition
    Of course that may not interested you. After all, it's not very practical. Helping with Perl 6 is an excellent idea too. I'm sure we'd all love to see everyone who is able contribute to the project.

    Or pick something(s) that you wish you had and write them. That's often times how some of the best tools come about. I believe that's how most scripting languages have come about. Write something that's missing from linux. Write something that will make your life easier. Then, do it again.

    Hope this helps,

    elusion : http://matt.diephouse.com

Re: Future Programming Direction
by silent11 (Vicar) on Mar 17, 2003 at 22:10 UTC
    I asked a question similar to this once and got some great replies, perhaps those replies will help you as well.

    -Silent11
Re: Future Programming Direction
by kelan (Deacon) on Mar 17, 2003 at 22:13 UTC

    Learn more Perl if you want to know more Perl. You can't know everything yet. Peruse the perlfaqs for features or tricks you've never used, and study those to see if you could be using them. Learn to use pack and unpack like a pro.

    On the other hand, you should learn other languages. Being well-rounded never hurt, and the knowledge and insight you gain from studying other languages can aid your Perl as well. Pick a language that you've always thought sounded pretty cool and go try it out (that's how I started with Perl in the first place). Try doing the things you can do easily in Perl. Try doing the things that are harder in Perl. Try getting into the mindset of that language so you can see problems from different points of view. The more tools you know how to use well, the easier it is to find one of them can solve a certain problem particularly well.

    Plus, it always looks good on a resume. ;)

    kelan


    Perl6 Grammar Student

      Try doing the things you can do easily in Perl. Try doing the things that are harder in Perl. Try getting into the mindset of that language so you can see problems from different points of view.
      Which begs the questions, "What is the mindset of language X?" and "What is language X good at that Perl isn't?" I know that some of the answers are rather obvious (C is good for system-level work, Java is not too bad for programs which need to run in many different environments, and Lisp is good for writing editors :), but what about the areas which don't scream "Use X to write me!" Where do the newbies (me included) go to discover the mindset of Ruby and how it differs from Perl? How do we get perspective on languages?

        Find out where there is a community for language X. Find the webboards, the mailing lists, the usenet sections. Start reading. Ask questions, soak in the answers. Be observant of the questions that others ask. Get a feel for how people use the language, what they think it does well and what it does poorly. The best way to learn the mindset of a language is to surround yourself with people who have that mindset and try to understand them.

        kelan


        Perl6 Grammar Student

Re: Future Programming Direction
by perrin (Chancellor) on Mar 17, 2003 at 22:40 UTC
    I think Java is a good language to know, because

    1. Lots of good books and articles about general programming issues use Java examples these days, and
    2. You will know when people are BS-ing about how great Java is.
Re: Future Programming Direction
by Mr. Muskrat (Canon) on Mar 17, 2003 at 22:19 UTC

    Just when I think that I'm about done learning Perl, I find out just how little I know. So if you want to really know Perl, keep studying it. Remember, it's never too soon to start thinking about Perl 6.

Re: Future Programming Direction
by gmpassos (Priest) on Mar 18, 2003 at 06:50 UTC
    Learn C/C++. You will be able to work with XS, inline, and maybe improve Perl CORE.

    You can use Java, VB, and the list goes... But try to get away of commercial things (yes, Java is one too), since any commercial language have the strategy to make you dependent of it. Well, is just a chess game, I don't disagree with this type of strategy. I just don't like who don't know what they are doing with you. You can lear them (doesn't hurt), can be good if you need a job. Is just a question of who are making the rules of your life, and I can tell you that you can make your rules, you just need to make them from the begining of the "film" (once you are in, you can come out).

    One good thing of C/C++ is that you can use for anything, and all major OS have some compiler for it. But the best of C++ is to can work in top projects, like build a GUI library, or work with kernel, and much more... (things that are not possible with other languages)

    But know that you always have something to know (specially about Perl). The only day that you have nothing to learn, is the day that you go away... Learn just tell to us that we are live! ;-P

    Graciliano M. P.
    "The creativity is the expression of the liberty".

Re: Future Programming Direction
by artist (Parson) on Mar 18, 2003 at 16:39 UTC
    Dear Monks
    Thanks for the valuable comments. I hear you in terms of programming languages to learn. I like to know more also along the lines of 'UML' or 'Exterme Programming' or 'Software Craftmanship'. Not just the language but also the methodology of the programming. Other things are usability as where the programs are going to be used, by whom, for how long etc.. Thus my question from the perspective of overall aspects of programming science and programming engineering and getting more out of it.

    artist

Re: Future Programming Direction
by Anonymous Monk on Mar 18, 2003 at 08:54 UTC
    What should I do
    ...
    Mainly it is about data processing, conversion, done with some intelligent logic and algorithms

    Well seeing as you obviously already took unnecessary buzzwords 101, I'd say learn Java.

    Sorry but sometimes it's just too easy ;-)

    On a serious note when I see resumes with lines like the above, I immediately throw them out. They make you sound like you're pretentious and have absolutely no clue what you're talking about. Anyone who truly knows their art doesn't need to use buzzwords to describe it. It's bad enough on a resume - why someone would post it on an online technical forum is beyond me.

      Well seeing as you obviously already took unnecessary buzzwords 101, I'd say learn Java.

      On a serious note when I see resumes with lines like the above, I immediately throw them out. They make you sound like you're pretentious and have absolutely no clue what you're talking about. Anyone who truly knows their art doesn't need to use buzzwords to describe it. It's bad enough on a resume - why someone would post it on an online technical forum is beyond me.

      *****

      The whole point of "buzzwords" is to take complex concepts and distill them down into concise teminology that is generally understood. Using a "buzzword" does not require the user to understand all of the obscure technical details behind the concept. It gives the less knowedgable individual some common ground to stand on when discussing the concept with those that are more well versed in the subject.

      Obviously you've forgotten that Perl Monks is a place where developers come to expand their knowledge. Not everyone here is going to use the complex language that you seem to expect. To add injury to insult (yes, the cliche is reversed), your post is purely critical. You haven't provided any useful advice for artist. I'm not surprised that you're puzzled as to why someone would use buzzwords. You can't see that your own post is completely lacking in merit. But then maybe that is why you've hidden behind a cloak of anonymity...

      Look on the bright side though. Your observational skills do qualify you for a promising career in causeway management.

      Acolyte
      Studying at the feet of the masters

        The whole point of "buzzwords" is to take complex concepts and distill them down into concise teminology that is generally understood.

        Agreed. But sometimes "buzzwords" or jargon can be used as cover for a lack of real knowledge. I think someone that truly understands something can explain it in a reasonably understandable fasion without resotring to jargon. Knowledge of a fields jargon is necessary for advanced work, but not sufficient. :-)


        ---
        demerphq


        Hi, I'll clarify. The original poster said:

        Mainly it is about data processing, conversion, done with some intelligent logic and algorithms

        This doesn't tell the average person anything. So when you say:

        Not everyone here is going to use the complex language that you seem to expect.

        It seems you are making the same point as I. I don't know what the original poster was talking about so I can't clarify that, but an example would be "I write programs that generate web pages based on templates" instead of "create dynamic, integrated server-side solutions utilizing algorithms to power our database-driven internet http presence." Bad examples, but I think they show my point.

        You haven't provided any useful advice for artist.

        Actually, I think I provided far better advice than any other posts in this thread (ie Don't believe the BS). Also, His question was one he should answer on his own, nobody can tell him what to learn better than himself.

        So to restate my advice: always strive to truly understand what you're doing. If you can't explain it to your grandma and a 4th grader, you don't know what you're talking about. Avoid useless buzzwords, they only make you seem less intelligent than you are. Don't let anyone tell you what you should or shouldn't learn.

        That's it, I'm out. Feel free to flame amoungst yourselves.