Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Effect of OS Platform choice for learning and doing Perl well

by Anonymous Monk
on Sep 29, 2005 at 16:44 UTC ( #496165=perlquestion: print w/ replies, xml ) Need Help??
Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks,

Please take mercy upon a humble newbie and cast your pearls of wisdom, drawn from the vast seas of your knowledge, my way, benevolent Sirs. I shall treasure your gifts forever...

I need your guidance on a question I have not the knowledge to answer.

I'm new to Perl. I want to learn Perl very, very well. So well that I can become a full time (maybe self employed) Perl developer, developing web based systems useful to my fellow humans.

The issue I ponder is which OS platform to learn -- and upon which to learn Perl well. The four OS paths I ponder are FreeBSD, Linux, Solaris 10 and Windows XP (via Activestate).

I ponder the pros and cons of choosing one OS verses another to grow with as I gain *nix server wisdom and grow in the good graces of Perl acumen.

I believe Perl does make use of system calls; and that each OS has its own unique nuances. Thus I imagine some CPAN modules and other pre written code may work better (or even not at all) on one OS verses another in a server environment.

FreeBSD and Solaris 10 appeal to me the most at my current newbie level, with Linux next and Windows last....but I most value learning Perl well and wish to do so on an OS with the minimum "opportunity cost" regarding Perl power as I grow into a monk you would be proud to have as a member of this esteemed community.

FWIW, I've been a COBOL mainframe programmer for many years; thus I'm not a newbie to programming. At work, they are migrating to web bases Java systems. The verbosity of Java and the complexity of its application stack needed to serve up a dynamic web page doesn't appeal to me. But browsing thru an intro to Perl book brightens my soul and pulls at me with a magnetic tug, as do books on *nix. Which OS and why?

Thank you,

a humble newbie

Comment on Effect of OS Platform choice for learning and doing Perl well
Re: Effect of OS Platform choice for learning and doing Perl well
by cog (Parson) on Sep 29, 2005 at 16:50 UTC
    And why not more than one at the same time?
      Excellent idea! You could install Linux, FreeBSD and Win(whatever) on different disk partitions on the same PC. A good boot loader like Grub or LILO would let you choose your OS at boot time. Setup a 4th partition that would be mounted by all of the OS's to use for development. As a bonus, this will also give you experience in writing platform independent code.

      Jack

Re: Effect of OS Platform choice for learning and doing Perl well
by revdiablo (Prior) on Sep 29, 2005 at 16:54 UTC

    Quick answer: use what you're the most comfortable with. Learning an OS at the same time as learning a programming language doesn't seem conducive to effectively learning either.

    If you are equally comfortable, I think you would be marginally better off on a Unix-like platform, and probably marginally better off on Linux (the margin of a margin is a very small, err, margin). This is becoming less and less true, but Perl was born and raised on Unix. Perl is sometimes thought of as a distillation of Unix philosophy into a programming language. That said, the amount of Windows Perl users is large and (seemingly) growing fast, so I don't think you'd have any major problems there either.

Re: Effect of OS Platform choice for learning and doing Perl well
by gri6507 (Deacon) on Sep 29, 2005 at 17:05 UTC
    Technically speaking, PERL is an acronym for Practical Extraction Report Language. As such, perl has great capabilities for text processing, pettern serching, and other text related utilities. None of these are OS dependent.

    There are obviously lots of modules available for perl as well. Most well-written modules will be OS independent as well. A good example that come to mind is Tk, which is a package to create GUIs.

    At the same time, there are a number of Windows specific modules. Those are of course specific to only that OS (examples would be Win32::GUI and Win32::API). Sometimes, if you want to program on windows you have to rely on those modules, which makes the code platform specific.

    There are a number of other, in my opinion, small variations between the platforms (i.e. implementation of fork(), functionality of Time::HiRes are just a few examples which come to mind).

    However, it has been my experience that most limitation are actually imposed by the user (i.e. usage of system() calls) and NOT the available modules. With that being said, if your intent is to learn Perl, you could do that on any OS.

      Technically speaking, PERL is an acronym for Practical Extraction Report Language

      Pedantically speaking, it's not.

Re: Effect of OS Platform choice for learning and doing Perl well
by samizdat (Vicar) on Sep 29, 2005 at 17:12 UTC

    FOOD FIGHT!


    I have a number of reasons why I would recommend FreeBSD, some of which are personally biased but most of which are pertinent.
    1. All the others you mentioned are a blur of syntaxes and file locations. Both Linux and Solaris are mixtures of SYSV and BSD lineages, and Linux sometimes changes things "just because". Windows is an abortion, though AS does make it somewhat usable and cygwin more so.
    2. FreeBSD development is more stable. Fewer kernel/libc version collisions occur.
    3. So is the system itself. Though some would consider the lack of kernel threading to be a deficiency of BSD, it is safer.
    4. The Ports tree is the best source-code compilation system out there, Gentoo included.
    5. You can buy your books from the dollar table and expect them to be pertinent.
    6. FreeBSD in linux emulation mode (better for Mozilla & plugins) is reputed to be faster than Linux native distros.
    That said, Linux afficiandos will have their own take, and certainly desktops in Linux are easier to get right. However, you mentioned server applications, and there FreeBSD rocks.

    I disagree heartily with the poster who said that one should ignore the OS. I think that understanding your OS and how it is built, functions, and supports you is *essential* to being a great programmer. Besides, all that source code is a treasure not to be taken lightly!

      All these points may or may not be true. I may or may not agree with you. But I find it hard to see how they make much of a difference in this context. He's talking about learning Perl, not learning how to write kernel modules.

      I realize the original post was practically inviting a operating system flame-fest, but I'm still a bit disappointed to see someone light the first match. Maybe we can at least try to stay on topic and talk about things that directly relate to Perl.

        As you can see from many of my other posts on similar topics, revdiablo, I am a firm believer in the need to understand the entire system you program for. The particular syntax and tool set of Perl is of minimal importance in this bigger picture, though its flexibility certainly helps.

        In my own case, my programming has been vastly simpler _because_ I understand my systems just a bit better than the average brawn. Perl is an excellent tool in my toolbox, and I give it credit for making some tough problems solvable.

        Having a stable, predictable OS under your box's hood is crucial to success in a commercial enterprise. The OP was looking to do some of the same kind of things I've tackled, so I think my input was quite valid.

        Feel free to downvote; that is your right and your responsibility. I've rarely been a politically correct beastie, and I'm unlikely to start now. The world is full of people who want their neat little boxes unbent; that's one of its major problems, and crying 'netiquette foul' when I was specifically answering the question borders on that, IMNSHO, though, as I say, your stripes earn you the right to opine however you please.

        The OP is coming from COBOL, one of the most insular programming systems ever developed. Given that he was talking about nuances of system calls, I suspect that he has visions of apps that push Perl around corners that go a little bit further than CGI.pm intended. It is true that _learning_ Perl can be done on any scriptkiddie car that will run it, but deploying a Perl app successfully in a commercial environment demands stability, consistency, and predictability. When I have direct commercial success in such an endeavor, and FreeBSD has cushioned my @ss in doing so, should I not spread the word? And, yes, in a prior incarnation I was paid to proseletyze for BSD, but this success has come long after that time. I salute the people who specialize in Perl education and Perl usage, but I am not one of them. I will also freely admit that I can't hold a candle to most of the Saints here, including yourself, in the usage of raw Perl itself. When I as a pretty successful generalist sees a place to contribute something of value, I will do so. I would hope that the initial lines of my post were enough to establish that I expected my post to be taken as personal opinion. I do hope the OP finds it valuable, which was my intention.
Re: Effect of OS Platform choice for learning and doing Perl well
by swampyankee (Parson) on Sep 29, 2005 at 17:15 UTC
    I, too, came to the world of perl from an older language (Fortran). My suggestion as to the platform upon which to learn perl is incredibly bland: either the platform upon which you expect to do most perl programming, or the one upon which it is most convenient. Any of the *ix implementations are doubtless close enough to be interchangeable.
Re: Effect of OS Platform choice for learning and doing Perl well
by neniro (Priest) on Sep 29, 2005 at 17:29 UTC
    I suppose that this sounds odd to you, but I would choose the plattform based on the editor I would prefer to use, cause perl works fine everywhere - but if you have an prefered editor that is limited to one plattform, and it's you're favorite tool for doing coding tasks, use the OS of your favorite editor. If you use vi(m)/emacs to do all your coding, the plattform doesn't matter at all (vim/emacs and perl are working well on all of them).
Re: Effect of OS Platform choice for learning and doing Perl well
by Skeeve (Vicar) on Sep 29, 2005 at 17:30 UTC
    I learned perl, I think, 1994 or so on DOS (5.0, 6.2).

    I had absolutely no problem changing to IRIX, Solaris and Mac OS X in regards to perl. The only problems arose when compiling or installing new modules. But everything is managable.

    So my guess is: You won't have any trouble changing the OS as long as you need not manage the OS itself of course. So take whatever System you have, choose a good editor for writing your scripts and go ahead. BTW: I'd recommend jEdit as the editor of choice. You will then be able to stick to the same editor on any plattform you named.

    $\=~s;s*.*;q^|D9JYJ^^qq^\//\\\///^;ex;print
Re: Effect of OS Platform choice for learning and doing Perl well
by sauoq (Abbot) on Sep 29, 2005 at 17:45 UTC

    I wouldn't presume to know which would be the best platform for you to learn Perl on...

    ... but I am fairly certain it isn't XP (or any other MS toy OS.)

    If you are really considering the long-term employment implications, consider that the employers/clients you find using Solaris are likely to be culturally different than those using Linux or FreeBSD. And the same can be said about the Linux shops versus the FreeBSD shops, for that matter. I've found a personal preference for cultures that embrace Linux. I still have a lot of respect for FreeBSD from a technical perspective though.

    I have worked in all three cultures, by the way. If I had to describe each in one word I'd say... Linux is tribal, FreeBSD is agrarian and Solaris is feudalistic.

    -sauoq
    "My two cents aren't worth a dime.";
    
      Dear Sauoq,

      Please elaborate -- your post intrigues me greatly.

      Since you've worked in all three environs, your insights are most appreciated -- and desired!

      I found the following, but I'm not sure they do justice to your perspectives gleaned from working in the Linux, FreeBSD and Solaris groups. Culture is important to me, thus my query.

      http://en.wikipedia.org/wiki/Tribalism

      http://en.wikipedia.org/wiki/Agrarianism

      http://en.wikipedia.org/wiki/Feudalistic

      Thank you!!

        Hmm... Well, I didn't mean for my quick one word summations to be taken too seriously, of course. And these are only my interpretations of my experiences. But I can certainly elaborate.

        I called the groups using Solaris "feudalistic" because they have, in my experience, tended to be more politically oriented. Different groups vying for bigger pieces of the company "territory". Middle managers growing their fiefdoms. That sort of thing. That happens in just about all companies once they reach a certain size, I guess. And I'm certainly not saying that using Solaris is a cause of this. I think it's a symptom. Successfully justifying the purchase of 4 new V880s will give your budget a nice bump and a bigger budget means more political clout... that kind of thing. By the way, I've never worked anywhere where they used Solaris on x86 platforms for anything but a random desktop here and there.

        I called FreeBSD cultures "agrarian" and, of the three, this would be the one that least conveys my meaning, I think. It's also the one I have the least experience with. I can explain exactly what I was getting at though: The cultures of the places I've worked where FreeBSD was the OS of choice seemed to be more focused on fundamentals and the people seemed to be a bit more specialized in their function. There also has seemed to be a more measured and patient approach to "growth" of various kinds. More longer term planning and that kind of thing.

        I called the groups using Linux "tribal" mostly in counterpoint to FreeBSD groups. In my experience, there seems to be somewhat less specialization in these cultures. Everyone tends to be a jack-of-all-trades and ends up playing many different roles as needed. Planning is more short term. And there seems to me to be a tendency to try out new and different solutions rather than analyze them first. (All of this strikes me as being more like hunting and gathering than cultivating.)

        Again, I've found that the Linux cultures tend to fit me best. And, I don't mean to imply that any of these impressions of mine are absolute in any way. There is certainly long term planning among Linux-centric cultures just as there is short-term flexibility among FreeBSD cultures. I'm only trying to explain my sense of the differences between them, but highlighting those differences creates caricatures rather than true representations. In reality, there is more in common between these groups than there is different... but the differences still matter.

        -sauoq
        "My two cents aren't worth a dime.";
        
Re: Effect of OS Platform choice for learning and doing Perl well
by dragonchild (Archbishop) on Sep 29, 2005 at 18:53 UTC
    Perl is the most platform-agnostic language I've ever come across or heard about, with the remotely possible exception of a few FP languages like Haskell. It just works everywhere, from windows to *nix to mainframe to palm.

    Now, learning an OS isn't that hard, either. Every OS has files, directories, a kernel, memory management, and other basic items. The only difference is in how you, the programmer, relates to them. Some, like the *nixen, tend to trust the developer a little more. Others, like the mainframe, tend to trust the developer a little less.

    Me, I'd shoot for being comfortable on both *nix (which includes FreeBSD, Linux, and Solaris) and Windows. Mainframe is if you need it. I've programmed on nearly every *nix variant out there and, frankly, they're practically identical with respect to installing modules and programming stuff. Learn a shell, an editor, basic vi, and how to drive gcc. Beyond that, learn what you need to get your job done. Threading can be a bitch in various *nixen, so I tend to avoid threading. (Frankly, it's a bitch in most situations and you very very rarely will need the potential performance boost.)

    Windows is more difficult. Learn how to use PPM and Notepad. Beyond that, get used to frustration because AS perl is not exactly the same as regular Perl. It's close, but has a few differences, particularly in performance of fork and how terminals are emulated when done through select.

    perldoc perlport is your friend, here.


    My criteria for good software:
    1. Does it work?
    2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?
