General programming tips

Unix Philosophy
If you are familiar with programming under different operating systems than Linux, you may notice subtle differences regarding the philosophy of the system. A good introductionary read is the free book by Eric S. Raymond, "The Art of Unix Programming", particulary the chapter about the "Unix philosophy".

Available languages
If you wonder about what languages you can expect to be already installed on a typical Linux installation, here is a short list:


 * C: From Linux kernel to utilities, many of the binaries on a typical linux system are written in C. You can expect the C standard library on every POSIX compliant system, and a C compiler on most of them.


 * C++: Many of the larger open source projects are written in C++, and again you will find the standard library on virtually every system, and more often than not a compiler.


 * Objective-C: A clean, object-oriented extension of the C programming language, featuring dynamic typing. However, for some reason, Debian does not install the Objective-C machinery by default.


 * Java: There are many systems with the Java Runtime Enviroment installed, but low footprint server environments sometimes omit it.


 * Shell: Every Linux system has a shell which you can write programs for, the famous shell scripts. Most popular are Bash and csh, which understand a common syntax subset, but outside that subset sometimes differ greatly.


 * Perl: If the typical shell script won't do, the most widespread scripting language used is Perl. It is widely deployed and used for many purposes.


 * Python: Though not as common as Perl, most distributions install Python by default, some of them even rely on it for their base system.


 * Pascal: The programming language Pascal, popularized by Borland International as Turbo Pascal and later as Delphi, is available as their Kylix GUI tool for X (and for Windows) and in a GNU-licensed (with source code to the compiler) alternative Pascal compiler, Free Pascal for Linux, BSD and Windows.


 * Basic: Many scorn Basic as a simple language, but the most recent developments of both compiled and interpreted releases provide significant capabilities and are powerful scripting languages as well. Several versions exist including XBasic, Gambas and ScriptBasic and yabasic.

Of course it shouldn't be difficult to install development tools for your favourite language, and usually the user won't notice which language you wrote the software in, at least if it's compiled (and not interpreted).