New to programming...

blahblahblah

Newbie
Joined
Nov 16, 2003
Messages
5,036
Reaction score
0
Hi, I am curious about learning a programming language. But, the problem is, I am a uber-newb when it comes to programming so I am a little bit clueless on certain areas. But I have done a little bit of research. I think I want to start of with C++ route with coding (so I can play around with HL2 when it comes out).

- I've read that Microsoft VISUAL C++ .NET STANDARD 2003 is the best program out there. Is that the only program I need to start coding?

- Somebody tell me a good book or online tutorial that gives me a good starting place?

- Could somebody give me a general idea of how long it will take before I become "decent/competent" at programming? 1 Year? 2 Years? 3 Years? Just would like to have a ballpark estimate.

- Besides playing around with HL2, I would like to make actual use my coding skills by making dinky little programs on my computer. Do I need some sort of paint program to do the interface (ie graphics)? Sorry, I am an uber-newb when it comes to creating/making programs. If so, could you suggest a decent program (knowing that I cant afford photoshop) so I could do that?

Thanks
 
blahblahblah said:
- I've read that Microsoft VISUAL C++ .NET STANDARD 2003 is the best program out there. Is that the only program I need to start coding?

As far as Microsoft Visual Studio .NET being the best, that is a matter of personal opinion more than anything. I personally prefer to use Microsoft Visual C++ 6.0. There is a free introductory edition of MSVC++ 6, but it only seems to come with books (if you'd like it, PM me). .NET is going to cost a lot of money. There are free alternatives however. If you are looking for an IDE (integrated development environment) there is Dev C++ (which you can find here. If you don't want an IDE (or you don't like the compiler supplied with DEV C++), you can download the Microsoft Visual C++ Toolkit 2003 (which comes with a command line compiler and linker) here. One warning though if you choose to use MSVC++ intro edition. Whatever programs you compile with it must display a small Message Box that states how everything was built with the Intro edition, and cannot be redistributed. This normally isn't a problem, but when building something like a DLL (as is the case when you create a mod for Half-Life) it will freeze everything up. There are workarounds to this however (mixing the free .NET compile tools I mentioned earlier with the MSVC++ IDE is one), but it can be a bit of a hassle your first time through.

blahblahblah said:
- Somebody tell me a good book or online tutorial that gives me a good starting place?

As for online starting places I would suggest this site. It's a good starting point. Book wise, I started with Visual C++ 6.0 for Dummies. I highly recommend against this book, or any book in this series (no Sams Teach Yourself C++ in 21 Days books either). However I do suggest picking up a copy of Beginning Visual C++ 6.0, written by Ivan Horton. It explains all the intricacies of the language very well, and moves on to explain the MSVC++ 6 IDE as well. I think the key here though is once you get the language down (it won't take a really long time to get the basics), move away from the standard text book style excersies, and apply programming to something you love (in this case games). I suggest heading over to NeHe's site which you'll find here and also GameDev.net which you'll find here when you've got the basics of the language down. Trust me, if you go through all the NeHe tutorials (and I mean really go through them), and you use the resources at GameDev, you'll be in good shape.
blahblahblah said:
- Could somebody give me a general idea of how long it will take before I become "decent/competent" at programming? 1 Year? 2 Years? 3 Years? Just would like to have a ballpark estimate.
Well it's really pretty tough to give you an estimate in regards to time. If you work at it you should have the language down to the point that things in the Half-Life SDK make some sense, and the tutorials at NeHe's site don't look like they were written in Greek within a couple of months. However, there is a lot to learn beyond just the language, and I mean a lot. These are the things that take a while to learn, and a long time (with LOTS of work) to master. You should be on your feet within a couple of months with the language. After that, the length of time it takes for you to become a compotent programmer in whichever field you choose depends on what things you decide to focus on.
blahblahblah said:
- Besides playing around with HL2, I would like to make actual use my coding skills by making dinky little programs on my computer. Do I need some sort of paint program to do the interface (ie graphics)? Sorry, I am an uber-newb when it comes to creating/making programs. If so, could you suggest a decent program (knowing that I cant afford photoshop) so I could do that?
I'm guessing you are talking about creating program resources (ie. custom icons, menus, etc). For those you are in luck. MSVC++ comes with a resource editor which allows you to build your own custom menus, icons and whatever other custom UI components you'd need. However if you are talking about getting really creative (ie. Creating a totally custom interface for a game, a HUD, etc.) you will need to create your graphics in something like photoshop (not to mention you'll need to write lots of custom UI code). I'm guessing you were talking about the first scenario though. If you weren't, don't even worry about it right now. It will be a very long while before you are able to put together a custom GUI for a game.

I hope I helped you out there. If you have any question just PM me :)
 
You may want to look into some O'Reilly books, they tend to be very high quality.

C++ in a Nutshell
C++ Pocket Reference
C++: The Core Language
Practical C++ Programming, 2nd Edition
STL Pocket Reference

(all from http://cprog.oreilly.com/ )

You should probably get acquainted with http://msdn.microsoft.com/library/default.asp. Using the navigation bar on the left... follow this path -> ".Net Development" -> "Visual Studio .Net" -> "Product Documentation" -> "Visual C++" -> "Reference"... You'll find the "Visual C++ Libraries" section very usefull if you do use end up using a version of MSVC++ and you'll find the "C/C++ Languages" section usefull regardless of compiler.


Two resources when you're ready for more advanced topics:

When you do want to start doing graphics programming trying nehe.gamedev.net, they have a lot of nice tutorials on using OpenGL, but you probably won't be ready for them for awhile.

After you're a confident with intermediate programming I would suggest you get "Introduction to Algorithms, Second Edition", publishd by McGraw Hill / MIT Press. http://mitpress.mit.edu/algorithms/.
 
Also, you might want to read a book or something on good OO programming (maybe they're covered in those C++ books, but its still worth reading pure OO-stuff).
 
Well, I decided to go with MSVC++.Net. It was only $55 for an academic version and I thought it was a great price. (I ordered it through newegg).

Thank-you ansur and akrin for your recommendations on books and sources. I will be sure to check them out.
 
blahblahblah said:
Hi, I am curious about learning a programming language. But, the problem is, I am a uber-newb when it comes to programming so I am a little bit clueless on certain areas. But I have done a little bit of research. I think I want to start of with C++ route with coding (so I can play around with HL2 when it comes out).

- I've read that Microsoft VISUAL C++ .NET STANDARD 2003 is the best program out there. Is that the only program I need to start coding?

- Somebody tell me a good book or online tutorial that gives me a good starting place?

- Could somebody give me a general idea of how long it will take before I become "decent/competent" at programming? 1 Year? 2 Years? 3 Years? Just would like to have a ballpark estimate.

- Besides playing around with HL2, I would like to make actual use my coding skills by making dinky little programs on my computer. Do I need some sort of paint program to do the interface (ie graphics)? Sorry, I am an uber-newb when it comes to creating/making programs. If so, could you suggest a decent program (knowing that I cant afford photoshop) so I could do that?

Thanks


i suggest u to start off with half-life sdk which is available for free.
half-life might be an old game with an old engine.but there are lot to learn from this beautiful engine.
 
"i suggest u to start off with half-life sdk which is available for free"
no no no! I did that, and it led to me eventually having to go straight to the near-start of learning c++. Do some c++ tutorials, make a few programs, games are always fun. Do that and you'll find hl modding a lot easier.

As for your questions, i use Visual Studio .NET 2003 and love it. Expensive though. You can grab the free microsoft command line compiler (see http://articles.thewavelength.net/218/ ) but i like the ide :)

As for graphics, paintshop pro is a pretty good alternative to photoshop. It's cheaper, and has a 30 day trial. www.jasc.com for that

good luck :)
 
I use Visual C++ 6 standard edition. Seems to do just about everything I want it to do, it cost $100 (not sure how much it costs now, I bought it a whilleeee ago). Definately worth it.
 
Thanks for all your help.

I never knew there where so many microsoft compilers and IDE's. :x

It is way harder than I thought to buy a tutorial book for MSVC++.Net. I literally bought a book titled "Microsoft Visual C++ .Net Step by Step, Version 2003" only to go home and realize the book was written for Microsoft Visual Studio 2003. :|
 
blahblahblah said:
Well, I decided to go with MSVC++.Net. It was only $55 for an academic version and I thought it was a great price. (I ordered it through newegg)..
So buying a book for this version isn't the right way ? :)
 
blahblahblah said:
Thanks for all your help.

I never knew there where so many microsoft compilers and IDE's. :x

It is way harder than I thought to buy a tutorial book for MSVC++.Net. I literally bought a book titled "Microsoft Visual C++ .Net Step by Step, Version 2003" only to go home and realize the book was written for Microsoft Visual Studio 2003. :|

yay, I am replying to my own post. :dork:

Apparently, Visual Studio is part of MSVC++.NET, so that book is for me. Go figure.

I also picked up Ivor Horton's Beginning ANSI C++: The complete Language. I bought it to help fill me in on things that "MSVC++.Net step by step" doesn't cover.

Now I have to wait 2 more days till MSVC++.Net arrives in the mail. Woohoo.
 
I learned all the stuff except for OO programming (classes and the like) from the Wrox press tutorial (a help file) which came with MSVC++ 6. It's well written but pretty basic. So I now consider myself to have a reasonable grasp of C (which is basically C++ without all the OO bits). The Wrox tutorial did cover classes and OO, but I found it a bit lacking in this area and still don't understand them too well. You could (probably) write more about OO then the rest of C++ put together, but the Wrox tutorial tried to cram all this into the final 3 chapters :bonce:
If you have ever looked at the SDK source code for HL1, you will find that classes are heavily used (the game code it built around them), so to learn OO I think I will stop being a cheapskate and shell out for a decent book.
 
blahblahblah said:
yay, I am replying to my own post. :dork:

Apparently, Visual Studio is part of MSVC++.NET, so that book is for me. Go figure.

I also picked up Ivor Horton's Beginning ANSI C++: The complete Language. I bought it to help fill me in on things that "MSVC++.Net step by step" doesn't cover.

Now I have to wait 2 more days till MSVC++.Net arrives in the mail. Woohoo.
It might be a bit weird though, mixing 'pure' ANSI C++ with vs.net C++ :)
vs.net is 'enhanced' with some MS stuff, like managed classes, garbage collector and .net functions, while ANSI C++ makes you do some things manually. This might be confusing in the beginning, though it would be nice should you be able to learn both ways!
 
What's everyone's take on Microsoft's C#? Can or will that be used for game development down the road? If you were just starting out, would it be better to start with C# or do you see that as primarily business driven and game development will stay in C++ for the foreseeable future?
 
I think C++ will stay the primary language for game programming for a while.
Once Windows longhorn is released, developers will probably switch to C++.NET (now: C++ v6).
Naturally, C# may be used to develop a game, and maybe once the .NET runtime will be included with the OS (again: longhorn) it might become more popular because its a 'real' .NET language.
Ofcourse, these are just some speculations :)
 
YoAzz said:
What's everyone's take on Microsoft's C#? Can or will that be used for game development down the road? If you were just starting out, would it be better to start with C# or do you see that as primarily business driven and game development will stay in C++ for the foreseeable future?

C# is a giant steaming pile of crap. If there is a God, C# will only ever be used for RAD (rapid application developement) developement of things like Office and other relatively simple 2D applications. Since Office and other MS products are already insanely bloated, nobody will notice that C# has made them take up even more system memory. If there is no God, then we'll have games with exe file sizes of 100k, but they will take up 2 gigs of ram, look like quake 2, and run at about 10 frames per second on a high end machine.

In case you didn't get the point. C# is an incredibly bloated language. It's not as powerful as C++. It's proprietary, which means MS owns it. And there's no way in hell that any respectable game development company would EVER use it to make a game. In conclusion, learn C++, don't bother with C#.
 
bias

Cyanide said:
C# is a giant steaming pile of crap. If there is a God, C# will only ever be used for RAD (rapid application developement) developement of things like Office and other relatively simple 2D applications. Since Office and other MS products are already insanely bloated, nobody will notice that C# has made them take up even more system memory. If there is no God, then we'll have games with exe file sizes of 100k, but they will take up 2 gigs of ram, look like quake 2, and run at about 10 frames per second on a high end machine.

In case you didn't get the point. C# is an incredibly bloated language. It's not as powerful as C++. It's proprietary, which means MS owns it. And there's no way in hell that any respectable game development company would EVER use it to make a game. In conclusion, learn C++, don't bother with C#.

I probably will go with C++, though you seem to have an ABM bias. Do you feel the same about Java?
 
C# sharp is already used in the game development its mainly used for tools development. But i reckon give it time and it will become quite a respected language.

Once you've learnt C++ learning C# is quite darn easy to switch too.
 
Tools, I don't so much care about. But C# is so bloated and so inefficient that you'd never write the core of a game engine with it. I'd like to see some evidence of its use for tools anyway, because I've not heard anything about that.

C# has its place, but its place is not complex game engine developement. It's easy to learn, and quick for developing UI based tools. But it just doesn't weild the power and efficiency that C++ does. In developing a game engine, squeezing every last clock cycle out of the system is all important for topping the competition. If it didn't take forever, and if there were more people who knew it well, game engines would probably be done in assembly where possible, instead of c++.

And no, I like Java. Java is great for developing cross platform applications. It's another language that you wouldn't use to create a complex 3D game. But it has its place. If you aren't conserned with getting as much performance as possible out of your app, then Java is a good way to go. The garbage collector is definately a huge help. There's no counting how many hours C++ programmers spend hunting memory leaks, which don't happen in languages like Java. But, it definately eats clock cycles and therefore, the same app written in C++ would run faster on the same machine.
 
Ansur said:
It might be a bit weird though, mixing 'pure' ANSI C++ with vs.net C++ :)
vs.net is 'enhanced' with some MS stuff, like managed classes, garbage collector and .net functions, while ANSI C++ makes you do some things manually. This might be confusing in the beginning, though it would be nice should you be able to learn both ways!