Re: Effect of OS Platform choice for learning and doing Perl well
by nimdokk (Vicar) on Sep 29, 2005 at 18:58 UTC
    I might ask - why do you want to learn Perl? Is it something for work? or is it something you just want to learn for yourself?

    If the former - then find which platform is supported at work and learn the Perl on that. If the latter - then find the OS you are most comfortable learning on and to which you have easy access and go from there. Personally, I like using Perl for the scripting we have to do because I can write it on either Windows or Unix - test it there and then move it over to the other platform and it will function just fine. If you have to fight the OS while learning Perl - you will have a much harder time (in my opinion).

    just my 2¢ :-)

      Hi Nimdokk,

      I'm the original poster. In answer to your question, I primarily want to learn Perl for myself. It's doubtful that work will allow any Perl development. Java has been declared the official language for all new development (mostly Servlets and JSP) by Senior Management at work.

      However, since I don't care for Java -- at least as it's being adopted and deployed at work -- I'll most likely be "walking the plank" to some other way of earning a living. I could get another mainframe job, but I'm thinking it may be a good time to make a career change. I'm in my early 40's and have a couple year's living expenses saved up.

      Developing web based systems is appealing to me. Perl (using CPAN) deployed on *nix seems a great way to go; especially if I end up running my own collection of e-commerce sites on my own *nix servers, doing the analytics, SEO and SEM myself.

      I figure, relatively speaking, that there are pluses enjoyed and minuses suffered as a result of which OS one chooses to develop and deploy upon. But I don't know what those are for FreeBSD, Linux and Solaris 10.

      I suspect there are different subtleties that crop up now and then with the way a script/language interacts with one OS versus another. But again, I don't know what these are, let alone how frequently they occur -- nor how they might affect server uptime and maintenance requirements. Is there meat here...or just mist and myth?

      Also, there is the "context" an OS comes with. The richness and power of the user land, utilities and libraries....the quality of documentation...and last but not least even the "cultural personality" many typical working environments of the user base and community surrounding a given OS and development language exhibit.

      Hopefully, I'll end up working for myself and will care mostly about suitability to task, uptime, performance and ease of keeping the servers up to date and secure. But if I end up getting another job, why not also do what I can now to pick the most kindred spirits to work with by picking the platform and development tools as best I can?

      I seek to choose wisely and well. Thus my query to those here who, IMO, are wise indeed.

      Sincerely and gratefully,

      a humble newbie

