Software development in Physics

In summary, the conversation discusses the use of programming languages in physics and software development in the field. While some coding projects and libraries are used in physics, there is typically no software development in the traditional sense. The preferred languages for scientific computation are C/C++ and FORTRAN, and object-oriented approaches are rarely used. However, there are some instances where a GUI and multiple classes may be used, such as in physics simulations. The conversation also mentions the importance of model programming and information processing during experiments. Overall, the focus in physics is on algorithm design and libraries rather than software development.
  • #1
tigor
16
0
Greetings to all,
I was wandering - which languages are used for physics.
And which fields in physics use software development heavily ?
I am curious because, for the past 10 years i developed career in computer programming. But now days i am studying physics and soon will be faced with choice of physics specialization. So, i figure the best choice should be where i can apply my programming skills.
 
Physics news on Phys.org
  • #2
There is essentially no software development in physics (at least I've never heard of any). There are coding projects and such but these are often just libraries that you include. I guess it depends on your definition of software development but I've never seen a GUI or an object oriented, multi-class project or anything.

In physics we use low level languages, the lower the better since when you're doing essentially loops that run billions of times the overhead in even the simplest codes in something like Java will make a code that could have run in 5 minutes take a week to run. Generally the two languages are C/C++ or FORTRAN (mostly 90 although there are still 77 codes kicking around). I've seen astronomers use things like Perl to write data sorting algorithms but ultimately anything that is a running on a supercomputer is going to be in C/C++ or FORTRAN.

The name of the game in scientific computation is stability and speed so object oriented approaches are rarely used and codes are often messy hard to follow things that essentially do everything in a single file. Library dependence is bad, you have no guarantee that supercomputer X will have the package installed.
 
  • #3
With all due respect, I find Maverick_Starstrider's comments so far off the mark as to make me wonder if he has any experience at all in the field.

There is programming at scales from LabView to literally millions of lines of OO C++ (the same thing that MS said didn't exist) for large HEP experiments.
 
  • #4
maverick_starstrider said:
There is essentially no software development in physics (at least I've never heard of any). There are coding projects and such but these are often just libraries that you include. I guess it depends on your definition of software development but I've never seen a GUI or an object oriented, multi-class project or anything.

Well you haven't looked very closely! I once heloped in the development of physics simulations using a GUI & multiple physics-related classes in Objective C. There's similar work going on in Squeak Smalltalk, right now, that looks quite interesting...
 
  • #5
It is hard to imagine anything today that runs without a computer... and software. Since most of software is operated by a person - it has to have some sort of Man Machine Interface.
But not to mention the MMI , i imagine there has to be a lot of model programming and also some information processing during experiments.
 
  • #6
Vanadium 50 said:
With all due respect, I find Maverick_Starstrider's comments so far off the mark as to make me wonder if he has any experience at all in the field.

There is programming at scales from LabView to literally millions of lines of OO C++ (the same thing that MS said didn't exist) for large HEP experiments.

I stand corrected I suppose. I do computational condensed matter and it's all algorithm design here. Monte Carlo, exact diagonalization methods, finite element methods, density functional theory, parallel tempering, parallelization in general, etc. And there are definately libraries like ARPACK, LAPACK, BLAS, etc. but I haven't seen a GUI since when I used to do stuff in medical physics (which was basically slapping a simple front end on MATLAB scripts).
 
  • #7
I suppose if you wanted to write a library for other people to use you'd take an OOP approach.
 

1. What is the role of software development in physics research?

Software development plays a crucial role in physics research by providing tools for simulation, data analysis, and visualization. It allows researchers to model complex systems, analyze large datasets, and visualize their results in a more efficient and accurate manner. Without software development, many of the advancements in physics research would not have been possible.

2. What programming languages are commonly used in software development for physics?

The most commonly used programming languages in software development for physics are C++, Python, and FORTRAN. C++ is popular for its speed and ability to handle complex calculations. Python is widely used for its ease of use and extensive library of scientific computing tools. FORTRAN is still used in some areas of physics, particularly for legacy codes.

3. How do software developers in physics ensure the accuracy and reliability of their code?

Software developers in physics use various techniques to ensure the accuracy and reliability of their code. This includes testing the code against known analytical solutions, using numerical methods to verify results, and incorporating error handling and debugging techniques. They also follow best practices such as version control, code review, and documentation to maintain the integrity of their code.

4. How has software development changed the landscape of physics research?

Software development has greatly impacted the landscape of physics research by enabling faster and more efficient computation, data analysis, and collaboration. It has also allowed for the development of sophisticated simulations and models that can accurately predict and simulate complex physical phenomena. Additionally, software development has made it easier for researchers to share and reproduce their results, leading to more transparent and reproducible research.

5. What skills are required to be a successful software developer in physics?

To be a successful software developer in physics, one needs a strong foundation in programming languages commonly used in physics, such as C++, Python, and FORTRAN. Knowledge of numerical methods and algorithms is also essential. Additionally, good communication and collaboration skills are important as software development in physics often involves working in interdisciplinary teams. A strong understanding of physics principles and concepts is also beneficial in developing accurate and relevant software tools for research.

Similar threads

  • STEM Career Guidance
Replies
9
Views
2K
  • STEM Career Guidance
Replies
22
Views
3K
Replies
18
Views
3K
  • STEM Career Guidance
Replies
18
Views
2K
  • STEM Career Guidance
Replies
14
Views
2K
  • STEM Career Guidance
Replies
5
Views
661
  • STEM Career Guidance
Replies
5
Views
833
  • STEM Career Guidance
Replies
11
Views
697
  • STEM Career Guidance
Replies
10
Views
729
  • STEM Career Guidance
Replies
2
Views
1K
Back
Top