user space to start with, after I have built a few useless tools I will move on =)
–
RikalMay 18 '11 at 19:48

3

What do you expect to gain (besides pain ;-) ) by switching to native development?
–
Bas BossinkMay 18 '11 at 19:54

2

What do you mean "native Linux development"? Are you talking about C++ programs that run on Linux, programs that directly interface with the OS rather than going through language-specific libraries, device drivers, ...?
–
David ThornleyMay 18 '11 at 20:10

5 Answers
5

If you want to write good performing programs for the KDE environment then you use C++ and the Qt tools.

To write C for Gnome I'd recommend using Vala.

If you want to write your software faster but have it perform slower then use Python or Ruby. Both have libraries for GUI programming in Gnome or KDE. Both are very good, although personally I dislike untyped languages. If I accidentally pass a string instead of an integer I want to know about it right away.

I'm a big fan of Stevens' Advanced Programming in the UNIX Environment as an introduction to the Unix C APIs at all levels. The original was a true classic, and Addison Wesley has put a lot of work into releasing a new second edition after Stevens' death, co-authored by Stephen Rago, and updated to deal with more recent changes in both the standards and the implementations out there.

If you need help getting started in C itself, there are a lot of questions here that have looked for advice in that area, though Kernighan's and Ritchie's The C Programming Language remains a great, if not quite up-to-date introduction to the language.

Once you have the basic Unix programming idioms down, you can move on to Stevens' two volumes on Unix Network Programming, or look into one of the fine Unix GUI toolkits, or go in a different direction, depending on your tastes/needs.

The specifics are going to depend on the types of applications that you are interested in writing, but for getting up to speed on Linux programming in general I'd suggest looking at The Linux Programming Interface and Linux Systems Programming, both are excellent books that cover POSIX in general, as well as features specific to Linux or glibc.

There are a lot of language choices under Linux, and sticking with Mono and C# is certainly possible, but if you plan to get deep into Linux programming you should get familiar with C. Depending on your domain you might not need it all that often, but it's definitely the lingua franca of the Linux world.