Hi. Welcome to this last section about programming. I will go a bit further into programming languages, the types of programming languages, and, of course, the humans who program them. There are lots and lots of programming languages, with different characteristics. What you need to remember is that everything can be done with every programming language. It won't always be as easy, but you can use any kind of programming language to write any kind of algorithm. Programming languages can be sorted by type. Those are called paradigms. I'll list some programming paradigms. The most common is the imperative paradigm which is the closest to the processor, orders are given successively, and we create loops, those sorts of things. The most classical examples are Fortran and C. There are functional languages where functions are considered as full-fledged objects that can be passed on to other functions. It's a rather more mathematical way of seeing programming. Examples of such languages are Haskell and OCaml. Object programming is a more general way of doing programs, where a certain number of functions can be shared between various objects. Constraint programming, one example of that is Prolog, it is more logical programming. Imagine creating a timetable, there are numerous constraints, this teacher is only here on Monday, that room can only be used for teaching IT, etc. With that, you can enter all these constraints ideally we obtain a proper timetable for all the teachers and all the rooms. Event-driven programming is more commonly used for graphical interfaces or robotics. The program does not run through, but some stimuli are expected from the environment. Imagine a robot, you touch the robot, you push a button and then the program reacts to those stimuli. You also have to understand that most languages are multiparadigm. With C++, you can do imperative, object or other things. With OCaml, you can do imperative, functional and object, the same with Python. With Java, what is mainly done is the object, but imperative and functional can also be done. Most languages we use support more than one paradigm and they can be used one way or another. A quick example to show you the various ways of programming. let's imagine we have a set of integer values and that we want to add one to all these values. With C, naturally, we would choose a chart of a certain size, an int*, a pointer towards an integer chart, and we would browse it sequentially. There would be a For loop, browsing every box of the chart and we successively add 1 to each integer. On the other hand, with OCaml, we would rather choose a list because it is a more functional language, so instead of having a pointer or a chart, we would have an int list, an integer list and we would apply an operator with a map, which will apply a function on every element of the list. This map takes a function which associates an integer with a successor integer. We would perform this map which takes a function as an entry and that list, which will successively apply +1 to all the elements of the list. In the end, choosing a programming language is always a complex task. It all depends on what you want to programme. It depends on what you want to do, what you are used to doing. What paradigm do you want to make, to use? What are the interfaces with other developments, because our program is often just a part of something bigger, so in that case, to have frequent interfaces, the same language must be used. What support library can we access? For example, if I want to create a graphic interface, I'd want to use existing libraries. So what library do I want to use? What do I know about the language? It will be much faster using a language I already know. Can I get help, or mentoring? If my neighbour knows a language really well, maybe I will use the same because I know I will be able to ask him any question I need answering. So choosing a language is always difficult, but any language can be chosen. And with that language, we can always create what we want. To conclude this section about programming, we started off with machine code, closest to the processor, which you don't want to write. That's why we use higher-level languages and why we use a compiler to write the machine code. What's more, this compiler will help us find syntax errors in the program. But it can't do everything. It cannot tell us if the program will do what we want it to do. That's why the program needs to be tested. So in conclusion, you have to programme because the best way to get training is to get to programming yourself. Good luck!