VC++.NET has great ISO C++ support (especially over VC++ 6.0).

Using VC++.NET does not force you to use Managed C++, so you don't need to use any managed stuff (GC, .NET Framework).

Using Unmanaged C++ your code will get compiled to machine code, whereas with Managed C++ it's compiled to MSIL.

Ansur said:
Once Windows longhorn is released, developers will probably switch to C++.NET (now: C++ v6).

I think, TBH most developers wouldn't bother with Managed C++, they don't get any of the speed benefits of native ISO C++ (because managed gets compiled to MSIL - same as C#), and they still lose out because they are using a huge, bloated, mess of a language.

I think if anyone decides to go to a managed language, they'll choice C#, because it's a pleasure to work with.
 
Oh man Cyanide take of those linux fanboy glasses.

www.igda.org check out the threads about c# and you will see many people from the industry saying they use c# for tools. People i've spoken too in the industry c# is perfect for tools development its fast for development and while it isnt the fastest language around you don't need bleeding edge speed for tools.

And at the moment they have ported quake 2 for c# and added some extra features and have got about %90 of the performance.

Now i belive like with most MS products you've got to give it time for it's full potential too shine. Because let's not forget MS are gonna be putting alot of money and effort into c# because they are going to be using it for longhorn and probably apps like office etc etc.(waits for the eewww longhorn is gonna be bloated and crap because its microsoft ewww)

Bottom line: While C# isn't the language you want to be developing you'r next 3d engine on though there are exceptions http://axiomengine.sourceforge.net/

It will get more powerfull and as clock speeds and graphics cards powers increase then the language you use to develop on will be less of a hassle.
 
Oh man Cyanide take of those linux fanboy glasses.

Please point out to me where I said anything about linux. I'd like to see it. Perhaps I'm halucinating and just can't see where I said something about linux in my previous posts. If you think i'm a linux fanboy, here, i'll say some bad stuff about linux.

The UI's are bloated, non-standardized, overly convoluted pieces of crap.

Xwindows is ancient junk that should have been eliminated years ago.

It sucks bad for gamming.

The only reason it doesn't suffer from as many viruses as windows is because many virus writers are linux fanboys.

www.igda.org check out the threads about c# and you will see many people from the industry saying they use c# for tools. People i've spoken too in the industry c# is perfect for tools development its fast for development and while it isnt the fastest language around you don't need bleeding edge speed for tools.

Ok, all I asked for was evidence of it. I've never seen anything about using C# for tools. I also never said it was a big problem or that it would be horrible for making tools, so no need to get all defensive.

And at the moment they have ported quake 2 for c# and added some extra features and have got about %90 of the performance.

That's nice, but nobody is going to sacrafice 10% performance just to use C#.

Now i belive like with most MS products you've got to give it time for it's full potential too shine. Because let's not forget MS are gonna be putting alot of money and effort into c# because they are going to be using it for longhorn and probably apps like office etc etc.(waits for the eewww longhorn is gonna be bloated and crap because its microsoft ewww)

Have you seen the requirements for longhorn? Have you seen the alpha? It looks nice, but it definately is a resource hog. Of course, if you don't mine your shell taking up an insane amount of ram while you're not even using it, then it's not a problem.

It will get more powerfull and as clock speeds and graphics cards powers increase then the language you use to develop on will be less of a hassle.

No, it will not get more powerful as PC performance increases. C++ will still be more efficient and get better performance, unless they change the fundemental structure of C#.
 
The only reason i came out with the linux fanboy remark is because you sure do sound like one(plus ive had to sift thrrough fanboy crap all day) :p

The only reason i felt compelled to reply to this thread was your attitude that c# is useless for anything game related and that its just wrong.

I gave you evidence of tools on the IGDA

The point of the quake example is you can "port" and i tell you what for being able to code 1.5 times faster then c++ i would sacrafice %10 in a professional setting. For actually getting the product out the door. But it also depends on what sort of project i was working on.

Yes i have seen the alpha(thats a memory leak in the winfs filesystem turn it off and you get a massive increase) and yes i have seen the predicted requirements for longhorn i also saw the predicted requirements for XP aswell ;)

