Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am a programmer, I developed in C/C++/C#.NET, JAVA, HTML and Matlab

Most of my work was in C# and .NET framework generally

I recently switched to try linux for 2 months as exploration, I want to know how to really get into linux and develop for it.

I am new to all the terminal/shell commands and stuff like that so you can get the idea

share|improve this question
That is obviously a broad question. I would start by learning a little about bash Here is one popular site . From there google is your friend, sort of depends on what language(s) you want to learn and what project you want to contribute to. – bodhi.zazen Dec 21 '11 at 18:37
Welcome to Ask Ubuntu! This sort of discussion is a better fit for the Ubuntu Forums. – Jorge Castro Dec 22 '11 at 17:39

I think Mono may lend itself to your existing strong skills: Mono is...

An open source, cross-platform, implementation of C# and the CLR that is binary compatible with Microsoft.NET

The essential parts of C/C++ development can be done with...

sudo apt-get install build-essential

The C compiler is cc and the c++ compiler is g++. There are many great IDE's for C/C++. Codeblocks is one, eclipse, netbeans, anjuta.

Open your Package Manager and search for those things... mono, build-essential, ide's to try... Good starting hints?

share|improve this answer

"Linux" is much more varied than Windows is. We have many different types of desktop systems, phone systems, etc. Developing for Ubuntu is completely different from developing for Android, for instance. I'll assume Ubuntu is the target. :)

In Ubuntu, the main desktop is called Gnome and provides lots of nice development tools. It is based on the GTK+ toolkit for user interfaces, and it's quite easy to learn. You can learn more about the platform here:

GTK itself is based on C, but it's available for all different kinds of languages. One language I would recommend you have a look at, is Vala. This is a language that very much resembles C# and Java, but instead of compiling to bytecode and depending on a VM and JIT, it compiles to C and then to native code. It uses Gnomes GLib and GObject extensively, and these are quite comfortable tools. There is a quick tutorial here: It assumes programming knowledge and it is a highly useful to know C# or Java, and so doesn't waste much time on general programming concepts. You'll pick it up very quickly.

Another language you might want to explore, is Python. This is a much higher level, duck-typed language with a very clean syntax and very easy to learn. Python is very popular in the Ubuntu community. You can learn more about Python here:

What programming language you use, is of little consequence when you're developing for Gnome and Ubuntu. The tools will be available for most languages I know of. So, first pick a language, then read up on the Gnome platform. Ubuntu also has a new developer portal which describes the things that are special to Ubuntu, such as the Unity interface. It also has recommendations for development tools such as version control systems, GUI constructors and editors. You'll find it here:

share|improve this answer

My meta-advice is to use Google cycles to find tutorials and HOWTOs that teach you a stack of skills. That's the approach I take on my how-to site.

I recommend grabbing a scratch computer, one you can erase, and doing cycles of Linux installs on it (with Ubuntu and for contrast other distributions). Then with with that base, google "learn unix basics", "bash tutorial", and things like that.

If you are a Windows developer you can probably visualize the software stack, and the analogs or Windows equivalents at each level.

I think a generic programming newbie would benefit from climbing each level of the LAMP architecture, and learning it in turn, though as an experienced programmer you may have a different destination in mind.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.