A network guy in my office said that five years ago everyone was writing their quickie network applications in Perl, but now they use Java instead.

At the same time, Lincoln Stein's book on Perl network programming is a work of pure genius. And I get the impression that if I learned the craft then I could do anything networky in Perl that others do in Java.

My questions: Are there any Perl guys out there who are getting paid to do network programming in Perl? Is Perl network programming likely to be widely used over the next few years? Will it significantly enhance one's marketability to know it?

Bring Goldberg back to professional rassling! Bring Merlyn back to the Camel series!
  • Comment on Perl Network Programming: A Dying Craft?

Replies are listed 'Best First'.
(jeffa) Re: Perl Network Programming: A Dying Craft?
by jeffa (Bishop) on Jun 30, 2001 at 19:34 UTC
    At my last job, i was assigned a project that was very much classified as network programming - and i did it in Perl. Now i have a new job, and whereas i can't say that i will ever write a network application for the company, i can say that i am glad i have a bit of experience in the area.

    I forsee a lot of Python and Java in my future . . . so I bought Java Network Programming. As for Java network programming, it's a bunch of classes that abstract everything down to streams and filters. For me, that's boring, but it does lend to rapid application developement for medium to large size teams.

    If you are worried that learning how to program networking applications in Perl is a waste of time and effort - DON'T!

    The Perl way is closer to the actual guts of networking than Java, which abstracts the details away. Here is an example, it takes about 5 times as many lines to open a pipe to a system call and dump the output to STDOUT in Java than it does Perl. You have to create a stream object, attempt to open it via exceptions, create another stream object, possibly a filter object, catch them in exceptions . . . so on.

    My advice - learn the Perl way (which is just a minor abstraction from the C way), and then learn the Java way if you think it will add value to your skill set.

    The more ways you know, the better.

    Jeff

    R-R-R--R-R-R--R-R-R--R-R-R--R-R-R--
    L-L--L-L--L-L--L-L--L-L--L-L--L-L--
    
Re: Perl Network Programming: A Dying Craft?
by crazyinsomniac (Prior) on Jul 01, 2001 at 05:17 UTC
    Marketability?

    Depends on who you're talking to.
    While I agree with Jeffas points, I do think that in the general business market, perl is still gonna be regarded as hackerish (and it is), while Java, which is geared towards business, will be regarded as more cost-effective with shorter development time and less proneness for serious bugs (and it is).

    Now don't get me wrong, learning true socket is something every programmer should do, and perl is a good language to learn it in, but as for marketability in the business world, seems kinda insignificant (at least for the majority of the busines market).

    Why, because one of the reasons Java was made was for real-business type network applications, and perl simply wasn't.

    I'm talking about enterprise-wide network application, Remote Method Invocation and stuff like that.

    While I am talking out my a$% most of the time, in general, Java applications are easier to maintain, develop, and debug, particularly because of the 'abstraction' Jeffa mentiones, which while not being particularly exciting, and limiting, provides a sense of safety from real bugs.

    Java also makes scalability, granularity, and distribution easier.

    A lot of programmers like to get away from the dirty details, and business people like their programmers to concentrate on the important details, like adding numbers, and not reimplementing already stable components.

    One of the reasons people are moving away from perl for quicky network applications is because they don't want them to be just quicky applications, and java makes making that distinction easy.

    >Will it significantly enhance one's marketability to know it?
    Once again it's up to who you're talking with. If you're talking to a fellow programmer (a real programmer ;), he'll be relieved you know how sockets really work.

    But some kind of manager, business non-programmer person type, will once again go for the buzz words, and he won't be particularly interested that you know some arcane technical details.

    So, in conclusion, learning Perl Network Programming is a dying 'craft', but one which will get you respect from real programmers, and a few laughs from the business ones.

    However, while it may seem a dying craft, people still program in COBOL, but them jobs are few and far between (not true for perl quite yet, but the tide is turning).

    It can't really hurt to know important details, even if it might appear that way.

    And don't forget, some c/c++ programmer had to write Java, and the many Java Native Interface extensions, as Java can't handle everything (whereas perl pretty much can, network programming wise at least, and easier than c/c++).


    I would like to remind you of my little disclaimer, so do take some of this with a grain of salt, as it is an extremist view coming from an extreme (and biased) programmer with limited experience (after all, aren't all/most human beings such creatures?-).

    update:
    Once sun released the spec, they lost their hold on the compiler market. I introduce to you jikes, a faster compiler with a better error reporting scheme, which is certified Open Source ;-)

    update:
    Opinions and experiences vary for many reasons, who's to say what's vaild?
    Please note that I have not stopped *learning* perl.

     
    ___crazyinsomniac_______________________________________
    Disclaimer: Don't blame. It came from inside the void

    perl -e "$q=$_;map({chr unpack qq;H*;,$_}split(q;;,q*H*));print;$q/$q;"

      A brutally candid reply. Okay, I am sticking with Perl because I like the community, but I should not expect that it will keep me profitably employed on other people's projects.

      And just because I am programming Perl for a living now doesn't mean these jobs will always be around.

      So if I need to learn network programming, and we all need to learn it, then I can learn it using Perl if I like. However, I will probably need to learn Java also to really apply network programming skills for corporate and government clients.

      On the other hand maybe Perl will surprise us all, and Java will slip. One thing I believe is that Perl is truly open source, and Java is not. And no one knows what is going to happen, and whether Sun's fairly tight control of Java compilers will backfire on it.

      While I agree with Jeffas points, I do think that in the general business market, perl is still gonna be regarded as hackerish (and it is), while Java, which is geared towards business, will be regarded as more cost-effective with shorter development time and less proneness for serious bugs (and it is).

      I think you mistyped old school as general, and marketed as geared.

      I'm not sure how Java could be regarded less prone to serious bugs; surely that is up to the skill of the programmer. About the only reason that Java might win is on the strength of type checking.

      I think you give RMI and it's ilk too much credit. I know of a few big (millions plus use them) portal RMI apps and for the most part are very slow and fragile. (SOAP anybody?) Not saying that Java is worthless by any means but I think you give it too much credit. The write once run anywhere promise is still a bit of a tease.

      I think the flexibility and shear momentum of the Perl community will keep Perl gaining ground. I don't think utilizing Perl for network programming is a dying craft at all. Then again, that's just my opinion.

      -Lee

      "Then again WDIK. ™"
