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.
 
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I have a quick questions. I am going through a book on C programming on my own. Afterwards, I plan to go through something call data structures and algorithms on my own also in C. I also need to learn C++, Matlab and for personal interest Haskell. For the two topic of data structures and algorithms, I understand there are standard ones across all programming languages. After learning it through C, what would be the biggest issue when trying to implement the same data...
Back
Top