Teaching myself computer programming Where should I start?

Click For Summary

Discussion Overview

The thread discusses the best approach for self-teaching computer programming, focusing on language selection, learning resources, and foundational concepts. Participants share their experiences and recommendations regarding various programming languages, particularly Python, Java, and lower-level languages.

Discussion Character

  • Exploratory
  • Technical explanation
  • Debate/contested
  • Homework-related

Main Points Raised

  • Some participants suggest starting with Python due to its ease of learning and versatility, while others mention Java or C++ as alternatives.
  • One participant emphasizes the importance of having a specific goal in mind when choosing a programming language.
  • Another participant outlines the pros and cons of various languages, noting that while Python allows for quick results, it may not provide a deep understanding of programming concepts.
  • Some express concerns about the abstraction in Python, feeling that it lacks transparency in how operations are performed.
  • There are mentions of online courses, such as those from Udacity, which offer structured learning paths for beginners.
  • One participant highlights the value of understanding lower-level programming languages like Assembly for a deeper grasp of how computers work, suggesting a progression from higher-level languages to lower-level ones.
  • Participants discuss the balance between learning programming concepts and the underlying architecture of computers, with some advocating for starting with programming before delving into hardware details.

Areas of Agreement / Disagreement

Participants generally agree that Python is a suitable starting point for beginners, but there is disagreement regarding the best language to start with, as some prefer Java or other languages. The discussion remains unresolved on the optimal learning path and the balance between high-level and low-level programming knowledge.

Contextual Notes

Some participants express uncertainty about their understanding of programming concepts and the workings of programming languages, indicating a need for foundational knowledge before advancing to more complex topics.

Who May Find This Useful

Individuals interested in self-teaching programming, particularly beginners exploring language options and learning resources.

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 language 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.
 

Similar threads

  • · Replies 102 ·
4
Replies
102
Views
4K
  • · Replies 17 ·
Replies
17
Views
5K
  • · Replies 15 ·
Replies
15
Views
4K
  • Sticky
  • · Replies 13 ·
Replies
13
Views
8K
Replies
16
Views
3K
  • · Replies 11 ·
Replies
11
Views
3K
  • · Replies 3 ·
Replies
3
Views
1K
  • · Replies 8 ·
Replies
8
Views
1K
  • · Replies 6 ·
Replies
6
Views
4K
  • · Replies 11 ·
Replies
11
Views
1K