# General Programming FAQ



## Kreij (Jun 8, 2008)

I have been asked questions so many times, by so many people, about beginning programming that I thought perhaps a FAQ thread would help out.

So without any fanfare, here you go... 

*What do I need to begin programming?*
A computer and a compiler for the language you want to use.
Compilers and programming development environments are freely available for download.

*What's a compiler?*
It is a program that converts a high level language (something you can actually read) to what the computer wants to see (machine code).

*If the computer wants machine code, why not just write machine code?*
You can. But most people want to use a language that is somewhat comprehensible to humans.
Trying to write an application that uses a graphical user interface in machine code, would most likely drive one to insanity.

*What is Assembly language*
Assembly language is one step above machine code. It allows you to directly access most everything in the hardware like CPU/GPU registers and other low level things.

*Should I use Assembly language?*
Again, you can, while Assembly language is easier to use than machine code, it is still easier to use a higher level language. Most high level languages allow you to access the low level hardware also.

*What programming languages are there?*
There are many. C#, C++, C, Basic, Fortran, Pascal, COBOL, Lisp, F#, Assembly, Java ... to just name a few.

*What language should I use?*
The easy answer is, “It doesn't matter.”
All computer languages do the same thing. They differ only in the way that they do it.
Certain languages are designed for specific uses and make it somewhat easier to perform those functions, but it is possible to attain the same results in any language.
For instance, Fortran was a language of choice for doing high level mathematical computations. If you wanted to perform a Fast Fourier Transform, you would use Fortran. You can, however, perform a FFT in any language. It just may require more programming skill on the part of the programmer.

*Can anyone learn programming?*
Yes.

*What's the easiest way to learn a programming language?*
There is no “easiest” way.
Learning to program takes dedication and determination. It's like learning a foreign language.
Stick with it, strive to learn everything you can, and you will become a decent programmer.

*Do I need to go to school for programming?*
Taking formal classes in programming is always good, but not a requirement.
My degree is in electronics. I taught myself programming in about a dozen different languages.
If you want a job in programming, you will want to get a degree so  your employer has something to look at. 
This, of course, does not mean you are any good. 
Don't get me started on schooling versus experience.

*At the schools I looked at there are various programming degrees. Which one should I choose?*
Many of the universities in the US offer various programming degrees.
You need to decide what interests you the most.
No matter what you take, it will help broaden the scope of what you can code.
Something like database programming will be useful in all areas of the programming that you may do.

*Why should I learn to program?*
If you have to ask that questions, then there is no reason for you to learn programming.

*Can I make good money as a programmer?*
Yes.

*What is the worst thing about being a programmer?*
Deadlines. Most programmers want to write the best code they can, but when the code is due, they often have to make sacrifices. This can be very frustrating and has caused many a programmer to go into something less stressful ... like basket weaving.

*When I have a programming problem it keeps me awake at night.*
Welcome to the club. If you are losing too much sleep, post to this forum so we can help.

*I've heard about object oriented programming (OOP) what's up with that?*
Object oriented programming is a programming method (or paradigm if you wish to use that word).
Most of the languages that existed prior to OOP were function oriented.
The basic difference is that instead of focusing on what the program will do, you focus on what the program is doing to the objects in the program.
The idea is to keep the functions that do something to an object confined to that object.
I think I will have to write a OOP guide shortly 
Each programming method has it's advantages and disadvantages.

Okay, I would like to add to this FAQ, so if anyone has Questions or Answers from their own experience, post and I will add it to the original post. Remember this is about programming in general and not language specific. Please feel free to post errors in what I have submitted as I am not perfect.

I hope this post can grow to be very useful to people who are new to programming, and encourage them to stick with it.

Thanks All !!!


----------



## Solaris17 (Jun 8, 2008)

why should i learn to program?

excellent guide kreij


----------



## Kreij (Jun 8, 2008)

Thanks Sol, I hope that people will input their questions and experiences so that we can grow this into a really useful FAQ


----------

