Just a friendly question about where I should start if I want to learn programming?
My goal is to program small things for, for example the source engine. Any quick guidance?
Thanks
[QUOTE=Fearlezz;36184231]Just a friendly question about where I should start if I want to learn programming?
My goal is to program small things for, for example the source engine. Any quick guidance?
Thanks[/QUOTE]
If you want to work with Source, then you'll need to learn C++. I can't say I'd recommend Source as your introduction to programming, but in the end it's up to you to find out what works best for you. Personally I'd recommend picking something like C++, C#, Java, Python, Lua, or any one of the other hundreds of thousands of languages, and finding a beginner's guide either in a book, on the internet or in video form. It doesn't matter too much what you start with, once you've learned one language to a certain extent, you'll find it fairly trivial to learn to use a lot of other languages.
Thanks for your respone mate. I will look into youtube tutorials. Are there any specific sets of tutorials that are really good and covers the most important stuff? Any good youtubers?
You're best off buying a book - online tutorials are usually great for teaching the basic concepts but will only take you so far. A good book will actually teach you how to be a good programmer, not just a programmer. You'd learn WHY things work the way they do, and what is really going on and why you're typing each specific line, as opposed to knowing WHAT to type to get what you want but not really knowing what exactly is going on
A good starting language is probably C#. Contrary to what elitists may tell you, Microsoft Visual Studio is actually an excellent piece of software and C# is a perfect balance of difficulty, performance and possibilities. From there you could go to higher level languages, or if you prefer, the other way with embedded systems and low level languages. C# is also rather similar to Java in a lot of ways, but I don't have enough experience with it to recommend it or....well, not
As for a book? I couldn't tell you if this is the best in the world, but it certainly is very good in my opinion. He explains everything well, and uses a variety of examples to illustrate points. He also goes into different memory types and touches on some advanced topics. Should be a good starting place! [url]http://www.amazon.co.uk/Beginning-3-0-Introduction-Oriented-Programming/dp/0470261293[/url]
C++ and C# get my vote. There are plenty of development environments for the former, and the latter is pretty easy and versatile. They're similar enough, powerful enough, and have all the fundamental workings that other languages use.
I too would say go the book route, I have a few at home but I'm not at home so I can't help you, but there are good books on how to begin coding, how to optimize your code (readability, cutting out redundant code, etc), memory management, standardization and reusability, which are all very, very important things when you start undertaking huge projects.
i found something nice on a site that i thought was a good point:
[quote=http://www.norvig.com/21-days.html]
Language Choice
Several people have asked what programming language they should learn first. There is no one answer, but consider these points:
Use your friends. When asked "what operating system should I use, Windows, Unix, or Mac?", my answer is usually: "use whatever your friends use." The advantage you get from learning from your friends will offset any intrinsic difference between OS, or between programming languages. Also consider your future friends: the community of programmers that you will be a part of if you continue. Does your chosen language have a large growing community or a small dying one? Are there books, web sites, and online forums to get answers from? Do you like the people in those forums?
Keep it simple. Programming languages such as C++ and Java are designed for professional development by large teams of experienced programmers who are concerned about the run-time efficiency of their code. As a result, these languages have complicated parts designed for these circumstances. You're concerned with learning to program. You don't need that complication. You want a language that was designed to be easy to learn and remember by a single new programmer.
Play. Which way would you rather learn to play the piano: the normal, interactive way, in which you hear each note as soon as you hit a key, or "batch" mode, in which you only hear the notes after you finish a whole song? Clearly, interactive mode makes learning easier for the piano, and also for programming. Insist on a language with an interactive mode and use it.
Given these criteria, my recommendations for a first programming language would be Python
[/quote]
If you want to get an actual understanding of whats happening, start with C and then move to C++.
If you want to just be usefull as fast as possible start with C++.
For books look at Accelerated C++, this starts you off with actually doing stuff and then teaches you why it work the way it does. Which I liked alot more then vice versa.
Visual studio is nice, if ou want a good free alternative I reccomend codeblocks.
And for the OS I have to say that linux made my coding life a shitload easier, but you might wanna get the basics down in windows before you move to that.
I would start by [URL="http://www.gamefromscratch.com/post/2011/08/04/I-want-to-be-a-game-developer.aspx"]reading this guide.[/URL] It covers the most common game development languages, the tools, libraries and learning resources for each. It is by no means comprehensive, as beyond that are languages like LUA, JavaScript/HTML5, ActionScript, etc... but it does cover the most common ones.
Source Engine is programmed and modded using C++, but I wouldn't start programming with C++. When you are just starting out programming, you have enough to worry about, you don't need to throw a complex build environment, outdated linker and piss poor library on top of that list! Learn the basics in just about any language ( I will further endorse C# ), *THEN* come back to C++ if you really feel the need.
One tip: Choose a language and [B]stick with it[/B] otherwise you will jump between languages and will never accomplish anything.
Don't end up like me.
For god sakes don't start with something like thenewboston. He makes videos for the money, its the reason he uses youtube and makes like 5 minute long videos. It's to make money from his partner account.
You're best starting with a book, a language with good documentation, and the mindset to keep working through all the problems you encounter.
[QUOTE=taipan;36201884]if ou want a good free alternative I reccomend codeblocks.
And for the OS I have to say that linux made my coding life a shitload easier, but you might wanna get the basics down in windows before you move to that.[/QUOTE]
Visual Studio Express is free. Also the stuff you get with the pricy packages would only confuse a begginner not helping things one iota.
I think that Mehran Sahami, who teaches computer science at Stanford is one of the best resources you can find on Youtube to aid you in learning how to code. Stanford uploaded his lectures on programming methodology, in which he uses Java to teach absolute beginners how to code:
[url]http://www.youtube.com/view_play_list?p=84A56BC7F4A1F852[/url]
[editline]6th June 2012[/editline]
[QUOTE=flayne;36213303]Visual Studio Express is free. Also the stuff you get with the pricy packages would only confuse a begginner not helping things one iota.[/QUOTE]
Why would anyone in their right mind want to learn the abomination that is visual basic :/ (unless you're referring to visual C++)
[QUOTE=Speedfalcon;36225117]I think that Mehran Sahami, who teaches computer science at Stanford is one of the best resources you can find on Youtube to aid you in learning how to code. Stanford uploaded his lectures on programming methodology, in which he uses Java to teach absolute beginners how to code:
[url]http://www.youtube.com/view_play_list?p=84A56BC7F4A1F852[/url]
[editline]6th June 2012[/editline]
Why would anyone in their right mind want to learn the abomination that is visual basic :/ (unless you're referring to visual C++)[/QUOTE]
Yes Visual C++. DEAR GOD BASIC. I thought that was understood since the person I quoted was talking about C++.
You might look [url=http://qink.net/page/The-Ultimate-List-of-Freely-Available-Programming-Books.aspx]here[/url] for a lot of free, online books covering enough languages, api's and concepts than you will probably have time to read. I personally recommend ProgrammingGroundUp to get started into assembly; I understand it may not be the most useful language to learn if you want to see immediate results but I got a much better understanding of what a language really is from reading and going through all of the exercises (I might even go back through it as I've forgotten a lot of the actual assembly). I also feel like it is healthy to work in assembly for long enough to see the true value in a higher level language: managing memory in C doesn't sound quite as intimidating when you have to try your hand at writing a memory management system for yourself in assembly.
I'm currently working through [url=http://math.hws.edu/javanotes/index.html]this book on java[/url] and it is really easy to get started into and follow. I was able to write checkers as a side project after only the first five chapters (I used it as an exercise in OO programming, a topic which this book only introduces after covering more procedural techniques)
It even has quite a few books on programming related topics, like Linux and Vi(m) and at the very least you can figure out which languages you aren't as interested in learning :v:
From my personal experience the advice i would give is to poke around a few, feel which one you like the most and just try to learn that. If you don't like it or feel that you want to change language just do it. Once you've learnt programming concepts it's KIND OF easy to switch between languages.
I might as well throw in my two cents because this is what worked, and is working, for me.
First off, learn Javascript. This is the easiest "programming" language you will learn. While it isn't exactly programming, more-so scripting, it will teach you many of the basic concepts about programming. Learning Javascript will also require that you learn some basic HTML. I suggest using [url]http://w3schools.com/[/url] to get started. Go through the HTML and HTML5 sections, then move onto the Javascript section. I would also recommend looking through the CSS section, not all that important though.
Once you have a good understanding of how Javascript works, move onto this book: [url]http://www.packtpub.com/html5-games-development-using-css-javascript-beginners-guide/book[/url] It will give you some great experience in making some basic, browser-based games. I highly recommend taking your time through the pong game, and then go back and improve the game yourself once you finish the chapter. You can check out what I did with their pong game here: [url]http://code.google.com/p/pong-redux/source/browse/#git%2Fjs[/url] Just please note that my version is not the best example of good coding practices, but it just gives you an idea of what you can do from the book's example. (FYI you don't have to finish the book, but I highly recommend going through at least the first couple chapters.)
After you've gone through all that, with the foundation of Javascript under your belt its time to learn C#. C# is by far one of the easiest to learn main programming language. Many of the concepts you learned from Javascript will help you immensely here, and C# is an extremely powerful language. To start, I highly, highly, highly, highly (did I say highly?), highly recommend watching this video series on C#: [url]http://www.lynda.com/Visual-Studio-2010-tutorials/C-Essential-Training/83789-2.html[/url] Start a free trial on Lynda, and WATCH THESE VIDEOS! The person gives you a very easy to follow walkthrough of C#. He will also make many references to Javascript along the way, so you should feel right at home. After that, I suggest just spending some time in Visual Studio making console apps to flex your C# knowledge.
Now that you have some good C# knowledge, its time to put that to use making some games. This book: [url]http://www.packtpub.com/xna-4-0-game-development-by-example-beginners-guide/book[/url] will give you an easy to follow, in depth guide of how to make 2D games in C#. Much of the knowledge you will gain from this book is invaluable; I cannot recommend this book enough!
I know you may be wondering, "When do I get to making cool 3D games?" Understand this, jumping right into making 3D games is one of the most foolish mistakes you could make at this point. It is imperative to have a strong background in coding knowledge and 2D games before you jump into 3D if you don't want to be completely lost. Now I'm not saying it can't be done, but getting a foundation first is much wiser.
Once you have gone through what I described above, where you go on from there is up to you. You could learn Java, start making some 3D games, learn C++ (my recommendation), but in the end its your choice. I really hope this helps you, and I wish you luck in your coding ventures! :)
[QUOTE=ryansworld10;36273699]stuff about html[/QUOTE]
i'd recommend [URL="http://htmldog.com/"]htmldog[/URL] over W3schools
[QUOTE=frankie penis;36274576]i'd recommend [URL="http://htmldog.com/"]htmldog[/URL] over W3schools[/QUOTE]
You can do that too, but I found it easier to learn both HTML and Javascript from the same place.
[QUOTE=ryansworld10;36273699]
I know you may be wondering, "When do I get to making cool 3D games?" Understand this, jumping right into making 3D games is one of the most foolish mistakes you could make at this point. It is imperative to have a strong background in coding knowledge and 2D games before you jump into 3D if you don't want to be completely lost. Now I'm not saying it can't be done, but getting a foundation first is much wiser.[/quote]
And not to mention Linear Algebra knowledge is required for understanding how the 3D environments works.
[QUOTE=ryansworld10;36273699]It is imperative to have a strong background in coding knowledge and 2D games before you jump into 3D if you don't want to be completely lost.[/QUOTE]
I never did a 2D game before jumping into 3D. But, you know, if you start working on a 3D game you probably won't get anywhere because of how much content you have to author to make a full 3D game.
Arguably, there's nothing 2D teaches you to really prepare you for 3D.
[QUOTE=ROBO_DONUT;36279792]I never did a 2D game before jumping into 3D. But, you know, if you start working on a 3D game you probably won't get anywhere because of how much content you have to author to make a full 3D game.
Arguably, there's nothing 2D teaches you to really prepare you for 3D.[/QUOTE]
What it will teach you is the basic concepts of how games work. Its much easier to learn this in 2D because you can actually make some decent 2D games without the large amount of work required for 3D.
But if you wanna be technical, then no it doesn't teach you anything you can't learn from 3D. :P
[QUOTE=ryansworld10;36273699]Post about coding[/QUOTE]
Why would you use C# for 2d games then move on to Java for 3d? This doesn't make any sense to me. Also, I wouldn't bother with web development as a start for programming because they don't have that much in common/use completely different strategies. However, the main idea of your post stands:
- first learn how to make simple console applications
- then move onto GUI applications ("Swing" in java is good)
- then make 2d visual applications (2d games, simulations and whatnot)
- then move on to 3d (if you want) with a fast language like C++
[editline]11th June 2012[/editline]
[QUOTE=ROBO_DONUT;36279792]I never did a 2D game before jumping into 3D. But, you know, if you start working on a 3D game you probably won't get anywhere because of how much content you have to author to make a full 3D game.
[b]Arguably, there's nothing 2D teaches you to really prepare you for 3D.[/b][/QUOTE]
what about:
- Buffer strategies, double, triple buffering
- Translating, Rotating push/pop.
- Trigonometry
- use of coordinates + dx,dy
- converting vector coordinates into polar coordinates
- collision detection, simple physics
- mouse and keyboard input
[QUOTE=Speedfalcon;36289626]Why would you use C# for 2d games then move on to Java for 3d? This doesn't make any sense to me. Also, I wouldn't bother with web development as a start for programming because they don't have that much in common/use completely different strategies. However, the main idea of your post stands:
- first learn how to make simple console applications
- then move onto GUI applications ("Swing" in java is good)
- then make 2d visual applications (2d games, simulations and whatnot)
- then move on to 3d (if you want) with a fast language like C++
[/QUOTE]
I wasn't saying move onto Java for 3d, but either way C# and Java are very similar in many ways. As for the web development, I was only suggesting learning a bit of HTML so you could learn Javascript (the focus is on JS). The Javascript part is pretty optional I guess you could say, but I just found it to work for me.
Your summary of my post is pretty spot on.
I also feel like it is healthy to work in assembly for [url]http://www.mensbelt-wallets.com/[/url] long enough to see the true value in a higher level language: managing memory in C doesn't sound quite as intimidating when you have to try your hand at writing a memory management system for yourself in assembly.
[url]http://www.youtube.com/user/buywholesale2004/[/url]
Sorry, you need to Log In to post a reply to this thread.