I am an windows developer with over 15 years experience. I have just started looking at the latest version of Ubuntu Linux. Could someone point me at a good beginners guide to Ubuntu (preferably from a developers prospective) which is aimed at a Windows user? I have found several using google, but unfortunately I know so little on this subject I can't tell a good guide from a bad one. I have version 10.04 LTS.
Ubuntu Forums has a lot of good info where you also can ask specific questions for ubuntu
Some might argue that learning specifically a distribution of Linux is counter-intuitive to the whole 'Linux mindset.' I'm afraid I can't answer your question specifically in terms of good guide resources, but I've found in my quest to learn something new, a place to be able to ask questions is more important than an all-inclusive tome. To that end, I would also recommend http://ubuntuforums.org/ - it will give you a chance to clarify anything that any tomes couldn't answer.
I might also suggest to forget everything you know about Windows when learning. With fifteen years under your belt, I'm sure you're an experienced Windows developer. There are a lot of things that will transfer nicely, like good coding practices, and there are a some things which may seem (or even be) counter-intuitive. If you learn to take these in your stride and accept you're learning and not failing, an install of Ubuntu and a desire to learn will do you better than any Ubuntu tome.
The Linux world is much more fragmented than the Windows world; for developing GUI programs, there's several GUI toolkits to choose from (GTK and QT are the two most popular; there's also FLTK, TK, and even old Motif is still kicking around).
Systems programming is thankfully MUCH better, buy a copy of Advanced Programming in the UNIX® Environment, Second Edition and you'll have enough to write great systems tools on dozens of platforms.
If you're in the middle-layers somewhere, a higher level than systems programming, you'll typically be working with other libraries and toolkits: Apache, PostgreSQL, Hadoop, libevent, Tomcat, Ruby on Rails, Django, expat, GnuTLS, OpenSSL, Perl, Python, Ruby, Erlang, etc. Figuring out which of the options you've got to work with may be daunting, but most projects have reasonable documentation.
Most tools have manpages: skim man man
, and then: man 1 intro
, man 2 intro
, man 3 intro
, man 4 intro
, man 5 intro
, man 7 intro
, man 8 intro
. (Feel free to look at man 6 intro
if you want, but manual section 6 is for games.) 1
is for user-commands, 2
for system calls, 3
for library calls, 4
for device files, 5
for configuration files, 7
for "frameworks" (socket(7)
and ip(7)
for socket and IP details), 8
for system administration commands.
Maybe asking for specific advice would lead to more concrete answers -- the simple truth is there's no simple single programming guide on Linux systems.
Firstly I'd look at https://help.ubuntu.com/community/Programming for some ideas
But for us to be more helpful you need to decide What exactly are you looking to develop? For example is it a C#, C++, or java application? is it a desktop, mobile, or web application?
There are different tools for different projects.
Going by your previous questions I'd think your a C# programmer so I'd have a look at the mono project