http://axiomengine.sourceforge.net/ <-- meant to be good c# engine based of the ogre engine which is a great opensource engine havent seen any direct performance comparisons.

The point of my postings is not to drop c++ for c# it was to point out not to discount c# in the longterm either.

Leaving thought before i goto sleep C++ is only as powerfull as the programmer using it if you code crap in C++ it's going to be crap. C++ won't save bad programming.

(Sorry about the fanboy comment but you really did come across as one)
 
I guess your definition of bloated is different than mine. Although, I still don't see why you've become defensive of C#. I never said it was totally useless. I just said nobody in their right mind would use it for a physics engine, renderer, or any other core part of a 3D game engine. I don't care if they use it for tools. I don't care if they use it for Office or parts of an OS. My point was that using it for a game engine just doesn't make sense. And if those guys making Axiom want to use c#, that's fine. But that's an open source project, not a proffesional development studio.

Nobody ever said you couldn't have crappy C++ programming. But if you pit good C++ vs good C#, C++ performs better. Personally, I define good programming as doing a lot with a little. C# doesn't fit that description.

FYI, this is an example of good programming.
http://www.menuetos.org/

Menuet is a 32-bit OS. It was coded in almost entirely in assembly. It has a 32-bit color windowing UI, a menu system, and it includes a web server, shoutcast server, several little games, and even reads FAT32 partitions. All of that plus more fits on a single 1.44mb floppy disk. That is good programming. That is doing a lot with a little.
 
