bro, assuming you are asking this for Linux Programming reagrding embedded systems only .i.e. Embedded Linux or RTLinux...(there is Linux System Programming also --for application development in linux platform)....
bcz. Linux Programming is not a specific term as it contains various things such as "Device drivers",system programming etc etc.. (gui based app. development based on GT/Qt)
I myself started learning the same two months back and currently learning the "Linux device drivers"....
I didnt bother why people learn it or moving towards it(am in 2nd year only..with a very little knowledge about the industry or market) but one thing which is clear to me is that "why I wanted to learn something like this"?
the point of interest was::
once i wanted to integrate my own made embedded devices to get controlled through a central thing like my mobile or a gadget
ex-interfacing my gadget with gsm, making it wifi enabled, blutooth, camera module, rf inside my building,gps enabled and all the things that a mobile fone can do(with a much better implementation)...
imagine the situation:your single gadget is behaving like a phone, connected to wifi, can act as remote for your t.v., can display wat it see in a player using the camera and many other thingssss.!!!!!!!!!!
I also thought is that "am I able to control a set of leds on my embedded board through a software on my pc"??????
answer with a lot of other questions in my mind::yeah, i can do it,, but how will i connect it with computer through serial port/usb or make some sort of card connected to my motherboard etc etc..
how the data will flow through the data wires on usb, how will i manage to send data to it i.e. the protocols etc..
when I bought a my samsung Galaxy and i was not able to use it(using pc suite i.e. samsung kies) on Linux(backtrack) but on windows it was working gud, just bcz.they didnt make it for Linux platform...i.e.
again the point is "the introduction of my samsung galaxy's hardware and the linux system kernal has not been done" it doesnt recognises my device that time...
so how this can be done???????(kies for linux is even not yet made...though people simulate it using different methods) .....
making your embedded device having an touchscreen lcd, and when you touch a button,,,, wifi is enabled,,how??
enabling an wifi-- it is not just an on off instead it encapsulates all the work that can be using wifi
i.e.somehow u have managed to make the wifi module to work with your embedded system and do all the wifi capable things..ex- usage of internet,lan etc etc...
so,,
these sort of questions provoked me to learn to make the protocols for making these devices to work with my embedded system... so the term is "device drivers"
WHY LINUX programming??(with embedded systems)
bro for this, there are heavy amount of articles on internet...telling you why and how to use linux only....
in short-(as what i think)
it is the most primitive and the most powerful thing that can let you to do all the interactions with hardware easily
it is open source,easily available
best online communinity for linux kernel
since source code is available so you can modify it as per your need which is not in case of windows and other distributions
application areas-- setup boxes are coming with preinstalled linux kernel, socket programming has a lot wide area of work, your android is the biggest example (google it out bro..)
and yes,, there are a hell lot of tutorials available on "internet"(I dont think any thing of one's interest is not available on internet..bcz. m not the first person to think or curious for it.. thousands of people have already tried and done work on it) .....
and moreover if you gt a little bit clearer about the topic of your concern in Linux Programming then only I can say for other things.....