Python (http://python.org/) is an open-source scripting language that is relatively straight forward to. It has extensive object-oriented programming capabilities and with the aim to produce code that has high readability (readability refers to the ease with which a human reader can comprehend the purpose, control flow, and operation of source code. It affects the aspects of quality above, including portability, usability and most importantly maintainability) and that can be re-used and integrated into many different projects. As such, one of the key advantages of Python over some other programming languages is the speed at which quality code can be produced (that can then be reused later). A possible disadvantage is that execution time of code may be slightly longer than lower level languages such as C/C++/Fortran, while it may not be ideal for code that needs to be written for us on clusters i.e., cosmological simulation that will take time on a supercomputers, maybe be best optimised with a compiled language like C/C++.
Python has a number of additional packages/programs such as Scipy, Numpy, iPython, and Matplotlib which make Python a powerful scientific and computational environment that can be taken advantage of by all researchers.
A very good resource for astronomers that is based on a hands-on workshops to explore the Python language and the powerful analysis tools it provides with the emphasis on using Python to solve real-world problems that astronomers are likely to encounter in research is:
Practical Python for Astronomers by Tom Aldcroft at the Center for Astrophysics - http://python4astronomers.github.io/
To findout information about Python packages written for astronomical tasks can be found here:
This website has tutorials, code snippets, references, blogs, education resources and many other things that may help you.
Other resources include:
Programming Python: Powerful Object-Oriented Programming by Mark Lutz
Python bootcamp: https://sites.google.com/site/pythonbootcamp/lectures
This repository contains the entire Python Data Science Handbook, in the form of (free!) Jupyter notebooks. https://github.com/tdejaeger/PythonDataScienceHandbook/
https://github.com/jrjohansson/scientific-python-lectures
Astronomy Data And Computing Services also has resources of getting into python: https://adacs.org.au/adacs-training-vision/lms-courses/
Python Machine Learning (2nd Ed.) Code Repository: https://github.com/rasbt/python-machine-learning-book-2nd-edition
When making plots consider using: CMasher (https://cmasher.readthedocs.io/) which is a set of Scientific colormaps for making accessible, informative and cmashing plots.
Excellent python tutorial: https://sharmamohit.com/tutorials/ucsl/
Astropy tutorials - https://learn.astropy.org/tutorials.html -- highly recommend!
Python for Astronomers - https://prappleizer.github.io/index.html#guides
Astronomy Python Bootcamp: https://www.youtube.com/watch?v=ietxJ7oMzIc&list=PLbJEQKXFZR1uATg2dyyKUDFnqtTzkUdZv
Extracting galaxy redshifts from real data: https://www.youtube.com/watch?v=_s5elB7KX74 and https://www.youtube.com/watch?v=fxYj3vnRatY
Colorgorical: creating discriminable and preferable colour palettes for information visualisation - http://vrl.cs.brown.edu/color
Colour blindness simulator - https://www.color-blindness.com/coblis-color-blindness-simulator/ - A very useful and important resource to generate figures as it simulates what your images will look like for different kinds of colour blindness.
CMasher: Scientific colormaps for making accessible, informative - https://arxiv.org/abs/2003.01069
List of all collours available in matplot lib - https://matplotlib.org/3.1.0/gallery/color/named_colors.html
All 1163 named colours in matplotlib. This includes any CSS colour as well as all colours from the xkcd survey. Colours with a * have to be prefaced with "xkcd:" when you call them in your plotting functions: https://pbs.twimg.com/media/E4X4aoMVEAA-tvA?format=jpg&name=4096x4096
For tasks that require speed and small code size, C or C++ might be great programming languages to use. While the steeper learning curve than interactive, scripting languages such as Python could be a disadvantage initially, the fundamental understanding of programming might be worth the investment. To find out more about using C/C++ for scientific aspects you can find more info here: https://www.gnu.org/software/gsl/.
Mathematica is good for high-level, conceptual, or mathematical applications. The “notebook” style of Mathematica documents makes it very well suited for working on problem sets and its ability to perform symbolic algebra and integration can be very helpful for calculating complicated integrals. UniMelb has an educational licence that you can take advantage of to use mathematica or you can also go to http://www.wolframalpha.com/ to have a look.
IDL or the Interactive Data Language is a proprietary programming language that has occupied a niche among astronomers and other scientists. It is used a lot to perform astronomical data reduction tasks. IDL has an extensive, experience user base and many astronomers have contributed to the large number of well-documented, astro-specific programs available for public use. Note that IDL does lack a number of things that python does not (i.e., in terms of graphics etc), but there are a number of resources available if you happen to use IDL or have a code that was written in IDL.
Various resources:
IDLUTILS: a collection of astronomy-related routines packaged into one library
Coyote’s Guide to IDL: tutorials, tips, books and routines from David Fanning.
http://ugastro.berkeley.edu/~jzalesky/idldecal/idl-decal-textbook.pdf
Summary of pros and cons of IDL vs Python: https://www.astrobetter.com/blog/2009/05/04/idl-vs-python/. There are also ways of converting between IDL and python such as: https://github.com/baileygroup-vt/pyIDL, https://r4lv.github.io/idlwrap/Porting%20IDL%20to%20Python.html etc.
(https://julialang.org/) is programming language designed for scientific computing.
Case for using Julia: https://arxiv.org/abs/1812.01219
Astro focus on Julia: https://juliaastro.github.io/dev/index.html
A very nice overview for using Julia in astro: https://astrowanders.github.io/JuliaLangAstro/
Perl (http://www.perl.org/) is another scripting language, similar to Python, which can be used for data processing.
R (https://www.r-project.org/about.html) is a language and environment for statistical computing and graphics. It provides a wide variety of statistical (linear and nonlinear modelling, classical statistical tests, time-series analysis, classification, clustering, …) and graphical techniques, and is highly extensible.