Linux is a fascinating operating system because it lets any user participate in its development. The variety of available languages, however, can be confusing to beginning Linux developers. This document lists the most common options for everyday development and states some key facts about them. (Well, ``most common'' and ``key'' as I perceive them.) My aim is neither to review the languages nor to determine which one is the best. Each language is a tool that fits some jobs and some tastes. You can get further (often conflicting) information easily, if you ask around or keep your ears open. The Links sections in this document will give you some pointers for your own research.
There is a plethora of languages and libraries for Linux, so this document only covers the most common languages and GUI toolkits at the moment. Also note that the languages and GUI toolkits are seen from the Linux point of view, their features on other platforms are not discussed or implied.
This document is a recent addition to the LDP, so there has not been opportunity for much community feedback. However, it is released in hopes that it will prove useful for people interested in programming under Linux. A question mark in the tables indicates lack of information. If you can fill it in, please contact the author.
Copyright (c) 2000 Risto Varanka.
The following license terms apply to all LDP documents, unless otherwise stated in the document. The LDP documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, provided that this license notice is displayed in the reproduction. Commercial redistribution is permitted and encouraged. Thirty days advance notice via email to the author(s) of redistribution is appreciated, to give the authors time to provide updated documents.
All modified documents, including translations, anthologies, and partial documents, must meet the following requirements:
In addition it is requested that:
As a special exception, anthologies of LDP documents may include a single copy of these license terms in a conspicuous location within the anthology and replace other copies of this license with a reference to the single copy of the license without the document being considered ``modified'' for the purposes of this section.
Mere aggregation of LDP documents with other documents or programs on the same media shall not cause this license to apply to those other works.
All translations, derivative documents, or modified documents that incorporate any LDP document may not have more restrictive license terms than these, except that you may require distributors to make the resulting document available in source format.
THIS DOCUMENT COVERS A LARGE AND CONSTANTLY CHANGING DOMAIN. THEREFORE, THE INFORMATION CONTAINED IN THIS DOCUMENT MAY BE INCORRECT OR OUTDATED. ALL USE OF THIS DOCUMENT AND ALL INFORMATION CONTAINED IN IT IS AT YOUR OWN RISK. THE AUTHOR DOES NOT GIVE ANY WARRANTY OR GUARANTEE, EITHER EXPLICIT OR IMPLIED.
You are welcome to send feedback to the author at: risto.varanka@helsinki.fi.
Author's web site can be found at http://www.helsinki.fi/~rvaranka/.
I am thankful to several people who commented on language issues. These conversations have given me a better view of the different languages, and I hope future conversations will allow this mini-HOWTO to mature over time. Especially I would like to thank the people at the IRCNet channel #linux: Morphy, Bluesmurf, Vadim, Zonk^, Rikkus and others whose names I have forgotten. Thanks go also to Stig Erik Sandoe for helpful comments.
Exhaustive lists of Linux development libraries and tools:
The Hacker FAQ by Eric S. Raymond is another interesting text for novice Linux developers. It concentrates on some cultural and psychological aspects of open source development.
Other LDP documents covering general programming subjects include the Reading List HOWTO and the Linux Programmer's Guide - several more have been written on specific subjects.