Oh, and cool its made in python and not some enterprise java or .NET :)
Oh, and cool its made in python and not some enterprise java or .NET :)
I'm starting to get sick of this "ruby/python/nodejs = cool, java/.net = slow bloated enterprise crap for men with suits" attitude that keeps reappearing here on HN.
Whether your work environment is cool, whether your code is decent and snappy, all that has very little to do with your programming language choice. Admittedly, if you compare modern Ruby to VB6 you might conclude that VB sucks, but that's an unfair comparison since the technologies are a decade apart. It's like saying Python rocks because you hate COBOL.
You can work at a scrappy startup and code lean C#, and you can work at a bureaucratic departmentalized hell and code AbstractProxyProviderFactoryProviders in Python.
And, yes, you can even work at a bureaucratic departmentalized hell and code decent Python. Or Java. Or C#. Or Ruby.
Apart from that, I agree with you.
Language pissing contests are dumb. Languages are tools, each serves a specific job.
Actually though, it's rather difficult to run into Mono incompleteness when making a web app these days. Mono's mostly lacking Windows-specific stuff like WPF (UI-framework). Used to lack Entity Framework but that's solved since MS open sourced that. You can take an existing ASP.NET app and there's a very high chance you can just build it with xbuild and host it with Mono's xsp server.
More generally, I do see your point but I believe it's a little outdated; the time that Java apps just had to be built on 200k lines of XML is long gone as well.
It's obviously a matter of taste, but I find it difficult to accept that well-written Python would be easier to read than well-written C#. C# is more verbose in places and less verbose in others. Writing crap code is about as easy in both.
Don't get me wrong, C# is relatively explicit and regular, which does wonders for its readability especially in large projects with many collaborators. But brevity is not one of its strong suits, nor should it be.
I think that's the only place, though.
As noted, Oracle uses the term "enterprise", which I take to imply a corporate approach to language implementation the coincides with service/support agreements and other business models.
For what it is worth, the JVM is second to none for interpreted languages in my book. At the same time, I don't use it and if I ever find myself going back, it will be for Scala. I don't much care for Oracle's brand of innovation (I don't think it is sustainable).
Tell me something, from your perspective: Why should an aspiring technologist learn Java over Python?
EDIT: new Java, for example, looks about like this [1] and that's not all that complicated, even though I would like it more with webflow (technology for describing webpage in term of flows -- each flow is basically FSM with method calls specified on transitions and FMS-wide persistent storage).
[1]: https://github.com/heroku/devcenter-spring-mvc-hibernate
I've never seem a major schism in Java or the JVM on the scale of the split between Python 2.x and 3.x. All my installs require (_at least_) two versions of Python as a result. In fact it was only just recently that Debian/Ubuntu consolidated from shipping with 3 versions of Python to 2.
If you're talking about install base then I guess you're limiting this to client apps - because none of the issues you mention are an issue for server environments... Unless you are running a dozen Java pieces of tech that all require a specific version? In the last 10-15 years I've only ever seen the need for two Java versions once. And that was on AIX. On POWER chips. And it was a vendor, not a technical requirement.
People port languages to JVM for its ubiquity and massive amounts of library code, but I assure you none does it for some technical advantage.
GC has arguably been the best thing Java brought along into mainstream, but it has been a solved problem for a while. The strategy that Java GC adopts, while a natural fit for Java and a host of other procedural languages, is suboptimal for many others.
And for long running processes (where compilation time does not dominate), JIT is of course theoretically superior to AOT compilation.
There are plenty of models for stack optimization. Even if you don't go down the purist track, plenty of approaches use register-allocation and optimize from there. Feels like an outdated CISC vs RISC argument.
People also use the JVM because of it's Memory Model and robust threading.
http://www.onlineaspect.com/2010/01/19/openness-and-security...
I would think in general that it does, but you also would have to be certain that the software actually running on the official voting system is the same as the "open source" version. I think that's a tough one.