Click here to Skip to main content
14,982,479 members
Please Sign up or sign in to vote.
3.96/5 (6 votes)
Hello

I am using computer since 2003. But never bothered to learn about hardware, software and programming all this stuff. I am more like a gamer all the years. Now I am decided to learn a new skill let say programming. Inspired by the video of Bill Gates saying "Everyone should learn how to code". So far so good now the question is where do I start. My English is bad so I cannot explain my problem very clearly but hope you understand by the following words.

What books Shall I refer to know about computers first. How hardware works and the software too (even web links or referrals are fine). How this programming structure works? To say basic and advanced both information about computers and coding.

Now what language should I start with? Why?

This is as far as I can think and question. I have no experience so any extra information and guidance is highly appreciated.

Thank You.
Posted
Updated 17-Jan-14 9:06am
v2

Wow! That's a big question...

You've been using computer since '03, so at a guess you're twenty-something. So we can assume you want "real" programming rather than something for kids. That both makes it easier, and harder - easier because we can ignore LOGO and getting stupid turtles to draw stuff; harder because we have to ignore LOGO and getting stupid turtles to draw stuff... :laugh:

Ignore the hardware for the moment: You don;t need to know much about it to learn to program, and adding hardware afterwards just extends your range and the number of directions you can go - you don't need it to start with.

Here is a place to start: http://msdn.microsoft.com/en-us/beginner/bb308754.aspx[^], please ignore all the "kid" oriented stuff - it's actually got some good basics on programming in there, and the videos are worth watching for a complete beginner.

After that, it gets harder to recommend anything, because while there are a heck of a lot of books out there, I haven't used any of them from the point of view of a complete beginner so I have no idea how much help they will be: though it's worth a look through some in your local bookshop to get a feel for "do I understand what they are talking about?" before you even think of buying one - them things is expensive! :OMG:

Have a look at your local area and see if there are any evening or night classes introducing the basics in your area - they should be reasonably cheap and do have a tutor you can re-phrase things if you don't understand, which a book or video can't.

Language? A lot of this is personal preference, but I'd say go with C#: it's not as quick to pick up as Visual Basic, because it doesn't use "English", but equally it won't let you run anything and have your program fall over so easily: if it compiles, it'll probably run. I wouldn't recommend a complete beginner start with C or C++ (or F# or Haskel, or COBOL, or FORTRAN or Assembler, or... You get the idea). Look at them later.

Go for it! And good luck. Remember this place, and feel free to ask questions, provided you don't ask for the complete code we're mostly a friendly bunch!
   
Comments
Ron Beyer 17-Jan-14 15:20pm
   
+5, good advice!
Rahul VB 20-Jan-14 11:29am
   
very nice OG +5
Tom Marvolo Riddle 5-Mar-14 4:33am
   
very good advice +5!
Hello,

Even i used to play a lot of games. Eventually when i started going to college we had many subjects on programming like C, assembly language programming for 8051 microprocessor. We had subjects in our 5th semester which taught us about digital design and computer organization. This subject taught us about memory organization of computers. There were many people in college who learned programming just for passing exams. I used to fail in many subjects later i realized that i had an inclination for programming(I am a very bad coder hahaha :)). So firstly realization is very important. Why am i telling all this? haha i hope you dont get bored reading this. I began my career in a marketing field. Later i realized, this is not me. I then joined the company in which i am. I started off with C, as it was the necessity of the hour. What i feel that when you start coding you must start off with C(i might be wrong). When you get into the feel of coding using C, then you can think of starting with other languages like C#, VB etc. Programming is nothing but you write what you think. Try with simple programs, eventually you will grow. What i feel is that to develop logic the most important thing is to keep asking questions to yourself: "why am i writing this line?can i do better?" when you find answers to this question you will realize that you are becoming better and better.

There are many tools and softwares available online to perform many tasks automatically. You must ask your self, "why should i download applications? let me try to write one of my own and run it". Then you should go for a high end language like C# etc. You will then realize the advantage of one language over the other. I am not saying that any language is bad, all are good. I just want to clear your doubt about which language you should start off with.


As you develop logic, you must think as to how things work? So start reading about that language. Then you will realize that you have both knowledge and logic. You can create powerful applications with your skill. Later on you will realize why should i create only desktop based applications? So start reading about web programming and stuff. You will later realize how exciting it becomes developing applications. The most important thing is the desire to help which takes you a long way.

