Learning how to program
If you like automating things by breaking them down into cleverly arranged sequences of simple tasks, then you might enjoy programming. Different languages emphasize different aspects of computing and are better for some tasks than for others. Try to pick the right tools for the right job.
If you do many statistical analyses of data, then R is an excellent choice:
- R Basics: http://www.r-tutor.com/elementary-statistics
- If you are already a programmer and get stuck with some peculiarities of R you may enjoy this: http://www.burns-stat.com/documents/books/the-r-inferno/
Getting started on Python and C++
If you don't know anything about programming, Python is a good place to start, as it is much easier than many other languages and still has great libraries for scientific tasks. To learn Python check out:
- A good tutorial: http://www.afterhoursprogramming.com/tutorial/Python/Overview/
- Other tutorials: https://wiki.python.org/moin/BeginnersGuide/NonProgrammers
- A thorough tutorial: http://learnpythonthehardway.org/book/
If you can already programm, then you may want a quicker way to learn about Python.
- Google's introduction to Python: https://developers.google.com/edu/python/
If you need raw computational speed and don't mind a bit more work, then C++ may be for you.
- Google's tutorial to C++: https://developers.google.com/edu/c++/
- Google on advanced CS: https://developers.google.com/edu/curriculumsearch/
Many other languages exist, how to best deal with them?
- Experts pick the right language for a task, so learning a few of them can be helpful up to a point.
- If you start with Python or R and then learn the other one, you will learn many important concepts. Many will not need more. If you need speed, C++ gives you many options. We don't list Java here, as there are already many websites recommending it (so learn Java if that is what you prefer).
- If you are looking for exotic languages, you may want to consider functional programming languages, which can excel at parallel tasks...
- In this mix, Evolvix is characterized by being a "descriptive" programming language that is what computer scientists call "domain-specific language": it describes the simulation models that it covers very well, but it is not made for programming in general.