I am a long time .NET developer and I have worked with Mono but I now want to start programming for Linux, what would be a good source to start native Linux development?
- Anybody can ask a question
- Anybody can answer
- The best answers are voted up and rise to the top
migrated from stackoverflow.com May 18 '11 at 19:52
This question came from our site for professional and enthusiast programmers.
You can continue to use Mono on Linux, of course.
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.
Java on Linux is very mature and Eclipse is a wonderful IDE for Java.
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.
You can use Mono on Linux as you're a .NET developer if you want something quick.
You can also use Gtk# to make GUIs, it's very mature, and being used in real applications, like Banshee.
You can also use C and Gtk+ or C++ and Gtkmm to make GUIs for GNOME.
And if you're developing for KDE, you can make GUIs using C++ and Qt.
And of course there's Java with SWT or Swing, and Python that can be used with a variety of widget toolkits like tk, wxWidgets, Gtk+, and Qt.
As previous posts mention, there are several ways to program in linux, and depending what do you want to achieve, its the tools you need.
Maybe you should mention, what kind of programming did you do before getting into linux (windowze, maybe ? ) Desktop, Web, ?
Then, you could start working in a equivalent tool in Linux.