Re: Effect of OS Platform choice for learning and doing Perl well
by CountZero (Bishop) on Sep 29, 2005 at 19:38 UTC
    Until very recently I used Perl on Windows XP and now I have installed Mandrake Linux on an old PC. As far as doing dynamic webpages and Perl goes, I don't see much difference.

    There is perhaps a little bit more choice available in modules for Linux due to the fact that it comes standard with all necessary compilers and they work right out of the box.

    The difference is small though, so I should go for that what comes most natural to you or that which poses the most opportunities to find employment.

    CountZero

    "If you have four groups working on a compiler, you'll get a 4-pass compiler." - Conway's Law

Re: Effect of OS Platform choice for learning and doing Perl well
by cbrandtbuffalo (Deacon) on Sep 29, 2005 at 20:10 UTC
    Step 1: sign up for a perlmonks account so you can start your journey toward monkhood. :)

    As for which OS to go with, it really depends on criteria. As you've heard, Windows will work fine, but probably isn't the most marketable since you'll find fewer Windows shops using Perl to do web stuff. They tend to use .Net and other MS technologies.

    Solaris is an excellent operating system, is freely available, and can run on Sun or Intel. There are a few things that are strange, like the availability of Sun compilers vs. GNU compilers, but otherwise very straight-forward.

    Linux is becoming more popular in industry, but might require more work on your part to install and admin, depending on the distro you pick.

    Most of your Perl knowledge will transfer well between them all. Good luck!

