In what kind of mind distortion field are you living?
I used to write code in Java and Jython for a big science project. Now I switched (avoid the word advanced) to a new big science project, where we use c, c++ and python.
This is a nightmare compared to everything we did before. I always liked to work in Java, but I never realized how powerful it is compared to the other stuff.
We as a team are close to switching languages and starting from scratch, its so bad.
A lot of people (myself included) see Scala as being one step forward, two steps back. Some good features, and then a whole bunch of poorly thought out, wankerish features that can only serve to screw up your code base if some developer gets bored and makes the mistake of using them.
> and then a whole bunch of poorly thought out, wankerish features that can only serve to screw up your code base if some developer gets bored and makes the mistake of using them.
Sure, the crazy symbolic operator overloading and a bunch of libraries that encourage you do do things like a :=: b and have it mean something.
Also, there's something about the net sum of the type system where it feels like there are a lot of concepts at work and it's easy to get lots with what type something is, exactly, especially if you didn't write the code and you're just skimming it.
Of those 3 languages, I would blame C++ for laying out a minefield.
Considered FreePascal or Go, maybe? Pascal doesn't have a garbage collecter, but it's not "pointers everywhere" like C, and string values are reference counted. Having done a lot of C, I really miss function pointers when working in Java. (Pascal calls them procedural types instead of func ptrs)
What field are you in, and what are your biggest pain points with that stack? (I have a long list of issues in "small" science, curious how they compare)
I am in astrophysics (lots of telescope and satellite data).
Our main point is that Java provides a complete environment: no shared libraries, no compilation problems when moving to other machines.
The next is productivity. In java, I could focus on the problem. In c/c++ it takes only minutes, until I have to think about why my code doesn't compile. That can easily take me away for hours, sometimes longer.
The most significant downside of java is for me memory consumption. It needs a lot of care and experience to get that right.
Python on the other hand is nice. Although it does not integrate with c++ as nicely as jython integrates with java.
Thanks for the perspective. Sounds pretty familiar. Aside from missing math syntax, Python by itself/packaged can be great -- until it's slow, which leads to the real problem for me, that compiling mixed Python/C[++] and dependent libraries is just absolutely horrendous on Windows. Unfortunately, Windows is where my users are.
This is a nightmare compared to everything we did before. I always liked to work in Java, but I never realized how powerful it is compared to the other stuff. We as a team are close to switching languages and starting from scratch, its so bad.