As OG(Original Griff) said forget hardware, first start thinking and writing small programs(i hope OG said this hahahah :laugh))


Coming to books, for C, here in India we refer mostly "Let us C" by Sir Yashwant Kanetkar. A very very basic book. Finish that, then start solving "Test your C skills" ( i have not read many books on C). Then go for high end books. I think it is best is to start with C programming first(i might be wrong, but this is how i started off).

So friend if you are wondering : what to start off with? How to start with? Just try out a very simple program of addition in C programming. When you start with a question: "how do i add 2 numbers?". You must generate a formula like below:

a = b + c

Translate it into a piece of code. When you pick a language, think about where do i write it? The answer is "what editor to choose?". To start with C download an editor called "Turbo C". When you start reading you will figure out about syntax. Syntax is nothing but the rule you must follow to write a line of code. To know the rule you need to read books related to that language.

So start googling and reading.


And my friend, best of luck and happy coding.


Thanks and Regards,
- Rahul
   
Comments
Tom Marvolo Riddle 5-Mar-14 4:34am
   
nicely said +5!
Rahul VB 5-Mar-14 13:17pm
   
Thanks a ton, friend
From the perspective of someone who was only very recently in your position, I would suggest starting with Python. There are masses of online resources and some very good free courses run by organisations like Coursera, Udacity & Edx. (also paid ones like Udemy/TeamTreehouse)If gaming is your thing Coursera run a 7-8 week free python course titled programming interactivity(or similar) which involves building games. It is an excellent course put together by the members of the Comp Sci teaching staff at Rice University and will enable you to learn python and the basics of computing to an intermediate level.

I would also suggest you learn another language like Arduino (similar to C/C++) if you're into hardware, or Processing (Java derivative) if you're into graphics to give you a different perspective on programming and enable you to begin to see the similarities (and differences) between different programming languages.

I would also suggest getting handy with html/css/javascript - excellent resources everywhere(start at W3Schools or Mozilla Developer Network)

We generally learn better when we can have create smaller projects that offer faster feedback loops all the above will furnish you with the opportunity to do that all have a rich support ecosystem

Best of luck
   
Well, I know you asked about books. But as of now, books don't answer questions, and are rather static. And you can't really learn from zero from a community, even as good as this one. So I suggest you find an enthusiast who is willing to give you the start kick, and consult with you two hours a week (or month depending on how fast you want to advance) - five-ten times. Yes, of course, you can learn much everything only by reading and practicing, but there are many-many things (let's say tricks) you'l better hear from someone before you pull you hair out.
I too would suggest c# as language for a start. For that, you can find several books, you better look for one that fits your habits.
As of hardware, I suggest you better try to get known what is high level hardware or low level programming: what are registers, how different type of data is represented in memory, how actually a program is executed.
These can be good for a start:
http://computer.howstuffworks.com/microprocessor.htm[^]
http://www.csie.nuk.edu.tw/~lhyen/pl/pl00_ch4.pdf[^]
http://computer.howstuffworks.com/c1.htm[^] (it is C, but you I still recommend it as lecture)
What is this good for? Well, these are the constraints you have to know before you want to code something. You don't think about these if you code in a high level language, but beneath the surface the same things happen as you would code in machine code. Just an example: think of 1/3. This is a mathematical abstraction. You have to know, that you will need to decide in every case how much digits you need after the decimal point. Is 0.33333 enough, or you need 0.33333333333333, what if you can't have 3 as last digit? Do you need arbitrary precision? What performance or storage costs can you afford? In general you will be satisfied with a "float", without knowing how precise it is and what are the consequences. But you have to know, but 1/3 is rarely 1/3 in a computer. And so on.

And some more advanced theory:
http://en.wikipedia.org/wiki/List_of_data_structures[^]
http://www.learnalgorithms.in/[^]

When you pass the l'art pour l'art stage, you will notice, that mastering the language itself is not enough, since there are infrastructure elements you need to interface with to achieve your goals. Than you will probably need to learn about databases or computer graphics, or something else...

And my final thought: before really taking this path, imagine what you want to achieve: what's you goal with programming.
   
wow wow maybe you just need this site
   

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)




CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900