Re: Effect of OS Platform choice for learning and doing Perl well
by rruiz (Monk) on Sep 30, 2005 at 06:34 UTC
    I'm new to Perl. I want to learn Perl very, very well. So well that I can become a full time (maybe self employed) Perl developer, developing web based systems useful to my fellow humans.

    In the case you go for self-employment, my recomendtion would be to scout some webhosting to find the one that fits your bill. Then see which OS they are using and learn/test/play Perl in that OS.

    That will help you to see what the pre-installed Perl Modules are in that plataform (especially which version), and it will be easier for you to keep similar production & development environments.

    This may ease your development efforts, because your scripts will be tested in a very similar environment as the one they will be deployed on.

    HTH, God bless you
    rruiz

Re: Effect of OS Platform choice for learning and doing Perl well
by zentara (Archbishop) on Sep 30, 2005 at 10:58 UTC
    Perl will be easier to learn on linux. It runs better on linux, you can install modules easier on linux, linux comes with a free c compiler, which makes installing xs-based modules very easy. Tk will look and run better on linux. Gtk-perl will run better on linux. So I would say linux.

    I'm not really a human, but I play one on earth. flash japh
      I'm a real true Linux believer, however I must say this isn't true. I'd used Perl on Linux, IRIX, Solaris, Mac OS X and Windows and it doesn't make much of a difference, really. OK, Windows generally sucks, but Open Perl IDE is really good, and ActiveState Perl is OK.
      So my advice is : go with Unix (Linux and OS X included). Stick with windows only if you have to.
