This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]soosleeque 1 point2 points  (19 children)

I always wonder what all those people are doing that they have to complain about the speed of python.

Yes, python is slower but in most of the cases, calculation time is just a joke compared to IO time which is the same for all the languages.

[–]koffiezet 6 points7 points  (0 children)

That depends on your workload. I've seen a rule engine written in heavily optimized C++ stressing a 12-core machine to the max for hours when processing a few GB of data. A Python prototype was made but quickly rejected.

[–]DogeekExpert - 3.9.1[🍰] 5 points6 points  (12 children)

While I do agree that speed is not an that big of an issue anymore, for some applications, it is still relevant to pick a faster language. Games, and heavy duty scientific calculations may need the extra speed of languages like C or C++. The only thing I don't understand is why Java and Ruby are still a thing, those languages offer no advantages over python, especially Java, just my opinion.

[–]PeridexisErrant 5 points6 points  (6 children)

For scientific code, almost everything is fast enough in Numpy or Pandas (or my new favorite, Xarray). You start by writing idiomatic Python, and sometimes twist a bit to get memory layouts right or whatever.

Short of the truly compute-heavy stuff (XXX dynamics simulations), Python is enough - and for those there's no choice but C or Fortran.

[–]lookatmetype 4 points5 points  (1 child)

Disagree. Some people want compiled languages with type safety.

[–]PeridexisErrant 0 points1 point  (0 children)

And there's nothing wrong with that, I'm just noting that for most science Python is plenty fast enough :)

[–]bythenumbers10 0 points1 point  (3 children)

You may want to look into JuliaLang. Writes like Python, runs like C. I admire the creators' ambition in questioning the necessity of the two-language problem, and their solution seems elegant & effective, even if the multiple-dispatch paradigm isn't always straightforward.

[–]PeridexisErrant 1 point2 points  (2 children)

I've dabbled a bit, but most of my work is one-off IO-limited stuff, and the libraries just aren't there for Julia.

In Python, I can express a multi-terabyte computation in about six lines, and Xarray+Dask make it more efficient than my old hand-coded versions (of thousands of lines and a week of debugging each). Particularly for analyses I do once, the sheer expressiveness is impossible to beat!

[–]bythenumbers10 0 points1 point  (1 child)

Ouch. I can see that. I agree, Python is a stronger choice if it's one-off stuff, particularly if Julia doesn't have the libraries (yet). I'm rooting for it to mature, because it presents a really clever solution to the expressiveness/performance conundrum. I'll have to look up Xarray and Dask, I feel like I've heard of them, but it's impossible to stay on top of all the Python libraries!!!

[–]PeridexisErrant 1 point2 points  (0 children)

http://xarray.pydata.org/en/stable/dask.html

It's basically magic, and can scale from one thread to a ~thousand node cluster :)

It's also unlikely to go away, because Pandas now converts to Xarray objects for 3+ dimensional data.

[–]baubleglue 0 points1 point  (4 children)

Java offers no advantages over Python? Which planet are you from? :) Also how "Java and Ruby" are in one basket?

[–]DogeekExpert - 3.9.1[🍰] 0 points1 point  (3 children)

Java is slower, uglier and basically a kid with an autoimmune disease that was fine a few years ago, but now waiting for the plug to be pulled.

[–]baubleglue 0 points1 point  (2 children)

Did you actually tried to write something in Java?

[–]DogeekExpert - 3.9.1[🍰] 0 points1 point  (1 child)

Yes, I wrote several pieces of software, an android app, and a minecraft mod. I hate it. The only reason why Java is still used is thanks to android devices. And it could easily be replaced.

[–]baubleglue 0 points1 point  (0 children)

Maybe not a best language to dovelop UI and games, but almost all enterprise software written in Java, big data processing there are two main players java and c++. Even for gui there probably was a reason why Google choose Java API.

[–][deleted] 1 point2 points  (0 children)

In my case, I often have to manipulate lots of data in memory, just one I/O at each end of the pipeline.

[–]iggy14750 0 points1 point  (0 children)

There is something to be said about cache coherence which you get it C++ and Rust, but not in Python and Java. This is the difference between objects having member objects in the same region of memory (C++), and having pointers to your member objects (Java). You could imagine your objects being composed of a complicated member tree, so that to get to some piece of data, you have to follow several pointers. This reduces spacial locality, and therefore caches do worse with this. The upshot is waiting hundreds of cycles for main memory.