What is the Best Object-Oriented Language for Scientific Computing?

AI Thread Summary
In a discussion about pursuing scientific simulations in theoretical physics, a first-year master's student is exploring programming languages. Currently using C, they are considering learning an object-oriented language, with Java as a potential option due to previous coursework. The student seeks a language that offers high performance, easy parallel programming, and effective result visualization. C++ is mentioned as a widely-used language, but there are suggestions to prioritize it first and then explore object-oriented programming (OOP) concepts. Python is recommended for its ease of use, strong community support, and extensive libraries for scientific computing and visualization. Concerns about Python's performance are addressed, noting that critical computations can be handled in C or Fortran and called from Python. The consensus leans towards learning multiple languages to leverage their strengths in different contexts.
Grieverheart
Messages
30
Reaction score
0
I'm in my first year of theoretical physics master and I'm considering of following the path of scientific simulations. At the moment I use C for my simulations. I would additionally like to learn an object oriented language. I followed a course in Java about 2 years ago, so that would be easier to learn again. What I generally need is an object oriented language with high performance, easy implementation of parallel programming and visualisation of results. Also I think I'm going to learn C++ since it's used everywhere, so I don't know if it's worth learning any additional object oriented language. I want to focus on the things I said above but I would like to have some flexibility in other areas too.
So, any suggestions?
 
Technology news on Phys.org
Why don't you focus on C++ first and then see if OOP comes easily to you. After that you can start branching out even more.
 
I wouldn't waste my time on C++ or that other language that tried to overcome C++ shortcomings (Java).

You should look into Python!

Python is very easy to use. You can start programming in a non-OOP manner and start including objects as you see fit.

Also, there is a huge engineering/scientific community behind Python. There are many tools for scientific computing and for visualization.

Should Python not be fast enough for intensive number crunching operations, you can write that particular part in either C or Fortran and easily call it from Python.
 
If you already know C, switching to C++ will be relatively easy. At the same time it will mean your OOP will inherit bad habits from your C programming, that's typical.
 
I have done OOP in Java although that was quite some time ago. I was going to learn python at first, it seems to fit for most of my needs but it seems really slow. I read it can get close to C, C++ speeds with NumPy/SciPy (which are actually using C). That doesn't feel quite right :S . I guess in the long run it's best to learn several and use every language at where it's best.
 
Thread 'Is this public key encryption?'
I've tried to intuit public key encryption but never quite managed. But this seems to wrap it up in a bow. This seems to be a very elegant way of transmitting a message publicly that only the sender and receiver can decipher. Is this how PKE works? No, it cant be. In the above case, the requester knows the target's "secret" key - because they have his ID, and therefore knows his birthdate.
Back
Top