Teaching myself computer programming Where should I start?

AI Thread Summary
Starting with Python is recommended for beginners due to its simplicity and ability to quickly produce results, making it ideal for grasping basic programming concepts. While some suggest Java or C++ for a more robust foundation, these languages can be more complex and may not be necessary for initial learning. Understanding programming fundamentals is more crucial than the specific language chosen, as it helps in problem-solving and coding logic. Resources like Udacity offer structured courses that can ease the learning process, allowing learners to progress at their own pace. Ultimately, gaining practical experience through projects and challenges is essential for developing programming skills.
mariexotoni
Messages
56
Reaction score
0
Can someone give me a general sort of outline of what I should teach myself and in what order? or supply me a link that has a neat pdf?
 
Technology news on Phys.org
Presuming you want to know some general programming, as opposed to specialized programming of - for example - microcontrollers, I suggest you start with a clean but powerful language such as Python. Here's a good tutorial. There really isn't a general curriculum when it comes to learning how to program. Basically, you learn the basic ideas and a programming language or two, and then you learn whatever you're most interested in. I also often suggest new programmers take a look at Teach Yourself Programming in Ten Years, which I think is a very good read.
 
Hello there Marie

Python is a good language to start off, since I heard it is a very easy language to learn. There are some colleges that start off with Java or C++. However if you have a goal in mind you want to accomplish in the long run, you should state it. Different languages are good for different things.
 
Hey mariexotoni.

For an environment that's easier to learn and get something up and running, I would recommend something like Python, Visual Basic, and other scripting or interpreted languages. Most people would recommend something like Python, but I actually like BASIC.

Pro's
- Get something up and running quickly, good for creating stuff without having to learn absolutely how everything works
- Good to get a feel of the basic programming ideas and constructs in procedural programming

Con's
- Not a good foundational for general serious coding: things work, but you don't actually know why
- Can be misleading if you aren't aware of the above

Usually from this you go to something a bit more 'in-your-face' like Java, C, C++. These are the kinds of languages used in professional development and also cover the OOP (Object Oriented Paradigm) that is common. This is what a lot of people write code in and especially with C++ since you can compile it to an optimized executable which means code runs as fast as it can if the compiler does its job well.

Pro's
- Better at understanding what is going on (especially for C,C++).
- A good idea of the languages used in serious development

Con's
- Even at this level, you still won't really understand how it all really works

Then if you want to really know what is going on, you look at Assembler and Machine Language. Not for the faint of heart!

Pros
- If you can code in this, then you will without a doubt know how everything works: period
- If you ever need to write optimized code that a good compiler can't create or that you can guarantee runs in x clock-cycles, then this is what you need.
- If for some god awful reason you need to debug a compiled library, then at least you can understand what the hell the error message is

Con's
- It takes a long time to learn properly
- Very painful
- Usually un-necessary for the majority of purposes
- Most compilers are good enough to produce fast enough code

The above is for procedural programming only (Note that VB is not entirely procedural so if you want procedural look at QBASIC for BASIC language)

It's up to you how far you want to go in terms of understanding, but if you are curious and want to write something up quickly, I'd probably check out Python. If you end up going all the way with assembler, then I think you'll pretty much know everything there is to procedural programming for x86 architectures (and easily be able to transition to other architectures as well).
 
There's free online CS courses at Udacity. I took the CS101 - How To Build A Search Engine course to learn Python and it was excellent, and now that the course is finished, you can take it at your own pace. It will teach you some basic computer science concepts, and enough Python syntax to build a web crawler and search engine program. It's a very gentle introduction to programming. :)

I'm taking the Web Programming course now, and it's great too, although it assumes you have at least CS101 under your belt.
 
what pdf's/videos can i use to learn python? and what should i learn before i start python?

i am starting from nothing, basically. only know how to navigate a computer and install crap.
 
i'm afraid of using python..i've played with it a little and it's too.. like
i don't understand it
i type 2+2
and it can generate 4
and it's not because of something i did, or some process that makes sense to me
it just works..

i don't really want to use python. i'd rather start with java..

but i don't think that's a good idea.
IDK
 
mariexotoni said:
it just works..

To be perfectly honest, that's the beauty of it. You don't want to have to mess around with messy stuff such as memory management or - worse - accessing CPU registers. There is a huge difference between learning how a computer works on the inside and learning to program.
 
okay. i wish i could just know more about it and why it works like that. but I'm playing with python and those udacity courses :) guess I'm just going to start from here

thanks everyone
 
  • #10
mariexotoni said:
i wish i could just know more about it and why it works like that.

Nothing's stopping you from learning more, of course. :smile: The Wikipedia page on computers should give you a general idea of how things work. Though, if I may make a suggestion, I would only seriously start learning about the underlying physical architecture once you have some programming experience under your belt - preferably in a lower level language such as C. Then, you can get started with assembly (most likely under the x86 architecture, which you're probably using if you have an Intel or AMD processor) and learn exactly how stuff works along the way. (Assembly Langauge Step-by-Step is a particularly good book.)
 
  • #11
I think you will like Udacity! :) Make sure to check out the discussion forums there's a great community of students there.

Java will be more complicated than Python, and even in Java, you will perform the 2 + 2 calculation and not see how it works. I think Python is a good starting language because you can get results quickly without having to make a framework for your program - which is 90% of the programming battle.

Focus on solving some problems, you will learn things along the way and the next steps will become clearer to you. The language you use is not as important as understanding how to take a problem and break it down into something you can program. If you learn Java you will spend more time learning object oriented concepts which are not necessary for basic programming.

Project Euler has a nice list of problems you can try, some are easy, some are hard, see how you go.
 
Back
Top