I've been reading Slashdot for a while (and only relatively recently registered a username), and I've made a futile effort to be a voice of reason in multiple Perl vs. Python vs. Everything Else flame wars. This is also a technical challenge for my own amusement...
Paranoia makes it easy to take offense to something not truly intended to be offensive. Every day I stay in my room I lose a little more touch with reality. Man, I gotta get some friends.
But, yes, life is good, PYFGCRL typist. Pretty awfully good. Ciao.
You make it sound as if this is a productivity issue. It really isn't. It might be someday, when I'm out of college and unemployed with my useless CS degree, frantically tweaking resumes. It's really more of a combination between the "I like inventing shiny toys" problem and the "I don't feel like leaning forward to mess with my speakers" problem. I can touch type, but some of my less frequently used Winkey shortcuts haven't exactly been committed to muscle memory. In any case, my eyes provide a much more "efficient" realignment to home than do the ridges on F and J, LOLOLO ROFFLE, and my observation about the blackness of the keyboard is simply an acknowledgement of a previous buying mistake. Actually, buying the cordless set was probably a mistake... I'm constantly replacing batteries but seldom exploit the cordlessness. The volume knob and mute button are in fact the only media keys on my board I ever really use. I might use play, pause, et cetera, but they invariably open the wrong application. And I write the scripts because I am a frequently bored programmer who enjoys an intellectual challenge more than a mundane physical motion. I actually started programming today to figure out the Win32 mixer API (the volume and mute parts) so I could write my own controls program, maybe controllable with some momentary-close switches rigged into ripped-open Gravis pad, or some more shortcut combinations. To some degree, it's hack for the sake of hack.
Read my post again. Do I really sound whiny? If so, it's only because it doesn't quite make sense to me that almost every special keyboard out there only has one extra feature, and hardly any have two. And I don't mean to whine about it, because it's not killing me to make all the mouse motions (most of which are only necessary because of bad programming by people who don't bother to program key sequences). I just like to have the power to do something about it, you know?
By the way, if you still insist that this is a productivity issue, I want you to know that writing this stuff in Perl is ridiculously easy and my MW script saves me a whole ten impatient seconds every time the thought crosses my mind to look up a word I haven't seen in a while or to clarify a meaning or pronunciation. Trust me, it happens ridiculously often.
This was a very interesting article. I natively speak Perl, C, and C++, know enough about PHP to get by, and still remember some Commodore 64 BASIC (10 ? CHR$(147)). I am also, as I believe I've said before, not afraid to learn things like Java, Python, Ruby, maybe even Visual Basic again (God forbid) should they prove exceedingly relevant to my case - in fact, I quite look forward to knowing (hopefully) all of them and then some. But never Pascal. (Just kidding.)
I've really found that the thing I hate most about programming in general is that no single language is the right one to use for any of my programs! I am very interested in any effort I ever come across to do functional merging of disparate environments. In addition to a couple of workarounds I've invented in the past for shoehorning Perl into PHP, I like reading about things like SWIG, the open CLR, and even COM (the concept more than the implementation), and a smile always comes to my face when I think about the Inline library written for Perl.
Now, the thing I really pine for is all of this interlanguage binding stuff being easy, fairly portable, more synactically simple, and less hacky. I know that these exist, but not quite completely together. If I write a program in Perl with use Inline C, I can never be sure that anyone else has all the development tools necessary to compile all the C on the fly. Writing a program in Visual Basic with a nice mouse-drawn GUI and an external component is really easy - but it's Visual Basic. Writing a component wrapper for Perl is fairly straightforward with SWIG, but some well-thought-out language features would make it easier. And COM... I'm going to have to try wrapping my head around that book again someday... I'm sure the ATL makes it all very simple, but can I use ATL from MinGW? From C? From Perl? And don't try to tell me that I need to learn yet another flavor of XML to make all of this work.
That's mis tus centavos.
(Note: I disclaim perfection. Don't hit me too hard; I admit I haven't done enough of my homework to claim this post isn't full of holes. Once I've looked this whole matter through, if ever, and if I still haven't come up with anything good, I may just have to take a deep breath, lay down a syntax, figure out how to use a lexer generator and a compiler compiler, and throw together some ghastly but very easy-to-use homogeneous aggregator system. Either that, or I wait for Parrot to interoperate with Mono...)
As a fairly recent inductee into the community of GL programmers, and one who has already had a lot of fun with it, I really like the sound of this idea, even despite a potential absence of viability. I know that if GBA, for example, were a possible build target for OpenGL on SDL, I would buy one in a heartbeat...
Not that this is on topic by any means, but here is a response.
Of the established solutions for compiling Perl into executables, at the forefront are IndigoStar's Perl2EXE and ActiveState's PerlApp. Both are commercial products. I've not had a reasonable impetus to buy either, but programs like AmphetaDesk, an RSS aggregator written in Perl, make impressive use of Perl2EXE. There may be a point in the future at which I might happily buy it--it just depends on the end I'm trying to meet with a given project. Sometimes preaching the freedom-of-software concept makes us forget that things can be worth money...
There's also perlcc, which comes standard with Perl, but it's in a "very experimental" stage and not recommended for production code.
So, there are options.
Of course, you aren't being a zealot by mentioning the advantages of one language over another. I've enjoyed reading all of the (reasonable) point/counterpoint comparisons between Python and Perl. I personally don't do enough programming in any of the areas where Python surpasses Perl's usefulness to make a serious switch. Perhaps in the future, I will.
What doesn't make sense is one's assumption that because he writes code in one language instead of another he is somehow of a superior race of beings. If there's any measure of superiority to be had, it more appropriately belongs to those who are familiar with (or even those who are willing to learn) more languages and environments and all of the necessary tricks and idioms to write an intelligent solution within any one of them.
But even if this is something that properly defines one's superiority, making a nuisance of oneself screaming about said superiority does an incredible lot to negate it.
I like to think that while the zealots are trying to make themselves heard, the important people are behind the scenes doing the important things. Any loudmouth shouting on behalf of any language should remember that the people who love the language most are working tirelessly to change it for the better. Read Larry Wall's Apocalypses and see if I'm kidding--and pay particular attention to the part where he destroys the regular expression as we know it.:-)
I also like to think that the really hardcore programmers out there aren't wasting their time arguing about what language is superior or whining about what you can do in one environment that you can't in another. Real programmers are too busy getting things working, by any means necessary, within the boundaries of the environment. If you are a true programmer, an environment works as well as you force it to work.
I'm very comfortable in GNU now, Linux, Cygwin, and then some, but it wasn't always so. A few years ago, being a Windows only type and knowing no C or C++, I used to work with Visual Basic a lot. When I found out that Perl worked better for about everything I had been using VB for, I switched. When I couldn't figure out how to do SendKeys or AppActivate using Perl and Win32 API calls, did I spend time griping? No! I wrote an ActiveX DLL, figured out enough C to get COM going, and SWIGged it together.
Slightly more recently, I wrote a parser in Perl to implement a workaround to various shortcomings in Greymatter, but I had to make it work with PHP, in which the entire rest of my site was written (because it's way easier to write a page in PHP than in Perl). Was it any problem? No. For the prototype, I had PHP exec my Perl. Was it messy? Yes! Eventually, when I had the time, I rewrote the parser from top to bottom in PHP.
There's no need to be religious about any of this. If you have the option to use the environment of your choice, by all means, use it! But if you are forced to work outside your boundaries, remember, you are a programmer; you can take it. Plus, the last thing you want to do is take out your frustrations on the masters of the unknown domain.
I write programs all the time that my friends want to try but won't because ActivePerl is 12MB to download. I'm not going to scream at my friends for not having Perl; they just can't use my program. If it's worth my time, I may go to the trouble of rewriting in C++. If it pays enough, I might even spring for Perl2EXE to do the work for me.
It's as simple as that. There's always some solution. You write for your environment. You try to convince your client to deploy programming environment N or virtual machine V on all the workstations; if that's a no go, you do something else that is a go--if that's not practical, you lose the sale.
At this point, I know most of what I need to know to get by in Perl, PHP, JavaScript, C, and C++, and maybe a little VB if I search my memory far enough, and I do virtually all my writing in vim (within which, I admit, I don't know every single command that might be of use to me). If somebody needs me to write something in Python, or Java, or Tcl, or Lisp, or JScript on Windows Scripting Host, or any other wacky thing with which I'm not in constant contact, and makes me do it in Emacs or Pico or even Notepad, damn it, should I back down? Hell, no!
First, I try my obviously overdeveloped shoehorning skills! (It's amazing how many different ways you can find to get incongruous program environments to communicate!):-D
If that doesn't work, then I owe it to myself to take a serious look at what this environment can do, what it can do right, and what I have to work around. Then, I do my work and move on with my life.
I believe that this is a vital part of what is necessary to be a bona fide Renaissance Programmer, and that most programmers who don't feel the same have no business programming.
I've been reading Slashdot for a while (and only relatively recently registered a username), and I've made a futile effort to be a voice of reason in multiple Perl vs. Python vs. Everything Else flame wars. This is also a technical challenge for my own amusement...
Paranoia makes it easy to take offense to something not truly intended to be offensive. Every day I stay in my room I lose a little more touch with reality. Man, I gotta get some friends.
But, yes, life is good, PYFGCRL typist. Pretty awfully good. Ciao.
Man, this FK-9200 looks like exactly, exactly what I want. If it isn't the last one I try, it'll at least be the first. Thanks a zillion for the tip!
That reminds me of this crazy garbage I ran across in my search: This Creative Labs keyboard with a nice set of "extra keys". Man.
I love your biting sarcasm, SMARTEY MAN.
You make it sound as if this is a productivity issue. It really isn't. It might be someday, when I'm out of college and unemployed with my useless CS degree, frantically tweaking resumes. It's really more of a combination between the "I like inventing shiny toys" problem and the "I don't feel like leaning forward to mess with my speakers" problem. I can touch type, but some of my less frequently used Winkey shortcuts haven't exactly been committed to muscle memory. In any case, my eyes provide a much more "efficient" realignment to home than do the ridges on F and J, LOLOLO ROFFLE, and my observation about the blackness of the keyboard is simply an acknowledgement of a previous buying mistake. Actually, buying the cordless set was probably a mistake... I'm constantly replacing batteries but seldom exploit the cordlessness. The volume knob and mute button are in fact the only media keys on my board I ever really use. I might use play, pause, et cetera, but they invariably open the wrong application. And I write the scripts because I am a frequently bored programmer who enjoys an intellectual challenge more than a mundane physical motion. I actually started programming today to figure out the Win32 mixer API (the volume and mute parts) so I could write my own controls program, maybe controllable with some momentary-close switches rigged into ripped-open Gravis pad, or some more shortcut combinations. To some degree, it's hack for the sake of hack.
Read my post again. Do I really sound whiny? If so, it's only because it doesn't quite make sense to me that almost every special keyboard out there only has one extra feature, and hardly any have two. And I don't mean to whine about it, because it's not killing me to make all the mouse motions (most of which are only necessary because of bad programming by people who don't bother to program key sequences). I just like to have the power to do something about it, you know?
By the way, if you still insist that this is a productivity issue, I want you to know that writing this stuff in Perl is ridiculously easy and my MW script saves me a whole ten impatient seconds every time the thought crosses my mind to look up a word I haven't seen in a while or to clarify a meaning or pronunciation. Trust me, it happens ridiculously often.
Mis dos centavos. Olvidaba mucho de mi español. Sumimasendeshita.
This was a very interesting article. I natively speak Perl, C, and C++, know enough about PHP to get by, and still remember some Commodore 64 BASIC (10 ? CHR$(147)). I am also, as I believe I've said before, not afraid to learn things like Java, Python, Ruby, maybe even Visual Basic again (God forbid) should they prove exceedingly relevant to my case - in fact, I quite look forward to knowing (hopefully) all of them and then some. But never Pascal. (Just kidding.)
I've really found that the thing I hate most about programming in general is that no single language is the right one to use for any of my programs! I am very interested in any effort I ever come across to do functional merging of disparate environments. In addition to a couple of workarounds I've invented in the past for shoehorning Perl into PHP, I like reading about things like SWIG, the open CLR, and even COM (the concept more than the implementation), and a smile always comes to my face when I think about the Inline library written for Perl.
Now, the thing I really pine for is all of this interlanguage binding stuff being easy, fairly portable, more synactically simple, and less hacky. I know that these exist, but not quite completely together. If I write a program in Perl with use Inline C, I can never be sure that anyone else has all the development tools necessary to compile all the C on the fly. Writing a program in Visual Basic with a nice mouse-drawn GUI and an external component is really easy - but it's Visual Basic. Writing a component wrapper for Perl is fairly straightforward with SWIG, but some well-thought-out language features would make it easier. And COM... I'm going to have to try wrapping my head around that book again someday... I'm sure the ATL makes it all very simple, but can I use ATL from MinGW? From C? From Perl? And don't try to tell me that I need to learn yet another flavor of XML to make all of this work.
That's mis tus centavos.
(Note: I disclaim perfection. Don't hit me too hard; I admit I haven't done enough of my homework to claim this post isn't full of holes. Once I've looked this whole matter through, if ever, and if I still haven't come up with anything good, I may just have to take a deep breath, lay down a syntax, figure out how to use a lexer generator and a compiler compiler, and throw together some ghastly but very easy-to-use homogeneous aggregator system. Either that, or I wait for Parrot to interoperate with Mono...)
As a fairly recent inductee into the community of GL programmers, and one who has already had a lot of fun with it, I really like the sound of this idea, even despite a potential absence of viability. I know that if GBA, for example, were a possible build target for OpenGL on SDL, I would buy one in a heartbeat...
Well, one can dream, can't he?
Not that this is on topic by any means, but here is a response.
Of the established solutions for compiling Perl into executables, at the forefront are IndigoStar's Perl2EXE and ActiveState's PerlApp. Both are commercial products. I've not had a reasonable impetus to buy either, but programs like AmphetaDesk, an RSS aggregator written in Perl, make impressive use of Perl2EXE. There may be a point in the future at which I might happily buy it--it just depends on the end I'm trying to meet with a given project. Sometimes preaching the freedom-of-software concept makes us forget that things can be worth money...
There's also perlcc, which comes standard with Perl, but it's in a "very experimental" stage and not recommended for production code.
So, there are options.
Of course, you aren't being a zealot by mentioning the advantages of one language over another. I've enjoyed reading all of the (reasonable) point/counterpoint comparisons between Python and Perl. I personally don't do enough programming in any of the areas where Python surpasses Perl's usefulness to make a serious switch. Perhaps in the future, I will.
What doesn't make sense is one's assumption that because he writes code in one language instead of another he is somehow of a superior race of beings. If there's any measure of superiority to be had, it more appropriately belongs to those who are familiar with (or even those who are willing to learn) more languages and environments and all of the necessary tricks and idioms to write an intelligent solution within any one of them.
But even if this is something that properly defines one's superiority, making a nuisance of oneself screaming about said superiority does an incredible lot to negate it.
Generic segue, an article about the BOFH becoming passé caught my eye today...
I like to think that while the zealots are trying to make themselves heard, the important people are behind the scenes doing the important things. Any loudmouth shouting on behalf of any language should remember that the people who love the language most are working tirelessly to change it for the better. Read Larry Wall's Apocalypses and see if I'm kidding--and pay particular attention to the part where he destroys the regular expression as we know it. :-)
I also like to think that the really hardcore programmers out there aren't wasting their time arguing about what language is superior or whining about what you can do in one environment that you can't in another. Real programmers are too busy getting things working, by any means necessary, within the boundaries of the environment. If you are a true programmer, an environment works as well as you force it to work.
I'm very comfortable in GNU now, Linux, Cygwin, and then some, but it wasn't always so. A few years ago, being a Windows only type and knowing no C or C++, I used to work with Visual Basic a lot. When I found out that Perl worked better for about everything I had been using VB for, I switched. When I couldn't figure out how to do SendKeys or AppActivate using Perl and Win32 API calls, did I spend time griping? No! I wrote an ActiveX DLL, figured out enough C to get COM going, and SWIGged it together.
Slightly more recently, I wrote a parser in Perl to implement a workaround to various shortcomings in Greymatter, but I had to make it work with PHP, in which the entire rest of my site was written (because it's way easier to write a page in PHP than in Perl). Was it any problem? No. For the prototype, I had PHP exec my Perl. Was it messy? Yes! Eventually, when I had the time, I rewrote the parser from top to bottom in PHP.
There's no need to be religious about any of this. If you have the option to use the environment of your choice, by all means, use it! But if you are forced to work outside your boundaries, remember, you are a programmer; you can take it. Plus, the last thing you want to do is take out your frustrations on the masters of the unknown domain.
I write programs all the time that my friends want to try but won't because ActivePerl is 12MB to download. I'm not going to scream at my friends for not having Perl; they just can't use my program. If it's worth my time, I may go to the trouble of rewriting in C++. If it pays enough, I might even spring for Perl2EXE to do the work for me.
It's as simple as that. There's always some solution. You write for your environment. You try to convince your client to deploy programming environment N or virtual machine V on all the workstations; if that's a no go, you do something else that is a go--if that's not practical, you lose the sale.
At this point, I know most of what I need to know to get by in Perl, PHP, JavaScript, C, and C++, and maybe a little VB if I search my memory far enough, and I do virtually all my writing in vim (within which, I admit, I don't know every single command that might be of use to me). If somebody needs me to write something in Python, or Java, or Tcl, or Lisp, or JScript on Windows Scripting Host, or any other wacky thing with which I'm not in constant contact, and makes me do it in Emacs or Pico or even Notepad, damn it, should I back down? Hell, no!
First, I try my obviously overdeveloped shoehorning skills! (It's amazing how many different ways you can find to get incongruous program environments to communicate!) :-D
If that doesn't work, then I owe it to myself to take a serious look at what this environment can do, what it can do right, and what I have to work around. Then, I do my work and move on with my life.
I believe that this is a vital part of what is necessary to be a bona fide Renaissance Programmer, and that most programmers who don't feel the same have no business programming.