Slashdot Mirror


C# and Java Weekday Languages, Python and Ruby For Weekends?

Dan Lorenc writes "Using the StackOverflow.com data dump, I measured the activity of various programming languages throughout the week. The results: Ruby and Python saw a rise in questions asked on the weekend while C# and Java saw a dropoff in activity on the weekend. This means that more programmers are using Python and Ruby on the weekend for their personal projects, showing that these languages are more fun to use. Show this experiment to your boss the next time you are selecting a programming language for a project at work."

389 comments

  1. What about Perl? by Mordok-DestroyerOfWo · · Score: 5, Funny

    Where does Perl fit into all of this? Is that at night when the leather and chains come out?

    --
    "Never let your sense of morals prevent you from doing what is right" - Salvor Hardin
    1. Re:What about Perl? by schmidt349 · · Score: 5, Funny

      Of course. What exactly did you think

      use strict;

      means?

    2. Re:What about Perl? by skwirl42 · · Score: 0

      Maybe Perl is dead. Or people like generating line noise throughout the week.

    3. Re:What about Perl? by ducomputergeek · · Score: 4, Interesting

      Depends on what world you're living in. If you're an Unix Systems admin, there is an aweful lot of perl around. Especially if you are doing any type of log analysis. We've used PERL to generate billing reports and other tasks on the backend for years and the same goes for a lot of systems tasks. But recently we've found ourselves going back to PERL for a lot of our web work.

      We've just started porting our web-based apps from PHP to PERL because we're moving from PostgreSQL to an Enterprise class database system that has 2 PERL modules that support it and PHP has nothing but ODBC. And our tests show that MOD_PERL with the database DBI module is much faster than PHP/ODBC. Script execution time is slower, but database access time is an order of magnitude better in PERL.

      That being said, all of our Desktop GUI interfaces are written in JAVA. We looked at Python and C#, but the local university teaches 4 - 6 semesters of JAVA in their CS department. We can always find someone local to maintain Java based code. Not so much with Python. C# is nice, but JAVA is still write once, run on any desktop. So we don't have to worry if our clients are running Windows, Mac, or Linux. It just works.

      --
      "The problem with socialism is eventually you run out of other people's money" - Thatcher.
    4. Re:What about Perl? by K.+S.+Kyosuke · · Score: 4, Funny

      And judging from your gratuitous use of capital letters, I guess you're writing all your code on punch cards.

      --
      Ezekiel 23:20
    5. Re:What about Perl? by TheRaven64 · · Score: 3, Insightful

      Maybe Perl programmers don't post questions on a web site, they just write code and read the docs when they don't know something?

      --
      I am TheRaven on Soylent News
    6. Re:What about Perl? by Arancaytar · · Score: 1

      Shouldn't that be POSTGRESQL, WINDOWS, MAC and LINUX? :P

    7. Re:What about Perl? by Anonymous Coward · · Score: 0

      And judging from your gratuitous use of capital letters, I guess you're writing all your code on punch cards.

      What is wrong with the use his use of caps?
      I think it is very readable as is.

    8. Re:What about Perl? by arevos · · Score: 3, Funny

      What is wrong with the use his use of caps?
      I think it is very readable as is.

      I too see NOTHING wrong with HIS use of CAPITALIZATION.

    9. Re:What about Perl? by Presto+Vivace · · Score: 5, Funny

      Perl is for formal occassions, like when you wear hat and gloves.

    10. Re:What about Perl? by larry+bagina · · Score: 1

      Or perl has been around long enough that most questions are already answered.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    11. Re:What about Perl? by Anonymous Coward · · Score: 0

      or perl programmers spend their weekend amusing themselves with the output of:

      diff mylongprogram.pl /dev/random

    12. Re:What about Perl? by Daniel_Staal · · Score: 2, Informative

      Also, Perl has a few dedicated sites for language questions. PerlMonks comes to mind, for instance. It gets fairly high visibility in search results, so it's likely to attract more users, instead of them going to a general programming website.

      --
      'Sensible' is a curse word.
    13. Re:What about Perl? by Martin+P.+Hellwig · · Score: 1

      As soon as Camelus dromedarius looks like Camelus bactrianus Perl starts to make sense. Which usually happens around my tenth pint.

      --
      If consumed, best digested with added seasoning to own preference.
    14. Re:What about Perl? by Anonymous Coward · · Score: 0

      I never program for fun, you insensitive clods!

    15. Re:What about Perl? by Anonymous Coward · · Score: 0

      Well, the only people still using PERL don't have any friggin' questions to ask.

    16. Re:What about Perl? by vadim_t · · Score: 1

      Perl isn't supposed to be written in all caps.

      It's either "Perl" when referring to the programming language itself, or "perl" when you're referring to the interpreter.

    17. Re:What about Perl? by bertoelcon · · Score: 1

      Shouldn't that be POSTGRESQL, WINDOWS, MAC and LINUX? :P

      And PYTHON?

      --
      Anything can be found funny, from a certain point of view.
    18. Re:What about Perl? by Anonymous Coward · · Score: 0

      Perl users would use PerlMonks rather than Stackoverflow.

    19. Re:What about Perl? by Korin43 · · Score: 2, Informative

      Seems like php would be the same way. I don't think I've ever asked a php question on a message board since I can just do a google search with "site:php.net".

    20. Re:What about Perl? by TheRaven64 · · Score: 1, Insightful

      So, I guess the take-home lesson from this is that C#, Java, Python and Ruby attract the kind of person who doesn't look in the right place for a solution to a problem. In hindsight, I could probably have worked that out...

      --
      I am TheRaven on Soylent News
    21. Re:What about Perl? by Roman+Coder · · Score: 1

      NeItHeR dO i.

      --
      "The future can only affect the present if there is room to write its influence off as a mistake." - Yakir Aharonov
    22. Re:What about Perl? by JumpDrive · · Score: 1

      Sometimes, they need to be able to mode things higher than just 5.

    23. Re:What about Perl? by value_added · · Score: 1

      And judging from your gratuitous use of capital letters, I guess you're writing all your code on punch cards.

      Quite the opposite. Capitalising acronyms, aside from being correct, makes things easier to read. Not doing so is somewhere between lazy and ignorant, and is indicative of a selfishness that you're writing to suit yourself rather than for the benefit of others, doubly so when the writer refuses to capitalise anything.

      What the OP is guilty of, however, is not being able to distinguish `Perl' and `perl' (something shared by most of the Slashdot audience, and programmers who don't use Perl but insist on commenting about it) by using the allcaps form. More specifically, he believed `PERL' to be correct.

      Hardly gratuituous. It's a simple error, and no different than the error made by other posters who think the language is called `perl` and not `Perl'.

    24. Re:What about Perl? by DarkProphet · · Score: 1

      Thats right. I stopped giving credence to the rest of that post after they misspelled Perl.

      Yeah, seriously I did.

      --
      What could possibly hurt the security of the American people more than giving our own government the ability to hide its
    25. Re:What about Perl? by Anonymous Coward · · Score: 0

      only hardcore badasses program on punch cards.

    26. Re:What about Perl? by Anonymous Coward · · Score: 0

      "JAVA", "Systems", "Desktop"? "PERL" wasn't the only error and calling several errors which all involved extraneous capitalization "gratuitous use of capitalization" seems fair to me.

    27. Re:What about Perl? by arth1 · · Score: 2, Insightful

      While a perl user will get almost all answers answered by "man perl" (and the numerous other man pages which the main perl man page will tell you about) or "perldoc", and the few remaining ones by reading the camel.
      I could also be mentality. If you have a personality type making it common to ask others for assistance, you might not be the type who would pick perl.

      But really, William of Ockham tells me that those doing this "study" were monitoring the forums they themselves were familiar with.

    28. Re:What about Perl? by SuperKendall · · Score: 2, Funny

      Maybe Perl programmers don't post questions on a web site, they just write code and read the docs when they don't know something?

      Having read Perl, I'm pretty sure Perl programmers simply keep typing regardless.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    29. Re:What about Perl? by FatdogHaiku · · Score: 1

      Perl is for formal occassions, like when you wear hat and gloves.

      And nothing else...

      --
      You have the right to remain sentient. If you give up the right to remain sentient, you will be elected to public office
    30. Re:What about Perl? by fractoid · · Score: 4, Funny

      I see someone rolled a natural 20 on their smug check.

      --
      Rampant carbon sequestration destroyed the Dinosaurs' tropical paradise. I'm here to help repair the damage.
    31. Re:What about Perl? by jgrahn · · Score: 1

      It's a simple error, and no different than the error made by other posters who think the language is called `perl` and not `Perl'.

      I disagree. Calling the language 'perl' is something people do today. Calling it 'PERL' is something people would do in the 1980s; it indicates you have little contact with the Perl community. Or that you are a little odd, or have some amount of dyslexia.

    32. Re:What about Perl? by Anonymous Coward · · Score: 0

      It's Perl for one, not PERL (if you're talking about the language. If you mean the executable that compiles & interprets Perl (the language) it's perl.

    33. Re:What about Perl? by Anonymous Coward · · Score: 1, Funny

      my $robe;
      my $wizard_hat;

      me->put_on($robe);
      me->put_on($wizard_hat);

      me->cast($Lvl_3{"Eroticism"})

      (Apologies if I mangled the syntax. My perl is kind of rusty these days.)

    34. Re:What about Perl? by whereiswaldo · · Score: 1

      They are interchangeable. You know what PERL stands for, right? And what BASIC stands for? Java, on the other hand, is not an acronym.
      People just get tired of using all-caps and write Perl instead. At least that's my understanding.

    35. Re:What about Perl? by Anonymous Coward · · Score: 0

      FFS, it's Perl and Java dummy.

    36. Re:What about Perl? by CouteauTM · · Score: 1

      Java is just another vague acronym ...

    37. Re:What about Perl? by CaseyB · · Score: 1

      Perl is not an acronym either.

    38. Re:What about Perl? by severoon · · Score: 2, Interesting

      This is ridiculous...just b/c people use languages on weekends doesn't mean they're "more fun" and it certainly doesn't justify using them at work. It only means that people are using their weekends experimenting around with something new. Perhaps it's because personal projects aren't that large so they don't need the robustness of an enterprise language. There's tons of reasons TFA is flawed...

      --
      but have you considered the following argument: shut up.
    39. Re:What about Perl? by Anonymous Coward · · Score: 0

      http://encyclopedia2.thefreedictionary.com/Practical+Extraction+and+Reporting+Language.

      "The spelling "Perl" is preferred over the older "PERL" (even though some explain the language's name as originating in the acronym for "Practical Extraction and Report Language").

    40. Re:What about Perl? by bythescruff · · Score: 1

      Dude, this is Slashdot. A formal occasion means we wear socks.

      --
      Chuck Norris: Socialism == a thousand years of darkness.
    41. Re:What about Perl? by Anonymous Coward · · Score: 0

      We looked at Python and C#, but the local university teaches 4 - 6 semesters of JAVA in their CS department. We can always find someone local to maintain Java based code.

      LOL. Yeah, count on those kids fresh out of college. :)

      C# is nice, but JAVA is still write once, run on any desktop. So we don't have to worry if our clients are running Windows, Mac, or Linux. It just works.

      Stop it, you're killing me! :) What is this, stand-up comedy for geeks?

    42. Re:What about Perl? by Anonymous Coward · · Score: 0

      Or perl has been around long enough that most questions are already answered.

      In my experience when you write one line of Perl to answer a question you get two new questions.

    43. Re:What about Perl? by skeeto · · Score: 1

      Your source is wrong. This is from the Perl FAQs, part of the official Perl documentation,

      What's the difference between "perl" and "Perl"?

      One bit. Oh, you weren't talking ASCII? :-) Larry now uses "Perl" to
      signify the language proper and "perl" the implementation of it, i.e.
      the current interpreter. Hence Tom's quip that "Nothing but perl can
      parse Perl."

      Before the first edition of Programming perl, people commonly referred
      to the language as "perl", and its name appeared that way in the title
      because it referred to the interpreter. In the book, Randal Schwartz
      capitalised the language's name to make it stand out better when
      typeset. This convention was adopted by the community, and the second
      edition became Programming Perl, using the capitalized version of the
      name to refer to the language.

      You may or may not choose to follow this usage. For example,
      parallelism means "awk and perl" and "Python and Perl" look good, while
      "awk and Perl" and "Python and perl" do not. But never write "PERL",
      because perl is not an acronym
      , apocryphal folklore and post-facto
      expansions notwithstanding.

    44. Re:What about Perl? by skeeto · · Score: 1

      Perl is not an acronym, though, according to the official documentation.

  2. I think you're doing it wrong.. by Anrego · · Score: 5, Insightful

    Show this experiment to your boss the next time you are selecting a programming language for a project at work.

    I totally agree that Java isn't fun. It's very restrictive and almost forces even the simplest task to be forced into a complex object oriented structure. It is definently not a language to just play around and hack stuff together.

    And this isn't ground breaking news either.. most people who use java at work are well aware that it isn't much fun to code.

    The reason it's chosen is that all that extra code and restrictiveness makes for some very maintainable code. Everyone (or almost everyone) adheres to a strict coding convention and general approach that makes code across projects very consistant. The fact that there is a massive standard library, in addition to a set of mature defacto 3'rd party tools also contribute to this.

    And I know there are gonna be all kinds of comments and success stories about how ruby and python are _more_ maintainable and faster and more efficiant and can walk on water and will give you a BJ if you import the right library.. but imo nothing comes close to Java in the maintainability department.

    The short story is a coder playing around in his spare time has a different set of priorities than a developer at work. When you're playing.. use what's fun.. when your working.. use what works.

    1. Re:I think you're doing it wrong.. by Z00L00K · · Score: 2, Insightful

      Java may not be fun or sexy, but on the other hand it is intended to be strict to make it easy to maintain in the long run.

      The problem is that Python & co are more like Basic than anything else (it's a lot like dressed-up classic Basic) and that the strictness is missing which in turn means that what one person has written is hard to maintain by another person. This is especially hard if dynamic typing is used.

      The point behind statically and strongly typed languages is that you will catch a large number of bugs during compilation, but if the type is assigned during runtime you get a lot of hidden bombs that are just waiting to go off.

      That may be fine for a hobby project with only a few programmers, but if you insert a lot of programmers into a solution then you need all the support you can find from the language itself.

      There are of course problems with Java too, but they are hardly solved with a script language. No language is perfect, but view it from the perspective of large systems. C/C++ aren't good either, but for small solutions C can be useful while C++ has the disadvantages of both C and object-orienting combined.

      There is a reason why really old systems around have their code written even in Cobol, Fortran or Pascal. Languages that don't allow the user to write code that can contain too many unexpected bombs compared to C.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    2. Re:I think you're doing it wrong.. by Mike+McTernan · · Score: 1

      I find Java a lot of fun.

      --
      -- Mike
    3. Re:I think you're doing it wrong.. by arevos · · Score: 2, Interesting

      but imo nothing comes close to Java in the maintainability department.

      I disagree, for two reasons. First, as Java is a very restrictive and verbose language, projects written in Java tend to use more lines of code than projects written in, for instance, Python. I find that it's much easier maintaining a small amount of complex code than it is to maintain a large amount of simple code.

      Second, you cannot reduce the complexity of a project by restricting the complexity of the programming language you write it in. By not supporting complex types or lambda expressions Java becomes a more straightforward language, but the cost is that Java APIs are generally more complicated than equivalent APIs in other languages. Take a look at almost any library written in Ruby and contrast the API to an equivalent library in Java; 9 times out of 10, the Java API will a large number of methods and classes that the Ruby version can sidestep through the use of blocks and dynamic classes.

      In my experience, Java is one of the least maintainable languages in widespread use.

    4. Re:I think you're doing it wrong.. by arevos · · Score: 1

      I find Java a lot of fun.

      Ah, but how many other programming languages do you regularly use?

    5. Re:I think you're doing it wrong.. by Anonymous Coward · · Score: 4, Funny

      > You are and idiot!

      FAIL.

    6. Re:I think you're doing it wrong.. by 644bd346996 · · Score: 1

      Ideas that are "forced into a complex object oriented structure" don't produce maintainable code. It produces a codebase with a very good self-defense mechanism: there's so much to grok about how those ideas are being awkwardly expressed that you really have to sit down and study the code before you know where to begin modifying it. That tends to prevent coders inexperienced with that codebase from making major changes that don't break things in really obvious ways. Thus, code maintenance all but ceases to be a misnomer, as it is reduced to a fairly systematic process. This is in contrast to more dynamic languages, where code can often be written concisely enough that you can understand what a file does by reading just that file, and you can implement dramatic changes in behavior without correspondingly large changes to a large number of files.

      I do agree with you that Java's standard library is very good, very massive, and very mature, and it's the centerpiece of a large, stable software ecosystem. This formula works for a lot of applications, but not nearly as many as it gets applied to. There's definitely something to be said for spending a bit more money to hire programmers smart enough to use a dynamic language well, because your development team will then tend to be faster and more flexible, and thus able to fix bugs or implement new features faster than the competition.

      Note that the above is not intended to disparage Java itself so much as the typical way it is used in large projects conducted by large companies. A brilliant programmer can still do amazing things with Java, though as another poster has alluded to: why do it in plain Java when you can use a more dynamic, expressive JVM language and still get the benefits of all those third party libraries?

    7. Re:I think you're doing it wrong.. by K.+S.+Kyosuke · · Score: 5, Insightful

      The problem is that Python & co are more like Basic than anything else (it's a lot like dressed-up classic Basic)

      Yes, because classic Basic had functions with named arguments, lexical scoping, call stack... Would you mind to share your insight into this with us? The line of reasoning that equates the so-called "classic Basic" with Python?

      and that the strictness is missing which in turn means that what one person has written is hard to maintain by another person

      There are various kind of strictness and I can't think of any that a) would ensure that one person understands another person's code and b) could not be broken in Java while being easily broken in Python, e.g.

      The point behind statically and strongly typed languages is that you will catch a large number of bugs during compilation, but if the type is assigned during runtime you get a lot of hidden bombs that are just waiting to go off.

      Java is hardly an example of a statically and strongly typed language. Most Java value types are actually object classes, and these are heap-allocated objects checked at runtime. Combine this with the fact that you can cast an expression to another type and you end up with runtime exceptions. Now if you were talking about ML or Haskell, that would be something different, but you haven't actually mentioned any good statically and strongly typed language in your post.

      There are of course problems with Java too, but they are hardly solved with a script language.

      Python, e.g, was not designed to be a scripting language. It can be used in that role with great success, but that does not make it one.

      --
      Ezekiel 23:20
    8. Re:I think you're doing it wrong.. by Frequency+Domain · · Score: 4, Informative

      You're confusing two orthogonal concepts - static typing and strong typing. Python, Ruby, Smalltalk, and lisp are all strongly typed, but the type enforcement occurs at runtime rather than compile time. C and C++ require that variables have compile time type definitions, but then can do all sorts of implicit conversions so they are statically but weakly typed.

    9. Re:I think you're doing it wrong.. by ultrabot · · Score: 5, Informative

      C/C++ aren't good either, but for small solutions C can be useful while C++ has the disadvantages of both C and object-orienting combined.

      This betrays utter lack of understanding of C++. C++, when done properly, has very little of the problems of C (type unsafety and tedious manual memory management come to mind first).

      --
      Save your wrists today - switch to Dvorak
    10. Re:I think you're doing it wrong.. by 644bd346996 · · Score: 2, Insightful

      ... By not supporting complex types or lambda expressions Java becomes a more straightforward language, but the cost is that Java APIs are generally more complicated than equivalent APIs in other languages. Take a look at almost any library written in Ruby and contrast the API to an equivalent library in Java; 9 times out of 10, the Java API will a large number of methods and classes that the Ruby version can sidestep through the use of blocks and dynamic classes. ...

      I think a good way of explaining this is to say that the Java way of doing things compartmentalizes the complexity of a system. This is great from a damage control perspective, but makes it very difficult for adding new features, because for that you need to be able to see the big picture.

    11. Re:I think you're doing it wrong.. by MightyMartian · · Score: 1

      Which is why, to my mind, C is still the best overall language. Yes, it doesn't give you the hand-holding that other languages do, and you can get yourself into a helluva lot of trouble if your sloppy or inexperienced, but at the end of the day, it, and a fair number of the other procedural languages, to my mind, are simply more malleable languages. I know that the OOP war is pretty much dead now, with the OOP languages seemingly having one the day, but not everything is a windowing event.

      The thing I love best about Unix are those C-like mini-interpreters like awk. I've rarely met a better tool than awk. I once used gawk to convert a 100,000 item mainframe-style inventory file over to comma-delimited files for import into a DOS-based point-of-sale system. The whole thing was done in may 12-20 lines of awk code. It ran damn fast, the resulting file only required a couple of lines to be further massaged, and bang, it was in there.

      --
      The world's burning. Moped Jesus spotted on I50. Details at 11.
    12. Re:I think you're doing it wrong.. by K.+S.+Kyosuke · · Score: 3, Interesting
      I like the view expressed in the preface to Simply Scheme.

      There are two schools of thought about teaching computer science. We might caricature the two views this way:

      * The conservative view: Computer programs have become too large and complex to encompass in a human mind. Therefore, the job of computer science education is to teach people how to discipline their work in such a way that 500 mediocre programmers can join together and produce a program that correctly meets its specification.

      * The radical view: Computer programs have become too large and complex to encompass in a human mind. Therefore, the job of computer science education is to teach people how to expand their minds so that the programs can fit, by learning to think in a vocabulary of larger, more powerful, more flexible ideas than the obvious ones. Each unit of programming thought must have a big payoff in the capabilities of the program.

      It always seemed to me that both approaches have their place, and I would also argue that both are sometimes used inappropriately.

      --
      Ezekiel 23:20
    13. Re:I think you're doing it wrong.. by orzetto · · Score: 1

      There is a reason why really old systems around have their code written even in Cobol, Fortran or Pascal. Languages for which you cannot find a decent programmer any more, and that companies are stuck with.

      Corrected that for you. And frankly, I do not know enough about Cobol, but you must have never seen Fortran real-life code.

      --
      Victims of 9/11: <3000. Traffic in the US: >30,000/y
    14. Re:I think you're doing it wrong.. by bnenning · · Score: 1

      Java may not be fun or sexy, but on the other hand it is intended to be strict to make it easy to maintain in the long run.

      Most of Java's annoying verbosity is not due to its strictness. It could add closures, real method objects, collection literals, properties, and map/filter without giving up strong static typing.

      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
    15. Re:I think you're doing it wrong.. by gomoX · · Score: 2, Insightful

      Well, it depends on what definition you take. The Dragon book, which is pretty much the standard CS book on compilers, defines strongly typed as "a language where type errors cannot occur at runtime". With this definition, Python is certainly not strongly typed.

      --
      My english is sow-sow. Sowhat?
    16. Re:I think you're doing it wrong.. by buchner.johannes · · Score: 1

      Java is verbose, that is true. But in Java, the easy things and the hard things are equally verbose (which is great).

      Comparing to Python: Maintaining Java is way easier because due to its strictness, great IDEs have been developed. Refactoring code, call hierarchies and so on are just not doable in Python.

      I use both, but I understand why companies will stick to Java. I'd prefer a consistent Java repository over a pile of scripts any time.

      --
      NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
    17. Re:I think you're doing it wrong.. by loonycyborg · · Score: 4, Insightful

      C++ has the disadvantages of both C and object-orienting combined.

      Wrong. C++ has advantages of both C and object-orienting combined. And some really nice libraries such as boost. That comes at a cost of pretty steep learning curve which IMO is worth it.

    18. Re:I think you're doing it wrong.. by 644bd346996 · · Score: 1

      Most of those are beyond the comprehension of the typical Java programmer, or at least, they can't see why they would be particularly useful. Hence why Java has gone so long without them. It is only in that past few years, with the JVM being clearly established as an important platform independent of the Java language, that there's been demand for support for things like that in the JVM and by extension in the lingua franca of the JVM.

    19. Re:I think you're doing it wrong.. by arevos · · Score: 1

      I think a good way of explaining this is to say that the Java way of doing things compartmentalizes the complexity of a system.

      Well, yes, but that wasn't quite what I was getting at. For instance, let's say I want to allow the user of my API to add a callback to an event like clicking a button. In Ruby, I could just use a block. In Java, I'd have to write an callback interface to mimic the functionality that is already built into Ruby.

    20. Re:I think you're doing it wrong.. by StormReaver · · Score: 4, Insightful

      I totally agree that Java isn't fun.

      I have to disagree with everything you said. If you're creating complex object structures for even simple tasks, then you're using Java very poorly, and doing object oriented programming very badly. Java, when used competently, is an efficient, flexible language. It is extremely well suited for hacking things together and playing around, as well as serious development. Getting a simple GUI program up and running is a matter of about 10 lines of sparse code. Getting a simple console program running is about half that. As programs get large, Java's facilities for organization and object decoupling make maintenance much easier than it would be without those facilities.

      I've used more programming languages than I can remember in the last 25 years of software development (I don't think I have enough fingers and toes to count them), and Java is one of my all time favorites (especially since version 6). It's simple, efficient, effective, powerful, maintainable, and lets me get a lot done quickly. As far as programming goes, those are key components of fun. Throw in Netbeans, and it's the closest thing to programming bliss I've ever seen.

      As far as maintainability goes, that has more to do with the quality of the object structures than anything inherent in the language itself. Well designed C++ object structures are just as maintainable as well designed Java structures, just as poor object structures are difficult to maintain in any language.

    21. Re:I think you're doing it wrong.. by Anonymous Coward · · Score: 0

      The reason it's chosen is that all that extra code and restrictiveness makes for some very maintainable code.

      This is complete and utter bullshit.

      With the complexity of system we're building nowadays, Java is the ASM of our time. There is a truly insane amount of boilerplate in Java and it just adds to the mental overhead reading the code of any remotely non-trivial system.

      Even worse, there is very little support for adding new levels of abstraction in Java.

      (Yeah, I work in Java in my day job. No, I'm not bitter...)

    22. Re:I think you're doing it wrong.. by arevos · · Score: 1

      But in Java, the easy things and the hard things are equally verbose (which is great).

      I'd say that in Java, the easy things are verbose and the hard things are usually infeasible.

      Comparing to Python: Maintaining Java is way easier because due to its strictness, great IDEs have been developed. Refactoring code, call hierarchies and so on are just not doable in Python.

      There are refactoring tools for Python, but it's true that they are not as comprehensive as the ones for Java. However, refactoring in a dynamic language like Python or Ruby is, in my experience, less important than it is in Java. In Java, you're dealing with a lot of verbose source code with a rigid class structure spread across a number of files. In Python or Ruby, you're dealing with a small amount of concise source code with a flexible class structure that's only spread across a few files.

      The very things that make Java easy to refactor, such as its restrictive syntax and static classes, tend to be the same things that increase the need for refactoring in the first place.

    23. Re:I think you're doing it wrong.. by Bralkein · · Score: 1

      Well I've been told that in languages like Ruby and Python, you are supposed to religiously write lots of unit tests. In doing this it is supposed that a lot of those "hidden bombs" as you put it can be caught and eliminated. It's certainly a nice idea, and that way of course a lot of the "checking code" would be moved away from the "doing stuff code" if you see what I mean. Of course, theory and practice are two different things, and it is for that reason that I have been considering untertaking a significant Ruby project to see if the application of thorough unit testing will allow me to produce code that is robust as the equivalent Java and more elegant and pretty to boot.

    24. Re:I think you're doing it wrong.. by 644bd346996 · · Score: 1

      Which edition of the Dragon book are you referring to? The original one is just a compilers book from the 1980's, and it probably not a good reference for a discussion of modern dynamic languages, as non-static typing and weakly typed languages were beyond the scope of a traditional compilers course back then. If the new edition of the Dragon book (which covers JIT, garbage collection, and other concepts that have reached the mainstream since the 80's) still conflates static typing and strong typing, then you might have a case.

    25. Re:I think you're doing it wrong.. by arevos · · Score: 1

      Which is why, to my mind, C is still the best overall language. Yes, it doesn't give you the hand-holding that other languages do

      It also lacks a lot of the functionality other languages have.

    26. Re:I think you're doing it wrong.. by Cyberax · · Score: 1

      Java code is usually larger than code in other languages, true.

      But currently Java has the best tools in existence. IntelliJ IDEA is the best IDE out there.

      In fact, power of Java tools is so great, it can argued that Java+IDE is in fact a higher-level language. For example, C# has LINQ for statically-typed queries checked at compile time, Java has nothing of that sort in the core language. However, "edit-time" inspections in IDEA provide even better support for checking queries: http://files.rsdn.ru/37054/HQLBug.png (here a non-existing field and incorrect placeholders are highlighted).

      Another example, Java doesn't have closures, but the can be effectively added by IDE: http://blogs.jetbrains.com/idea/2009/03/closure-folding-in-intellij-idea-9-maia/

      So writing Java in a good IDE for me is better than writing code in a great language in a plain text-editor (i.e. ViM, Emacs, TextMate).

    27. Re:I think you're doing it wrong.. by digitalunity · · Score: 3, Funny

      I can write unmaintainable shitty Java code. The language doesn't prevent me from being a complete idiot.

      Want to watch?

      --
      You can't legislate goodness. Let each to his own destiny, by will of his freely made choices.
    28. Re:I think you're doing it wrong.. by digitalunity · · Score: 2, Insightful

      C++ is like a double edged sword. In the hands of an idiot, it will let you create catastrophic type safety failure.

      Then again, in the hands of a true coding genius, multiple inheritance, polymorphism and dynamic casting can allow some truly ingenious coding.

      --
      You can't legislate goodness. Let each to his own destiny, by will of his freely made choices.
    29. Re:I think you're doing it wrong.. by quanticle · · Score: 1

      There are refactoring tools for Python, but it's true that they are not as comprehensive as the ones for Java. However, refactoring in a dynamic language like Python or Ruby is, in my experience, less important than it is in Java.

      Well, I disagree with that. Its easy to write unmaintainable code in any language. Unfortunately, as the grandparent points out, in languages that aren't as rigid as Java, its more difficult to fix unmaintainable code, since so much about the program is inferred at runtime. This makes static analysis for bugs and common refactoring patterns almost impossible, since each file of the source code is much less independent of other files.

      Of course, the easiest way to fix unmaintainable code is to not write it in the first place - a solution that is equally easy (or difficult, as the case may be) to apply across languages.

      --
      We all know what to do, but we don't know how to get re-elected once we have done it
    30. Re:I think you're doing it wrong.. by bnenning · · Score: 2, Informative

      The Dragon book, which is pretty much the standard CS book on compilers, defines strongly typed as "a language where type errors cannot occur at runtime". With this definition, Python is certainly not strongly typed.

      Neither is Java.

      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
    31. Re:I think you're doing it wrong.. by rodrigo1979 · · Score: 1

      Has anyone here checked out Fan? "Productivity of Ruby, Performance of Java" http://www.fandev.org/

    32. Re:I think you're doing it wrong.. by thetoadwarrior · · Score: 1

      I would agree with him.

      I find Javascript boring, PHP is fun too but it's ugly. Python is fun but I dislike the lack of braces and how it has to be formatted so I only it for small CLI stuff. But I think that comes down to how I learned programming as is the case with a lot of people. Their learning experiences will determine what they like.

    33. Re:I think you're doing it wrong.. by Anonymous Coward · · Score: 0

      While this ventures off languages, strictly speaking, your specific example in C++ is easily accomplished in both Qt and Winforms(a la Mono).

      With Qt, it's as easy as a single call to connect().

    34. Re:I think you're doing it wrong.. by Anonymous Coward · · Score: 0

      Be glad you do not know enough about COBOL. Looking at COBOL code is like looking at a Medusan in Star Trek: it's so "beautiful" you'll go insane. Think of it as what AppleScript would have looked like if it had been an assembly language. Shudder!!!

    35. Re:I think you're doing it wrong.. by Anonymous Coward · · Score: 0

      0 i understand what you mean

    36. Re:I think you're doing it wrong.. by Daniel_Staal · · Score: 1

      I do know about Cobol: I had to learn it in college.

      He's never seen it either.

      --
      'Sensible' is a curse word.
    37. Re:I think you're doing it wrong.. by Anonymous Coward · · Score: 0

      look at jsr-295....

    38. Re:I think you're doing it wrong.. by sjames · · Score: 1

      The problem is that Java represents conceptual complexity as a complex tangle of simple code. The very strictness that catches things at compile time ends up adding whole layers of complexity to defeat that where it needs defeating in order for code to ever be reusable or extended. Somewhere in that tangled thicket is a simple elegant expression trying to get out.

      So to try to tame the thicket, we attempt to abstract the nastiest parts away by pulling in a dizzying array of standard libraries (they don't actually make it go away, they just hide it under a library API. But because that's not quite right of requirements change, we throw a layer on top of the simplification layer to simplify things until nobody can quite predict what will happen if we change "this bit". But it compiled so it must be OK, time to deploy. But for god's sake make sure it's deployed with the right runtime and library versions down to the sub minor number because otherwise the write once and run anywhere program might crash and burn horribly.

      Java is mostly useful when you have an army of grunts to pound away at it. It's popularity goes down on the weekend because most people who truly enjoy programming rather than just putting in 9to5 because they have to would rather use a more elegant language.

      I find that a more elegant language like Python can make a large team (and all of the communications overhead that involves) unnecessary. The complexity of the problem can be tackled by the elegance and expressiveness of the language so that a smaller team can manage a bigger problem.

      If the code is properly commented (docstrings are your friend), rather than a bunch of "i+=1 # add one to i" crap comments, it's perfectly maintainable. The sort of errors that are missed due to lack of strict typing should be quickly caught by re-running the module tests (every module should self test if run standalone using an if __name__ == '__main__').

    39. Re:I think you're doing it wrong.. by Anonymous Coward · · Score: 0

      I'm sure you are right about Java being a good language for developing. I certainly can't argue with you on it since I have never used it. However, the implementation of the runtime and the developers using it is absolutely atrocious. Every time there is an update for a security vulnerability it breaks applications. Some it breaks due to Sun's fault (logon dialog boxes all of a sudden turning to blue text on a blue background so users can't see if they typed the right ID or not), and some due to vendor's stupidly coding their app to work with "this specific version of Java only". The later example is a real problem - even apps from Citi Group (financial apps!) REQUIRE older, still vulnerable versions of the runtime.

      As good as I am hearing the development environment to be, we have been requesting our folks to stop bringing in any Java based applications unless the vendors will put it in the contract that they will support using the latest non-vulnerable JRE and when their app doesn't work with the latest they will fix it in days not months. We manage over 90,000 machines and have at least 5 or 6 fairly critical (tax, finance, etc.) apps break every last time we have to update JRE for a security issue.

    40. Re:I think you're doing it wrong.. by dgriff · · Score: 1

      I totally agree that Java isn't fun. It's very restrictive and almost forces even the simplest task to be forced into a complex object oriented structure.

      "Score:5, Insightful"? Try saying that on a weekday, pal!

    41. Re:I think you're doing it wrong.. by arevos · · Score: 1

      Its easy to write unmaintainable code in any language.

      In my experience, the size of the source code is a big factor in how maintainable a project is. Java source is much more verbose than other languages, so I'd say it was easier to write unmaintainable code in Java than in, say, Clojure.

      Unfortunately, as the grandparent points out, in languages that aren't as rigid as Java, its more difficult to fix unmaintainable code

      Again, I disagree. Languages that are less restrictive than Java result in a smaller source code and more loosely-coupled functions which makes for code that is more easily altered. This makes refactoring easier than in Java.

      Java's restrictive nature makes it possible to have advanced automated refactoring tools; but these tools would be largely unnecessary if Java was more functional.

      Of course, the easiest way to fix unmaintainable code is to not write it in the first place - a solution that is equally easy (or difficult, as the case may be) to apply across languages.

      Disagree with this, too. Because Java is such a restrictive language, your solution space is reduced. There are patterns and program designs that are infeasible within the Java syntax. I'd argue that because it's harder to create a good design in Java, it's easier to create a bad design.

    42. Re:I think you're doing it wrong.. by arevos · · Score: 1

      Obviously "fun" is subjective, but may I ask why you find a restrictive language like Java more fun than more flexible and functional languages?

    43. Re:I think you're doing it wrong.. by arevos · · Score: 2, Insightful

      In fact, power of Java tools is so great, it can argued that Java+IDE is in fact a higher-level language.

      Java tools are useful in the same way as a wooden stump is useful. It's better than nothing, but I'd rather keep my actual leg.

      In the same way, I'd prefer a language with lambdas, macros, dynamic loading, immutable fast data structures and homoiconicity. Java's IDEs go a long way to making Java bearable, but it can't compare with better designed languages.

    44. Re:I think you're doing it wrong.. by swilver · · Score: 2, Insightful

      1) Rename class member in Python
      2) Watch chaos ensue

    45. Re:I think you're doing it wrong.. by Cyberax · · Score: 1

      I thought that way earlier.

      But after we completed a project with a fair amount of code in Scala, I'm starting to think differently. Yes, it would be nice to have more features. Yes, Java sorely needs things like reified generics and lambdas. But at the end of the day, Java code is more easily supported than code in 'smart' languages.

      I've measured it, and Scala code requires more time to support it and during its development we had a lot of arguments about the code style and design approaches.

    46. Re:I think you're doing it wrong.. by digitig · · Score: 1

      Unfortunately, as the grandparent points out, in languages that aren't as rigid as Java, its more difficult to fix unmaintainable code, since so much about the program is inferred at runtime. This makes static analysis for bugs and common refactoring patterns almost impossible, since each file of the source code is much less independent of other files.

      If rigidity is so good, I assume all of these companies are moving over to Ada?

      --
      Quidnam Latine loqui modo coepi?
    47. Re:I think you're doing it wrong.. by quanticle · · Score: 1

      Languages that are less restrictive than Java result in a smaller source code and more loosely-coupled functions which makes for code that is more easily altered. This makes refactoring easier than in Java.

      While I understand your first and third points, I'm not sure I get this one. Java makes it relatively easy to enforce loose coupling with its "private" keyword. Imperative languages that are looser about types (like Python for example) don't do as much to enforce coupling constraints at compile-time. Doesn't this make it more difficult to enforce loose coupling?

      Of course, I understand that functional languages like Lisp and Clojure are better for enforcing loose coupling due to the fact that they make it more difficult to make functions with side-effects.

      --
      We all know what to do, but we don't know how to get re-elected once we have done it
    48. Re:I think you're doing it wrong.. by andre_pl · · Score: 0, Troll

      clearly you suck.

    49. Re:I think you're doing it wrong.. by BikeHelmet · · Score: 1

      Java is hardly an example of a statically and strongly typed language. Most Java value types are actually object classes, and these are heap-allocated objects checked at runtime. Combine this with the fact that you can cast an expression to another type and you end up with runtime exceptions. Now if you were talking about ML or Haskell, that would be something different, but you haven't actually mentioned any good statically and strongly typed language in your post.

      It's worth noting that the Java bytecode compiler catches a lot. It's not perfect, and you can easily get around its protections by assigning null or casting to Object first - but being extremely strict may frighten people away, so it's a good compromise.

      I'm just glad it's more strict than C, while cutting out a lot of the extra stuff like memory management. Mind you, I sorely miss things like public:

      If you get a ClassCastException or other such runtime exception, you may not be coding properly. ;)

    50. Re:I think you're doing it wrong.. by arevos · · Score: 1

      I've measured it, and Scala code requires more time to support it

      Measurements based on one project aren't exactly statistically robust. Especially if this is the first project your team has written in Scala, as your post would seem to imply.

      I haven't used Scala for any considerable project, but I have written a lot of Clojure, and my experience with Clojure is the opposite to yours. I find code written in Clojure tends to be considerably more maintainable than any code in Java or C# that I've been involved in supporting.

      This is partially because the source code is much shorter than it would be in Java or C#, and partially because functions are much more loosely coupled in a dynamic language.

    51. Re:I think you're doing it wrong.. by quanticle · · Score: 1

      If rigidity is so good, I assume all of these companies are moving over to Ada?

      Well, if they aren't, they should. :-)

      More seriously, though, there have been quite a few studies that show that software written in Ada has fewer bugs than software written in looser, more "modern" languages. The reasoning is, as I and the great-grandparent have pointed out, the strict enforcement of type constraints ensures that errors are caught at compile-time, rather than becoming bugs at run time. It is for this reason that safety critical systems are often written in Ada, or other "rigid" languages like Eiffel. The rigidity of these languages also makes it easy to perform static analysis on them, which is another reason they're so prevalent in safety-critical systems.

      --
      We all know what to do, but we don't know how to get re-elected once we have done it
    52. Re:I think you're doing it wrong.. by digitig · · Score: 1

      You're preaching to the choir here! Although there are some questions about the those studies (yes, Ada progarms have a lower bug rate than, say, C++ programs -- the very worst Ada programs have about the same bug rate as the very best C++ programs -- but Ada only tends to get used in cases where everything else is securely tied down too, so it goes into the competition with a head start) it's not just chance that the bondage-and-discipline languages dominate(!) the safety-critical scene.

      --
      Quidnam Latine loqui modo coepi?
    53. Re:I think you're doing it wrong.. by Cyberax · · Score: 1

      Yes, I don't have reliable statistics, I readily admit it.

      This project was not the first project in Scala, we used it for small parts of other our projects since it can be mixed with Java fairly easy. But it was the first our project of a fair size.

      The problem starts when you have a team of several programmers (8 in my case). Since most of 'smart' languages usually have many ways to implement a certain task, it results in arguments, disagreements and sometimes in ugly code.

      BTW, we wrote several medium-sized projects (for telecoms) in Erlang which would have been quite hard to do in Java. But that's because Erlang was created for such projects.

    54. Re:I think you're doing it wrong.. by Gordonjcp · · Score: 1

      The problem is that Java represents conceptual complexity as a complex tangle of simple code. The very strictness that catches things at compile time ends up adding whole layers of complexity to defeat that where it needs defeating in order for code to ever be reusable or extended. Somewhere in that tangled thicket is a simple elegant expression trying to get out.

      I think this aspect of Java is symptomatic of the current "safety at all costs" mentality that a lot of companies have. The hoops you have to jump through to do even the most trivially simple tasks in Java remind me of a job I did a couple of years ago, where I needed to inspect a wireless network link for an oil company. We had to make two trips because the safety induction lasted well into the afternoon on the first day and by the time it finished at 3pm it was getting dark (early February) and there were no lights on the roof where the link was. The next time we came up, I needed to have a high-vis jacket, kevlar gloves, a hard hat, eye protection and a fall arrestor harness to climb a 1.5m tall scaff tower to look at an LED on the base of the unit (which I could clearly see from the fire door onto the flat roof). Thousands of pounds spent to mitigate a non-existent risk of somehow falling off the middle of a flat roof the size of a football pitch.

    55. Re:I think you're doing it wrong.. by arevos · · Score: 1

      While I understand your first and third points, I'm not sure I get this one. Java makes it relatively easy to enforce loose coupling with its "private" keyword.

      That's not quite what I mean. Whilst Java provides keywords to enforce loose coupling, its syntax and standard library don't make it easy to do so.

      For example, in Clojure I could write:

      (defn bag [coll]
        (reduce #(merge-with + %1 {%2 1}) {} coll))

      The collection we're going to turn into a bag could be any sequencable data. In Java, you could use generics, but you wouldn't be able to treat, say, strings in the same way:

      => (bag "hello")
      {\o 1, \l 2, \e 1, \h 1}

      Here's another example:

      (use 'clojure.contrib.duck-streams)
      (def words1 (read-lines "/usr/share/dict/words"))
      (def words2 (read-lines "http://www.puzzlers.org/pub/wordlists/pocket.txt"))

      In this case, the duck-streams library is equally happy reading lines from a file or from a URL.

      In other words, functions in Clojure, like many dynamic languages, usually pay more attention to the traits of an argument than to its type. Java's type system isn't flexible enough to do this on the same scale, and Java's standard types are also too inconsistently structured.

    56. Re:I think you're doing it wrong.. by juancnuno · · Score: 1

      I totally agree that Java isn't fun. It's very restrictive and almost forces even the simplest task to be forced into a complex object oriented structure. It is definently not a language to just play around and hack stuff together.

      I love to program in Java. It's what I do at work. And when I feel the need to hack stuff together at home, I use Java.

      I've been programming professionally for 10 years and have delivered projects in C, C++, Java, and Python. I love Java by far the best.

    57. Re:I think you're doing it wrong.. by Anonymous Coward · · Score: 0

      C++ is like a double edged sword. In the hands of an idiot, it will let you create catastrophic type safety failure.

      Then again, in the hands of a true coding genius, multiple inheritance, polymorphism and dynamic casting can allow some truly ingenious coding.

      Word of caution: Composition is a more robust, scalable solution than multiple inheritance. (Hint: The designers of C# learned from the mistakes of C++; as a result, C# disallows multiple inheritance but still allows a class to implement multiple interfaces.)

      As a rule, you should only use inheritance when the statement "X Is a Y" is true. In times where you're tempted to use multiple inheritance, stop and think. You'll probably discover that it's more accurate to say "X has a Y", and that you should be using composition instead.

    58. Re:I think you're doing it wrong.. by arevos · · Score: 1

      The problem starts when you have a team of several programmers (8 in my case). Since most of 'smart' languages usually have many ways to implement a certain task, it results in arguments, disagreements and sometimes in ugly code.

      I haven't really had a problem with this. In all the projects I've worked on, there doesn't tend to be much disagreement over technology. We get into very detailed discussions that can last for hours, but we almost always come to an agreement as to what to do. Even when developers can't agree, there's always a project lead to make the decision, and in that case everyone goes with the decision and moves on.

    59. Re:I think you're doing it wrong.. by marcosdumay · · Score: 1

      You have a very good point. Problem (or solution) is there isn't a lot of complex enterprize software, it is mostly mapping from the disk to the interface and the other way around. Java shines at this environment.

      But at the weekends, I guess most people's pet projects aren't such way. Mine aren't.

    60. Re:I think you're doing it wrong.. by owlstead · · Score: 1

      You certainly have "one the day" with that comment. You do understand that each of these OOP languages are also procedural do you? Or are you proposing to go back to global variables? DOS based point of sale system? You mean programming with hooks and interrupts? Oh, hell, I'll get of your lawn now.

    61. Re:I think you're doing it wrong.. by owlstead · · Score: 1

      At least Java has build in support for deprecating the API. Of course there are still engineers that manage to screw up by building Java apps. And there are at least as many that manage to make Java platform dependent - even without using JNI. But look at all those other languages; are you really saying that dependency hell is less in those languages? Are you really saying that you've got more compatibility between modules in the other API's?

      No, you're just in this shit because your applications are not being tested against the latest runtime. I've seen a few of these applications and invariably they can be run from the latest and greatest VM with minimum fuss. Of course, if your vendors are not willing to put in the fuss you're in trouble. So require your vendors to comply with Sun Java standards and test with newer VM's when required.

      And with Java you are completely welcome to use super packages (in the future) and OSGi. Two very nice technologies to make it possible to specify which versions of modules are required. IMHO design using well defined modules/plugins is the next big thing in "enterprise" language design.

    62. Re:I think you're doing it wrong.. by angel'o'sphere · · Score: 1


      Well, it depends on what definition you take. The Dragon book, which is pretty much the standard CS book on compilers, defines strongly typed as "a language where type errors cannot occur at runtime". With this definition, Python is certainly not strongly typed.

      According to that definition Python is strong typed. Because there can not be any type errors. A runtime exception is not automatically equal to a type error.

      A type error is when a series of bytes that encodes an int for example is treated as a float (without coercing/casting etc.)

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    63. Re:I think you're doing it wrong.. by Anonymous Coward · · Score: 0

      The dragon book goes on to say that, in practice, some checks can only be done at runtime.

      You may disagree, but I think there's a difference between "most checks are done at compile time, except what cannot" and "nothing is checked at compile time".

    64. Re:I think you're doing it wrong.. by cmdr_tofu · · Score: 1

      ummm Ruby is a strongly typed language. I *believe* Python is too (although I don't know much about python). I'm not sure why the above was modded insightful. It would be if he was comparing Java to Perl which is not strongly typed.

    65. Re:I think you're doing it wrong.. by chromatic · · Score: 1

      The reason it's chosen is that all that extra code and restrictiveness makes for some very maintainable code.

      How would Eiffel, Cobol, Ada, AppleScript compare?

    66. Re:I think you're doing it wrong.. by JumpDrive · · Score: 1

      Python, e.g, was not designed to be a scripting language. It can be used in that role with great success, but that does not make it one.

      Just to be safe up front, I'm not just asking a question and trying to get/gain some insite.
      I have usually classified anything that doesn't get compiled until runtime as scripting languages. I know that scripting is also associated with easy, non-complex, toys despite their professional usefulness in areas such as system administration. Personally I will use scripting languages to prototype and test algorithms (Yes, sometimes it seems to be a waste of time, because the differences can be immense).
      I have also been using some of my php and perl prototypes for a couple of years, just never got around to making that translations.

      Non-scripting languages, I usually associate with being faster and less clunky at runtime. That was until I had some run ins with some Java applications. This is also the reason I haven't tried to do anything serious with Java. Mainly I use C and C++, but I have recently been faced with some code that is in Java that I would like to use.

      So, my questions are, What really defines a language as a scripting language? And do I have a misconception about Java being slow (I really don't know how this could be, if it is being compiled to machine language, but maybe the compilers are inefficient)?

      I guess I've also wondered why can't python, perl, php... have a modified language fork, so that they can be precompiled? Is it because the end result, just wouldn't be worth it and you would just end up with another Java (He said half joking).

    67. Re:I think you're doing it wrong.. by Sir_Lewk · · Score: 1

      One of my old CS professors responded to a comment like this from a student by quoting Brian Kernighan, who said in response to a question "why would anyone use awk now that we have perl?" something to the effect of "You should use Perl if Perl is the right tool for the job, and you should use Awk if Awk is the right tool for the job."[paraphrased]

      Oftentimes Awk is the right tool for the job. Othertimes Perl's heavier feature set is needed. Both are of value.

      --
      "linux is just DOS with a UNIX like syntax" -- Galactic Dominator (944134)
    68. Re:I think you're doing it wrong.. by sjames · · Score: 1

      And yet the "solution" chosen was EJB! COBOL isn't my favorite language, but at least it manages to handle record formatted data cleanly without importing the kitchen sink.

      That implies that either there's a lot more complexity than you imagine in enterprise software or that they're just jumping all over whatever has the most hype in the business mags without regard for appropriateness.

    69. Re:I think you're doing it wrong.. by Alpha830RulZ · · Score: 1

      You should check out Komodo for Python.

      --
      I was taught to respect my elders. The trouble is, it's getting harder and harder to find some.
    70. Re:I think you're doing it wrong.. by JumpDrive · · Score: 1

      Despite his use of a homonym, I think he has a pretty good point.
      Sometimes trying to follow OOP coding can just flat out be a nightmare and it is especially frustrating when procedural code would have worked just as efficiently without out everything being created into a complex objects. Maybe I mean that it would be a hell of a lot easier to read. But I guess the opposite could also be said,sometimes a few complex objects would help, but frankly I don't recall running into this in the last 5 years.

      Sometimes during orientation I wish that they would emphasize that they are now in Texas and people here have guns.

    71. Re:I think you're doing it wrong.. by Sam+Douglas · · Score: 1

      In the hands of an experienced programmer, a good language can be used to solve problems using an appropriate paradigm. It is relatively easy to code something equivalent to polymorphism/dynamic method dispatching in C, the compiler just doesn't do it for you.

      That aside, C++ is more like a sword where the handle is replaced with another blade. If handled very carefully, one can become proficient in its use, but it is going to draw blood from time to time, regardless of your experience level.

    72. Re:I think you're doing it wrong.. by Anonymous Coward · · Score: 0

      If you rename any class member in any language it will cause any class functions that use the old name to fuck up. what's your point?

    73. Re:I think you're doing it wrong.. by bill_kress · · Score: 2, Insightful

      Complexity is not really all that related to size. It's more about readability and predictability--hidden surprises, how long it takes you to figure out what a single line is doing, and how long it takes you to find out what a single method is doing.

      So if you use those parameters, Java may actually come out as more readable since javadocs are so well used, the tools tend to bring up docs on over, there are no surprises in the syntax, etc.

      I actually enjoy working in it as well. I'm pretty good at factoring and I generally find that people who can code java almost as briefly as ruby or python are often just not trying hard enough.

      the difference I found is that in Java I tend to extract lots of stuff as data--things you wouldn't normally consider extracted (like menu structures and other places where most people just code line after line of junk); but in Ruby, people think it's "easier" because ruby makes it easier to embed your data in your code.

      Ruby gets fairly close to making it actual data, but since it's still ruby code, you have to.deal_with random_punctuation in what.pretends to_be straight.forward English. At least the java version of the same thing follows a simple, minimal grammar. (Minimal grammar is critical, don't have two ways to do the same thing is what the python people say!)

      But ruby and python are certainly more fun!

    74. Re:I think you're doing it wrong.. by bill_kress · · Score: 1

      I wish I could delete that--don't post when you are not feeling well, it's unreadable. Hope anyone that reads it gets the point without getting bogged down in the horrific errors :( /. needs an edit (or at least delete!) feature.

    75. Re:I think you're doing it wrong.. by murdocj · · Score: 1

      C++ was a valiant and interesting attempt to graft an object oriented language on top of C. Unfortunately, it replaced a few problems that C had (null pointer references, buffer overflows) with an almost infinite series of problems due to the complexity of the language. For example, the default of assignment by bit-copying objects makes it trivial to generate memory trashing problems.

      Yes, it's possible to write C++ in such a way that avoids memory problems. It's also quite possible and relatively easy to write C code that avoids such problems. I should know, I programmed in C for years and almost never had problems with null pointer references or buffer overflows. Just recently I had the joy of adding one element to a vector and hitting a memory fault because some chunk of code was holding a "reference" to elements of the vector, and when the vector was reallocated, the reference became invalid. Which brings up the point that C++ doesn't have "references", it has pointers with some syntactic sugar on them. If it really had references, the references wouldn't get invalidated by underlying memory operations.

      Now I'm sure C++ gurus will deride people who get caught by the default bit-copy operator, "references" to invalid memory, and the many other traps that C++ has. And it's true, if you program correctly, you won't hit these. But that's true of ANY language. If you program in assembler correctly, you won't have trouble there either. C++ just seems to be overly laden with traps and problems. Just read thru Scott Meyers Effective C++, which I found very clear and useful, and count the number of entries that are navigating around language traps if you don't believe me.

    76. Re:I think you're doing it wrong.. by Baricom · · Score: 1

      I guess I've also wondered why can't python, perl, php... have a modified language fork, so that they can be precompiled?

      I can't speak for Python and Perl (don't use them often enough), but PHP has a number of extensions that support bytecode caching, such as eAccelerator and APC. It's not pre-compiled, but it does mean that a given script only has to be compiled the first time.

    77. Re:I think you're doing it wrong.. by ls671 · · Score: 1

      Very correct, in Java where multiple inheritance isn't allowed, too much inheritance in an application code is usually still a sign of developers/architects with less experience that seem to think that OO design equals inheritance as much as possible. Sometimes, the code looks like kids trying a new toy have written it ;-)

      The average application usually doesn't make that much inheritance usage. You should see much more interface usage (implements) than child classes (extends). I often corrected designs to replace "X is a Y" by "X has a Y".

      That said, it is very correct to use inheritance where it is needed ;-))
       

      --
      Everything I write is lies, read between the lines.
    78. Re:I think you're doing it wrong.. by Aurisor · · Score: 1

      I'm glad you beat me to the punch on this one, because I probably would have done an inferior job putting these lame arguments to rest.

      I seriously think there are a lot of programmers out there whose underlying thought process amounts to: few parentheses - basic, lots of parentheses - lisp, somewhere in the middle - Real Programming Language.

    79. Re:I think you're doing it wrong.. by ls671 · · Score: 1

      I agree too. Most friends I have who do not like Java is because they are not able to write a Java application ;-))

      It is hard to like something that you have a hard time to grasp. Some week day java programmers might master Java just enough to fulfill their workday tasks but they may not master it enough to do whatever they want with it. These will also say that Java isn't fun.

      I have used a lot of languages but nowadays, I use mostly sh for anything new and simple that I write while resorting to Java for anything a little more complex. I also maintain php and perl, ajax/javascript stuff and I like it less... ;-(

      --
      Everything I write is lies, read between the lines.
    80. Re:I think you're doing it wrong.. by Anonymous Coward · · Score: 0

      If you do it in C, your shit won't compile. If you do it in Python, your shit won't run. It's a huge difference.

    81. Re:I think you're doing it wrong.. by Anonymous Coward · · Score: 0

      No it doesn't. Those usages get updated to use the new name. This has been in IDEs for Java for at least a decade.

    82. Re:I think you're doing it wrong.. by Z00L00K · · Score: 2, Insightful

      And when a type check occurs at runtime it's a bomb in the code waiting to go off at the most inconvenient moment ever.

      The cost of finding bugs in a solution is raising exponentially with each stage in the application process of compile-link-execution.

      You may claim that those problems should be rectified when running tests, but that also means that you have to verify that you have covered every execution path leading to every case where there may be an error.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    83. Re:I think you're doing it wrong.. by Z00L00K · · Score: 1

      That brings up the cost since you then have to cover every execution path variation in the test to catch all bombs.

      The cost of development raises exponentially for each stage. If the compiler doesn't catch it - it means that you have to write an enormous amount of tests for a large system. The number of tests can be much larger than the actual system that's the end product, and that will drive the cost to a horrible level.

      In many companies it's hard to even get anything tested at all. They often drop the system after a cursory test session where it looks like it's working and then hope that the customers doesn't get too many problems.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    84. Re:I think you're doing it wrong.. by diablovision · · Score: 1

      That definition is actually wrong (if you quoted it correctly), and that book is not a standard CS textbook on programming languages or type systems. I prefer Milner's definition of type safety which he summarized as "A well-typed program cannot go wrong." Notice this is a statement about programs, not languages. When you consider the actual definition of type safety for a language--that given formally defined evaluation rules and type rules for the language, it can be proven that no execution of any well-typed program will encounter a type error--it is clear that the only definition of type safety that matters is static type safety. Few languages achieve type safety, and almost none achieve static type safety.

      In reality nearly all languages are hybrids and perform some static checks and some dynamic checks. Typically, though not always, this means that a particular "safe", "statically typed" language cheats the above definition by simply defining semantics for a dynamic check failure and thus not considering it an "error".

      Java is a mostly statically typed language, whereas Python is a mostly dynamically typed language. After all, both languages enforce a number of rules on programs at compile time, and both perform dynamic safety checks of one kind or another.

      --
      120 characters isn't enough to explain it.
    85. Re:I think you're doing it wrong.. by diablovision · · Score: 3, Interesting

      Brian Kernighan would retort,

      "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it."

      C++ seems to be language of choice for geniuses to hang themselves these days.

      --
      120 characters isn't enough to explain it.
    86. Re:I think you're doing it wrong.. by Jack9 · · Score: 1

      Take a look at almost any library written in Ruby and contrast the API to an equivalent library in Java; 9 times out of 10, the Java API will a large number of methods and classes that the Ruby version can sidestep through the use of blocks and dynamic classes.

      In my experience, Java is one of the least maintainable languages in widespread use.

      Did you mean to use a word such as "include", "generate" or "require"?

      --

      Often wrong but never in doubt.
      I am Jack9.
      Everyone knows me.
    87. Re:I think you're doing it wrong.. by Anonymous Coward · · Score: 0

      Perhaps instead of comparing Python to Classic Basic, use DEC Basic Plus. It provided subroutines and variables with names.
      Is there a Basic Python comparison chart anywhere ?

    88. Re:I think you're doing it wrong.. by m50d · · Score: 1
      C++, when done properly, has very little of the problems of C (type unsafety and tedious manual memory management come to mind first).

      If you're using C++ what you seem to think of as "properly" (which I can guarantee it isn't; if you can afford to avoid manual memory management then you would be better off using a garbage-collected language in the first place) then the syntax becomes horrible; enjoy writing "std::vector(" for what would be "[" in most modern languages. All the "nice" syntax has been used up on low-level programming features.

      --
      I am trolling
    89. Re:I think you're doing it wrong.. by joss · · Score: 1

      (def words1 (read-lines "/usr/share/dict/words"))
      (def words2 (read-lines "http://www.puzzlers.org/pub/wordlists/pocket.txt"))

      Much as I dislike java and approve of your general points, that last example is pure BS. The read-lines function is just looking at a string and recognising it starts http:/// before switching to dealing with a URL. Java could do the same thing just as easily. Its not a feature of the language that has made someone write the function like that, its a design choice, and debateable one at that.

      --
      http://rareformnewmedia.com/
    90. Re:I think you're doing it wrong.. by fractoid · · Score: 1

      The point is that dynamic typing (to the extent of dynamic member addition being the only way to do it) makes things like this a lot harder to catch. Do it in C++ and the compiler will give you a polite "um, wtf?". Do it in Python and you have a good chance of missing one, leading to obscure and hard-to-trace bugs.

      --
      Rampant carbon sequestration destroyed the Dinosaurs' tropical paradise. I'm here to help repair the damage.
    91. Re:I think you're doing it wrong.. by TheLink · · Score: 1

      The verbosity is bad in one way, because it means more work for the programmer.

      If it's more work, it can mean the program handles fewer cases/scenarios because programmer just has less time to do it (or it's a bigger pain to do it). That makes the program not as robust or complete as it could be.

      Of course the workaround or "feature" is the Lead Programmer ends up coding the program in English or some other human or formal language, and the other developers compile it to Java.

      This means you have a larger development team - which is not necessarily a minus in some cases as it might look better for a manager's resume and also means he can negotiate a better package ;). The other benefit is the Lead Programmer can switch to working on other programs and not have to spend as much time maintaining it - since the rest of the dev team in Elbonia will be doing that.

      Whereas if it's a python/perl/ruby shop, it might be just the two of you, so when there's a new cool project to do, you and your colleague will have to do it as well as maintain the boring old project.

      Anyway, what I don't like about verbose code is, you can't just stare at your screen till the code makes sense, since with verbosity, you may have to keep using the page up and page down keys ;). You could push some code to another function/routine, but then that often means you have to go look there too to see if the bug is there ;).

      Now if you could push the code to a standard or defacto standard library that's different, since an experienced programmer in the field wouldn't normally have to look it up. And suddenly it becomes a whole lot more maintainable.

      For that sort of reason (and because I'm lazy) I prefer to pick languages where I don't have to write lots of custom stuff - I prefer prefab.

      Stuff like Lisp might give more power (macros etc) to the code I write, but I rather a language gives more power because of all the code I don't have to write ;).

      --
    92. Re:I think you're doing it wrong.. by dna_(c)(tm)(r) · · Score: 1

      Obviously "fun" is subjective, but may I ask why you find a restrictive language like Java more fun than more flexible and functional languages?

      In my case, after 11 years I'm good at it. The language is just a means to express ideas - don't have to think about the language anymore.

      For me it's about a good OO design in the first place.

    93. Re:I think you're doing it wrong.. by fractoid · · Score: 1

      Maybe I'm not 'advanced' enough but I must confess, I've never found a situation where multiple inheritance seemed like the best solution. Occasionally it looks like *a* solution but as you say, in those cases composition is generally more clearcut.

      --
      Rampant carbon sequestration destroyed the Dinosaurs' tropical paradise. I'm here to help repair the damage.
    94. Re:I think you're doing it wrong.. by fractoid · · Score: 1

      I think it's probably easiest just to say "class C++ : public ProceduralLanguage, ObjectOrientedLanguage { ... };"

      --
      Rampant carbon sequestration destroyed the Dinosaurs' tropical paradise. I'm here to help repair the damage.
    95. Re:I think you're doing it wrong.. by chthonicdaemon · · Score: 1

      The reason why languages that choose to use typed _value_ instead of typed _variables_ (like python) are rarely compiled is because it is either infeasably difficult (even in the case of code where everything's known up front) or impossible (in the case of programs that read from files and so on) to determine what type a value will have until you run the program. This means that even if we were to compile the python program, it would effectively require the python interpreter in its runtime to operate in the same way. This is what compiled Lisps do.

      Regarding what defines a scripting language, there's no generally agreed-upon definition. Typically it involves the language being interpreted, loosely or dynamically typed and having a standard library/modules that make operations in a certain field (like text processing, dom navigation, etc) easy.

      And about Java performance: There is building support for Java vms (with hotspot optimisation and disregarding startup times for the server) running code being in the same order of magnitude as things like gcc, while the interpreted languages are by conventional wisdom about an order of magnitude slower (see the alioth shootout).

      --
      Languages aren't inherently fast -- implementations are efficient
    96. Re:I think you're doing it wrong.. by Joey+Vegetables · · Score: 1

      My vote is for the combination of lower- and higher-level languages, rather than attempting to kludge one language into attempting to do both jobs (C++ can, in sufficiently expert hands, but I don't have either one of those). I find I write the most maintainable code that way, and write it the most quickly as well, thus minimizing the usual tradeoff between maintainability and time to market. I believe it is poor tools and practices, more than any other single factor, which force this tradeoff in the business world. There is no theoretical reason why it needs to exist.

      The high-level language expresses business logic, and my rule is that it must be readable and understandable by the business people or else I haven't written or commented it adequately. It also expresses anything else that is most easily expressed that way and that does not require the benefits of static typing or machine-level performance. Python is what I like, where possible, due to its highly flexible and multi-paradigm nature coupled with easy readability, but I'm exploring more functional languages and functional ways of using existing languages as well, since side effects, especially when they are hard to define or to predict, make unit testing and exploiting opportunities for concurrence much more difficult.

      Closer to the metal, where I need performance inside tight loops or access to raw hardware, of course a lower-level language is needed. Rather than either idiomatic C or C++, I prefer a C-like subset of C++, using STL and/or Boost where appropriate but sparingly, but avoiding pointer and reference manipulation insofar as possible. I'm not entirely happy with it, though, and may well consider something like D, or even a compiled functional language, for future projects.

      I've written tons of both Java and C# as well, but only when those tools were specifically required for the job. They aren't fun to me. I can't "think" in either one; I must do a great deal of work to translate what I want to accomplish in either one, and then hopefully the folks who have to maintain it - often myself - have to try to figure out, maybe years later, what the heck I was trying to do. I can't always do it myself, even though I'm fairly disciplined in terms of designing, commenting, and refactoring as appropriately as I can under the circumstances. I will concede that C# is evolving rapidly and comes much closer to being able to express my thoughts than it once did, and Java's evolution has been an improvement as well; but both languages are becoming more difficult to read and to use as a result of things like LINQ or generics not having been designed into either but bolted on later. Also I don't like the single-non-lawsuit-endangered-source status of C#, nor the single-widely-used-implementation status of Java (a complaint which certainly could be levied against Perl as well - not sure about Python and Ruby). If I had to choose only one of C# or Java, it would be Java since it is now mostly open-source and, at worst, no more patent-encumbered than the (hopefully) free software implementations of C#. Openness to me is an absolute prerequisite to anything I would ever willingly choose to use.

    97. Re:I think you're doing it wrong.. by Anonymous Coward · · Score: 0

      I can write unmaintainable shitty Java code. The language doesn't prevent me from being a complete idiot.

      Want to watch?

      No. I make a living working with Java. I get to see all the idiot code I want.

      And more.

    98. Re:I think you're doing it wrong.. by arevos · · Score: 1

      Java could do the same thing just as easily. Its not a feature of the language that has made someone write the function like that

      I never said it was. My first example was an attempt to show that Clojure's syntax and basic data-structures support loose-coupling in a way that Java doesn't. My second example, the one you object to, was supposed to be an example of how Clojure's supporting libraries all tend to be loosely coupled.

      I guess my example wasn't very clear. Here's the source-code of the read-lines function in question:

      (defn read-lines [f]
        (let [read-line (fn this [#^BufferedReader rdr]
                          (lazy-seq
                          (if-let [line (.readLine rdr)]
                            (cons line (this rdr))
                            (.close rdr))))]
          (read-line (reader f))))

      The read-lines function doesn't care what the type of its argument is, so long as it can create a reader from it.

      The Java standard libraries don't do this because Java's type system isn't sophisticated enough to do this with any type safety. I guess you could use switch statements and casts, but it would be unusual to see such a design in Java, and counter to its culture.

    99. Re:I think you're doing it wrong.. by fractoid · · Score: 1

      Disagree with this, too. Because Java is such a restrictive language, your solution space is reduced. There are patterns and program designs that are infeasible within the Java syntax. I'd argue that because it's harder to create a good design in Java, it's easier to create a bad design.

      I'd approach this by saying that it's easier to draw a picture on blank paper than lined paper, if you are an artist. Then again, it's easier to write your budget out on lined paper.

      --
      Rampant carbon sequestration destroyed the Dinosaurs' tropical paradise. I'm here to help repair the damage.
    100. Re:I think you're doing it wrong.. by mustafap · · Score: 1

      >"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it."

      That quote is going on my next T-shirt.

      --
      Open Source Drum Kit, LPLC deve board - mjhdesigns.com
    101. Re:I think you're doing it wrong.. by mustafap · · Score: 1, Insightful

      >You are a moron. You *was* taught Java

      And you would have been better off keeping your mouth shut, as you can't even write in English.

      --
      Open Source Drum Kit, LPLC deve board - mjhdesigns.com
    102. Re:I think you're doing it wrong.. by jgrahn · · Score: 1

      C++ is like a double edged sword. In the hands of an idiot, it will let you create catastrophic type safety failure.

      Then again, in the hands of a true coding genius, multiple inheritance, polymorphism and dynamic casting can allow some truly ingenious coding.

      But it's primarily the idiots who use those three features you mention!

      I'd expect a genius to stick to the normal features (of which there are plenty, unique to C++) most of the time, and only use the things you mention when there's a real need. For at least multiple inheritance and dynamic casting, that is rarely. So far, I've used dynamic_cast once or twice, and the former never.

    103. Re:I think you're doing it wrong.. by jgrahn · · Score: 1

      C++ was a valiant and interesting attempt to graft an object oriented language on top of C. Unfortunately, it replaced a few problems that C had (null pointer references, buffer overflows) with an almost infinite series of problems due to the complexity of the language. For example, the default of assignment by bit-copying objects makes it trivial to generate memory trashing problems.

      I read the rest of your post as if you think C is actually a decent language. Then how can you at the same time criticize C++ for working like C in this area? Do you know that C++ was designed to be -- needed to be -- C compatible?

      This particular problem should be a non-problem for everyone but very new C++ novices. One of the first things to keep in mind is always protect the integrity of your objects. Applied here it means (a) build your classes from objects which are copyable (like the STL containers) and (b) failing that, disable the copy constructor and operator+ () to explicitly say that they aren't. And even (c) there's probably something odd going on if you have to define your own copy constructor.

      Which brings up the point that C++ doesn't have "references", it has pointers with some syntactic sugar on them. If it really had references, the references wouldn't get invalidated by underlying memory operations.

      Depends on who coined the term "reference" first. I sure hope you didn't write C++ code with references assuming they worked like Java references.

      C++ just seems to be overly laden with traps and problems. Just read thru Scott Meyers Effective C++, which I found very clear and useful, and count the number of entries that are navigating around language traps if you don't believe me.

      I haven't read the book, but I know from first-hand experience that this isn't the case. Sure, it's not Python. And it does take more effort to learn well than most other languages. But it's not some kind of minefield. When you need C compatibility, speed and/or static type checking, it will serve you very well.

    104. Re:I think you're doing it wrong.. by Anonymous Coward · · Score: 0

      I would say C++ is more like going into a room where there are 10 unlabelled buttons in front of you, 9 of which will result in a new and exciting way to kill yourself. 1 which gives you the result you desire, but this must be learned through experience (?) :)

    105. Re:I think you're doing it wrong.. by Reverend528 · · Score: 1

      The reason it's chosen is that all that extra code and restrictiveness makes for some very maintainable code Personally I find 20 lines of python to be a bit more maintainable than the equivalent 200 lines of Java (with 400 lines of XML).

    106. Re:I think you're doing it wrong.. by murdocj · · Score: 1

      The problem is exactly that C++ uses the word "reference" to mean "pointer". That's my "point"... C++ is a noble attempt to put an object oriented face on C, but it fails because of the underlying C nature of the language. As far as the issue with references to containers, the problem I ran into was in code written by a VERY experienced C++ developer. And it's a problem that simply wouldn't occur if C++ hadn't come up with "references" which are actually "pointers".

      I'll toss out another example: operator overloading. Something that seems like a cool idea, but you have to use it VERY sparingly because we all have associations with what particular operators mean. Stroustrup's original book actually points this out in section 8.2.3 when he is talking about using << and >> for i/o operators and says "The operators < and > were tried, but the meanings 'less than' and 'greater than' were so firmly implanted in people's minds that the new I/O statements were for all practical purposes unreadable". In other words, he had to take an operator that, although known to most developers, is rarely used (assuming you aren't, say, writing encryption algorithms). The problem with operator overloading is that for most operators, the meaning IS "firmly implanted" in our minds, so aside from doing obvious extensions like defining arithmetic operators for new numeric types, it causes lots of confusion.

    107. Re:I think you're doing it wrong.. by kbrasee · · Score: 1

      I can write unmaintainable shitty Java code. The language doesn't prevent me from being a complete idiot.

      Want to watch?

      Yeah, I love seeing awful code, please post a sample. The worse it is, the better it is.

    108. Re:I think you're doing it wrong.. by Anrego · · Score: 1

      Sure, but what about ~50,000 lines of python..

      It's been my experience that both python and ruby are perfectly readable in small amounts, but once you scale things up, it becomes a nightmare.

      (Again, cue the success stories)

    109. Re:I think you're doing it wrong.. by sjames · · Score: 1

      Agreed. It seems to be a regularly repeating pattern (or anti-pattern). Identify a high risk activity such as cowboy coding directly on the production server or climbing around a tower in an industrial setting. Implement risk mitigation such as a test server and formal change process or fall arrestors, hard hat, etc. Now, make it a blanket requirement with no shortcuts and be sure to wrap it in a zero tolerance (zero thought) policy.

      Next thing you know, correcting a spelling error in the output or getting a container of coffee creamer from a high shelf becomes a multi-day adventure reminiscent of Douglas Adams' "Bureaucracy".

      Once you get to that point, a procedural language in OO clothing like Java seems to make sense. People who believe Java or C++ are properly object oriented have never used a language like Python. I think of C++ as an exploration into OO that was quite useful as a learning experience for the field. Python and the like took the information from that and made the next step. Unfortunately, Java for the most part just copied C++ as if it was the final answer.

      It's almost amusing to see the page after page of flaming hoops Java programmers must jump through to implement something vaguely resembling duck typing. In spite of all the hoops it's still a real problem in Java to implement a function that accepts a duck as input but is able to simply return something like -ENOTADUCK (or just throw an exception) if it's passed something else.

      The only way to do it right very closely resembles implementing a Python interpreter in Java. At that point you might as well do the project in C and link against Python.

      In the broad overview, all of that does very much resemble the way you had to waste a pile of time and gear up heavily to avoid a practically non-existent risk.

      I do wonder in your example, if a thorough risk analysis were done would it show that your risk was actually increased. If for no other reason, by adding a tripping hazard from the safety line in a situation where a fall was already quite unlikely and the consequences of "plunging" 1.5 meters might at most require an aspirin to recover from.

    110. Re:I think you're doing it wrong.. by jeremyp · · Score: 1

      Measurements based on one project may not be as statistically robust as measurements based on a number of projects, but they are at least measurements which is better than anecdotes which is all you seem to have.

      --
      All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
    111. Re:I think you're doing it wrong.. by BotnetZombie · · Score: 1

      Offtopic - I find it funny to see so very often when people use the word moron to describe others, that they would have been spot on had they been talking about themselves.

      Anyway, I like coding in Java and Python. PHP just looks ugly, even beer vision can't help with that. I don't enjoy C/C++, but that's mostly because I've forgotten the tricks necessary for not blowing up your neighborhood accidentally.

    112. Re:I think you're doing it wrong.. by arevos · · Score: 1

      Measurements based on one project may not be as statistically robust as measurements based on a number of projects, but they are at least measurements which is better than anecdotes which is all you seem to have.

      What would you propose I measure?

    113. Re:I think you're doing it wrong.. by owlstead · · Score: 1

      Sometimes trying to follow OOP coding can just flat out be a nightmare and it is especially frustrating when procedural code would have worked just as efficiently without out everything being created into a complex objects. Maybe I mean that it would be a hell of a lot easier to read. But I guess the opposite could also be said,sometimes a few complex objects would help, but frankly I don't recall running into this in the last 5 years.

      The whole idea is that objects should not be complex. Of course, what you are not familiar with is complex more or less by definition. I personally don't recall any largish program where the procedural approach would work better than the OO one. It seems that most companies are thinking the same way. And of course you need a good clean OO oriented language instead of overly complex ones to reap the benefit. And some colleagues who know how to use the language and a good standardized set of API's helps a lot as well.

      Sometimes during orientation I wish that they would emphasize that they are now in Texas and people here have guns.

      ?

    114. Re:I think you're doing it wrong.. by mustafap · · Score: 1

      >I've forgotten the tricks necessary for not blowing up your neighborhood accidentally.

      I love pyrotechnics which is why I still code in C :o)

      --
      Open Source Drum Kit, LPLC deve board - mjhdesigns.com
    115. Re:I think you're doing it wrong.. by Anonymous Coward · · Score: 0

      And do I have a misconception about Java being slow (I really don't know how this could be, if it is being compiled to machine language, but maybe the compilers are inefficient)?

      Not sure if I'm biting on a troll here... but Java is usually slightly slower than compiled languages, but faster than interpreted languages. Java used to be interpreted from semi-compiled bytecode way back, but now it's compiled at run-time.

    116. Re:I think you're doing it wrong.. by arndawg · · Score: 1

      >"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it."

      That quote is going on my next T-shirt.

      So that's two t-shirts in total then?

    117. Re:I think you're doing it wrong.. by Reverend528 · · Score: 1

      Sure, but what about ~50,000 lines of python..

      Well, I'd still prefer ~50,000 lines of python over the equivalent 500,000 lines of java (with 1,000,000 lines of XML).

    118. Re:I think you're doing it wrong.. by DragonWriter · · Score: 1

      Well, it depends on what definition you take. The Dragon book, which is pretty much the standard CS book on compilers, defines strongly typed as "a language where type errors cannot occur at runtime".

      I'm not sure how useful that definition is. Most languages that don't catch type errors in a distinct compilation phase don't actually have "type errors", as such, anyway. In Ruby, for example, situations which you might expect to cause a "type error" caught at compile time in a language like C may produce runtime exceptions because a particular object's implementation of the send method throws an exception with the parameters given, but it's not clear that that is a "type error" so much as it is "an exception occurring in a situation analogous to one in which some other language would produce a type error."

      But, if we look at things that way, is C really strongly typed? Given the limitations of its type system, situations which might produce a "type error" caught at compile time in a language with a richer type system like Haskell (or even Ada) may instead produce a runtime error of some kind in C.

    119. Re:I think you're doing it wrong.. by GWBasic · · Score: 1

      C++, when done properly, has very little of the problems of C (type unsafety and tedious manual memory management

      Doing C++ properly is tedious.

    120. Re:I think you're doing it wrong.. by byrtolet · · Score: 1

      While I agree that C++ is a double edged sword, and an idiot can mess up everithing, you don't have to be genius, you don't need to use multiple inheritance, nor polymorphism, nor anything else to create a good & safe code.

    121. Re:I think you're doing it wrong.. by byrtolet · · Score: 1

      class C++98:public C++, public ShootYourselfInTheLegWithACannon{};

    122. Re:I think you're doing it wrong.. by goose-incarnated · · Score: 1

      "Orthogonal" does not mean "opposite"

      two orthogonal concepts - static typing and dynamic typing means something very different from two opposing concepts - static typing and dynamic typing.

      Static typing is the opposite of dynamic typing, AIUI.

      --
      I'm a minority race. Save your vitriol for white people.
    123. Re:I think you're doing it wrong.. by badkarmadayaccount · · Score: 1

      You'd prefer Javascript rather than Java. Well, I like it too. Glad I'm not the only one.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
    124. Re:I think you're doing it wrong.. by Anonymous Coward · · Score: 0

      Java is anything but efficient. Java is several times more verbose than languages that more flexible, like Ruby or Perl. The same task written in Java probably takes 5 time as much code. Why do you think everyone has to use big IDEs to code Java? Because you need it to move around the mountains of boilerplate code. It's the opposite of a hacking language.

      Write some Java that can read a space-delimited text file into a 2-dimensional table in less than 20 lines of code. It can't be done because GP was right: Java makes simple tasks complicated and tedious. It's no fun. This task is basically a Perl one-liner, for example.

    125. Re:I think you're doing it wrong.. by Mike+McTernan · · Score: 1

      Lots and lots.

      --
      -- Mike
  3. WWTBD? by migla · · Score: 5, Insightful

    "Show this experiment to your boss the next time you are selecting a programming language for a project at work."J

    What would the boss do? Maybe he'd come to the conclusion that Java and C# are for professionals while Python and Ruby are for hobbyists?

    --
    Some of my favourite people are from th US; Vonnegut, Chomsky, Bill Hicks.
    1. Re:WWTBD? by lukas84 · · Score: 5, Funny

      No, it clearly shows that shops using C# and Java employ lazy bastards that don't work on weekends ;)

    2. Re:WWTBD? by Anonymous Coward · · Score: 1, Informative

      What would the boss do? Maybe he'd come to the conclusion that Java and C# are for professionals while Python and Ruby are for hobbyists?

      Or the more obvious, professionals use what they are paid to use at work, and use alternatives on their own time. Which tells management a completely different tale.

    3. Re:WWTBD? by migla · · Score: 1

      "Or the more obvious, professionals use what they are paid to use at work [...]"

      Well, I didn't mean to imply that the boss would come to the right conclusion. I was merely speculating what conclusion the boss might come to.

      --
      Some of my favourite people are from th US; Vonnegut, Chomsky, Bill Hicks.
    4. Re:WWTBD? by LaissezFaire · · Score: 2, Funny

      "Show this experiment to your boss the next time you are selecting a programming language for a project at work."J

      What would the boss do? Maybe he'd come to the conclusion that Java and C# are for professionals while Python and Ruby are for hobbyists?



      I think it's that Java and C# make more sense when the drinking starts, but Python and Ruby make less.
    5. Re:WWTBD? by johannesg · · Score: 1

      "Show this experiment to your boss the next time you are selecting a programming language for a project at work."J

      What would the boss do? Maybe he'd come to the conclusion that Java and C# are for professionals while Python and Ruby are for hobbyists?

      The boss would make you work in Java or C# because if it were fun, it wouldn't be work...

    6. Re:WWTBD? by tyler_larson · · Score: 2, Insightful

      What would the boss do? Maybe he'd come to the conclusion that Java and C# are for professionals while Python and Ruby are for hobbyists?

      It is.

      Dynamic languages are fast and fun, but writing maintainable code in Ruby or Python takes an absurd amount of time and discipline. Take the following real-world, not-at-all-uncommon example. Imagine you have the function "get_results", and you want to quickly determine what all the parameters do. So you have a look at the code:

      def get_results(**args):
      color = args.pop('color','red')
      return generator(color=color).encode(_fetch(**args))

      Totally, completely, useless. So you end up following a series of rabbit holes trying to track down the actual usage of these parameters -- and even when you think you've got it all figured out, you still can't be certain because the complex interaction of possibilities in a dynamic language means that you never know what details will end up later being significant.

      In order for the thing to be maintainable, the comments would have to outweigh the code by a factor of about 3 to 1, and the documentation needs to be rigorously maintained so that it stays in sync with the code. If you're the original author, then no problem! You wrote the function, so you know what it does. But in a corporate setting with a team of 5 programmers and average turnover, this is a nightmare.

      Languages like Java and C# are significantly more verbose and explicit than languages like Python. You're forced to spell everything out in excruciating detail or the thing just won't run. It's like being FORCED to write documentation as part of your program: functions and parameters need to be explicitly declared, class structures can't change shape during execution -- all the important decisions about the shape and usage of your code needs to be decided and written down, and can't be changed without updating all your definitions.

      Python and Ruby are "fun" because they don't make you work. There's a cost to skipping all that work, though.

      --
      "With sufficient thrust, pigs fly just fine. However, this is not necessarily a good idea...."
      RFC 1925
    7. Re:WWTBD? by Anonymous Coward · · Score: 0

      What would the boss do? Maybe he'd come to the conclusion that Java and C# are for professionals while Python and Ruby are for hobbyists?

      That was exactly my thought...

      That said putting C# and Java in the same bag is more than a stretch. Syntactically their nearly identical but C# runs (mostly) in the Windows-ecosystem.

      Java pretty much powers the real world, from consumer banks to entire medical care systems to FedEx to eBay to Walmart to Google (GMail, Android, GWT)... And that's because "Java the virtual machine" is a wonderful piece of robust and secure technology. "Java the language" may have a lot of fugly warts, but the JVM powers most of the real world.

      C# is strong in the Windows-shops for mom & pop's business and SMEs due to the Microsoft lockin, but as soon as we're talking Fortune x Java reigns supreme and won't be displaced any time soon. Think about it next time you go to any scalable website, next time you make any non-cash transaction, next time you see any Android phone, etc.

      The JVM rocks and runs on Solaris, Linux, OS X, Windows, etc. .Net does not.

    8. Re:WWTBD? by SlashV · · Score: 1

      In order for the thing to be maintainable, the comments would have to outweigh the code by a factor of about 3 to 1

      Have you ever heard of (unit) testing? Tests will explain what functions and objects are supposed to do *and* verify that they actually do it.

    9. Re:WWTBD? by Coryoth · · Score: 2, Interesting

      Of course if you take this line of thought seriously then you realise that Java and C# are the light options that don't really force you to do enough. If you were serious about being forced to be more explicit for the sake of maintainable code you would be using Eiffel, or Spec#, or JML abd ESC/Java2 with your Java, or SPARK-Ada, or writing specifications in B or Z. I'm betting you don't do any of that though because you view it as "too much work", even though many of those options (such as Spec# of JML) really aren't that much more work if you really are serious about robust maintainable code.

    10. Re:WWTBD? by Radhruin · · Score: 1

      This post is the utmost of absurdity. You create a strawman that is an awful piece of code, and then talk about why it sucks -- well, yeah it sucks, you deliberately crafted it to be so. I suggest you take a look at a decent program written in python or ruby. You will find that code is easy and straight forward, that no more comments are required than in other languages, and the code is quite maintainable. Seriously. Browse some high profile Ruby projects on Github and look at the code. I think you'll be surprised.

    11. Re:WWTBD? by The_Quinn · · Score: 1

      Try this - Java and C# folks have programming jobs with non-programming hobbies, while Python and Ruby have non-programming jobs, with programming hobbies.

    12. Re:WWTBD? by Jherico · · Score: 3, Funny

      Nah, it shows that while C# and Java developers are using Stack Overflow on the job, Ruby and Python developers find it hard to ask questions while asking 'you want fries with that?'

      --

      Jherico

      What can the average user can do to ensure his security? "Nothing, you're screwed"

    13. Re:WWTBD? by MBGMorden · · Score: 1

      We use C# (no Java), and I'd actually like to work some weekends, but am not allowed to work from home so I only end up coming in to the office in an extreme emergency. Since I work for a government organization our auditors basically stated that if we worked from home, our home computers would become technically affiliated with work data, and hence would then become subject to FOIA requests and such, and so our boss basically just decided to forbid any access to the internet systems from the outside (aside from anything that any other citizen has access to, like the web pages).

      --
      "People who think they know everything are very annoying to those of us who do."-Mark Twain
    14. Re:WWTBD? by JediTrainer · · Score: 1

      What would the boss do? Maybe he'd come to the conclusion that Java and C# are for professionals while Python and Ruby are for hobbyists?

      Speaking as a manager (since I now am one, but still write code occasionally and I try to not be evil to my staff...), my preference is normally along the lines of (in this order):

      -standardization in the organization. We don't need a spaghetti mess of different technologies for each project that represent an individual coder's personal preferred language or toolkit. If our pool of developers (each with their own unique talents) use the same tools we have an easier time backing each other up when someone is ill, goes on vacation or resigns (average retention in my team is about 6 years which is great, but makes it hurt when somebody does decide to go as all their knowledge leaves with them), and

      -the right tool for the job. Exceptions in the above rule can be made if a given task is overly difficult to do with our standard technologies and conventions. You'd still need to make a good case, though, because anything you write needs to be supported in the long-term by a larger pool of developers. I'm sorry, but although as a coder myself I appreciate 'fun', in an enterprise environment what we need is maintainability.

      --

      You can accomplish anything you set your mind to. The impossible just takes a little longer.
    15. Re:WWTBD? by FooBarWidget · · Score: 1

      "So you have a look at the code: "

      That's what documentation is for. Blame the author for not having documented that function. I can write equally unmaintainable code in Java by accepting a Map as options parameter or by naming my parameters "foo", "something", etc. Forced structure != replacement for documentation.

    16. Re:WWTBD? by Clueless+Moron · · Score: 1

      You can do that in Java too. Just define a method that takes a HashMap as its single argument and have the method extract "arguments" from that HashMap by name. That's essentially what the bozo who wrote your code example did, for no apparent reason.

      You can do stupid things in any language.

    17. Re:WWTBD? by Anonymous Coward · · Score: 0

      Nah, rather that C# and Java guys get their job done during normal working hours and thus don't have to work overtime.

    18. Re:WWTBD? by tyler_larson · · Score: 1

      This post is the utmost of absurdity. You create a strawman that is an awful piece of code, and then talk about why it sucks -- well, yeah it sucks, you deliberately crafted it to be so.

      I realize that no one is going to read this now, but FWIW, here's an actual example from one of the most well-respected python projects in circulation:

      def render_to_response(*args, **kwargs):
      """
      Returns a HttpResponse whose content is filled with the result of calling
      django.template.loader.render_to_string() with the passed arguments.
      """
      httpresponse_kwargs = {'mimetype': kwargs.pop('mimetype', None)}
      return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)

      You recognize it? Yep, that's one of the most commonly used functions in the Django project.

      --
      "With sufficient thrust, pigs fly just fine. However, this is not necessarily a good idea...."
      RFC 1925
  4. Not necessarly "more fun to use' by Shados · · Score: 4, Insightful

    While its probably one of the factors... Java and C# are very heavily used in business environments. So if you're trying to expand your horizon by learning something new, you're not going to be looking at stuff you do day to day.

    So I'd assume anything people would do during business hours would take a drop on weekends, in favor of things they -don't- do at work, regardless of what it is... It just makes sense.

  5. Programming lanugages - just like mullets by boguslinks · · Score: 4, Funny

    Java in the front, Python in the back

    1. Re:Programming lanugages - just like mullets by slarrg · · Score: 5, Funny

      You seem to be built wrong, my python is in the front.

    2. Re:Programming lanugages - just like mullets by Anonymous Coward · · Score: 0

      is that the Kate Goslin reverse mullet?

    3. Re:Programming lanugages - just like mullets by Anonymous Coward · · Score: 0

      I almost forgot I'm on Slashdot.

    4. Re:Programming lanugages - just like mullets by The_Quinn · · Score: 1

      Ok - but are you male or female?

    5. Re:Programming lanugages - just like mullets by binarylarry · · Score: 1

      Congrats, Captain Flock of Seagulls.

      --
      Mod me down, my New Earth Global Warmingist friends!
  6. The implications by phantomfive · · Score: 1

    I suspect this rather reflects what the various languages are being used for, more than how fun they are. For example, if you are trying to make a stand alone program for windows, your best option is probably C#. On the other hand, if you want to build a web app, you are probably not going to use C#, because you won't be able to deploy your web app without paying a ton of cash for the asp dev license.

    If you are making a web page, it will once again depend what kind of web page you are making. Java really shines in large enterprise systems with lots of repetition. It isn't so great for small projects, that is where Ruby is best. So I think what this guy has found is what languages are best for weekend type projects.

    --
    Qxe4
    1. Re:The implications by larry+bagina · · Score: 2, Informative

      "ton of cash" == $0.00

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    2. Re:The implications by phantomfive · · Score: 0

      By your comment, I'm guessing you've never actually made a website using aspx. In order to publish the website so it can be deployed by IIS, you must purchase the full version of Visual Studio. While it is true there is also an express version of visual studio which is free, the option to publish the website has been disabled.

      On the other hand, if you know a free way to do it, I'd be interested in hearing it. To my knowledge there is none.

      --
      Qxe4
    3. Re:The implications by Anonymous Coward · · Score: 0

      Java really shines in large enterprise systems with lots of repetition.

      Java is the CAUSE of most of that repetition - I wince for all the poor saps stuck in Java-land every time I read a Java example that's 75% get_something and set_something (along with 'import foobar' and java.blah.blah.blah.omfgThisVariableNameIsWayTooLongGetMeOuttaHere). It seems like Java's growth has been dictated over the last 10 years or so by the IDE makers, to further justify the need for their tools by making a language so unwieldy that only other programs can write it.

      And let's not even discuss the (ab)use of XML for absolutely everything. For crying out loud, Java-ish thinking gets you things like HTTP via SOAP via HTTP!

    4. Re:The implications by Anonymous Coward · · Score: 1, Informative

      XCOPY, anyone? http://www.15seconds.com/Issue/030806.htm

    5. Re:The implications by Anonymous Coward · · Score: 1, Informative

      Try Apache + mod_mono (Mono). There caveats therein is really how you write the application but
      you don't need IIS. See: http://www.mono-project.com/ASP.NET

    6. Re:The implications by benjymouse · · Score: 1

      On the other hand, if you know a free way to do it, I'd be interested in hearing it. To my knowledge there is none.

      There most certainly is. Just copy the files over to the designated directory on the webserver. It will even detect the changes and gracefully restart the webapp with no service interruption. IIS with ASP.NET installed has everything it needs to compile C# and VB.NET source files, ASP.NET markup etc. It will recognize any assemblies put into the apps /bin folder as well.

      If you feel uncomfortable deploying source files and prefer to precompile, .NET comes with a tool called aspnet_compiler. This is a commandline tool and actually builds upon the same code which is invoked during a Visual Studio "deploy".

      You don't need Visual Studio at all to develop ASP.NET solutions. You can deploy or compile without it. Not recommended, but entirely possible. This is actually what many big shops do on their build servers.

      IIS comes with any version of Windows (server). The cheapest "web" edition of Windows server is listed as $469 and it is perfectly capable of running most corporate websites.

      --
      Reading slashdot one-liner: (irm http://rss.slashdot.org/Slashdot/slashdot).rdf.item | fl title,desc*
  7. Houston, we have a problem... by Anonymous Coward · · Score: 0

    Correlation does not imply causation. Additionally, stating that a language is "more fun" to use because of the day of the week people ask questions is completely asinine. You, sir, are and idiot.

  8. Grails and Groovy by Foofoobar · · Score: 3, Interesting

    I'm rediscovering the fun of Java with Grails and Groovy. Groovy takes the best of PHP, Python and Ruby and integrates it into Java and Grails finally creates a framework without a million XML configs. It has made web dev in Java easy and pleasurable.

    --
    This is my sig. There are many like it but this one is mine.
    1. Re:Grails and Groovy by mgkimsal2 · · Score: 1

      FWIW, there's still a load of XML config files (you probably already knew that!) it's just that following the convention of Grails they're automatically handled for you. There's probably fewer than an equivalently functional straight Java app, but there's still quite a few XML files - more than I care to see. Still your point about discovering fun with Groovy and Grails is well taken. They were fun enough to inspire http://groovymag.com/ (shameless plug!) :)

    2. Re:Grails and Groovy by Anonymous Coward · · Score: 0

      What load of xmls? I've put into producting 3 mid-sized grails apps and the only xml I've seen is from the legacy WS intefaces exposed by with my clients current apps.

       

    3. Re:Grails and Groovy by Xymor · · Score: 1, Interesting

      Grails mono should be "Have your cake and eat it too". It's amazingly productive and it integrates seamlessly with current java environments and skillset.

      Groovy however i find not as amazing. Specially with all inconsistencies that \type annotation\ bring to the table.The humongous stacktraces are a sore in the eyes and complicate debug. The current IDE support is lacking but rapidly improving with SpringSource team efforts(STS2.1 has a pretty decent groovy&grails support).

      There's a lot of room for improvement but it's definitely heading the right way.

    4. Re:Grails and Groovy by Lord+Ender · · Score: 1

      I'm doing the same thing, but with JRuby. It has similar syntax to Groovy. And, like Groovy, JRuby gives you full access to the awesome Java libraries.

      I think Java is the future of programming, but the Java language may not get to come along for the ride ;-)

      --
      A slashdotter who didn't build his own computer is like a Jedi who didn't build his own lightsaber.
    5. Re:Grails and Groovy by Foofoobar · · Score: 1

      JRuby is ok but it adds extra overhead; it's an interpretation layer. It would be like adding a layer to interpret PHP code (like Quercus). Why do I want a second language to code in the language that I'm most familiar with? Why not just learn a new language that is the best of both worlds?

      --
      This is my sig. There are many like it but this one is mine.
    6. Re:Grails and Groovy by Lord+Ender · · Score: 1

      Well... because the Ruby community is a lot bigger at present. It has multiple books; it has groups to answer questions... but have you tried both? Is it hard to go from Ruby to Groovy and vice verse?

      --
      A slashdotter who didn't build his own computer is like a Jedi who didn't build his own lightsaber.
    7. Re:Grails and Groovy by hotfireball · · Score: 1

      It also takes the worst of all dynamic scripting languages existing: Groovy is a hell slow. For the record, Jython or PHP on Caucho integrates to the Java stuff exactly as same.

    8. Re:Grails and Groovy by mgkimsal2 · · Score: 1

      Looks like some of it has been moved in to $HOME/.grails instead of each project directly. I see webdefault.xml files (for jetty, might not be there if you don't use jetty - not sure) and standard "web.xml". Plugins are configured via XML, but there's rarely a need to touch those by hand. I've got ivy.xml files, not sure where those came from, and that's all I see *now* - I could swear there used to be a few more last year. There's still the option of wiring up Spring stuff manually, and you use XML for that, but the need for that seems to have gone down a lot from last year.

    9. Re:Grails and Groovy by ahabswhale · · Score: 1

      Groovy was designed to be easy to grock for Java programmers. So if you know Java, you will pick up Groovy very quickly. That said, it's not hard to learn for anyone else but it will take a little longer. As for books, the Groovy in Action book is excellent and is definitely one of the best language books I've ever read. Programming Groovy is also very good and more succinct.

      As for the extra overheard of JRuby that Foofoobar speaks of, it's a bunch of horseshit. JRuby has performance that's very comparable to Ruby and when the dynamic features are added to the JVM, it will likely be faster.

      --
      Are agnostics skeptical of unicorns too?
    10. Re:Grails and Groovy by zuperduperman · · Score: 1

      > Groovy is a hell slow

      Compared to java yes. Compared to it's brethren (ruby, python, etc) - no. They've fixed the horrendous performance of early versions and now it's just regular-old-scripting language slow, but with the advantage that you can trivially code anything that needs better performance in java which is a lot easier than doing the equivalent cross-platform C extension for the native versions of the other languages.

      > For the record, Jython or PHP on Caucho integrates to the Java stuff exactly as same.

      No. This is one of the big things groovy does: it puts interop with java as a #1 priority where in the other languages it comes as an afterthought. In particular, when you get into nitty gritty like nested annotations with complex argument lists, or cyclic references b/w languages (groovy depending on java which depends on groovy), groovy has solved all these issues and supports them natively. And if there is a problem and you report it they'll treat it as a high priority whereas in the other languages it will be seen as a niche use case.

      The worst thing about groovy IMHO is the god-awful stack traces, which is actually just a side effect of the problem that it has incredibly deeply nested call stacks which is a problem for lots of other reasons than just that it looks bad. However that is something that is bound to be improved over time.

    11. Re:Grails and Groovy by hotfireball · · Score: 1

      Well, if you do that "nitty gritty" annotations, than maybe Groovy is better indeed. However, who really does need that? If you do your stuff in e.g. Jython, you usually do the same as you do in Python: write a separate lib in C/C++ (in Jython case you write in a plain Java).

      For performance: then I have to check it again. Last time I've checked Groovy it was like a half a year ago and it was still very slow crap and even really slow Jython was faster in some cases, no mention that CPython was a quince faster. Maybe now Groovy is much better, so I have to look at it again. Thanks for the update info!

    12. Re:Grails and Groovy by Foofoobar · · Score: 1

      Well that's what I'm am talking about. JRuby's performance is closer to Ruby rather than closer to Java. I mean PHP and Perl are more powerful than Ruby in benchmarks. Why gimp yourself? Why not just bypass the middleman and move to the next step? If you want to work with Java and a Ruby like language, just make the jump to Groovy and save yourself the time.

      And I'm speaking as a dev currently working in PHP and Java with some Ruby experience who is skipping right past Ruby to Groovy. I can work directly with Java when I want and Java classes and don't even need to use Groovy with Grails if I don't want. With JRuby, you will ALWAYS be using Ruby... and it will ALWAYS be interpretted and slower. The benchmarks have improved but they are still slow and always will be because it is an interpretted layer. You can call it horseshit but it's an engineering fact; not matter what languages you are talking about, an interpretted layer will alway be slower than native. It's why they took the time to reinvent it with Groovy. To make it better and faster.

      --
      This is my sig. There are many like it but this one is mine.
    13. Re:Grails and Groovy by DragonWriter · · Score: 1

      JRuby is ok but it adds extra overhead; it's an interpretation layer.

      The JRuby distribution includes a compiler which compiles Ruby to Java bytecode (jrubyc), and the interpreter by default attempts to do per-method JIT compilation on frequently called methods.

    14. Re:Grails and Groovy by ahabswhale · · Score: 1

      Actually you're wrong. JRuby can be executed in interpreted or JIT (compiled) mode. So there's no reason it has to be slower than Groovy. Just to be clear, I'm not dissing Groovy in any way...I think it's great and I prefer it over Ruby. But it doesn't change the fact that JRuby should be able to have the performance characteristics (in JIT mode) similar Groovy.

      --
      Are agnostics skeptical of unicorns too?
    15. Re:Grails and Groovy by DragonWriter · · Score: 1

      I'm rediscovering the fun of Java with Grails and Groovy.

      Grails and Groovy are not Java, so I don't really understand the point of this. Groovy is a non-Java language designed for the JVM. Grails is a framework for Groovy. Saying "I'm rediscovering the fun of Java with Grails and Groovy" makes about as much sense as, for instance, saying "I'm rediscovering the fun of Java with (J)Ruby and Rails", and for exactly the same reason.

    16. Re:Grails and Groovy by badkarmadayaccount · · Score: 1

      JRuby has been integrating an AOT/JIT compiler for sometime.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
    17. Re:Grails and Groovy by Anonymous Coward · · Score: 0

      Actually you're wrong. JRuby can be executed in interpreted or JIT (compiled) mode. So there's no reason it has to be slower than Groovy. Just to be clear, I'm not dissing Groovy in any way...I think it's great and I prefer it over Ruby. But it doesn't change the fact that JRuby should be able to have the performance characteristics (in JIT mode) similar Groovy.

      Actually, you're dead wrong. There are *very* good reasons JRuby and Jython would *always* lag in performance. In the case of JRuby it has to do with how powerful Ruby is. That linguistic power will always cost in execution. In both Python and Ruby for example ... there are no classes. Class like behaviour is emulated via a namespace resolution trick and sets of at run-time interpolations... Groovy is not quite as syntactically powerful it is still tied to a Java-ese mind-set. That makes it faster on the JVM. For example closures are still objects in Groovy. Just objects with an additional implicit class variable called "delegate" to refer to the object the closure is attached to and a "this" to refer to the class the closure was declared in. ... yet ... these are not linguistically as powerful as Ruby's features... Ruby's class is really just an object which is radically different from Jawa's class. Python's class is really just a namespace. That means to model a Ruby class on a Java class you would actually have a series of flyweight classes to model the instances of the "class" object... at this point most Java people slowly back away in horror ...to model Python's classes you would need to model namespace resolution in some fashion this would also preclude per- "user defined" class Java classes. All this bodging about in the namespaces and faux class definitions mean that you can't leverage Java class loaders and Java lexigraphical resolution. So you have to emulate them. Even when emulated on a bit-wise thin flyweight layer you still have to do additional computing to make the mapping. All of this can be skipped with Java-ese written Groovy. Essentially, if you walk too far from the JVM normative language of Java then you pay a price in time or space trade-offs.

    18. Re:Grails and Groovy by Foofoobar · · Score: 1

      Thank you. That's what I was trying to get across. I'm still a little green when it comes to Java but from what I have read (and seen with the benchmarks), I was fairly certain of that; No matter what language, native is always faster than something that has to be interpreted.

      --
      This is my sig. There are many like it but this one is mine.
    19. Re:Grails and Groovy by Foofoobar · · Score: 1

      Yes but nothing is as fast as native code. Groovy is native Java. JRuby is an interpretter converting Ruby TO Java

      --
      This is my sig. There are many like it but this one is mine.
    20. Re:Grails and Groovy by DragonWriter · · Score: 1

      Yes but nothing is as fast as native code.

      Which seems more like an argument against the JVM than an argument about which language to use on the JVM. But even, among JVM languages, that's not an argument against JRuby, in any case.

      Groovy is native Java.

      Groovy is compiled to Java bytecode, which is the "machine" languge of the JVM, correct.

      JRuby is an interpretter converting Ruby TO Java

      JRuby is a package of related software. It includes a Ruby-to-Java bytecode compiler (jrubyc), which -- just like or javac does for Java source -- converts Ruby source code to the "native" bytecode language of the JVM. It also includes an interpreter that does per method JIT compilation.

    21. Re:Grails and Groovy by Anonymous Coward · · Score: 0

      More importantly, they are very very wrong about compiled JRuby. Groovy uses the Java type system so it *could* leverage the Java type system to run faster (don't know a damn thing about it). JRuby simply *can't* do that because Ruby doesn't even have a conception of types that matches. I would look for someone to wake the fuck up and realize this. I predict someone will write a hybrid Ruby with a Java type system grafted in. They'll probably call it Jooby or Roovy or something.

      Jython is also simmilarly boned! It has no type system either. That means you have to go and pipe through some kind of place holder fly-weight system to the right code to find it and run it. The result is you *must* have a second typing system on top of the JVM for both languages. You can play time versus space trade-offs on this mess but either way it's going to suck down CPU like mad or suck down RAM like crazy pushing a tiny proggie to thrash the system as it hits swap.

      Dynamic language performance will always suck. But it will always suck worse for the languages on the JVM that deviate too far from the Java type system.

      Now, I say all of this from merely having a good Computer Science education that's a decade old. Maybe the kids will cook something up that changes the game... but I doubt it.

    22. Re:Grails and Groovy by Foofoobar · · Score: 1

      AND... using Groovy on the fly means compiling straight to Java bytecode. Using JRuby means converting Ruby code THEN compiling. Its a one step process vs a two step process.

      --
      This is my sig. There are many like it but this one is mine.
    23. Re:Grails and Groovy by DragonWriter · · Score: 1

      AND... using Groovy on the fly means compiling straight to Java bytecode.

      True enough, the Groovy interpreter is actually, from the descriptions I've seen, essentially just an AOT compiler that then runs the compiled code. This is essentially identical to using the JRuby AOT compiler and then running the result.

  9. Really? You think that's what it means? by bonch · · Score: 5, Insightful

    This means that more programmers are using Python and Ruby on the weekend for their personal projects, showing that these languages are more fun to use.

    What's to stop me from coming to a different conclusion, such as that Python and Ruby are toy languages not meant for serious projects? It would be just as presumptuous, wouldn't it?

  10. Ghaaaaaa???? by TiggertheMad · · Score: 5, Insightful

    ...showing that these languages are more fun to use.

    ...And in other news, older people seem to die more often than younger people, showing that being dead is much more fun as you get older.

    --

    HA! I just wasted some of your bandwidth with a frivolous sig!
    1. Re:Ghaaaaaa???? by Anonymous Coward · · Score: 2, Informative

      Fool! You have completely misinterpreted the data. Python/Ruby users are geniuses 5/7 of the time, only requiring help 2/7 of the time. C#/Java coders, on the other hand, have the reverse syndrome. Therefore, the intelligence of Python/Ruby coder : Java/C# coder is 5:2.

      So switching from C# to Python intrinsically raises your intelligence 150%!

    2. Re:Ghaaaaaa???? by TuaAmin13 · · Score: 1

      Inconceivable!

    3. Re:Ghaaaaaa???? by cmdr_tofu · · Score: 1

      Wow I suppose in the back of my mind I knew that was true all along, but until it was spelled out so clearly, I never realized it!

  11. Bad Conclusion by malevolentjelly · · Score: 4, Interesting

    Perhaps this only indicates that Java and C# are used more by professionals and Python and Ruby are used more by amateurs. No matter where they work (whether or not they're using Java or C# or even programming at work), it merely indicates that people who use Python and Ruby are active during the weekend.

    Perhaps this simply means that Python and Ruby are more popular with amateur F/OSS and web developers, something that is so obvious it doesn't even necessitate an article.

    1. Re:Bad Conclusion by Frosty+Piss · · Score: 1

      Perhaps this only indicates that Java and C# are used more by professionals and Python and Ruby are used more by amateurs.

      BY JOVE! I think you nailed it!

      --
      If you want news from today, you have to come back tomorrow.
    2. Re:Bad Conclusion by Anonymous Coward · · Score: 0

      Besides students and school kids, are there really a significant number of "amateur" developers out there who aren't actually, y'know, professionals?

      I use Python for my personal projects, and C++ by (real, technical) necessity at work. But working on personal stuff doesn't magically transform me from professional to amateur developer.

    3. Re:Bad Conclusion by Anonymous Coward · · Score: 0

      But working on personal stuff doesn't magically transform me from professional to amateur developer.

      No, but using Python does.

    4. Re:Bad Conclusion by forkazoo · · Score: 1

      Perhaps this only indicates that Java and C# are used more by professionals and Python and Ruby are used more by amateurs. No matter where they work (whether or not they're using Java or C# or even programming at work), it merely indicates that people who use Python and Ruby are active during the weekend.

      Perhaps this simply means that Python and Ruby are more popular with amateur F/OSS and web developers, something that is so obvious it doesn't even necessitate an article.

      While I have personally had plenty of fun with Python, I agree that the conclusion is clearly a bit flawed.
      Alternate explanations:
      Professional Java developers less prepared for their job than professional Python developers because they ask more questions at work.
      People who party all weekend are more likely to have questions about Java. Better, more dedicated devlopers more likely to have an interest in Python.
      Developers tend to work a day job building things where Java is a good fit, and do extra gigs on the side where Python is a better technical fit to the problem.
      Developers already know the language they work in. Professional Python developers are curious about moving Java, and ask lots of Java questions from work because Java seems so much more fun than their job. Professional Java developers are less interested in Python, and only inquire about it on weekends when they have spare time to ask about boring languages.

      I'm sure one could draw any number of other conclusions that meet Fox standards for reporting.

    5. Re:Bad Conclusion by malevolentjelly · · Score: 1

      People who party all weekend are more likely to have questions about Java. Better, more dedicated devlopers more likely to have an interest in Python.

      Better, more dedicated? You mean developers without lives, right? Some people have families and friends and such, and that doesn't make them any worse at programming. Often they are better.

    6. Re:Bad Conclusion by malevolentjelly · · Score: 1

      That was almost poetic. :)

    7. Re:Bad Conclusion by hubert.lepicki · · Score: 1

      And my conclusion is also different than your.

      As I use ruby from Monday to Friday, and I don't work over Sat-Sun, does it mean that in my world weekend has 5 days, and, also, I am unemployed?

    8. Re:Bad Conclusion by malevolentjelly · · Score: 1

      Actually, the article and subsequent post had more to do with "more" amateurs using Ruby and Python, not "all" or "none". These languages are not popular in the enterprise, perhaps because they're generally low performance trendy languages with questionable professional application. But they are trendy, so I'm sure plenty of amateurs and webtrash make use of them.

    9. Re:Bad Conclusion by andre_pl · · Score: 1

      I've heard this a lot, but I've never seen any evidence of it. someone may very well be a great programmer, but the chances are equally good that they just think they're great because the people they've worked with in the past were also bad. Show me someone who programs in at least some of their free time, and its a pretty safe better that they're a lot more proficient and knowledgeable than the guy who doesn't.. and like it or not, most people would rather not take the risk hiring the strictly 9-5'er

    10. Re:Bad Conclusion by malevolentjelly · · Score: 1

      I'm sorry, but I don't know how it is where you're at, but in all the jobs I've worked, the senior engineers and programmers didn't bother with it off the clock. It's only the young fresh out of college kids who feel like working instead of spending the evening with their family. The young guys are cheaper, but they're certainly not more useful than experienced senior engineers.

    11. Re:Bad Conclusion by JumpDrive · · Score: 1

      Do you get paid for your personal Python projects?

  12. "Fun" is not a criteria in my book by AdamInParadise · · Score: 2, Insightful

    When I start a new professional project, I pick the most productive language for the job, according to the circumstances. Usually it's Java because this is the language that everyone in my industry is going to know. In another industry, I guess that I would have to use C, C# or Fortran.

    Now, Java is a reasonably efficient language and I like programming in it. Some of my colleagues cringe and prefer to use obscure languages instead, such as OCaml or (Deity forbid), a language they defined themselves. And the moment they quit you are stuck with thousands and thousands of line of code that no one else can understand.

    The gist is simple: Python and Ruby are fine languages, but when you're programming for a living, "fun" is usually trumped by more important considerations, such as being able to find another programmer to maintain the code.

    --
    Nobox: Only simple products.
    1. Re:"Fun" is not a criteria in my book by arevos · · Score: 1, Interesting

      When I start a new professional project, I pick the most productive language for the job, according to the circumstances. Usually it's Java because this is the language that everyone in my industry is going to know.

      I agree with the gist of your post that it's easier to find Java developers than Ruby developers. But I find your use of the word "productive" a strange choice in this case. Wouldn't "maintainable" or "well-known" be better? Java may be many things, but I'm not sure it's particularly productive.

    2. Re:"Fun" is not a criteria in my book by Anonymous Coward · · Score: 0

      Why do we have such low expectations of software developers? Anyone with a CS degree and some intelligence and interest should be able to achieve competence with a totally new language in a matter of months. There are plenty of developers out there who may not be Google-level geniuses, but they sure as hell aren't just Java code monkeys. Python is big these days, and it's not a remotely difficult language to learn.

    3. Re:"Fun" is not a criteria in my book by 644bd346996 · · Score: 1

      Python is far too popular for that argument to work anymore. If Google has no trouble finding smart people who know Python, then it probably won't be hard enough for you to find them to justify letting that influence the choice of language. Besides, can you really risk forcing your programmers to use a less suitable language in order to possibly reduce maintenance costs in the future? Don't cripple version 1 for the sake of (possibly) making it easier to get from version 1 to version 2.

    4. Re:"Fun" is not a criteria in my book by sjames · · Score: 1

      There's a fine supply of good Python programmers. OCaml, not so much. Fully agreed you always want to avoid those self defined languages since only one person knows it and there are no materials to learn it from (assuming anyone else wants to).

      There's a huge supply of Java programmers. The supply of GOOD Java programmers is considerably smaller. If programmers enjoy working in a language, it's easier to hire them. If your language of choice makes the job a last resort choice, as soon as the job market opens up you'll be left with only the programmers who couldn't get something better.

    5. Re:"Fun" is not a criteria in my book by Anonymous Coward · · Score: 0

      Well, production is the derivative of the amount of functionality over time, so, like speed, it depends on how long you average over. Even more so since coding is inherently discrete.

      The top speed of Python or Ruby, or Perl is undoubtedly greater than that of Java. Over longer periods, it's not. Any project that's not a throw away, I'll stick with statically typed.

      I love Perl. Saved me from learning sed and awk and all that cr*p. I also know that every time I need to write some, I start from scratch, because, one, I can't quite understand anymore what it does or how and it's faster to do it again than try to make it work, and two, that really cool 2 lines regexp that gave me the info I wanted the last time doesn't quite do what I need now, and never will because it happily skipped some stuff that I do need now and changing it will break what follows.

    6. Re:"Fun" is not a criteria in my book by EsbenMoseHansen · · Score: 1

      That merely shows you are a bad Perl hacker. Trust me, Java programmers can make impenetrable code, too :) Just a 2 examples from real life: Why not have getStuff() update the object too? (Java has no const, otherwise this one might have been avoided.) Why use a small class holding 6 named doubles when you can just use an array of doubles and remember what is in each of them?

      --
      Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
    7. Re:"Fun" is not a criteria in my book by pmontra · · Score: 1

      Actually I program for a living in both Java and Ruby. In the last year I wrote about half of my code in Java and half in Ruby, all of it as part of web applications. I use Rails for the Ruby ones.

      Unless a customer forces me to use Java I never suggest to use it because it makes me a lot less productive than Ruby and yes, coding in Java is a horrible experience compared to coding in Ruby. I need to write about 3-4 times as much code to do the same things, I need 3-4 times more time and I have to charge my customers 3-4 times as much. Customers using Java have a worse time to market than customers using Ruby. In a competitive world this puts them at a disadvantage and damages my chances of getting new projects from them.

      The usual objection is that Java performs so much better than Ruby (*), which is true, but only a few projects need to be optimized for performance. For most projects the users feel the application fast enough even if in Java it could be 100 times faster and as a matter of fact many customer facing applications never get so successful to require optimization. Discovering quickly and cheaply that a business model is a failure is very important. If your webapp gets successful you'll have the money to optimize and replace slow code with faster one (think about Twitter).

      If time to market isn't important or it's trumped by an absolute need for performances, then yes, in that case I'd recommend to use Java or C++ or whatever achieves the mandated performance level.

      (*) By the way, how much of a web request's time is spent on the server and how much is spent moving the data to and from the server and waiting for the browser to render it? The weight of the server performances might be not so big on an average web request.

    8. Re:"Fun" is not a criteria in my book by JAlexoi · · Score: 1

      Maybe he meant high performance?

  13. I have a different conclusion by larry+bagina · · Score: 4, Funny

    I spend my weekends drinking and getting pussy (There's a vapid slut still passed out in my bed right now). Python and ruby are for guys who have no social life and/or can't get laid.

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

    1. Re:I have a different conclusion by NewbieProgrammerMan · · Score: 4, Funny

      Python and ruby are for guys who have no social life and/or can't get laid.

      You've got it all wrong; obviously those languages are used by porn stars that are so tired after getting laid all week that they'd rather code on the weekend.

      --
      [b.belong('us') for b in bases if b.owner() == 'you']
    2. Re:I have a different conclusion by ultrabot · · Score: 1

      I spend my weekends drinking and getting pussy (There's a vapid slut still passed out in my bed right now). Python and ruby are for guys who have no social life and/or can't get laid.

      So Java/C# people start drinking early in the morning, and proceed with harassing random women on the street?

      Even if you were into booze & partying lifestyle, you could still get a lot of hacking done before the evening starts.

      --
      Save your wrists today - switch to Dvorak
    3. Re:I have a different conclusion by jimicus · · Score: 1

      Whereas those of us who are married spend the weekends drinking and trying to get pussy.

      (Just joking, dear)

    4. Re:I have a different conclusion by gbjbaanb · · Score: 1

      Python and ruby are for guys who have no social life and/or can't get laid.

      whereas Java and C# are for guys who have a job and can afford such vapid prostitutes, and/or GHB?

    5. Re:I have a different conclusion by johannesg · · Score: 1

      There's a vapid slut passed out in your bed... And yet, you can't think of anything better to do than post on Slashdot?

      Riiiight...

    6. Re:I have a different conclusion by Anonymous Coward · · Score: 0

      There's a vapid slut still passed out in my bed right now.

      And you're on Slashdot.
      What's wrong with this picture?

    7. Re:I have a different conclusion by ajlisows · · Score: 1

      Careful! I think I posted that same thing 6 years ago or so. She never left and I ended up marrying her!

    8. Re:I have a different conclusion by janwedekind · · Score: 3

      Python and Ruby are the tools of choice when working on a strict deadline while getting a blowjob and having a gun pointed at my head. And yes, this kind of thing predominantly happens on weekends.

    9. Re:I have a different conclusion by Anonymous Coward · · Score: 0

      The site must have some great response time!

    10. Re:I have a different conclusion by StarfishOne · · Score: 1

      Sshhhh... don't tell our secret to too many people!

      There was a Python instructional video which said: "Let the snake be your teacher!"

      Just a few people, like you, got the double meaning of that expression ;-P

      ;-) ;-)

  14. Re:Really? You think that's what it means? by MaineCoon · · Score: 1

    Presumptuous, yes, but also probably more accurate.

    --
    Hunt your preferred prey at Aliens vs Predator MUD. Join the war at avpmud.com port 4000
  15. incorrect deduction by prgrmr · · Score: 2, Insightful

    This means that more programmers are using Python and Ruby on the weekend for their personal projects, showing that these languages are more fun to use

    Or it could be that Python and Ruby are inherently easier to learn or use; or that they are easier to learn or use by an individual as opposed to the groups usually found in a corporate environment; or that they don't require expensive proprietary compilers or IDE's to make use of; or that they can be used on systems that are slower or have less memory than those often found in corporate environments; or any of a dozen other reasons.

    Irrespective of the actual reasons, automatically equating weekend work with fun is just poor science. And it may not be rocket science, but it is computer science and should be examined as such.

    1. Re:incorrect deduction by Flwyd · · Score: 1

      automatically equating weekend work with fun is just poor science

      People do all sorts of unfun things on the weekends: cleaning the gutters, upgrading Windows, scrambling to meet a work deadline because you picked the wrong language or environment for your project...

      --
      Ceci n'est pas une signature.
    2. Re:incorrect deduction by techvette · · Score: 1

      Last time I checked, Microsoft provided some pretty slick, very full-featured Express versions of all of the Visual Studio tools - specifically, C#. Mono is also a viable option for Linux fanboys who disregard anything that comes out of Redmond on some misguided and impractical principle. Nevertheless, poor science. I love C# and it helps me to produce very reliable code. I choose to spend my weekends with friends and family - a concern that a lot of younger, less experienced developers don't have.

    3. Re:incorrect deduction by JAlexoi · · Score: 1

      don't require expensive proprietary compilers or IDE's

      Java or C# require expensinve compilers!?!?! When did you come out of deep freeze?
      Most Good Java IDE's are free and other IDE's and VisualStudio are not that expensive.

    4. Re:incorrect deduction by prgrmr · · Score: 1

      Expensive is a relative thing. And according to Microsoft, it's $199 for an upgrade and $299 to buy, which for many represents about half the cost of their computer.

    5. Re:incorrect deduction by aaron.axvig · · Score: 1

      Visual Studio Express Editions: http://www.microsoft.com/express/

    6. Re:incorrect deduction by prgrmr · · Score: 1

      From the Terms of Use: "PERSONAL AND NON-COMMERCIAL USE LIMITATION. Unless otherwise specified, the Services are for your personal and non-commercial use. You may not modify, copy, distribute, transmit, display, perform, reproduce, publish, license, create derivative works from, transfer, or sell any information, software, products or services obtained from the Services. "

      Anything from MS that will be used to generate revenue for the user is not free, and has a non-trivial price tag on it.

    7. Re:incorrect deduction by aaron.axvig · · Score: 1

      Disclaimer: I have worked for Microsoft in the past and will be working for Microsoft in the near future. I am not implying any official interpretation of the license, I am simply pointing out what the licenses say. These are merely my own thoughts on the matter.

      The terms you quoted are the website terms. If you read a few paragraphs above what you quoted it refers to what "the Services" are:

      DESCRIPTION OF SERVICES.
      Through its network of Web properties, Microsoft provides you with access to a variety of resources, including developer tools, download areas, communication forums and product information (collectively "Services"). The Services, including any updates, enhancements, new features, and/or the addition of any new Web properties, are subject to the TOU.

      So it seems to me that this intends that you should not copy the software that you are downloading from the site. Also, if you look at the FAQ (http://www.microsoft.com/express/support/faq/) you will find this:

      7. Can I use Express Editions for commercial use?
      Yes, there are no licensing restrictions for applications built using Visual Studio Express Editions.

      I'm not sure how much more clear you can get.

  16. Sounds about right by Lemming+Mark · · Score: 2, Insightful

    My "real" work is in C, where it's very easy to get certain things done but very inconvenient to do most other things. My fun programming is in Python because it makes quickly knocking together something that works as straightforward as possible. The C stuff is fun too, actually - it's just not the kind of hacking I'd want to do in my leisure time. Spare time hacking is often done alone or collaborating with a small group of programmers; Python's structuring (or lack thereof, depending on your point of view) actually works quite well if there's just you working informally on the code. And the very rapid development and flexibility mean I can get a lot more functionality out for a given expenditure of leisure time.

    Actually, though, my default in a professional environment would probably be Python if it was applicable and I was given the choice. I'd only use C if it's really necessary for the job.

    1. Re:Sounds about right by spiffmastercow · · Score: 1

      You actually found a paying job that lets you code in C? You lucky bastard...

    2. Re:Sounds about right by Lemming+Mark · · Score: 1

      Who said anything about "paying" ;-) I'm a grad student and currently out of funding, so nobody pays me anything. :-(

      Back in the day my PhD supervisor's company used to pay me to do C coding on a consultancy basis - unfortunately I don't really have time for that these days, I want to finish writing up, then escape to the Real World of paying work. Still want to find a C coding job, though ...

      Doing C for systems-level stuff is quite nice - I think if I had to use C for ordinary programs I would enjoy it less well, I have perhaps been spoiled by the likes of Python.

    3. Re:Sounds about right by sjames · · Score: 1

      One thing I really like about Python is how easy it is to integrate it with C in those places where C does it better.

    4. Re:Sounds about right by Lemming+Mark · · Score: 1

      Indeed! I found the Python C API fairly straightforward. But I've been quite impressed with what I've seen of Pyrex or Cython. The C API to Python involves a lot of verbosity and boilerplate code; Pyrex and Cython let you use Python-like syntax but be able to call C library functions directly. Pyrex and Cython translate to C, with all of the weird boilerplate code being auto-generated. So essentially you write it like Python and call it like Python and the C stuff happens magically in the background. Sounds lovely to me!

      And, of course, the great upshot of this is that Python doesn't need to be as fast as Java or C# - the vast majority of code is not performance critical and when you *do* need to do an intensive calculation you can call into a C library (probably just using an existing one).

      Soya3D (http://home.gna.org/oomadness/en/soya3d/index.html), for instance, is a 3D engine written in Python and Pyrex, which calls into a number of C libraries to do some of the heavy lifting. Developing 3D apps in Python using Soya's API is really very nice.

      PySoy is a fork of Soya3d (http://www.pysoy.org/), I don't know what the balance of languages it now uses are.

      Anyhow, awesome stuff, sorry for rambling.

    5. Re:Sounds about right by Desert+Raven · · Score: 1

      Ironically, in my current job, I was hired as a PHP developer, but I'm spending most of my time lately writing C.

      Been having a blast too.

    6. Re:Sounds about right by sjames · · Score: 1

      Agreed on the verbosity and the several solutions to it. Usually I just copy a simple module that does nothing as a starting template when I implement a module in C, but there are cases weher something like Pyrex can be quite helpful.

      One of the interesting things about the approach of implement in Python, then translate the performance critical parts to C is how little turns out to actually need translation in most cases. I've also been surprised sometimes to find that the "prototype" in pure Python was fast enough as-is and so I'm done.

  17. Level of detail by thoughtfulbloke · · Score: 1

    Without wanting to download the data and repeat the process to check how it was carried out, if you (or the blog) is going to describe the results to the level of detail of "early monday" and similar, you really need to know the timezone of the questioner, rather than the timezone of the server.

  18. Meow meow meow by porkThreeWays · · Score: 1

    Many times at work I prototype with Python or Ruby. When working on weekend projects sometimes just proving something can be done is good enough for me. I write in Java and C++ when things need to be fast, deployable, bug tested, other people will need to work on it, etc, etc. I've noticed a lot of programmers and engineers just like to solve the problems and stop when it comes to their personal projects. It's a puzzle. However, in the commercial world you have to do all the mundane boring additionally that Java, C, C++ do well. If I'm writing facial recognition software at home, usually just getting matches for static images is good enough to prove out my algorithms. In the business world I'll probably have to do this with real time video. Python and Ruby wouldn't be able to handle that.

    --
    If an officer ever threatens to taze you, say you have a pacemaker.
    1. Re:Meow meow meow by sjames · · Score: 1

      Python and Ruby wouldn't be able to handle that.

      Once the prototype is working, convert the performance critical part to C and you're done. I've never tried it with Ruby, but it's dead simple to write a python module in C.

  19. Willie Sutton on why he robs banks. by wdhowellsr · · Score: 3, Interesting

    Willie Sutton, a famous bank robber from the early twentieth century, when asked why he robs banks said, "Because that is where the money is."

    I'm a contract .Net C# programmer and the vast majority of jobs available right now are C# and Java. Unfortunately the corporate world follows the mantra, "You can't go wrong with .Net C# or Java".

    The same was said of IBM pretty much throughout the seventies and eighties. Hopefully Ruby and Python will start to make some corporate inroads but I don't see it happening any time soon. wdhowellsr

    1. Re:Willie Sutton on why he robs banks. by rec9140 · · Score: 1

      > "You can't go wrong with .Net C# or Java".

      NO you CAN go WRONG with C#!

      Corporate Mantra here, and I get to set it is: NO MS! PERIOD! NO C#, NO .NET, NO ASP, NO IIS, NO mssql, NO ms server, NO silverblight, NO mono, NO NO NO MS!

      You can't go wrong with Java, MySQL, PHP, Linux, OpenOffice....!

      I specifically have banned and sent all the .net crap companies who come calling packing..... we don't .net...

      Your resume with any mention of .net et al will be in the file 13 bin so fast it will never have touched the desk.

      --
      1311393600 - Back to Black
    2. Re:Willie Sutton on why he robs banks. by Anonymous Coward · · Score: 0

      Wow, remind me never to apply to your company. You're obviously an asshole.

      Ever stop to think that some of these weekday .net guys are the weekend Python guys?

      Just because that's what you did in your last 9-5 doesn't mean that's what you exclusively do.

    3. Re:Willie Sutton on why he robs banks. by larry+bagina · · Score: 1

      You can't go wrong with Java, MySQL, PHP, Linux, OpenOffice....!

      February 31st much?

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    4. Re:Willie Sutton on why he robs banks. by ElMiguel · · Score: 1

      Willie Sutton, a famous bank robber from the early twentieth century, when asked why he robs banks said, "Because that is where the money is."

      FYI, according to Wikipedia, Sutton says that the quote is apocryphal.

    5. Re:Willie Sutton on why he robs banks. by rec9140 · · Score: 2, Interesting

      >Wow, remind me never to apply to your company. You're obviously an asshole.

      Thanks for the promotion!

      Plain and simple I've spent 2 years of wasted effort and $$$ on a .net/asp crapfest that was completely coded from the ground up in PHP, ECMAScript, Java on Linux using MySQL in a matter of 2 months for a whole lot less $. Is far more reliable and faster.

      Thats great, then they should abandon the crap and move to Python, C/C++, PHP, Java etc. full time....

      My experience is that any one with .net/asp/c# experience and background will just gum up the works and want to go running back to mother ms!

      I am the Head Nerd, Geek and Asshole in charge of all things IT and we don't do win on servers and won't do it on desktops either shortly.

      Those with win experience need not apply at my company. Those with strong Linux, Unix, Solaris, BSD, AIX,HP-UX, VAX/VMS, php, Java, C/C++, Apache, and MySQL skills should apply.

      Again, thanks for the promotion, I'll be watching the pay increase in the check next month!

      --
      1311393600 - Back to Black
    6. Re:Willie Sutton on why he robs banks. by wdhowellsr · · Score: 1

      There is nothing cooler than being commented on by a 117685. Live long and prosper.

      That being said, I'm pretty sure my entire life is apocryphal.

    7. Re:Willie Sutton on why he robs banks. by shutdown+-p+now · · Score: 2, Insightful

      Wonderful. In other words, you will turn down any experienced Linux guy if he just happens to say that Windows doesn't really suck that much, and admits to having used it once in the last 3 years?

      Sounds like your business is less about earning money, and more about proving some point.

      Not that anyone with .NET or generally Windows experience would be bothered at all, though - there are more than enough well-paid jobs for them anyway. But so long as it helps you feel like the Guy Sticking It To The System, enjoy it, and have fun.

    8. Re:Willie Sutton on why he robs banks. by Sinbios · · Score: 2, Insightful

      Was this post meant to illustrate the problem with C#, or just how big of a cunt you are?

      --
      Anyone can "stand up for what they believe", but it takes a very brave individual to change what they believe. - Loundry
    9. Re:Willie Sutton on why he robs banks. by teknopurge · · Score: 1

      The same was said of IBM pretty much throughout the seventies and eighties and nineties and 2000s. Hopefully Ruby and Python will start to make some corporate inroads but I don't see it happening any time soon.

      fixed that for you....

  20. Blame it on management by Anonymous Coward · · Score: 0

    This just tells be that people code in C#/Java because they HAVE to, but code in Ruby/Python because theyhttp://tech.slashdot.org/comments.pl?sid=1337483# WANT to.

    The conclusion I reach is that most blowhard managers choose C#/Java without consulting the people who actually do the coding.

  21. Python Matlab by stokessd · · Score: 4, Interesting

    I've been making inroads at the (unnamed) aerospace company where I work in getting people to use Python and the pylab and numpy libraries in place of MATLAB. Not only is it free vs. several thousand dollars, but it's faster, more flexible, and makes your teeth whiter. I've been much happier and more productive since I switched.

    We also use "R" for a lot of analysis rather than MATLAB.

    Sheldon

  22. More work on weekends != more fun by Hungus · · Score: 1

    The results: Ruby and Python saw a rise in questions asked on the weekend while C# and Java saw a dropoff in activity on the weekend. This means that more programmers are using Python and Ruby on the weekend for their personal projects, showing that these languages are more fun to use.

    It could just a plausibly mean that Ruby and Python means more overtime or weekend shifts, or that coders are doing a 2nd job for more income and it is focused in the normal work weeks downtime. Of course it is /. and I do not expect unbiased summaries by any means but sometimes they are downright silly in the conclusions drawn.

    --
    Bad Panda! No Bamboo for you! In matters of importance ACs will not be responded to. Want to say something critical,OK
  23. what?? by flynt · · Score: 1

    This means that more programmers are using Python and Ruby on the weekend for their personal projects, showing that these languages are more fun to use.

    You forgot the word "could". None of your conclusions follow from this analysis.

  24. Not exactly Sherlock Holmes by 93+Escort+Wagon · · Score: 4, Insightful

    This means that more programmers are using Python and Ruby on the weekend for their personal projects, showing that these languages are more fun to use.

    That's a breathtakingly poorly-drawn conclusion, although the thought processes involved behind some Slashdot submissions rarely surprises me anymore.

    The more obvious conclusion is that using a scripting language is easier than using a compiled language.

    A secondary conclusion I've drawn from this is more people should consider developing hobbies that differ from their day jobs. Me, I like gardening.

    --
    #DeleteChrome
    1. Re:Not exactly Sherlock Holmes by Lord+Ender · · Score: 1

      Anyone who has coded in both can tell you, from personal experience, that coding in Ruby is far more fun than coding in Java. The data may not conclusively prove the conclusion, but that doesn't make the conclusion false ;-)

      --
      A slashdotter who didn't build his own computer is like a Jedi who didn't build his own lightsaber.
  25. Bad math. by Aladrin · · Score: 1

    That chart shows the percentage of total questions, NOT the number of questions asked.

    In other words, it could be that Ruby and Python developers tend to have odd work-weeks that aren't the standard Mon-Fri boring crap. So maybe on the weekend, C++ and Java workers stop asking questions, but Ruby and Python don't.

    I hate it when people misuse statistics to 'prove' something and don't even know what their own numbers mean.

    --
    "If you make people think they're thinking, they'll love you; But if you really make them think, they'll hate you." - DM
    1. Re:Bad math. by 644bd346996 · · Score: 1

      In other words, it could be that Ruby and Python developers tend to have odd work-weeks that aren't the standard Mon-Fri boring crap.

      Do you have any evidence to suggest that is even remotely possible as an explanation? Sure, TFA isn't a rigorous analysis, but that doesn't mean that it's interpretation of the data isn't reasonable (particularly because it is a reasonable conclusion). Nor does the existence of unreasonable interpretations such as yours devalue the submitter's interpretation. If you actually RTFA, you see that he only claims that the data supports his hypothesis. He does not claim to reject any other hypothesis (despite acknowledging their existence and even soliciting them), and he does not claim that his analysis proves his hypothesis. (The summary pretty much does, but we can hardly hold that against the author of TFA without knowing what the editors did to the submission.)

  26. Can we say correlation does not imply causation? by Nohbdy001 · · Score: 1

    "This means that more programmers are using Python and Ruby on the weekend for their personal projects, showing that these languages are more fun to use."

    Aren't we jumping to conclusions here? Is there no other possible reason for a "spike" in questions like these on the weekend? Maybe Python and Ruby are used by hobbyists who code on the weekend. There could be countless reasons for an increase in the number of questions asked and "more fun to use" is pure conjecture.

    In addition the chart in the linked blog provides no useful information. The units are not labeled on the chart or addressed anywhere within the article. A previous post seems to suggest the Y axis indicates the number of questions asked per hour. If that's the case, Python saw an increase of 1/4 of a question asked on the weekend. All this using a sample size of 1 week? With such a small sample size and an insignificant deviation in the data, it is ludicrous to try to draw any conclusions from this so called "experiment."

  27. REFACTORING by TwinkieStix · · Score: 5, Insightful

    Statically typed languages allow for some very aggressive refactoring tools. Modern software engineers that work all day in a programming environment can easily move code around as if it were paint on a canvas using good modern refactoring tools. Pushing methods in, out, and across interfaces, changing the type of a method return, or it's name, and altering the design of a complex inheritance hierarchy are all done with simple keyboard shortcuts in Eclipse when programming in Java. While I've not used it, I understand that C# developers have access to some similarly complex tools.

    And, the compiler can act as a first line of defense, alerting the user of bugs before an executable is even created. All of these refactoring tools work to refactor the unit tests as well, so code written using TDD isn't harmed by all of these changes.

    This kind of stuff I just haven't been able to replicate using Dynamic languages, which is why I choose them for my small personal project, and am glad I use a statically typed language that scales to hundreds of developers and millions of lines of code at work.

    1. Re:REFACTORING by Anonymous Coward · · Score: 1, Informative

      You can easily move paint on a canvas? WTF? I think that expression means the opposite of what you think it means.

    2. Re:REFACTORING by Yvanhoe · · Score: 1

      What is the use of changing a return type in a language where there is no return type ? It took about 10 years to have a correct IDE in C++/Java (I consider C# a natural extension of these). Give python some time. The language is far more powerful, it lacks a good IDE but once it is made, I think it can show people that refactoring is useless.

      --
      The Wise adapts himself to the world. The Fool adapts the world to himself. Therefore, all progress depends on the Fool.
    3. Re:REFACTORING by Anonymous Coward · · Score: 0

      While I've not used it, I understand that C# developers have access to some similarly complex tools.

      As a "weekday" c# developer I can confirm that. Visual Studio combined with a 3rd party plugin calledResharper is a very productive working environment that's easily as powerful as eclipse, but unfortunately not as stable. Typically Resharper crashes out once or twice a month, and usually takes studio out with it.

      I just wish we didn't still use SourceSafe...

    4. Re:REFACTORING by dodobh · · Score: 1

      IME, you don't need to refactor that much with dynamically typed languages. Also, your refactoring is likelier to be at an architectural/abstraction level rather than the stuff that Java programmers do.

      This like changing the type of a method return aren't even likely to make sense in most dynamically types languages. By writing small amounts of code, and aggressively building libraries, your variable name scope is also fairly small.

      You don't use a complex inheritance hierarchy, you instead compose your final class. Good coding practice triumphs most of the benefits of a statically typed language.

      There are some things which typed languages protect you from, and those should be rare to encounter in practice if you can duck type.

      --
      I can throw myself at the ground, and miss.
    5. Re:REFACTORING by goldmaneye · · Score: 1

      Compiled languages (dynamic languages can also be statically-typed) have been (and still are) the preferred development languages for software projects. You can get a sense of this by scanning job listing websites and open-source project hosting websites; C, C++, C#, and Java predominate. Thus, there is enormous incentive to develop exceptional tools for engineers who develop software in these languages. However, all of the features you describe could be available for dynamic languages. A compiler program performs all of the same steps that an interpreter program (such as the Perl interpreter) performs except for one: it does not execute the code that it is evaluating. Both lex and parse a source code file into an expression tree, and both compile the expressions they find into computer code. One does this exclusively; one does this in addition to executing the code that it evaluates. One could write a compiler for a dynamic language (this has been done for many such languages) and execute it to see if any problems occur. One could also develop a refactoring program for dynamic languages (this has also been done; see the Ropeide for an example of a Python refactoring IDE). So to say that you have not been able to "replicate" the properties of compiled languages with dynamic languages simply says to me that such tools aren't as convenient to you as those provided for compiled languages, and I would have to agree for the reasons that I cited above: there is less of an incentive to develop such tools to the degree that exists for compiled languages.

    6. Re:REFACTORING by TwinkieStix · · Score: 1

      Sure you can - at least while the paint is still wet. And, after that, there are techniques to re-wet paint to smear it around (I think). I'm reaching. Maybe you're right. I'm not a painter, but the analogy seemed apt at the time.

  28. Re:Java and Eclipse are both Open Source by TwinkieStix · · Score: 1

    Neither Sun's Java SDK (as of version 6) nor Eclipse, the most popular development environment for Java applications, are propritary or expensive. Both are free as in speech and beer.

  29. bad summary... by jgarra23 · · Score: 2, Interesting

    "This means that more programmers are using Python and Ruby on the weekend for their personal projects, showing that these languages are more fun to use."

    this is specious reasoning, just because they're using them on the weekend doesn't mean that the languages are "more fun to use". I tend to drive my car on the weekend but it's definitely not as fun as when I'm walking on the weekdays.

    I'm not arguing with the conclusion I just think the presumption is bogus.

    1. Re:bad summary... by Anonymous Coward · · Score: 0

      It could, just as likely, be that C# and Java are being used at work and those same programmers are learning other languages (as we're wont to do) on the weekend.

  30. Re:Really? You think that's what it means? by K.+S.+Kyosuke · · Score: 1

    What's to stop me from coming to a different conclusion, such as that Python and Ruby are toy languages not meant for serious projects?

    Nothing, it you're sufficiently determined to think so.

    --
    Ezekiel 23:20
  31. I use Python during the weekdays by thaig · · Score: 2, Insightful

    ...because the non-programming parts of the job take a lot of effort and I'm not going to waste time on Java's overdesigned class system.

    Python is very easy to refactor too thanks to duck typing. You get to concentrate that much more on the problem and that much less on the mechanics of types. Java and C++ send you off on the path of creating some complex class hierarchy and trying to get it right first time. In Python you do what's good enough for your current understanding and keep refactoring as you understand better it's easy to develop as you learn. Your programs change more but end up being less warped and overcomplicated.

    I also write a little C and some fairly complicated GNU Make macros to be fair.

    I will not go back to Java or C++ because I think they are the worst of all worlds - compromises that give you part of what you want instead of opposites that you can combine.

    --
    This is all just my personal opinion.
  32. i just don't fit in by Hes+Nikke · · Score: 1

    for me, it's PHP during the week, and Objective C in the evenings and weekends...

    --
    Don't call me back. Give me a call back. Bye. So yeah. But bye our, well, but alright we are on a shirt this chill.
  33. Re:Really? You think that's what it means? by Anonymous Coward · · Score: 0

    I hope that Java and C# ASP.NET programmers take this to heart - rewriting their sites in Ruby after the first implementation went way overbudget and looked like shit is a very profitable business...

  34. Ridiculous by Anonymous Coward · · Score: 0

    Ok, the data are far from conclusive that C#/Java are less fun to use. First you have to prove that programming is fun, then you have to prove that professionals who don't program at all on the weekends don't count as much as the haxors who do program all weekend.

    This is just a ridiculous statement about the data.

  35. Old rule: Right tool for the job! by Hurricane78 · · Score: 2, Insightful

    This article is just an aspect of using the right tool for the right job. And Python and Ruby happen to be a very nice languages for quickly hacking new ideas together. Later you can work out the details and all on Java (no C# love here, and not sorry for it! :), Haskell, or even C/C++, depending on what fits best.

    --
    Any sufficiently advanced intelligence is indistinguishable from stupidity.
  36. You want fun? by Anonymous Coward · · Score: 0

    I sure wouldn't be doing Python (gack, too verbose, might well be using C or Java) or Ruby (slow, slow, slow).

    Use Lua.

    1. Re:You want fun? by ultrabot · · Score: 1

      I sure wouldn't be doing Python (gack, too verbose, might well be using C or Java) or Ruby (slow, slow, slow).

      Lua less verbose than Python? Citation/code example needed.

      --
      Save your wrists today - switch to Dvorak
  37. Java and Eclipse are free by TwinkieStix · · Score: 1

    Sun's JDK 6 and later are all Open Source as is Eclipse. Those combined are the primary environment for Java developers. They are both free as in speech and free as in beer. There isn't anything proprietary or expensive about them.

  38. No question about it. by codepunk · · Score: 1

    Java at work but when I get home it is all about something enjoyable to code with, python!

    --


    Got Code?
  39. Re:Python Matlab by Manhigh · · Score: 3, Interesting

    I've been preaching the same exact path. Python + numpy + scipy + matplotlib is pretty damn powerful. It would be preferable if matplotlib included 3D visualization, but Mayavi is very good.

    My group used to rely heavily on Excel and VBA. When Microsoft dropped VBA support on the OS X version of Office, we were left in a lurch. I'm hesitant to develop a similar dependency on MATLAB.

    C and Fortran for anything requiring speed, Python for everything else.

    --
    "Open the pod by doors, Hal" > "I'm afraid I can't do that, Dave" sudo "Open the pod bay doors, Hal" > alright
  40. Re:Java and Eclipse are both Open Source by RCanine · · Score: 1

    Sure, using Eclipse is free.

    Slamming my head against a cement wall is too.

    I'm equally likely to do either on the weekend when I'm not paid to. My weekend time is too valuable to put up with such a painful programming environment.

    Responsive UI, attention to detail, ease of use—these things help make programming comfortable and fun, and Ruby development has that in spades.

  41. Re:Python Matlab by arbiterveritas · · Score: 1

    We also use "R" for a lot of analysis rather than MATLAB.

    I was overjoyed when I didn't have to spend $85 on SPSS for my statistics class, but now that I'm graduated what the hell am I doing with R? Nothing. I found the same thing with LaTeX. Using those technologies is great and, really, I don't mind having spent the time learning, but if I were to turn in a pdf of my LaTeX compiled work, I believe my boss just might shoot me.

  42. The graph shows no such thing by somenickname · · Score: 0, Troll

    It does however show the following things:

    1) Most home users run BeOS and so are forced to program in Python and Ruby instead of C# and Java during the weekends.
    2) Python and Ruby are only used by children. On the weekdays, those children have homework to do and so ask fewer questions.
    3) Home users don't own Visual Studio and so program in Python and Ruby instead of C# on the weekends. Users that would be programming in Java are too busy trying to get Eclipse working.
    4) Python and Ruby are harder to use so during the weekends when people are working on their own projects, they ask more questions.
    5) No one writes code in Perl. Ever.

  43. Re:Java and Eclipse are both Open Source by prgrmr · · Score: 1

    There ought to have been a comma after the word "compilers" in my original post. My apologies.

  44. nice fallacy. by Anonymous Coward · · Score: 0

    albeit i agree with the statment specifically relating to Python...
    horrid logic in getting there. a freshman college student writes more carefully than this. wow.

  45. Re:Python Matlab by 644bd346996 · · Score: 1

    ... if I were to turn in a pdf of my LaTeX compiled work, I believe my boss just might shoot me.

    Why is that? If the document isn't meant to be collaboratively edited but is technical enough or complex enough that LaTeX is the best way to prepare it, then a PDF should be fine. If, on the other hand, the document is meant to be edited frequently by many people, somebody should explain to your boss that Word isn't really very good for that, either. The only common circumstance I can think of where your boss would really have cause to shoot you is if you obfuscate even the simplest document in LaTeX.

  46. Hm... by Rehnberg · · Score: 1

    This doesn't mean that those languages are more fun to use; just that they're better suited to whatever projects programmers are doing on weekends. The projects themselves may be more fun, but the languages themselves may not be.

  47. Huh? by fooslacker · · Score: 1

    Um, I don't really know how this "study" was conducted and I'm far too lazy to read the article on the weekend but if the summary is accurate this is ridiculously bad logic. Why don't we just start deciding that our data means whatever we want it to mean...oh wait we do that already...nevermind carry on.

    1. Re:Huh? by mino · · Score: 1

      Totally agree. "This means that more programmers are using Python and Ruby on the weekend for their personal projects, showing that these languages are more fun to use". Uh-huh, sure it does. What an inescapable conclusion.

      We could instead argue:

      "This means that these these languages are newer and less well-established, showing that people doing projects on the weekend are more likely to use something they're not experienced with as a learning experience."

      or more likely

      "This means that people developing in Python and Ruby are more popular in the kinds of startups that sucker people into working every weekend to get the 'next big thing' out the door with the promise of stock options, even though stock options in e-plasticthingsontheendsofshoelaces-online.net aren't actually ever going to be worth jack."

  48. There is no "asp dev" license by benjymouse · · Score: 1

    To deploy an ASP.NET solution you would need Windows Server 2008 Web edition. List price: $469.

    --
    Reading slashdot one-liner: (irm http://rss.slashdot.org/Slashdot/slashdot).rdf.item | fl title,desc*
  49. Re:Python Matlab by stokessd · · Score: 1

    BTW, my subject was supposed to be: Python greater than Matlab, but the open bracket got eaten.

    It really depends on your field how useful your school tools will be. I still use LaTeX, but not like I used to. Sadly, it's a Microsoft Office world out in business. Even the highly technical folks (5 PhD's in my group) get beaten into using word. It's just too painful not to, and why fight that battle when there are budget battles, and staffing battles, and schedule battles, and why the "F" is the lunchroom not open now battles.

    "R" is the same way. I still use MATLAB when collaborating with others, so I'm not the odd duck. I'm odd enough without working at it. I've been fortunate enough to have enough computing projects where I have control of all the analysis, and thus the world opens up for me language wise.

    Sheldon

  50. Free to choose by stuntpope · · Score: 1

    I guess I'm lucky. I do Python on weekdays, with the occasional foray into Java and rarely C#, and on evenings and weekends I do Obj-C and Haskell.

  51. Willie Sutton Redux by wdhowellsr · · Score: 2, Insightful

    I was orginally going to respond to Kodak man but am comfortable just providing this link of their amazing success. http://quote.morningstar.com/stock/s.aspx?t=EK&culture=en-US&region=USA&r=469272&byrefresh=yes

    Whoa Nellie! I've always wanted to send this reply but never found a sufficiently relevant post of which to respond.

    All corporate IT departments worldwide are basically Johns looking for the cheapest but most satisfying solution to their current needs.

    So imagine you are a CTO driving down the street and you see on your right a woman who, while attractive, also seems to provide a significant amount of additional services. However when you roll down your window you find out that in exchange for her services you have to marry her and hire her twenty children from a previous marriage in addition to signing a pre-nuptial agreement that pretty much sucks for you. (IBM)

    You continue down the road and see the most beautiful woman in the world and she is guaranteed to be free of any viruses and diseases. Unfortunately she tells you that once you use her services you will be physically incapable of even looking at another women and if you try they will sue both you and the other women in court. Plus she is even more expensive than IBM. (Apple)

    After deciding to keep looking you see a girl who looks less than a biscuit over fifteen but claims to be twenty-five. She is very enthusiastic and actually offers to do anything you want absolutely free. When you ask for specifics she excuses herself and walks over to a group of people who are feverously checking their computers for the most recent, coolest and insane method of satisfying your needs. When she returns she absolutely insures that she can do everything that you want but makes you sign an agreement that you have to share everything that you do with her with everyone else on the planet and she cannot completely guarantee that you will be satisfied. Just before you leave the attractive woman from IBM shows up and offers to throw in the fifteen year old for free as long as you still marry her, hire her children and sign the pre-nuptial agreement. (OpenSource)

    You continue down the road and see a woman so ugly that you can't tell whether she has makeup on or not. She can provide all of the services of all the other girls and cheaper than everyone but the fifteen year old. She cannot guarantee you won't get any viruses or other diseases but promises to provide as many vaccines and cures necessary to keep you from dying. She seems to have a lot of customers and very few of them have died of anything serious so you are very interested in using her services. (Microsoft)

    Before you make a final decision you pull over and roll your windows down to get some air. Suddenly you see a women that looks like nothing you have ever seen but different. She is clearly beautiful but has a strange glow of experience. You actually get out of the car and walk up to her wondering how she would compare to all the other girls. She does not speak English very well but within a very short time you realize that she has as much if not more experience that everyone else. When you ask how much she charges she provides a printout of over a thousand different services at half of what any of the other women are charging, save of course for the fifteen year old, and provides SLAs that put all of the other girls to shame. (Offshore)

    You have finally made up your mind. You are going with the offshore service and invite her to join you in you car. She apologizes and mentions that she is just the representative for the team and if you stop at the next light you can pick up the other ten girls.

    Because I'm no Ron Jeremy I will leave the end of the story, but suffice to say they separated into five groups of two and he fell asleep before they had decided on a

  52. Work vs. Play by tedgyz · · Score: 1

    The answer is simple to me. Weekday languages are for people who do it for a job. Weekend languages are dominated by people who use it for fun.

    --
    "No matter where you go, there you are." -- Buckaroo Banzai
  53. Weekends = Future by Anonymous Coward · · Score: 0

    I use Python on the weekend as it lacks a lot of the "pain in the ass" features of popular "mother hen" languages.

    I look forward to the grass roots weekend programmers sticking their pythons to the establishment.

  54. It is only about questions by achten · · Score: 1

    This only shows that more questions about Ruby and Python get asked on the week-ends. Nothing more. Nothing less.

  55. hobbyist Java programmers are better programers by Anonymous Coward · · Score: 0

    Can't this mean hobbyist Java programmers don't need to post much questions to programing forums and find can find solutions for their problems themself?

  56. I Have A Different Explanation by Dean+Edmonds · · Score: 1

    Python is free while Microsoft's C# compiler (which is the only one most C# programmers will ever have heard of) costs money. At work people use C# because the company has paid for the compiler, but at home they use Python rather than shell out for C#.

    --

    -deane

    1. Re:I Have A Different Explanation by codepunk · · Score: 1

      Great attempt, however you are forgetting about Sharp Develop, Mono etc.

      No I use python at home because it is both enjoyable and way more productive.

      --


      Got Code?
    2. Re:I Have A Different Explanation by Sinbios · · Score: 1

      The C# compiler comes with the .Net SDK, which is free. Both Visual Studio C# Express and Visual Studio Professional use the SDK compiler. Can I get a hit of whatever you're smoking?

      --
      Anyone can "stand up for what they believe", but it takes a very brave individual to change what they believe. - Loundry
    3. Re:I Have A Different Explanation by DragonWriter · · Score: 1

      Python is free while Microsoft's C# compiler (which is the only one most C# programmers will ever have heard of) costs money.

      The compiler is free-as-in-beer, actually.

      The non-stripped-down version of the IDE is not, however.

  57. Java 7 days a week. by Civil_Disobedient · · Score: 1

    Verbosity? It's called code completion, folks. Which you can do that with any good IDE (Eclipse, Netbeans, and my personal fave, IntelliJ).

    Need to change code around? Java refactoring is a cinch!

    Don't want to reinvent the wheel? Millions of open source libraries out there, and 'cause it's Java, it's actually easy to read and understand.

    And any good language that accesses a database had better have a damned good ORM. That means Java and C#, and I'm allergic to Microsoft.

    So, in the immortal words of Eddie Murphy...
    My code wants to
    Java all the time
    Java all the time
    Java all the time...

    1. Re:Java 7 days a week. by DragonWriter · · Score: 1

      Verbosity? It's called code completion, folks. Which you can do that with any good IDE (Eclipse, Netbeans, and my personal fave, IntelliJ).

      If a "good IDE" can automatically complete the code from less-than-complete code, it means that the code doesn't need to be so verbose in the first place, and the language implementation (interpreter or compiler) could instead be taking a more concise representation.

      And then you wouldn't need the slow, heavyweight IDE to do development.

      Need to change code around? Java refactoring is a cinch!

      Compared to what? Certainly not compared to Ruby or Python.

      Don't want to reinvent the wheel? Millions of open source libraries out there, and 'cause it's Java, it's actually easy to read and understand.

      Again, Java is not "easy to read and understand" compared to Ruby and Python, though it may be compared to C++. But, as far as using the existing libraries on the Java platform, Ruby and Python implementations for the Java platform allow you leverage them painlessly.

      And any good language that accesses a database had better have a damned good ORM. That means Java and C#, and I'm allergic to Microsoft.

      The utility and desirability of ORMs is infinitely debatable, but there are high-quality ORMs for Ruby and Python (and probably plenty of other languages), not just Java and C#.

    2. Re:Java 7 days a week. by Civil_Disobedient · · Score: 1

      If a "good IDE" can automatically complete the code from less-than-complete code, it means that the code doesn't need to be so verbose in the first place

      Huh? Nobody said automatic. That was you. I said code completion. As in, macros. Hotkeys. Suggesting that the compiler should magically do this for you is either woefully optimistic or painfully stupid.

      And then you wouldn't need the slow, heavyweight IDE to do development.

      Right. And who needs digital video editing software when you can just put all your stills together by hand?

      Certainly not compared to Ruby or Python.

      Sorry, you are completely wrong. There is no debate here: it's a simple fact that statically typed languages are easier to refactor.

      But, as far as using the existing libraries on the Java platform, Ruby and Python implementations for the Java platform allow you leverage them painlessly.

      Sure they do.

      but there are high-quality ORMs for Ruby and Python (and probably plenty of other languages)

      OK, so you don't know what you're talking about. That's fine, I just wish you could have come out and said that from the start.

    3. Re:Java 7 days a week. by DragonWriter · · Score: 1

      Huh? Nobody said automatic. That was you. I said code completion. As in, macros. Hotkeys.

      Macros and hotkeys produce more code automatically from less input. Anything they could do that saves work could instead be done by having more concise language constructs.

      but there are high-quality ORMs for Ruby and Python (and probably plenty of other languages)

      OK, so you don't know what you're talking about.

      Or you don't. Or quality is subjective, and we disagree about what is high quality. Tell me, what Python and Ruby ORMs have you evaluated to support your claim that none exist which are high quality, and under what standards do you dismiss them as not being high-quality?

    4. Re:Java 7 days a week. by Civil_Disobedient · · Score: 1

      Macros and hotkeys produce more code automatically from less input. Anything they could do that saves work could instead be done by having more concise language constructs.

      The thing is that the IDE has no idea what your intentions are. Take the JavaBean getter/setter idiom. Most of the time, you have a private member and a public getter and setter. Most of the time. But not all the time. Throwing out that aspect of the language because it fits with 75% (arbitrary number) of your usage means less flexibility and power for the other 25%.

      Tell me, what Python and Ruby ORMs have you evaluated to support your claim that none exist which are high quality, and under what standards do you dismiss them as not being high-quality?

      I wasn't being very civil last post, so my apologies for that. There are certainly lots of uses for the ActiveRecord pattern (for example), but those tend to be fairly small databases or trivial schema. When you have to support hundreds of tables, some with millions of rows, it just doesn't scale--neither by performance or development metrics. That's not to say it won't get better over time, but right now for enterprise application development the offerings simply aren't there.

    5. Re:Java 7 days a week. by DragonWriter · · Score: 1

      The thing is that the IDE has no idea what your intentions are. Take the JavaBean getter/setter idiom. Most of the time, you have a private member and a public getter and setter. Most of the time. But not all the time. Throwing out that aspect of the language because it fits with 75% (arbitrary number) of your usage means less flexibility and power for the other 25%.

      Sure, but you don't have to throw out the flexibility to get much more concise expression, which is why its easy to tool it to be much quicker to enter than the verbose syntax to define the construct in Java. (And, for that matter, why there are languages that provide the same flexibility in this regard but offer more concise syntax than Java.)

      There are certainly lots of uses for the ActiveRecord pattern (for example), but those tend to be fairly small databases or trivial schema.

      Insofar as that's true of a direct implementation of the Active Record pattern doing a naive mapping between tables and classes, its not true of most real frameworks that implement the pattern as a starting point (even including the ActiveRecord framework that comes with Rails.) Now, ActiveRecord (the Ruby ORM framework) has all kinds of hassles when dealing with databases that don't fit its rather opinionated design, and some performance quirks that aren't limiting when its used with Rails (because Rails as a whole is stuck with some of the same quirks) but are limiting for more general use, but ActiveRecord isn't the only Ruby ORM, just the most commonly encountered because if its relationship with Rails. Sequel and DataMapper are each, arguably, better general ORMs than ActiveRecord.

      That's not to say it won't get better over time, but right now for enterprise application development the offerings simply aren't there.

      There may be problems with using Ruby or Python for enterprise development, but I don't see a lot of technical reasons that the quality of ORM available would be among them.

  58. Not all projects should be done in C# or Java by sgtrock · · Score: 2, Insightful

    So, Python is just a toy language, eh? One unsuited to use for any heavy lifting or by large programming teams? Funny, someone should tell Google so they can replace all of their code. Same goes for Pixar, too, I suppose.

    Look, you're making a classic mistake in assuming that your experience is the sum total of all programming tasks. The truth is that we have lots of programming languages because no single language or class of language can do all things equally well. There's a time and a place for a strongly typed, dynamic language. You simply haven't been exposed to the kinds of jobs where that's common, that's all.

    1. Re:Not all projects should be done in C# or Java by Jack9 · · Score: 1

      The truth is that we have lots of programming languages because no single language or class of language can do all things equally well.

      That's something you've heard or read. There is no evidence that this is true. People's ability to end an argument with a thought experiment, does not demonstrate a truth.

      --

      Often wrong but never in doubt.
      I am Jack9.
      Everyone knows me.
    2. Re:Not all projects should be done in C# or Java by Anonymous Coward · · Score: 0

      Al Google's code and all Pixar's code is done in Python???

      Don't think so, actually this response shows how Python zealots try typically to make their point...

    3. Re:Not all projects should be done in C# or Java by sgtrock · · Score: 1

      Yeah, I'm sure that I want my programmers to waste their time writing SQL stored procedures in C. Or a transactional system in assembler. Or a graphic driver in Perl. Or format a book using just Java.

      See what I mean? :)

    4. Re:Not all projects should be done in C# or Java by Jack9 · · Score: 1

      Those are examples, but do not justify the existence of all languages. As an example, C can produce an API that is identical to SQL (that's actually the common case).

      --

      Often wrong but never in doubt.
      I am Jack9.
      Everyone knows me.
    5. Re:Not all projects should be done in C# or Java by Anonymous Coward · · Score: 0

      is there a method bePolite() in any of those vast programminng tasks you did?

    6. Re:Not all projects should be done in C# or Java by StarfishOne · · Score: 1

      Nice addition:

      The New York Stock Exchange (NYSE) has been using Python since 1998. This email from Thanos Vassilakis, then a programmer for NYSE, highlights the reliability, manageability, and ease of use enjoyed by Python programmers (not to mention family life!):

          On the New York Stock Exchange we use three languages in production to deliver serious trading services to the Specialists: c, C++, Python.

          Perl, tcl/tk, Java are used but for scripting, tools, and minor services where performance and memory foot print are not an issue. Yes, used correctly Python meets our performance, security and reliability requirements.

          We have had Java projects and launched Java services, they have all failed. We have many in the pipeline (thanks Big Blue) but NYSE's only serious internet based service is written in Python, and was launched in 1998. It is still up in it's sixth version, with no down time! The fifth version was rewritten in Java, 6 months overdue, failed, and replaced by python ( which took two weeks).

          Here at SIAC and NYSE Python is recognized by management to give results that other languages just can't achieve.

          For performance we have extended Python with our own specialized c objects, and we have used swig extensively to integrate to our legacy code, and middleware.

          Thanks Python, you let me get home to my kids.

          thanos

      NYSE has run Python since 1998, when it rolled out its first internet application. It has experienced no downtime and has enjoyed Python's significant backward-compatability character ever since.

      http://python.about.com/b/2006/11/17/the-new-york-stock-exchange-nyse-and-python.htm

    7. Re:Not all projects should be done in C# or Java by sgtrock · · Score: 1

      I never said that _all_ of Google or Pixar's code was Python. I only highlighted them as two companies that are successfully managing large Python codebases as part of their production application base. (See the NYSE post as a good example of the kind of mixed language environment that I was referring to.)

    8. Re:Not all projects should be done in C# or Java by badkarmadayaccount · · Score: 1

      Java's object facilities, along with XML [un]marshaling would make W3C standards look like toys.
      Assembler is not a language meant for human use. And with a machine level access library and proper optimizing compiler, Perl would not be a wrong choice. Drivers are dipshit simple (from a CS perspective) and procedural, though they handle slightly more complicated structures, so language features don't matter much. Though an object system at that level would be very useful. Citation: I/O Kit

      --
      I know tobacco is bad for you, so I smoke weed with crack.
  59. The conclusion is completely wrong by br00tus · · Score: 1

    Java is used for some of the most heavyweight web applications. My first experience with this was when I set up a Broadvision Java application server in 1997 which acted as an e-commerce portal, and I've been working with Java application servers since then, some on massively complex and trafficked sites. So we know Java application servers can handle the biggest and most complex of web projects, or at least, aside from C# (also mentioned) not much else comes close to being able to. So what about the small scale? Well, for someone like me who has a $10-20 a month web hosting account with one of the major vendors for such things like Bluehost, Dreamhost etc., they do not support any Java application servers, not even free and well-tested ones like Tomcat. If I could throw a Tomcat application server up on my Dreamhost account I'd do it in a second. Can you use Ruby on Rails for Dreamhost or Bluehost? Yes. Python via Django on Dreamhost? Yes. Python/Django on Bluehost? It's a convoluted process I've heard, but yes. Due to this, my sites right now are mostly PHP-based, and sometimes PERL-based. I personally would have more fun doing stuff in Java than PHP, but they don't offer Java Tomcat so I wind up doing stuff in PERL and PHP. I use them instead of Java because of that limitation, not because one is more fun than another.

    1. Re:The conclusion is completely wrong by Greenisus · · Score: 1

      I'm more of a fan of languages like Ruby than I am Java, but if you really want to run Tomcat, it might not be a bad idea to move to a VPS like Slicehost and install it yourself. You'll get much better performance than any shared host too.

  60. Java is duck-typed and dynamic too by Latent+Heat · · Score: 1
    Of course Java is a dynamic duck-typed language as well. You just have to use the Reflection API.

    As a matter of fact, I don't bother with all of those inner classes, anonymous or otherwise, to attach event handlers to menus, buttons, and mouse actions. I use java.beans.EventHandler to establish these connections. EventHandler uses Reflection under the hood to pull this off. So you can get duck typing and dynamic dispatch without using the ugly Reflection API syntax.

    1. Re:Java is duck-typed and dynamic too by iggymanz · · Score: 1

      how's that ol' reflection work on nulls, booleans and strings.

      java is ducked typed like a stomped-on duck.

    2. Re:Java is duck-typed and dynamic too by Abcd1234 · · Score: 1

      Of course Java is a dynamic duck-typed language as well. You just have to use the Reflection API.

      Okay, I'm sorry, this is just getting fucking out of hand. If Java is "duck-typed", then the phrase "duck-typed" has absolutely no meaning whatsoever.

      Now, if Wikipedia is to be believed, "duck-typing" means writing code such that you don't care about types. You invoke methods on objects, and they either work or they don't because, at run time, everything is worked out for you (because duck-typed languages are inevitably dynamically typed and dispatched). But the key is *you don't care about types*. *Not* that you can use a convoluted reflection system to carefully wheedle out the types at run-time and get things to work by hand.

      So no, I'm sorry, Java is *not* duck-typed. Moreover, that's *not* a bad thing. Dynamic typing is awfully nice in some scenarios, but it's no panacea. To see the other side of the coin, see Haskell, where types are everywhere, but thanks to type inference, you don't have to deal with them directly unless you want to. But, again, note, this is *not* duck-typing... if you try to invoke function X with argument A, and no definition exists for X(A), it'll tell you, and the compile will fail, while in a dynamically typed and dispatched language, you won't find out until the call fails are runtime.

      And, as an aside, the fact that you can do away with inner classes isn't too terribly impressive given how absolutely useless they are. First class functions and lambdas, OTOH, now *those* are handy... pity Java *still* doesn't have them.

  61. Naming is important too by SuperKendall · · Score: 1

    Java tools are useful in the same way as a wooden stump is useful. It's better than nothing, but I'd rather keep my actual leg.

    That's only half true, for some aspects of the language tools and frameworks improve things that are made syntactically easier in other languages. As this quote indicates:

    "There are only two hard problems in Computer Science: cache invalidation and naming things."

    -Phil Karlton

    Naming things is very important... and so great refactoring tools are also useful. More dynamic programming languages make some algorithmic tasks simpler, but refactoring tools makes naming the things you are working with simpler and there is great value in that too. Especially when working with many other people on a project.

    That's what he really speaks of when he talks about a language plus a great IDE... from his point of view, your inability to use really advanced refactoring tools is every bit of much a wooden leg. You just have one on the other stump.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Naming is important too by arevos · · Score: 1

      That's what he really speaks of when he talks about a language plus a great IDE... from his point of view, your inability to use really advanced refactoring tools is every bit of much a wooden leg. You just have one on the other stump.

      I've programmed in Java with a number of IDEs, and yes, the refactoring tools are extremely useful. But I also found that I didn't miss them much when I programmed in dynamic languages. It's my opinion that the very attributes that allow Java to be easily refactor, i.e. its restrictive and rigid syntax, are the very attributes that ensure you need to do a lot of refactoring work in the first place.

      Secondly, even if we accept that being to easily rename things is an equally useful trait in any language, then I'm still not convinced that good refactoring tools are a cost that is worth Java's terrible syntax. At best, refactoring tools make hard things easier, but Java's syntax makes some solutions infeasible.

      In other words, you're saying "In order to make naming easier, I'm going to make these classes of solution infeasible." In my view, this ain't a good trade-off.

  62. C# & Java generally peter out from sheer volum by liquiddark · · Score: 1

    If you use one of these two languages you'll very quickly find that when a question occurs to you at this point in time you can usually go to StackOverflow, begin typing your question, and find an answer without completing the submission process. I would like to suggest that this is because these are two of the most widely-used languages in the world, but I wouldn't want to be accused of being a corporate whore again. Weekend or no, very few unanswered questions exist about a widely used language after a while.

  63. yup, pick the tool by NotQuiteReal · · Score: 1

    I generally do smaller projects (say, 4-5 man month projects, done in 90 periods... so I do a lot of the coding, bringing in db or web guys as needed.)

    I have the luxury of doing things any way I want, but I don't have the luxury of doing anything I want.

    So, if it is something that needs to be on a Windows platform, I pick C#. This is because I can get the most done the fastest. Ok, so it won't run on a non-windows platform well. Meh.

    At the other extreme, hand-coded assembly language was the only choice. When you have perform FFTs as fast as possible, to the point where you have to prevent a cache flush, and need to keep the multi-stage floating point pipeline full... Ok, so it won't run on another CPU well, if at all. Meh.

    Aside from the assembly coding, I tend to find that my personal projects are usually most productively done in the same high-level language that I am using professionally at the moment.

    --
    This issue is a bit more complicated than you think.
  64. My week and hobby languages : by chthon · · Score: 1

    Perl at work, Common Lisp for hobby projects.

    And I can, and do, work with vi and Emacs!

  65. C# and Java for pros, Python and Ruby for amateurs by chrisdotwood · · Score: 1

    The results: Ruby and Python saw a rise in questions asked on the weekend while C# and Java saw a dropoff in activity on the weekend. This means that more programmers are using Python and Ruby on the weekend for their personal projects, showing that these languages are more fun to use.

    Maybe, or it shows that C# and Java are languages used by professionals in the real world whereas Python and Ruby are only suitable for small amateur projects.

  66. Correlation is not causation by RichiH · · Score: 1

    Some "Gian" answered that in the _first_ comment [1] to said blog post so I will just quote him/her in full:

    (I already posted this on the thread on HackerNews, but I decided to add it here as well for the purposes of discussion):

    This seems to assume a fixed number of programmers, all of whom program during the week and at the weekend.

    My guess would be that it's much more likely to be two largely disjoint sets:

    Professional programmers at work during the week, and amateur programmers who have other day jobs (e.g. school or non-programming jobs) who are more likely to be programming during the weekends.

    If we assume that this is the case, then the data simply suggests that professional programmers are more likely to use C# and Java, whereas hobbyist/amateur programmers are more likely to use Python or Ruby.

    This is just a hypothesis, but it is equally well supported by the data as the article's hypothesis:

    "programmers choose to use languages like Python and Ruby for their personal projects, despite their weaknesses, because these languages are more fun to program in"

    Which assumes that all professional programmers are also hobbyist programmers in the weekends, and that the numbers of amateur programmers are not significant enough to make an impact on search statistics.

    [1] http://danlorenc.blogspot.com/2009/08/stackoverflow-experiment-results.html?showComment=1250369874824#c5965860415709029932

  67. Re:C# and Java for pros, Python and Ruby for amate by thaig · · Score: 1

    Why is only work "real"? I use OSS every day that's vital for my job and that's done by people in their spare time. BTW, I use Python at work and not Java or C# because they would be rubbish for what I need to do.

    --
    This is all just my personal opinion.
  68. Re:Python Matlab by chthonicdaemon · · Score: 1

    In my experience trying to do the same at our university, Matlab's performance is a fair bit better than Python's, except on the stuff that's handled by LAPACK, when the performance is about the same. Newer versions of Matlab also have pretty good support for multicore/parallel programming that's easy to set up. I've never heard of anyone experiencing a speedup when moving to Python, although I agree it's a really nice language.

    As an aside, when you really want some good performance bits, f2py is really good and newer Fortran is almost exactly like Matlab, just compiled with really efficient compilers (this is how I solve my performance problems in Python).

    --
    Languages aren't inherently fast -- implementations are efficient
  69. what sanctimonious crap by acroyear · · Score: 2, Interesting

    It is as it always has been: the right tool for the job.

    The kinds of at home projects someone does are the kind for which Ruby and Python (and PHP) are optimized for. Why? Because they themselves evolved to the directions of the userbase who were already doing those kinds of projects. They have requirements, these languages meet them.

    These languages do NOT quite meet the requirements of the projects that happen in the professional workplace, just like a $100 power-tool from Home Depot won't quite be the right thing involved when building a 10 story office. Integration with existing tools and already written software (a BIG, HUGE, DON'T EVER TRY TO REWRITE THE WORLD FROM SCRATCH AGAIN requirement), a history of professional support, perhaps a corporate name to back it up (and while /.'ers don't give Microsoft any respect, the rest of the world does, so deal). These are the requirements for professional software development.

    "fun" never enters into it.

    Ease of use, yes, but that ease of use is driven by what you intend to do with it. If you use the tool for the types of tasks for which it was designed, it is easy to use. If I try to get all transactional and cross-app integrated with PHP, it's a pain, unless I use a higher-level webservice abstraction. If I try to write a simple tiny blog-like webpage in Java, it's far too stressful because there are so many pieces involved that are necessary for more "mission-critical" work that I have to implement even though I don't care.

    Right tool for the right job.

    As it always has been.

    --
    "But remember, most lynch mobs aren't this nice." (H.Simpson)
    -- Joe
    1. Re:what sanctimonious crap by Just+Some+Guy · · Score: 1

      These languages do NOT quite meet the requirements of the projects that happen in the professional workplace,

      That's cute, son. My Python app processed about a billion dollars in financial data last year. Maybe that's small by Wall Street standards, but I think it qualifies as "professional". Heck, maybe even "enterprise"!

      --
      Dewey, what part of this looks like authorities should be involved?
    2. Re:what sanctimonious crap by bbtom · · Score: 1

      A huge chunk of Yahoo! runs on PHP and a huge chunk of Google runs on Python.

      --
      catch (HumourFailureException e) { e.user.send("You, sir, are a humourless idiot."); }
    3. Re:what sanctimonious crap by acroyear · · Score: 1

      and a huge chunk of both of those systems run on other languages as well. they both evolved from assembling lots of tools, all written in their own languages. some were converted to a more standard library/language upon acquisition, some not. and *for the most part* yahoo and google are *just* formatting data into a web page, or more often now formatting data into web services and letting their huge javascript libraries do the rendering. Real MVC

      my point wasn't that "big corps don't use P-languages" my point was that corporations use what they believe is the right tool for the job.

      my point was that "the P languages are weekend hobby languages" is likely true not because "they're more fun" but because they fit the type of work that hobbyists do.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
  70. Is that the same aerospace company by Amitz+Sekali · · Score: 1

    Iwho has an unfilled python opening for more than 1 year?

    --
    If you delay pleasure infinitely, the pleasure will be infinite. (YM)
  71. An alternative reading is.... by Anonymous Coward · · Score: 0

    ...that Java programmers have actual jobs, unlike Ruby programmers.

  72. Weekend vs Work and Java by mwildam · · Score: 1

    It might be that Python and Ruby are less used in business because of different strengths of those languages - and maybe in business companies don't want to adopt yet another programming language.

    Apart from that I did intensive evaluation about 1-2 years ago and I found Java being the best overall option for most common development. Sure, such a conclusion may depend on the branch you are working - I am an allround developer and not a driver programmer or pure web developer.

    And as I wrote in other places also - I think just looking at the core language features is barely enough when thinking of what language to use for your next project. There are 3rd party libraries, IDE (features), ntegration options, other development tools and so on that should be taken into consideration also.

    Furthermore I think companies will not switch to different languages just because it seems to be more fun. The requirements for a home or private (mostly smaller) project are different than for business projects. Nowadays in IT you get so easily a mess of "legacy systems" to maintain that I guess companies don't like the adoption of many different programming languages also. - Talking of Python and Ruby I think there will be a rising of Scala then also soon. This somehow leads me to http://www.ddj.com/architect/184413224 and I recall a lot of times when me, friends or others thought of another programming languages being THE new language that can be used to solve even the hunger in the third world.

    It seems that more people give Python and Ruby a try which is interesting to know but does not necessarily means that those languages are the languages of the future.

  73. Correlation... Causation?? by nitroscen · · Score: 1

    This means that more programmers are using Python and Ruby on the weekend for their personal projects, showing that these languages are more fun to use.

    This isn't necessarily true. How many of you choose your language based on how fun it is? I choose mine on practicality. I'm working and I just got out of college. All of my weekend projects are written in languages I do not know, as I'm trying to get a little bit of experience with them all. Since I haven't encountered Python or Ruby at work, they would be good choices. All of my work projects are in older languages- and I don't really have time to program my weekend projects on the weekdays.

  74. "more fun" is spurious conclusion by Anonymous Coward · · Score: 0

    Showing that these languages are used more frequently on weekends doesn't indicate fun. Its a reasonable speculation, but nothing conclusive.

    BTW, I hope time zones were taken into account. For example, if the weekend questions were posted from a timezone in which the weekend had not begun. In other words, make sure that no geographic/regional preference skewed that data.

  75. Or.... by Crazen · · Score: 1

    It's quite a stretch to make such an assumption, and I'm disappointed that it's /. front page worthy. As a professional programmer, my weekend computing time is usually spent catching up on articles. I try to avoid thinking about work as much as possible, unless I get an "aha" moment, or a major issue comes up (which thankfully is rare). I would imagine other possible explanations of this behavior to be: 1) People who are not professional programmers (e.g. sysadmins, tinkerers, etc...) prefer the languages that forgo things like compile steps, strict typing, etc... 2) People who are rapid prototyping ideas use scripting languages 3) People who are trying to get "home server open source projects" like photo apps, forums, etc... running or enhanced are asking the questions. Not to say the scripting languages are bad, they definitely have a place, but IMO the maintainability and quality of languages like Java are far more important when your risking more than personal time.

  76. Re:Really? You think that's what it means? by GWBasic · · Score: 1

    What's to stop me from coming to a different conclusion, such as that Python and Ruby are toy languages not meant for serious projects? It would be just as presumptuous, wouldn't it?

    You can also conclude that Python and Ruby are great for rapid prototyping.

  77. Re:Really? You think that's what it means? by GWBasic · · Score: 1

    I hope that Java and C# ASP.NET programmers take this to heart - rewriting their sites in Ruby after the first implementation went way overbudget and looked like shit is a very profitable business...

    C# and Java are great languages, as long as they aren't used for generating web sites. I love C#, but I took a few looks at ASP and ran as fast as I could. All it does is take a simple thing (HTTP) and make it very complicated.

    IMO, once you understand how the web works, ASP just gets in the way.