DevGuide/LearningToProgram
Introduction
There sometimes comes a moment that you would like to have more functionality in the Paparazzi GCS, in the airborne code or somewhere else. This non existent functionality does not come out of the blue. It took all the people involved blood, sweat and tears to get where the paparazzi is now. Also for you, it can be very rewarding to program improvements for the paparazzi. Some words of advise: first make sure you used the already available Paparazzi Autopilot for an extensive amount of time. Also you have read a year or so in the Wiki and are comfortable with all that there is written. You also managed to compile airborne via the command line, then there is a moment you might delve deeper into the Paparazzi and learn to code.
If this is your first programming experience it is maybe better to learn to program some generic desktop applications first. Altering and enhancing the code is even for seasoned programmers not a trivial task. Now if all of this did not make you less motivated, great! Let's get to it.
On this page you will not find in depth info of the languages use. There are much better resource on the internet already than we could ever provide in this Wiki. Therefore there are only link to learning these languages.
What can be found are code snippets directly related to the paparazzi code.
Languages
The whole of paparazzi is written in various programming languages.
OCAML
The Objective Caml system is the main implementation of the Caml language. It is a functional programming language, and also features a powerful module system and a full-fledged object-oriented layer. It comes with a native-code compiler that supports numerous architectures, for high performance; a bytecode compiler, for increased portability; and an interactive loop, for experimentation and rapid development.
http://ocaml.org/learn/ http://www.ocaml-tutorial.org/
C
http://www.cprogramming.com/tutorial.html
Python
Python is a clear and powerful object-oriented programming language, comparable to Perl, Ruby, Scheme, or Java.
http://wiki.python.org/moin/BeginnersGuide
Makefiles
Makefiles also can be seen as small, sometimes even large programs.