We can copy the code to another branch



  • A monthly release that has been postponed 6 times now has six months of cumulative changes. Testing began just two weeks prior to release. Naturally, there are severe performance problems. They won't let us buy JProbe, or anything else, and although most of us have downloaded evaluation versions of this or that tool, the eval licenses have long expired on all of us (you can only download these things once per email address). Corporate found out about our constant downloading of these same tools and said no more fake email addresses in order to download yet another copy of the tool to try and analyze the problems.

    Now that we can't download these profilers, and can't buy them, the boss has decided that we'll just copy the "important" changes to the production branch for the release.

    Nevermind that everyone has been working on the same 50-ish files (for different reasons) for the past six months, so the interim check-ins of each project are all interspersed.

    Nevermind that folks who haven't worked on or looked at their code changes in an average of 3 months are supposed to remember all the little nuances of the changes so they can be copied to an unrelated branch.

    Nevermind that since nobody yet knows the source of the performance problems, that simply copying the code to another branch might well copy the performance problem too.

    Nevermind that there are only 5 days left until the release, and that after all that copying, there's virtually no time to run even one pass of tests, let alone a regression or performance test.

    At this point, it's find and fix the performance bug in slow but otherwise properly tested code, cancel the release, or it's a Hail Mary...

    In the mean time, half the team is working on last-second must-have changes.

    It's gonna be a fun week!



  • Wow, what would these managers do if they were diagnosed with cancer and the doctor told them they need radiotherapy? Ignore the recommendation and lie in the sun for half an hour every day until they got better, because the sun radiates and it's free?

     



  • If you need to buy a $3000 debugging tool because otherwise the application has severe performance problems, maybe you should consider using a less retarded technology (or development team).



  • And to add insult to injury, is anyone taking off the 4th of July?



  • You're a contractor, yes? Surely you can find some way to make sure corporate doesn't find the hat?



  • @flabdablet said:

    You're a contractor, yes? Surely you can find some way to make sure corporate doesn't find the hat?

    Heard many versions of that story, the best being about a KKK meeting and a jerrycan of fuel. (off-topic but reminds me of this video)



  • Message for Silent Eagle: the banana is green. I repeat, the banana is green.

    For those not in the know: snoofle is an undercover agent for TDWTF HQ, but his stories are getting so grandiose that he has to be called back.



  • @Speakerphone Dude said:

    maybe you should consider using a less retarded technology (or development team).
     

    Don't blame the team for using Java, it was a management decision for sure.



  • @SEMI-HYBRID code said:

    @Speakerphone Dude said:

    maybe you should consider using a less retarded technology (or development team).
     

    Don't blame the team for using Java, it was a management decision for sure.

    I can imagine the dialog:

    Developer: We need your approval for a 3000$ tool because the application we built has severe performance issues.

    Manager: Did you do something wrong when you built it?

    Developer: Absolutely not. The problem is management who delayed the release of some features and because we insisted on using a version control system called Git that is way cool but has zero support for anything but basic deployment we kinda lost control.

    Manager: Ok,so you want to buy a new version control system that is more flexible?

    Developer: No, we want to buy a debugger.

    Manager: Wait a minute, last year when we had to choose between C# and Java you guys said Java was a better choice and that the development tool, Eclipse, had all the plugins you needed for free. So we allocated the software budget on those extra Windows licenses that were needed since you all wanted to work on Mac laptops but needed a Windows dual boot to "test" your applications, and those laptops do not come with a cheap Windows OEM licenses.

    Developer: It's not our fault if management is delaying a release because some stupid user pulled rank or something. You messed up our build process and now it's a dependency nightmare we have to deal with.

    Manager: Did you not spend 3 months last summer working on a dependency framework of sorts? Raven or something? All that time we delayed delivery of new features to the paying customer because you told us it would pay for itself tenfold by allowing a more Agile build process.

    Developer: Duh, it's Maven not Raven, you PHB. It works perfectly well when management is not changing the release schedule. Or the features. Anyways we plan on rewriting it in Python because it's more efficient.

    [..]discussion goes on for 10 minutes[..]

    Manager (to himself): Can't believe they wasted 4000 man/hour on another worthless framework that they want to rewrite. Just like the logging framework and the custom ORM. Not only do I have to deal with the morons in marketing who sold a friggin' "social network" feature to the clients, I also have to hold the techies by the hand as usual. I am definitely gonna use this to show people at the MBA workshop tonight how difficult work can be in IT.

    Developer (to himself): WTF does he care about 3000$, penny pinching idiot. I am definitely gonna post something about this on the Side Bar WTF. Managers... what a bunch of morons.



  • @speakerphonedude: [$3000] - it's $700 and they need to "study" the problem. They should finish studying it in 3-6 months

    @OzPeter: [July 4] - everyone is off that day

    @flabdablet: [find the hat] - agreed, but I don't get to submit expense reports; my boss does that and he's hopelessly honest.

    Aside: since our new overlords bought us out, we can no longer just download whatever we want. To enforce it, they automatically run a job every time you log in or connect to the network - to scan for anything not on the approved list, and delete it. Parenthetically, their cleaner does a fantasitc job of clearing all the registry droppings; I'd love to know what they use.

     


  • Discourse touched me in a no-no place

    @snoofle said:

    Aside: since our new overlords bought us out, we can no longer just download whatever we want. To enforce it, they automatically run a job every time you log in or connect to the network - to scan for anything not on the approved list, and delete it. Parenthetically, their cleaner does a fantasitc job of clearing all the registry droppings; I'd love to know what they use.

     thumb drive with files marked read-only?



  • @Speakerphone Dude said:

    I can imagine the dialog:

    Developer: We need your approval for a 3000$ tool because the application we built has severe performance issues.

    Manager: Did you do something wrong when you built it?

    Developer: Absolutely not. The problem is management who delayed the release of some features and because we insisted on using a version control system called Git that is way cool but has zero support for anything but basic deployment we kinda lost control.

    Manager: Ok,so you want to buy a new version control system that is more flexible?

    Developer: No, we want to buy a debugger.

    Manager: Wait a minute, last year when we had to choose between C# and Java you guys said Java was a better choice and that the development tool, Eclipse, had all the plugins you needed for free. So we allocated the software budget on those extra Windows licenses that were needed since you all wanted to work on Mac laptops but needed a Windows dual boot to "test" your applications, and those laptops do not come with a cheap Windows OEM licenses.

    Developer: It's not our fault if management is delaying a release because some stupid user pulled rank or something. You messed up our build process and now it's a dependency nightmare we have to deal with.

    Manager: Did you not spend 3 months last summer working on a dependency framework of sorts? Raven or something? All that time we delayed delivery of new features to the paying customer because you told us it would pay for itself tenfold by allowing a more Agile build process.

    Developer: Duh, it's Maven not Raven, you PHB. It works perfectly well when management is not changing the release schedule. Or the features. Anyways we plan on rewriting it in Python because it's more efficient.

    [..]discussion goes on for 10 minutes[..]

    Manager (to himself): Can't believe they wasted 4000 man/hour on another worthless framework that they want to rewrite. Just like the logging framework and the custom ORM. Not only do I have to deal with the morons in marketing who sold a friggin' "social network" feature to the clients, I also have to hold the techies by the hand as usual. I am definitely gonna use this to show people at the MBA workshop tonight how difficult work can be in IT.

    Developer (to himself): WTF does he care about 3000$, penny pinching idiot. I am definitely gonna post something about this on the Side Bar WTF. Managers... what a bunch of morons.

    I read that whole thing waiting for it to get funny and it never did.

    Edit: oh wait I'm going to recycle one of my jokes, and it's actually funny: "don't quit your day job, Speakerphone Dude. Unless you're a screenwriter, then definitely quit it."



  •  @FrostCat said:

    @snoofle said:

    Aside: since our new overlords bought us out, we can no longer just download whatever we want. To enforce it, they automatically run a job every time you log in or connect to the network - to scan for anything not on the approved list, and delete it. Parenthetically, their cleaner does a fantasitc job of clearing all the registry droppings; I'd love to know what they use.

     thumb drive with files marked read-only?

    At $LASTJOB, we had an understaffed but reasonibly competent IT department that would usually look the other way if you installed your own software. As long as it was reasonibly work related and didn't break anything, they let it slide.

    My boss decided she much preferred Firefox to IE6, so she went ahead an installed it. Fast-forward to $BIGEVILCORP buying us out. Now we're overseen from afar by a massively overstaffed IT department with too much time on their hands and too many automated tools. Once our IT resources were assimilated, "unapproved" tools like Firefox would result in sternly worded emails.

     I was able to get approval to keep Thunderbird installed, due to a massive mail store (I wasn't going to import my old emails into Exchange, I guess lazyness won out and they decided to approve rather than migrate for me). I guess some ID10T certified manager thought Thunderbird == Firefox, because I quit getting nasty emails about both. There were some snotty emails about how important security is, and how we must be centrally managed to ensure we're running the latest and greatest software, etc. I did point out TB and FF have auto-updating features (FF updated more frequently than their security scans, even).

    Boss can't get approval for some reason. So, she uninstalls FF from the PC, does the FF on a memory stick routine, happily runs FF (note that doing the standalone install means you don't get auto-updates, at least back then it did) and everyone's happy (until $BIGEVILCORP shut the place down that is!)

    Wish they had stayed open longer, they were such WTF fodder, I'll have to submit some that I remember.

     

     


  • Discourse touched me in a no-no place

    @Speakerphone Dude said:

    Developer: Duh, it's Maven not Raven, you PHB. It works perfectly well when management is not changing the release schedule. Or the features. Anyways we plan on rewriting it in Python because it's more efficient.
    Funnily enough, there is a piece of software that is "related" to Maven called Raven that we use in one of our products. It is a sort of over-complex slow version of OSGi over remote repositories, but with added complexity and annoyance. Maybe someday I'll write it up for you guys properly as a WTF. Or maybe I'll just hide in the corner and cry quietly.


  • Considered Harmful

    @blakeyrat said:

    I read that whole thing waiting for it to get funny and it never did.

    @Speakerphone Dude said:

    we had to choose between C# and Java you guys said Java was a better choice

    I think this was the joke.



  • @snoofle said:

    They won't let us buy JProbe, or anything else
     

    What about jvisualvm, which is bundled with the JDK?



  • @blakeyrat said:

    @Speakerphone Dude said:

    I can imagine the dialog:

    [...] snip vibrant, meaningful dialog [...]

    I read that whole thing waiting for it to get funny and it never did.

    Edit: oh wait I'm going to recycle one of my jokes, and it's actually funny: "don't quit your day job, Speakerphone Dude. Unless you're a screenwriter, then definitely quit it."

    This hurts. There was no joke in my post, it was meant as a vibrant, meaningful dialog showing the cost of poor communication.

    But since you need to be entertained, here is a funny picture:

    This is funny

  • Trolleybus Mechanic

    @snoofle said:

    Corporate found out about our constant downloading of these same tools and said no more fake email addresses in order to download yet another copy of the tool to try and analyze the problems.
     

    ok. No fake ones. Only working email addresses. Gotcha.

    snoofle@gmail.com

    snoofle+1@gmail.com

    snoofle+2@gmail.com

     



  • Profiling, FTW!

    @cconroy said:

    @snoofle said:

    They won't let us buy JProbe, or anything else
     

    What about jvisualvm, which is bundled with the JDK?


    This.

    Most (all?) IDEs even have profiling tools built in. I know the JDK has other profiling tools, too. BTW, I'm my experience (take it with a grain of salt), the usual place for performance issues is any code path that has any string manipulation. Doesn't matter if it's a hot path or a cold path. String manipulation is time and memory consuming in Java. Either that or it's a concurrency issue. Those seem to spring up quite a bit.


  • ♿ (Parody)

    @Gazzonyx said:

    BTW, I'm my experience (take it with a grain of salt), the usual place for performance issues is any code path that has any string manipulation. Doesn't matter if it's a hot path or a cold path. String manipulation is time and memory consuming in Java. Either that or it's a concurrency issue. Those seem to spring up quite a bit.

    I can't recall string handling showing up as a problem for me. It's almost always a DB related issue. Either brain dead (or at least poorly scaling) queries or ORM abuse, resulting in loops and inner loops and inner inner loops and inner inner...well, way more round trips to the DB than any sane person would ever attempt.



  • Yeah, Eclipse and NetBeans have free profilers. And the are quite good. IntelliJ does not, but it integrates well with JProfiler and Yourkit, and probably others. As already mentioned, jvisualvm has a lightweight sampling profiler. There is also one available on the command line (HPROF).

    I can feel the pain of having six months of unshipped changes. I try to make people here to realize the value of releasing often, but they only seem to see the cost. Partly because where far away from continous deployment, and there is a lot of manual work. But also because noone is interrested in shipping great stuff, since we have almost zero interaction with the customer. Standard big corp stuff. Sigh!



  • @boomzilla said:

    @Gazzonyx said:
    BTW, I'm my experience (take it with a grain of salt), the usual place for performance issues is any code path that has any string manipulation.

    I can't recall string handling showing up as a problem for me.

    Being pedantic, but are you both talking about the same thing? I know of someone that tried Java string manipulation using String then StringBuffer and the speed comparison was night/day.

    (for the benefit of those that don't know: instances of the String class in Java are immutable; appending to the string actually causes a new instance to be created, the old one destroyed and the new one "renamed" - or repointed - to the old name.. all of which causes time. StringBuffer is intended to be used when you require manipulation of strings)

    @boomzilla said:

    It's almost always a DB related issue. Either brain dead (or at least poorly scaling) queries or ORM abuse, resulting in loops and inner loops and inner inner loops and inner inner...well, way more round trips to the DB than any sane person would ever attempt.

    Ditto that, in particular the related bit there: I've had coders complain about the speed of the database until a DBA or PL/SQL dev has looked at their method of accessing the data and explained how poor understanding of the way in which a DB works has led to writing a shit query. Double underline this for PHP devs: there are a lot of applications out there with utterly terrible (my)SQL embedded into substandard PHP code.


  • ♿ (Parody)

    @Cassidy said:

    @boomzilla said:
    @Gazzonyx said:
    BTW, I'm my experience (take it with a grain of salt), the usual place for performance issues is any code path that has any string manipulation.

    I can't recall string handling showing up as a problem for me.


    Being pedantic, but are you both talking about the same thing? I know of someone that tried Java string manipulation using String then StringBuffer and the speed comparison was night/day.

    Yes, I think that we are. I can imagine that if you're building giant strings and then changing them or something (a lot), it could be a problem. I've just never encountered that myself as being a problem. No doubt there have been some places where I could have micro-optimized some instances of that, but they never mattered enough to care about.



  • Most perf problems IMO are due to for-loop-oriented programming, where the coder uses loops for everything. Bonus points for not considering object lifetimes and thusly recomputing things needlessly ad infinitum. There is nothing like a O(n^7) algo for heating your server hall!

    Stringly typed programs can be bad, but are nothing in comparison.

    Oh, and another great perf killer is when you get someone on the team who thinks that using Thread.sleep() is a good way of coordinating threads :)



  • @Cassidy said:

    @boomzilla said:

    @Gazzonyx said:
    BTW, I'm my experience (take it with a grain of salt), the usual place for performance issues is any code path that has any string manipulation.

    I can't recall string handling showing up as a problem for me.

    Being pedantic, but are you both talking about the same thing? I know of someone that tried Java string manipulation using String then StringBuffer and the speed comparison was night/day.

    I am surprised that StringBuffer is still relevant in Java. Don't they copy all the bleeding-edge features of C#?



  • @Speakerphone Dude said:

    Don't they copy all the bleeding-edge features of C#?
     

    Dunno.

    Safer to ask someone highly-skilled in both languages and can offer an unbiased and informed opinion.

    *PING* Paging Nagesh!



  • @Cassidy said:

    Safer to ask someone highly-skilled in both languages and can offer an unbiased and informed opinion.
     

    Do these people exist?

    I just had this thought that for people proficient in several languages, it might be that these languages are in different domains, e.g. C#.Net for modern user-applications, Javascript for webpage scripting, Haskell or Lisp for the lulz, Python for scripting their computers, etc. These domains don't overlap all that much.



  • @Speakerphone Dude said:

    I am surprised that StringBuffer is still relevant in Java...

    Yup, still relevant, to avoid stupid, useless creation of gazillions of temporary String instances.



  • @dhromed said:

    Do these people exist?
     

    Rarely.

    Generally they're skilled in one language and then cross-trained in another, but will still favour one over the other (usually their former language).

    I'm multiskilled in several languages... but wouldn't classify my level of proficiency as being particularly exceptional - I'm more of a JoaT.



  • @Cassidy said:

    @boomzilla said:

    @Gazzonyx said:
    BTW, I'm my experience (take it with a grain of salt), the usual place for performance issues is any code path that has any string manipulation.

    I can't recall string handling showing up as a problem for me.

    Being pedantic, but are you both talking about the same thing? I know of someone that tried Java string manipulation using String then StringBuffer and the speed comparison was night/day.

    (for the benefit of those that don't know: instances of the String class in Java are immutable; appending to the string actually causes a new instance to be created, the old one destroyed and the new one "renamed" - or repointed - to the old name.. all of which causes time. StringBuffer is intended to be used when you require manipulation of strings)

    Correct me if I'm wrong, but you mean StringBuilder and not StringBuffer, right?



  • @Gazzonyx said:

    Correct me if I'm wrong, but you mean StringBuilder and not StringBuffer, right?
     

    No, I (initially) meant StringBuffer... but StringBuilder's a better example.

    Both provide several advantages over String.



  • @rstinejr said:

    @Speakerphone Dude said:
    I am surprised that StringBuffer is still relevant in Java...

    Yup, still relevant, to avoid stupid, useless creation of gazillions of temporary String instances.

    You can also use .intern().


  • @dhromed said:

    @Cassidy said:

    Safer to ask someone highly-skilled in both languages and can offer an unbiased and informed opinion.
     

    Do these people exist?

    Based on some of the job postings I've seen lately, I'd swear 4 out of 5 developers has 12 years of Java, 12 years of .Net (C#), 10 years of JavaScript/HTML/CSS, and 15 years of WinForms experience.

    Not to mention 10 years of experience in a technology which is only 6 years old...



  • @C-Octothorpe said:

    @dhromed said:

    @Cassidy said:

    Safer to ask someone highly-skilled in both languages and can offer an unbiased and informed opinion.
     

    Do these people exist?

    Based on some of the job postings I've seen lately, I'd swear 4 out of 5 developers has 12 years of Java, 12 years of .Net (C#), 10 years of JavaScript/HTML/CSS, and 15 years of WinForms experience.

    Not to mention 10 years of experience in a technology which is only 6 years old...

    Based on a recent post by snoofle we now know that people gladly do double-billing, so if you take experience from timesheets, it's entirely possible to have 10 years of experience in a technology that is 6 years old.



  • @Speakerphone Dude said:

    @C-Octothorpe said:
    @dhromed said:

    @Cassidy said:

    Safer to ask someone highly-skilled in both languages and can offer an unbiased and informed opinion.
     

    Do these people exist?

    Based on some of the job postings I've seen lately, I'd swear 4 out of 5 developers has 12 years of Java, 12 years of .Net (C#), 10 years of JavaScript/HTML/CSS, and 15 years of WinForms experience.

    Not to mention 10 years of experience in a technology which is only 6 years old...

    Based on a recent post by snoofle we now know that people gladly do double-billing, so if you take experience from timesheets, it's entirely possible to have 10 years of experience in a technology that is 6 years old.

    Good point... I'll have to remember that one.


  • @dhromed said:

    @Cassidy said:

    Safer to ask someone highly-skilled in both languages and can offer an unbiased and informed opinion.
     

    Do these people exist?

    I think it depends on what you mean by unbiased.  I personally find when I know two different languages very well, and they're generally used for the same domain (for example, python and perl) I will get an informed bias for one over the other.  It's possible that will be specific to certain applications, so I'll create a domain separation.  Or it's possible that one will have a series of idiotic concepts, such as all arrays being immutable, all strings being immutable, supposedly to improve performance, but they give a half percent boost where they do improve performance, and cost multiple percentage points in more commonly occurring points.  And maybe that same language will have default stack trace dumps and attract coders addicted to the catch-throw paradigm, and formatting as part of the program structure so programmatic format correction is dangerous at best, and a dozen other issues, such that the informed bias will be very strong.

    If you mean someone who's highly skilled in both languages, and does not actually yet have any preferences between them, then, I'm sad to say, these people exist, too.  At least, if your definition of highly skilled includes people who are completely apathetic about coding styles and formatting and have no desire to add meaningful comments, and can erect some of the most monstrous piles of WTF code we've seen here - code which is all but impossible for anyone *not* capable of belonging to this set of people to maintain, but actually performs the desired function, eventually, assuming correct input.  That having been said, I would contest that it's safer to ask them anything; their opinion-forming skills tend to be sadly lacking, in my limited experience.  Normally, I'd be hesitant to make such a statement on a sample size of three, but having seen two of them take over half an hour to decide what to get for lunch in the company cafeteria, every day I had the misfortune of eating lunch with them and actually stuck around long enough for them to make their selection, purchase it, and come to the table where I and all of their other coworkers involved had already finished eating our lunches, and heard that the third was no better - I never ate lunch with him; it was avoidable - I feel it reasonably safe to say people like them may have difficulties in actually deciding things.  I could also mention many other examples of why I feel they weren't the best of decision makers, but I fear if I listed them all, I'd exceed the maximum post size limit, and this thread would be dead for months before I finished.



  • @tgape said:

    @dhromed said:

    @Cassidy said:

    Safer to ask someone highly-skilled in both languages and can offer an unbiased and informed opinion.
     

    Do these people exist?

    I think it depends on what you mean by unbiased.  I personally find when I know two different languages very well, and they're generally used for the same domain (for example, python and perl) I will get an informed bias for one over the other.  It's possible that will be specific to certain applications, so I'll create a domain separation.  Or it's possible that one will have a series of idiotic concepts, such as all arrays being immutable, all strings being immutable, supposedly to improve performance, but they give a half percent boost where they do improve performance, and cost multiple percentage points in more commonly occurring points.  And maybe that same language will have default stack trace dumps and attract coders addicted to the catch-throw paradigm, and formatting as part of the program structure so programmatic format correction is dangerous at best, and a dozen other issues, such that the informed bias will be very strong.

    If you mean someone who's highly skilled in both languages, and does not actually yet have any preferences between them, then, I'm sad to say, these people exist, too.  At least, if your definition of highly skilled includes people who are completely apathetic about coding styles and formatting and have no desire to add meaningful comments, and can erect some of the most monstrous piles of WTF code we've seen here - code which is all but impossible for anyone *not* capable of belonging to this set of people to maintain, but actually performs the desired function, eventually, assuming correct input.  That having been said, I would contest that it's safer to ask them anything; their opinion-forming skills tend to be sadly lacking, in my limited experience.  Normally, I'd be hesitant to make such a statement on a sample size of three, but having seen two of them take over half an hour to decide what to get for lunch in the company cafeteria, every day I had the misfortune of eating lunch with them and actually stuck around long enough for them to make their selection, purchase it, and come to the table where I and all of their other coworkers involved had already finished eating our lunches, and heard that the third was no better - I never ate lunch with him; it was avoidable - I feel it reasonably safe to say people like them may have difficulties in actually deciding things.  I could also mention many other examples of why I feel they weren't the best of decision makers, but I fear if I listed them all, I'd exceed the maximum post size limit, and this thread would be dead for months before I finished.

    You must be a Democrat, you think too much before making a decision. There is no need to spend hours analyzing domains and purposes and scopes - here is an empirical classification of languages that matter (one may ignore the languages that are specific to a platform one does not use):

    • Fat client, library or service: C# > Java > C++ > C > Visual Basic > Pascal/Delphi
    • Web (Server): PHP > Ruby > Coldfusion
    • Web (Client): Javascript > Vbscript > ActionScript
    • Scripting: Perl > PowerShell > Python

    If someone is using anything else, it must be because:

    1. it's a theoretical/highly specialized context (IA, CFD, etc.)
    2. it's a limited, embedded or legacy platform (avionics, mainframe, coke machine, etc.)
    3. it's a proprietary lock-in that cannot be avoided (Objective C, T-SQL, VBA)

    ... otherwise it's just silly. Like the guy who wrote a web server in Postscript. I could have added a video game section but really who cares about Lua.



  • Language biases

    I've found I can only really be excellent at one language at a time. I use a bunch, but I'm always most proficient in Java. My goto (see what I did there?) language used to be C++, but it was eclipsed by Java sometime during my freshman year in college. At any given moment I'm in the process of completely forgetting how to code a single line of one language while becoming much better with another one. The exception being Java which I can always put down for months and come back and be just as good with it as ever. I think it's mostly the nature of dual booting and writing code for *NIX and Windows. I use Java on both, but on Windows at work I use VBA (ugh!) and promptly forget the language when I haven't used it in a month or two. At work on the *NIX side, I write a lot of bash scripts, but not enough that I've ever formally learned the language, since I'm never using it on Windows under Cygwin.


    At any rate, IMHO, you should probably become very skilled in a single language and be able to pick up others as you need. I've found that I like C/C++/Java syntax and I gravitate towards that family of languages. That being said, you should be familiar with many types of languages and their paradigms. Not that you'll ever write something in Haskell, but messing with a functional language can be fun and make you think differently about how you use your favorite language.


    P.S. - addressing Speakerphone Dude's listing. Not sure if you're trolling or not, but I think these days Python is considered a Web server side language due to the Django framework. I think that's mostly where it's finding its niche. Granted, Red Hat uses it for everything (GUIs included), but I don't think many people use it merely for scripting. Correct me if I'm wrong.



  • @Gazzonyx said:

    Not sure if you're trolling or not, but I think these days Python is considered a Web server side language due to the Django framework. I think that's mostly where it's finding its niche. Granted, Red Hat uses it for everything (GUIs included), but I don't think many people use it merely for scripting. Correct me if I'm wrong.

    A lot of people use Python for web applications but that does not mean it is a good choice. PHP has pretty good frameworks but can be used without them and the nature and popularity of the language makes it easy to hit the ground running; Java has very mature frameworks and extremely robust features but has a steeper learning curve. In this context I just don't see why someone would pick Python, especially as there is no easy way to use it for web applications unless you pick a framework (so you have to learn Python + learn the framework, which sucks). For the web, Python is more tedious than PHP and less feature-rich than Java.

    Python is very popular in specialized scripting, such as BI or extending ERP/financial systems features. Also organizations that use Hadoop or other distributed frameworks frequently use Python because it is simple and flexible and is a natural choice for a map-reduce approach.

    But there is no real advantage to use Python for web applications, so unless someone wants to start again wondering and evaluating and weighing and considering non-tangible factors, it can be immediately discarded for that purpose.



  • @dhromed said:

    @Cassidy said:

    Safer to ask someone highly-skilled in both languages and can offer an unbiased and informed opinion.
     

    Do these people exist?

    I just had this thought that for people proficient in several languages, it might be that these languages are in different domains, e.g. C#.Net for modern user-applications, Javascript for webpage scripting, Haskell or Lisp for the lulz, Python for scripting their computers, etc. These domains don't overlap all that much.

    Jumping in late here on the multi-skilling aspect. I have just received some requirements from a recruiter for a job:


    b. Knowledge, Skills, Abilities

    i. Alstom Grid Energy Management Platform - e-terra Platform, and e-terra Habitat

    ii. Expert C++ programming language

    iii. Expert in Fortran programming language

    iv. Proficient in PERL programming language

    v. Proficient in communication protocol programming

    vi. Proficient in Windows Server and Linux Server

    vii. Knowledge of RTU's, PLC's and other automation

    viii. Knowledge of communications equipment and forms from serial, IP based in terms of automation

    ix. Knowledge of C-sharp and scripting languages

    x. Knowledge of electric industry automation/equipment and function

    xi. Knowledge of Relational Databases

    I've never heard of e-terra before (not surprising as I have never works in the power sector), and the last Fortran I did was in 1983 or there abouts (and nothing says any different on my resume) and my C++ is probably very rusty, so in all I could probably maybe meet 60% of the requirements. Of course the recruiter is all excited about putting my name forward, but I know I saw this job a few weeks ago I thought that I wouldn't be a serious contender for the position. But given they are still looking I may have a chance as I can't see many people having the high level of expertise required in all their areas.



  • @Speakerphone Dude said:

    You must be a Democrat, you think too much before making a decision. There is no need to spend hours analyzing domains and purposes and scopes

    You confuse me with the people about whom I was speaking.

    Perl is better at web server processing than PHP, so long as you pick a decent templating library for your purpose, and you're able to defend against the insanity of letting non-programmers write code (with the right templating tools, the code is almost entirely in code libraries, *not* the web pages, so this is possibly a non-issue).  Unfortunately, selecting the perl templating library is a more complicated decision than selecting the language usually is.

    @Speakerphone Dude said:

    I could have added a video game section but really who cares about Lua.

    I do.  Specifically, I care that it is a language that is not well suited to any purpose.  Kind of like an interpreted version of Java, Lua sucks in just about as many ways as any serious language can.  Yes, there's a lot of support libraries for it for video games, but I would posit that it would be more worthwhile to spend the time to re-implement those for a real language than to use Lua.

    The main thing Lua has going for it is the people who use it don't actually pay for the vast majority of the systems that will run their Lua code, so it doesn't matter to them, as far as they believe, that its performance is abysmal. and its creators cherry-picked all of the worst ideas the Java devs ever had when they created it.  As such, it's unlikely for anyone who chooses Lua to care about how badly it sucks.

    Disclaimer: my only exposure to Lua was via WoW.  That having been said, I "played" that game for roughly two years, and by "played", I mean I spent an awful lot of time coding addons and testing them to see if they worked, and a bit of time playing WoW.



  • @tgape said:

    Perl is better at web server processing than PHP
     

    I was under the impression that running perl in mod_perl or FastCGI was still slower than running the equivalent PHP routine in mod_php. That not the case?

    (this was back in the days when PHP was regarded as "Perl Hack Program")



  • @Cassidy said:

    @tgape said:

    Perl is better at web server processing than PHP
     

    I was under the impression that running perl in mod_perl or FastCGI was still slower than running the equivalent PHP routine in mod_php. That not the case?

    (this was back in the days when PHP was regarded as "Perl Hack Program")

    @PHP.net said:

    The biggest advantage of PHP over Perl is that PHP was designed for scripting for the web, while Perl was designed to do a lot more.

    I haven't kept up with the full capabilities of PHP, but I strongly doubt they've actually caught up to where perl was 5 years ago in terms of full capabilities.  While the PHP website claims that PHP handles the full functionality needed to do web sites, the current paradigm is to have everything on the web.  Having everything on the web means you need to be able to do everything, not just display HTML produced from doing a simple database query.

    I also haven't run a full comparison in some time.  When I first ran such a comparison, PHP was an interpreted language, so it would generally win any comparison which featured short interpreter/parser lifetimes, and lose any that featured long interpreter/parser lifetimes.  So if your mod_perl apache config loaded all of your support modules and your pages at apache start, it would eat PHP's lunch and dinner, before the PHP process finished its breakfast.  But the published performance tests back at that time didn't do any perl pre-loading, so the initial page load for each apache child would need to compile the associated perl code.

    Part of it depends on what templating system you're using.  If you're running a very heavy-weight templating system, you pay for it.  The same goes for anything else you're doing that's particularly heavy, such as your database engine.  One of the dangers of using a well established language like Perl, especially one with a well-published database of modules like CPAN, is that it gets to be very easy to include a huge amount of code that you don't need in your program.  While that adds a lot of functionality easily, if you're not using it, paying to do a start-time compile and keep it in memory is silly.  If it does something behind the scenes such that it sucks a little of your performance from everything, it's stupid.  But I've seen a lot of perl programs and perl web pages that did this.

    Part of it depends on the code complexity.  Very simple code would run about as fast or maybe a little faster in PHP.  However, perl's more complete feature set enabled one to make the more complicated things run sufficiently more efficiently it was able to win out once you have something as complex as a real page, rather than a test mockup.  But published performance tests rarely use real pages.

    Of course, you need to have a clue about how to make efficient code to have an efficient website; if your perl code is using regexes for everything, and your PHP code is using straight forward coding with only minimal string processing, your PHP code is going to beat the perl code handily.  If your perl code is re-implementing common perl builtins - for example, using a C-style for loop to iterate through an array to find the elements that match a condition, rather than grepping the array - then it's probably going to be slower than PHP code that uses the full richness of the PHP language as appropriate.  Every PHP versus perl performance study I remember seeing published which included the PHP and perl code samples used had better PHP code quality than perl code quality.  Probably at least half of them used backtick expressions to do things that are trivial in perl; backtick is another huge performance loss.  Yeah, it's nice to be able to easily run some unix commands and get their output, but doing something like `rm $file`; is gratuitously bad.  Yes, it works, but it's about 1000 times slower than unlink $file;.  And, yeah, I really do mean 1000 times.  The exact amount will vary based on your OS and your processor, but doing a fork exec to invoke bourne shell, which then does a fork exec to invoke rm to remove the file is going to be expensive on any system.  Redirecting the output to a scalar that then gets tossed is just icing on that performance suck cake.

    Language performance comparisons, in general, should have experts for each of the languages write the code to test.  Most of the published language performance comparisons I've seen had one programmer write all the test code, and, surprisingly, that programmer's favorite language would pretty much always win.  Occasionally, I've seen tests where they have multiple people writing the code, but the skill level is clearly not similar between those people.  The worst featured perl code that didn't even work, despite the fact it was only supposed to do a very easy thing.  After the code to test has been written, the experts should then compare their code to the other experts' code, to make sure they actually wrote it to do the same thing - I have seen at least one performance test where the "faster" language had run code that would only handle the performance test requests, and the "slower" language had run code that would handle much more generic scenarios, and had numerous features the "faster" language's code did not have.  That's kind of like racing a motor cycle against a pickup truck pulling an empty boat trailer, and saying that the motor cycle beating the truck showed that the motor cycle had a better engine than the truck.



  • @tgape said:

    mother of text
     

    You should write a book.



  • @tgape said:

    @Speakerphone Dude said:
    I could have added a video game section but really who cares about Lua.

    I do.  Specifically, I care that it is a language that is not well suited to any purpose. 

     

    *snort*

     



  • @tgape said:

    Probably at least half of them used backtick expressions to do things that are trivial in perl; backtick is another huge performance loss.
     

    It also ties PHP to a specific platform.

    I had this issue when some of my LAMP code was ported to a WAMP server and failed miserably. I then understood backticks were a bad thing and I ought to learn the proper PHP functions rather than lazily shell out.



  • @OzPeter said:

    iii. Expert in Fortran programming language

    Wow, I thought Fortran was long dead outside of academia...



  • @dargor17 said:

    @OzPeter said:
    iii. Expert in Fortran programming language

    Wow, I thought Fortran was long dead outside of academia...

    I'm pretty sure it's still big on heavy metal at banks. I've heard rumor that FORTRAN is the (database?) language ever used. The claim was that FORTRAN is faster than C.

    Weak Citation



  • @Gazzonyx said:

    I've heard rumor that FORTRAN is the (database?) language ever used.

    You a word.



  • @Ben L. said:

    @Gazzonyx said:
    I've heard rumor that FORTRAN is the (database?) language ever used.

    You a word.

     

    sigh Fastest.


Log in to reply