Re: Effect of OS Platform choice for learning and doing Perl well
by Anonymous Monk on Oct 02, 2005 at 21:51 UTC
    Dear Monks,

    I'm the oiginal poster. A warm hearted thank you for taking the time to so kindly share your helpful advice. I very much appreciate it. I have given each of your postings a lot of thought.

    It's always a bit of a crapshoot to offer input when one doesn't know much about the Perl newbie asking the question. But I sure am glad each of you have shared as you have!

    FWIW, I do understand that for purposes of learning Perl initially, the OS chosen won't be a super big deal. But, as correctly gleaned in the following snippet by dwildesnl, I do have in mind progressing to develop fairly advanced systems. So I would like to pick an OS that won't hinder me at a minimum. And I do like to develop an in depth mastery of the tools I use.

    There does seem to be merit in developing on the same OS one will be deploying production code upon. At least for someone like me who wishes to run their own servers. But I simply don't know how much difference there is in effective and secure server administration of -- let alone the nuances of perl executable code interaction at the OS level with -- Linux vs FreeBSD vs Solaris 10 vs Windows; thus my query to you all.

    Dwildesnl's snippet:
    <snippet>
    The OP is coming from COBOL, one of the most insular programming systems ever developed. Given that he was talking about nuances of system calls, I suspect that he has visions of apps that push Perl around corners that go a little bit further than CGI.pm intended. It is true that _learning_ Perl can be done on any scriptkiddie car that will run it, but deploying a Perl app successfully in a commercial environment demands stability, consistency, and predictability. When I have direct commercial success in such an endeavor, and FreeBSD has cushioned my @ss in doing so, should I not spread the word?
    </snippet>

    Dwildesnl's combined postings in this thread suggest a lot of merit to going with FreeBSD. At this point, that seems to be the way to go, since I also want *nix servers as robust and trouble free to admin. as I can get as a newbie server admin. Now I just need to choose between FreeBSD 4.11, 5.4 and 6.0 (beta) for learning and deployment. ;-)

    As a technical person, I very much admire you all. I feel very fortunate to have found this place. I hope to advance to the point where I can one day stand close to you all in Perl ability. Please know I shall study and code dilegently to do my best.

    Thanks again and best wishes to you all,

    a humble newbie

      < Posting publicly since /msg to AM is unlikely to get anywhere... ;-) >

      First off, let me say that there are a great number of great sites running on Linux servers. It isn't that bad. :)

      Rule number one: Never buy a first-year car. FreeBSD 6, while it has some impressive improvements and the MUTEX locking improvements are much to be desired for threading, isn't ready for production. FreeBSD 5.4, while I have heard of a memory leak in a particular RAID board/driver configuration, is a stable, solid release and is the one I'd recommend. I still have some production servers running 4.11, but that's only because we haven't been able to migrate because they're so successful. :)

      There are vast amounts of Perl code in the FreeBSD distribution and ported-app collection, to the point that there was quite a discussion about what Perl to install as part of the base system. Since now the variety of modules in Ports are linked against many different Perls from 5.003 on up, the end result was to give up and just let Perl be installed in whichever set of varieties was needed.

      One more bit of advice: always use the FreeBSD Ports version of a module where it exists in preference to downloading from CPAN.

      Welcome to the community, on whichever platform you choose to Perl. :D
        Thanks, Dwildesnl.

        I very much appreciate your taking the time to post so helpfully as you have. Thank you very much!

        FWIW, I'm typing this thank you to you via KDE on FreeBSD 5.4, which I recently installed on this home PC.

        Thanks again and take care!

        A humble newbie

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://496165]
Approved by ww
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (9)
As of 2014-12-29 14:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (191 votes), past polls