ah i just came across this thread and wanna learn a language ... since im quiet new to this some people suggested starting with VB as it will intoduce me to the world of programming then i can work my way up from their .... what are your views on the language?
 
It's proprietary, which means MS owns it.

C# has an ECMA btw :rolleyes: And of course, Mono

I'd like to see some evidence of its use for tools anyway, because I've not heard anything about that.

RT Shader Quite impressive really, considering all the shaders and what-nots.

But it just doesn't weild the power and efficiency that C++ does.

This made me laugh :] What exactly is efficient about c++? I hope your not talking about the efficiency of developing a c++ application D: (MFC anybody? :LOL: )

That's nice, but nobody is going to sacrafice 10% performance just to use C#.

They will when they realise they save 25% of there dev time, remember we're taklign about the real world here, ther is much more driving decisions that your bias against microsft.

Have you seen the alpha? It looks nice, but it definately is a resource hog.

It's an alpha, wtf do you expect?

No, it will not get more powerful as PC performance increases. C++ will still be more efficient and get better performance,...

While you are correct, that c++ will still be faster in the future, your missing the point that 90% of programs *don't* need blistering speeds to run, and like before, there will be money motivated needs for choosing c#.

Oh well, i guess that ignorance is bliss, do some research before you start bashing things for no reason :] (other than your unfounded bias against mocrosoft)
 
