A little background. I'm a highschool student who has a large interest in programming, it's something I find really fascinating and from the little I have done in comparison to others, I have really enjoyed it. It's something I want to push and make a career out of someday, hopefully programming video games.. Anyway, the school I go to has had less than satisfactory classes in the subject of computer science, mainly classes making use of bare bones basic HTML or game maker for the game design classes. Until recently, I haven't had the means or time to really practice outside of the house, but now I have time, the means, and a lot of enthusiasm. For the past couple of days I've been browsing the internet on a good place to start, something that will give me knowledge and the skills necessary to learn more specific languages like C++, Python, Ruby, etc.
But I have no idea where to start really. I've done a little in ruby, the basic HTML from the classes at school and occasional outside sources, some XNA game studio stuff and that's about it. I've looked for books, videos, but there are so many, I don't know where to begin. So what I'm asking is, do you have suggestions for where I should start? Should I keep going with HTML and then move on to other languages? I hear C is the best place to start, is that true? What will I need to download to do all of this? Please, any help you can give me with this problem would be appreciated, I'm really at a loss/overwhelmed with all of my options.
I know Standford and MIT have free "classes" where they post all the lectures, notes and course work. No credit obviously and it is all self study, but maybe it can give you a good structure to start off with.
From personnel experience, I'd say Python is a great first language. Move on to C and then go for C++. Python will be good at teaching you basics and the whole mentality behind programming. C is what more higher level languages are based on so it will be goot to know it and transition to higher languages. C++ is pretty much C with some Object Oriented stuff thrown in that's very useful to know. C++ is a very populair languge in the industry and from personal experience C++ and Java are extremely similar. I took me about a day to transition from C++ to Java. C++ is a bit more complicated in my opinion but there's alot of stuff like memory management and pointers that's worth knowing about.
I don't really have any books and tutorial to recommend since I did most of my learning In french and most sites and books I've read are in french.
Thanks for the suggestions and advice. I thought Python would be a good place to start, but was dissuaded from it by other opinions. I'm gonna keep looking around, but I have an upperclassmen friend who does a lot with Python, so I could always get help there. @JusticeJanitor: If I wanted to start in Python, what software would I need? What are the ones you use like text editors, compilers, IDEs, etc? Should I learn it using a different operation system, specifically Linux, or can I just stick with Windows 7?
I would start with python (there is a plethora of tutorials and stuff on the main python site). Just because it's easy to understand and start with.
Some people like to say C is the best place to start, but they are wrong. Trying to learn C as your first language is a trial by fire. If you can learn it and understand it then you will probably be able to pick up most other languages, but you most likely wont be able to learn it and be turned off entirely by it. (Not you in particular but in general C is a hard language to learn)
I would first learn python then move onto something like C# (Or Java) due to their ease. Between those two languages you should be able to pick up the basics of programming. Then when you feel more confident in yourself move onto C and maybe C++ (Personally I dislike C++ but it is popular in some parts of the industry)
The most important thing though is to learn the concepts behind programming more than just languages. Try to learn about generic concepts like what loops are, how flow control works, what the point of a function is, what a class is, what an algorithm is, etc. These are concepts that are very useful because they apply to multiple languages and not just one language. It's those concepts that matter the most when it comes to being a good programmer.
It depends on what your ultimate goal is. For example, Web Programming and HTML and Mobile capable games would require a skill set with Modular Cross-platform code that can run in a Virtual Environment (like Java), scripting languages(Javascript), and net code. Traditional programming for videogame consoles and PC's would favor a knowledge of Machine Code, C++, and some knowledge of Computer Science. Keep in mind, a lot of programming languages share or inherit a lot of similar syntax, behaviors, logic and code elements, so learning any well utilized language will help advance your knowledge in the others.
Familiarity with commonly used software programs and scripting languages will help you be hired as a game designer. A lot of the scripting languages in Game Engines look almost exactly like Javascript. In fact, most scripting languages in most programs are analogous to Javascript,.
I definitely agree that you should start with python. It's an easy language to pick up, but it also has a fair amount of depth. I wouldn't bother with anything too fancy for IDEs. Just use notepad++ if you're on windows, gedit if you're on linux. I prefer programming on linux, but windows will probably work fine.
@zeppelinracer: you'll have to install python, obviously, but otherwise I'm guessing you'll be fine. At some point you may want to install some other modules for python, to do specific projects.
Notepad++ is a pretty good text editor that has the basics like syntax highlighting. You can also use IDLE, which is a text editor/IDE that comes with python. Some people have really strong opinions about this stuff, but I usually just stick with the basics.
Someone can probably recommend you a good book for learning- I screwed around for a bit and spent a ton of time doing google searches, but I still have a lot to learn. It's probably best to follow a decent book.
@zeppelinracer: For Python, you can easily stick with Windows 7. For simple stuff I used Python IDLE that you can download at http://www.python.org/ in the download section. It's just a text editor that colours the wording of .py files and run them. I wouldn't call it an IDE for how simple it is but It gets the job done. Personally, I took a Python class in college and that's what I used (and pretty much the rest of the class) for the whole thing I got by just fine. If you want to program C/C++ the best IDE for Windows that's the easiest to install is easily Code::Blocks. It comes with the compiler preinstalled. I prefer to use Eclipse for everything I do but installing a compatible compiler and debugger for it on Windows is a real pain in the ass. I highly suggest installing Ubuntu for some C/C++ programming, it was easy to install for me and it works great. I run Ubuntu 11.04 in a virtual machine when I do some C/C++ programming on my desktop and it works fine. On my laptop, depends on my mood, either I'll use Eclipse on Mac OS (it works awesome) or in Ubuntu in a virtual machine (works equally awesome). Granted, I did most of my C/C++ programming in a Windows XP virtual machine since our professor made a virtual machine with everything preinstalled and preconfigured. I tried to get Eclipse working natively on my Windows 7 desktop, it worked fine for Java but couldn't quite get it to work to our professor's specification for C/C++ and ended up just using the XP virtual machine. I also highly suggest using Eclipse for Java, it will work fine in Windows if you want to program Java with it.
For learning Python, I heard the book "Learning Python The Hard Way" is pretty good despite it's title. If you understand french www.siteduzero.com is absolutely amazing to get a basic understanding of a programming language. It helped me quite a lot
While I agree for the choice of the language of Python as your first, I believe that it is more important to learn the paradigms/styles behind a language.
Why was it created, what is the intended use of the language?
As many languages (there are literally thousands) share the same goals with minor variances in syntax and behavior if your learn a paradigm then you can move between languages fairly easily and know what would be useful for what situations.
As your end goal (as is mine!) is to become a game dev, C++ needs to be learnt at some stage as it is the industry standard. It is similar to Java in that it is Object Oriented (a paradigm), however Java is much easier to learn.
(I might be rambling at this stage, continue if you dare)
Python is a great starting point for teaching you basic program flow (for loops, if statements, etc), and while it can be quite diverse and is used by many will only take you so far.
MAIN POINT: LEARN PARADIGMS
GOOD LUCK
Also try a Linux distro (Ubuntu recomended for a new user), alot of programming comes from that OS, be familar with it.
After speaking with a few friends, I think my plan of action is going to be this: Apparently Linux is awesome, so I'm gonna set up a dual boot on my computer with help from a friend. I'll download all the necessary tools, Python of course, geany as a text editor, and start learning and practicing. Once I have Python down, and have more general programming knowledge, I'll move to something like Java. This plan missing anything? Suggestions?
@zeppelinracer: If you are going to try out python I suggest using Google's Python Class. It's a really good introduction and there are accompanying videos which, imho, made it a lot easier to follow.
@zeppelinracer: Personally I am not a fan of Linux, but it is an easy way to get started with Python and a couple of other languages. I would do as Glouch suggests and install it in a Virtual Machine to avoid all the annoyances of dual booting.
Action Script 3.0 in Adobe Flash could be a place to start as well. Millions of game tutorials you could try out, and I hear it is somewhat close to C++ (Not sure on that though)
But I have no idea where to start really. I've done a little in ruby, the basic HTML from the classes at school and occasional outside sources, some XNA game studio stuff and that's about it. I've looked for books, videos, but there are so many, I don't know where to begin. So what I'm asking is, do you have suggestions for where I should start? Should I keep going with HTML and then move on to other languages? I hear C is the best place to start, is that true? What will I need to download to do all of this? Please, any help you can give me with this problem would be appreciated, I'm really at a loss/overwhelmed with all of my options.
Thanks and always be testing!
I know Standford and MIT have free "classes" where they post all the lectures, notes and course work. No credit obviously and it is all self study, but maybe it can give you a good structure to start off with.
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-science-and-programming-fall-2008/
That is MIT's intro to computer science and programming. I don't know if this is the best place to start, but it can be a start.
Python will be good at teaching you basics and the whole mentality behind programming. C is what more higher level languages are based on so it will be goot to know it and transition to higher languages. C++ is pretty much C with some Object Oriented stuff thrown in that's very useful to know. C++ is a very populair languge in the industry and from personal experience C++ and Java are extremely similar. I took me about a day to transition from C++ to Java. C++ is a bit more complicated in my opinion but there's alot of stuff like memory management and pointers that's worth knowing about.
I don't really have any books and tutorial to recommend since I did most of my learning In french and most sites and books I've read are in french.
Thanks again, always be testing.
I would start with python (there is a plethora of tutorials and stuff on the main python site). Just because it's easy to understand and start with.
Some people like to say C is the best place to start, but they are wrong. Trying to learn C as your first language is a trial by fire. If you can learn it and understand it then you will probably be able to pick up most other languages, but you most likely wont be able to learn it and be turned off entirely by it. (Not you in particular but in general C is a hard language to learn)
I would first learn python then move onto something like C# (Or Java) due to their ease. Between those two languages you should be able to pick up the basics of programming. Then when you feel more confident in yourself move onto C and maybe C++ (Personally I dislike C++ but it is popular in some parts of the industry)
The most important thing though is to learn the concepts behind programming more than just languages. Try to learn about generic concepts like what loops are, how flow control works, what the point of a function is, what a class is, what an algorithm is, etc. These are concepts that are very useful because they apply to multiple languages and not just one language. It's those concepts that matter the most when it comes to being a good programmer.
It depends on what your ultimate goal is. For example, Web Programming and HTML and Mobile capable games would require a skill set with Modular Cross-platform code that can run in a Virtual Environment (like Java), scripting languages(Javascript), and net code. Traditional programming for videogame consoles and PC's would favor a knowledge of Machine Code, C++, and some knowledge of Computer Science. Keep in mind, a lot of programming languages share or inherit a lot of similar syntax, behaviors, logic and code elements, so learning any well utilized language will help advance your knowledge in the others.
Familiarity with commonly used software programs and scripting languages will help you be hired as a game designer. A lot of the scripting languages in Game Engines look almost exactly like Javascript. In fact, most scripting languages in most programs are analogous to Javascript,.
I wouldn't bother with anything too fancy for IDEs. Just use notepad++ if you're on windows, gedit if you're on linux. I prefer programming on linux, but windows will probably work fine.
you'll have to install python, obviously, but otherwise I'm guessing you'll be fine. At some point you may want to install some other modules for python, to do specific projects.
Notepad++ is a pretty good text editor that has the basics like syntax highlighting. You can also use IDLE, which is a text editor/IDE that comes with python. Some people have really strong opinions about this stuff, but I usually just stick with the basics.
Someone can probably recommend you a good book for learning- I screwed around for a bit and spent a ton of time doing google searches, but I still have a lot to learn. It's probably best to follow a decent book.
If I were you I would focus my time learning Java. There are many great tutorials online. Check out the TheNewBoston's channel on youtube.
For Python, you can easily stick with Windows 7. For simple stuff I used Python IDLE that you can download at http://www.python.org/ in the download section. It's just a text editor that colours the wording of .py files and run them. I wouldn't call it an IDE for how simple it is but It gets the job done.
Personally, I took a Python class in college and that's what I used (and pretty much the rest of the class) for the whole thing I got by just fine.
If you want to program C/C++ the best IDE for Windows that's the easiest to install is easily Code::Blocks. It comes with the compiler preinstalled. I prefer to use Eclipse for everything I do but installing a compatible compiler and debugger for it on Windows is a real pain in the ass. I highly suggest installing Ubuntu for some C/C++ programming, it was easy to install for me and it works great.
I run Ubuntu 11.04 in a virtual machine when I do some C/C++ programming on my desktop and it works fine. On my laptop, depends on my mood, either I'll use Eclipse on Mac OS (it works awesome) or in Ubuntu in a virtual machine (works equally awesome).
Granted, I did most of my C/C++ programming in a Windows XP virtual machine since our professor made a virtual machine with everything preinstalled and preconfigured. I tried to get Eclipse working natively on my Windows 7 desktop, it worked fine for Java but couldn't quite get it to work to our professor's specification for C/C++ and ended up just using the XP virtual machine.
I also highly suggest using Eclipse for Java, it will work fine in Windows if you want to program Java with it.
For learning Python, I heard the book "Learning Python The Hard Way" is pretty good despite it's title.
If you understand french www.siteduzero.com is absolutely amazing to get a basic understanding of a programming language. It helped me quite a lot
While I agree for the choice of the language of Python as your first, I believe that it is more important to learn the paradigms/styles behind a language.
Why was it created, what is the intended use of the language?
As many languages (there are literally thousands) share the same goals with minor variances in syntax and behavior if your learn a paradigm then you can move between languages fairly easily and know what would be useful for what situations.
As your end goal (as is mine!) is to become a game dev, C++ needs to be learnt at some stage as it is the industry standard. It is similar to Java in that it is Object Oriented (a paradigm), however Java is much easier to learn.
(I might be rambling at this stage, continue if you dare)
Python is a great starting point for teaching you basic program flow (for loops, if statements, etc), and while it can be quite diverse and is used by many will only take you so far.
MAIN POINT: LEARN PARADIGMS
GOOD LUCK
Also try a Linux distro (Ubuntu recomended for a new user), alot of programming comes from that OS, be familar with it.
MOST IMPORTANT: Have Fun!
I think that going straight into java isn't a bad idea. I started java at uni without ever doing any programming before and didn't have a problem.
If you are going to try out python I suggest using Google's Python Class.
It's a really good introduction and there are accompanying videos which, imho, made it a lot easier to follow.
sounds good. If you don't want to bother dual booting, you can download virtualbox and run your linux distro in a virtual machine.
@zeppelinracer: Personally I am not a fan of Linux, but it is an easy way to get started with Python and a couple of other languages. I would do as Glouch suggests and install it in a Virtual Machine to avoid all the annoyances of dual booting.
http://www.amazon.com/Learn-Program-Second-Facets-Ruby/dp/1934356360/ref=sr_1_1?ie=UTF8&qid=1313349678&sr=8-1
Learn to Program by Chris Pine, one of the best introductory programming books. The book assumes no prior programming knowledge, whatsover.
Heh I remember using that book for learning Ruby. Here's a link to the online version:
http://pine.fm/LearnToProgram/
Action Script 3.0 in Adobe Flash could be a place to start as well. Millions of game tutorials you could try out, and I hear it is somewhat close to C++ (Not sure on that though)