LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (http://www.linuxquestions.org/questions/programming-9/)
-   -   Want to be a linux developer but dont know where to start (http://www.linuxquestions.org/questions/programming-9/want-to-be-a-linux-developer-but-dont-know-where-to-start-367794/)

Neoxeekhrobe 09-28-2005 08:54 AM

Want to be a linux developer but dont know where to start
 
Hi!

I have recently decided to start studying computers and would like to become a Linux developer but cant decide where to start. Should I first familiarize myself with linux and its softwares or should I start programming in some easy language like HTML or Perl.

Or is there something else I need to do?

Hko 09-28-2005 10:59 AM

Quote:

Should I first familiarize myself with linux and its softwares
It would be a Good Idea to that first.
Quote:

or should I start programming in some easy language like HTML or Perl.
I would suggest Python. But not everyone will agree. It's my humble opninion.

Suggested free downloadable books on python to read (probably in this order):
http://www.byteofpython.info/
http://python.org/doc/2.4.2/tut/tut.html
http://www.ibiblio.org/obp/thinkCSpy/
http://diveintopython.org/

addy86 09-28-2005 11:12 AM

HTML is no programming language, but a markup language (like the name says). Good choices to start with are (after you learned to use Linux):
1.) C++ (the most widely used language)
2.) Java (also widely used; maybe a little easier than C++)
3.) Python (very easy to start with; has a promising future)

smurff 09-28-2005 11:30 AM

Start by reading the net about what linux is. How it differs from other OS platorms. Get an old PC, something with about 256 MB RAM and only approx 10GB of hard disk. OR if you can find someone with vmware, you can also try that. Then get a linux distro from here or linuxiso.org
I recommend one of the easier ones such as Mandrive or Suse. Get it installed and play.

The thing about programming languages is that there are benifits for them all. My advice is either ANSI C, C++ or Java.

I baught a book e.g. "Dummies guide to..." but there are plenty of tutorials on the net.

Good luck and hope this helps

Smurff

Neoxeekhrobe 09-28-2005 03:45 PM

Ok, then should I join linux documentation project and write some guides or translations, that way I will learn what I need to learn and give back the community too. What do you say.

jtshaw 09-28-2005 05:07 PM

Quote:

Originally posted by addy86
1.) C++ (the most widely used language)
[/B]
Not to start an argument here... but C is probably more used then C++ in the Linux world these days (the kernel, about 50% or more of the base system, X, and most things GTK are written in straight C, KDE and most things QT on the other hand are written in C++)... though they are both great for different things.

At any rate... I think it is important if you want to become a developer/programmer/software engineer to be flexible.

Learning a particular language is way less important then learning good design techniques and programming basics then to learn any particular language. Any of the languages mentioned will give you the appropriate tools to learn this stuff, just be careful not to hamstring yourself to one particular language.

bigfez 09-28-2005 05:38 PM

C

once you learn that, it's all gravy from there.

Neoxeekhrobe 09-28-2005 07:45 PM

How about C# with Python or C/C++. BTW how much difference is there between C and C++. I have read that C++ is an advanced form of C. If thats true then why do C, why dont just learn C++.

jtshaw 09-28-2005 07:48 PM

There is little C# usage... but you could use it if you really wanted to....

C, C++, and C# are all different languages.

It so happens that a C++ compiler will (usually) compile C code. The same isn't true the other way around. There are various technical reasons for using one or the other... I typically use C++ when I'm doing anything involving a GUI because I think GUI programming lends itself well to an object oriented language. If I'm writing a network server I'm most likely going to use straight C because that will do just fine, and the network and thread API's are written in regular old C under linux.

primo 09-28-2005 09:28 PM

It's better to start with the language that started it all: C

There's a C tutorial oriented to GNU here:
http://www.crasseux.com/books/ctutorial/


The GNU manuals:
http://www.gnu.org/manual/manual.html
Look at the glibc...

Learn to use the Unix/Linux command line, shell scripting, typically bash

