C# and Java Weekday Languages, Python and Ruby For Weekends? 389
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."
Grails and Groovy (Score:4, Interesting)
Bad Conclusion (Score:5, 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.
Re:What about Perl? (Score:5, 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.
Willie Sutton on why he robs banks. (Score:4, Interesting)
I'm a contract
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
Re:I think you're doing it wrong.. (Score:3, 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.
Python Matlab (Score:5, 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
Re:"Fun" is not a criteria in my book (Score:2, 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.
Re:I think you're doing it wrong.. (Score:4, Interesting)
It always seemed to me that both approaches have their place, and I would also argue that both are sometimes used inappropriately.
bad summary... (Score:3, 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.
Re:Python Matlab (Score:4, 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.
Re:Grails and Groovy (Score:2, Interesting)
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.
Re:Willie Sutton on why he robs banks. (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!
Re:WWTBD? (Score:3, 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.
Re:I think you're doing it wrong.. (Score:4, 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.
what sanctimonious crap (Score:3, 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.
Re:What about Perl? (Score:3, Interesting)