Python is a programming language with relatively lightweight syntax, and it is widely used in both academia and industry. It can also serve a gentle introduction to programming for those who might not have had much previous experience. The interpreted (as opposed to compiled) nature of Python lends itself naturally to interactive work, such as data analysis and visualization. Indeed, it has multiple mature libraries available for this kind of work. There is a useful project called ‘Jupyter’, which provides a ‘notebook’ interface for Python. In a Jupyter notebook, you can mix code, images, and text easily to provide a narrative flow, and also export to multiple formats to share with other people. I have created an example notebook with a fictitious experiment involving finding the resistance of an unknown resistor using least-squares fitting, and finding the associated error in the slope and intercept. Of course, this is a toy example, in which I assume uniform error margins for all the data points, but you can flex your programming muscles to extend it to handle non-uniform errors as well!
You can view the notebook (rendered statically) here:
To download it, click the Download icon at the top-right corner of the page. You can modify and run this notebook using Jupyter - you can install it on your computer with the instructions here
Let me know if you have any questions, and have fun!