Don't be afraid at the amount of information you see ahead in front of you sometimes. Take your time and enjoy each step. Keep learning

smurff 09-29-2005 03:00 AM

Quote:

Ok, then should I join linux documentation project and write some guides or translations, that way I will learn what I need to learn and give back the community too. What do you say.
IMHO No not really. Install and play. I got a copy of vmware and it allows me to try distros with little impact to my system.

I dont know if you have any unix/linux skills but it is quite different to Windows. So get your head around what it is, how you can do your day to day stuff with it, and then start playing with your prefered language. There are plenty of onlne tutorials for nearly any language. I must admit, once I had got my head around one language, the others seemed easy, its just down to syntax.

Good luck
Smurff

bwingate 09-29-2005 06:50 AM

I'm surprised to see all the recommendations for C, I thought that it would be considered a little old-fashioned by now. People seem to jump on the new-language bandwagon pretty quickly.

Anyway -- I will echo a lot of what people have said:

1) Get Linux on a system and play with it, break it, fix it, and re-install it. Play with different distros. My preference is Fedora Core 4, but I also have no experience with the other distros. Get comfortable with the OS so it doesn't get in the way of your coding.

2) Poke around the web looking for good tutorials on different languages. I would pick a language based on the quality and quantity of tutorials available. For a starting point of languages, I'd recommend C, then C++. I haven't looked at python yet, but have started investigating php (I find the syntax confusing, but I haven't taken the time to really dig in.)

3) Program. Write dopey little programs that don't do much at first, like most of the examples you'll see in the tutorials. Change them, break them, and fix them. Figure out how to output to the terminal window, a graphical window, a file, how to get user input, command line input, file input.

4) Program some more. Pick a simple task/program you'd like to have, break it into its component parts, write a "design document" which could just be a simple bullet point list of features, write the program, compare it to your "design document", debug it, and polish it up.

WRT Linux Documentation Project: Maybe join a mailing list and watch what's going on. It will probably confuse the crap out of you at first. If you want to get involved in the Linux community, there's always boards like this, and once you feel comfortable with your coding skills, sourceforge has "want ads"

Once you learn how to program, and can program well, switching between languages is mostly a matter of learning new commands and syntax and is relatively easy.

Bruce.

addy86 09-29-2005 09:24 AM

Quote:

Originally posted by bwingate
I'm surprised to see all the recommendations for C, I thought that it would be considered a little old-fashioned by now.
I take it you mean "it's oldfashioned to recommend C as a beginner's language".
Well, although it's not the easiest language to start with, it has the advantage that as soon as you have mastered it, you master the all major concepts of programming (except for those that C lacks compared to C++). Compare this to starting with Python: when you have to make the transition to C/C++, you have to learn everything that Python does for you: static typing, memory management, pointers, etc.

bigfez 09-29-2005 09:46 AM

for me, the recomendation for C is for two reasons.
first as some people have mentioned, once you understand C you will then understand how all other languages work 'under the hood'. having to manage your own memory and deal with pointers are great ways to understand programming. writing your own data structures and algorithms rather than relying on native linked lists or dynamic arrays and native sort functions will really teach volumes about programming.

secondly, if you are interested in being a Linux programmer for a job, rather than just as a hobby, you will likely need to know C to get a job. I'm a programmer for one of the largest credit decisioning companies in the US, we are a mostly Linux shop (a few old AIX boxes still kicking). if you can't put C on your resume, you won't get hired as a programmer here. Even if you are hired as a C++, PHP, Java, or PL/SQL programmer, you will not get an interview without knowing C at least a little.

bwingate 09-29-2005 02:44 PM

Quote:

Originally posted by addy86
I take it you mean "it's oldfashioned to recommend C as a beginner's language".

Actually, its not that I'm surprised people are mentioning it for beginners because its hard, I was surprised it was recommended almost at all. Most people seem to promote the newer, more popular languages and treat C like it was old and dusty. Especially from a commercial/get-a-job viewpoint, its seems like its all perl, php or java.

Bruce.


All times are GMT -5. The time now is 04:43 PM.