Cyanide said:
If there is a God, C# will only ever be used for RAD (rapid application developement) developement of things like Office and other relatively simple 2D applications. Since Office and other MS products are already insanely bloated, nobody will notice that C# has made them take up even more system memory.
Actually, MS itself uses C++ for Office, and isn't switching to C# any time soon. Interesting?

Can someone outline briefly why you'd use C# instead of Java?
 
"Can someone outline briefly why you'd use C# instead of Java?"

Because Microsoft WANTS you to? ;)

botman
 
.net is the future for windows, and c# is the easiest way to use it from my experience
 
hax said:
C# has an ECMA btw :rolleyes: And of course, Mono

But it's not an open language. Lots of proprietary languages have ECMAs, for example, Macromedia's ActionScript langauge.

This made me laugh :] What exactly is efficient about c++? I hope your not talking about the efficiency of developing a c++ application D: (MFC anybody? :LOL: )

If you had actually taken the time to comprehend my post instead of instantly branding it as anti-MS crap, you would have realized that I was refering to run time efficiency. Asshat.

They will when they realise they save 25% of there dev time, remember we're taklign about the real world here, ther is much more driving decisions that your bias against microsft.

Then they'll run right back to C++ when an engine that does more stuff with the same hardware out sells them. BTW, I'd love to know how you've arived at a specific amount of saved developement time.

