DevGuide/LearningToProgram

From PaparazziUAV
Revision as of 02:54, 28 November 2017 by Kirkscheper (talk | contribs) (Added a link to the contributing page of paparazzi)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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. Paparazzi is a large project with years of development so it can be a daunting challenge to edit the source code but your efforts will be rewarded as the community will use your changes, all in an effort to improve Paparazzi software.

Details and tips on contributing the source code can be found here: https://github.com/paparazzi/paparazzi/blob/master/CONTRIBUTING.md

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.

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.

C

http://www.cprogramming.com/tutorial.html http://www.learn-c.org/

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.

http://www.tutorialspoint.com/makefile/index.htm