Re: Perl Network Programming: A Dying Craft?
by mattr (Curate) on Jul 02, 2001 at 09:59 UTC
    I think you can continue to bank on developing your Perl skills, while Java skills will not necessarily get you a job right away considering the labor market and the overvaluation of Java skills for many projects. But this depends on where in the world you are.

    To me this is particularly true if you are studying Perl, Linux, GNU, and Open Source tools together. You learn how things work and are not afraid of C/C++ tools. You have a low barrier to Python if necessary, and you laugh at ASP. So far I have seen a number of projects which have spent tons of money on Java programmer teams and Java application servers, then the money left over is only enough to do something in JSP that could have been done just as easily with Perl. Perl is not the answer to every single problem but it is so extensible, it seems to be applicable to more than any other.

    Also I find Perl gives you a laboratory for learning about computing, and it gives you weapons of knowledge which help you be intelligently critical of new systems, whereas intentionally drinking at the trough of watered down corporatespeak you may end up on the receiving end of a lot of b.s. A number of companies still rely on the b.s. rather than listening to their programmers, whether they are writing Java, Perl or something else. I think those companies are going the way of the Dodo.

    If your goal in life is to be working on enterprise software in a large organization, you probably want Java. Otherwise, I'd try to take in a swath of things, and learn Perl and go everywhere it takes you. Learn a little Java too so you know what is going on.. though it will take longer to become able to do something useful with it than it may with Perl. You can master programming in either language but I'd say what you want to work on is polishing your systems skills regardless of the language in which you operate. If you understand the foundations of programming and computing you can switch into other programming systems (which frequently appear) without losing your investment.

Re: Perl Network Programming: A Dying Craft?
by dthacker (Deacon) on Jul 02, 2001 at 08:16 UTC
    We have an intern (who is also a monk, though his login I know not) working on a very business critical network program as we speak. The re-write is replacing a very dark and murky brew of Informix 4gl and 'c'. We expect to get a large performance increase out of this app. We also expect it to be much more maintainable since the entire department is working with perl. It may not be as popular as Java, but network skills are still in some demand.

    Good Learning! Dave

Re (tilly) 1: Perl Network Programming: A Dying Craft?
by tilly (Archbishop) on Jul 03, 2001 at 15:40 UTC
    I think this network guy is correct in the observation, but his reasoning is off.

    What 5 years ago people would have written as a quicky network application they now write as a quicky web application. Frequently in Perl. So when you look at network applications being written, the balance is shifting away from Perl. But lots of work is being done by Perl - people just aren't reinventing wheels that Apache does an acceptable job for.

Re: Perl Network Programming: A Dying Craft?
by ritontor (Acolyte) on Jul 03, 2001 at 17:39 UTC
    I've been administrating networks for a mere 3 years now, and yet i've through neccesity had to teach myself perl, just because it's so damn useful. Every network administrator will come across occasions where you'll need a custom tool to perform a task. Quite frequently, it's as simple as editing a particular value in a series of text files, and whilst you could use sed/awk, imho it's easier and quicker to knock up some quick perl to do it.

    In situations like this, it's not up to your management as to what tool you use to achieve the task, it's a 20 minute job you do as part of your working day. Perl is the king at throwaway code like this, and especially in a *nix environment, is to my mind, indispensable. It's saved me a lot of time, too :)