RAD developement tools are not meant for developing game engines. Game engines need speed. That is why C++ has been used for so long. If developement time was the only concern then why the **** hasn't the industry been using Visual basic?

It's an alpha, wtf do you expect?
An alpha is a precursor to the final product. If you think it's really going to be that much more efficient in terms of resource usage by the time it's released, then you obviously don't have a clue.

While you are correct, that c++ will still be faster in the future, your missing the point that 90% of programs *don't* need blistering speeds to run, and like before, there will be money motivated needs for choosing c#.
And you're missing the point that I'm not talking about the 90% of the programs that don't need speed. I'm talking about game engines. Which do need speed.

You seem to think I have an anti MS bias just because I don't think one of their products is God's gift to game engine developement. I love MS fanboys who think that if somebody says anything bad about an MS product they must be entirely anti-microsoft. If either of us have an MS bias, it's you.




About Visual Basic. If you're totally new to programming it's not a bad place to start. It will introduce you to most of the basic concepts, and will let you see your work in action relatively quickly. However, be careful not to develope bad programming habbits just because VB will let you get away with them.

You might also consider Java. It is object oriented, which is the direction most programming seems to be headed in.
 
Ohoho Visual Basic learnt that in college while i was learning C++ at home AHHH DAMN YOU // :p

If me.dontlikeVB >= Yes Then
me.trytocommentcodelike //
program.ERRORTIME
program.betterhaveoptionexpliciton
me.ramblingcrap
End If
 
Back
Top