Some advice for a beginning programmer.

Started by
7 comments, last by ddn3 12 years, 1 month ago
And by "beginner", i do mean beginner. smile.png

Hey, everyone. I'm Sebastian, i'm 25 years old and i currently mix a career in freelance design and concept art with work in PR/Communications. Come May, i intend to vacate this position to focus more on my creative ambitions. I like art and creativity. I like creating this - it was with that in mind that i began to draw and paint electronically a couple of years ago. When i leave my job, i will have sufficient time to pursue my ambitions in entertainment and creating.I find that i want to expand my boundaries a bit and learn programming - partially to be able to do it, and partially to be able to understand. Right now i work alot with computers, i've mastered the use of a few programs, but i don't really understand anything of how software or computers really work beneath the hood.

So, first things first.

* I'm not some deluded moron who thinks this can be learned in 24 hours. I'm willing to spend quite literally years to learn and excel in this field, as i did with art.
* What i want to do with programming is software - games, programs and the like - though not web-based, necessarily.


I need language advice/confirmation. From what i've read, understood and found, the languages Java and C# would be good to begin with, to then move on to C++.

I'd appreciate confirmation to this assumption as well as any suggestions, literature or links to places where information can be found.

Thank you in advance!

//Sebastian W


Edit: having read around a bit, i realize that these questions have been answered already. If you'd still like to come with input, i'd appreciate it however.

Currently i'm leaning towards lightly beginning with Java to later (starting May) work on understand java and C# simultaneously. A daunting task for someone who in his youth demolished a keyboard when the computer didn't work, but i like a challenge.

Plus being in charge of my own financial well-being sort of discourages me from going on rampages tongue.png.


Final question: Is there any point in choosing C# over C++ as my "second" first language apart from it being considered slightly easier?

Anyway, thanks for reading!
Advertisement
You are right, it's rather been answered before, read this.

Forget about the future just focus on your initial language until it no longer does what you need. There are merits to knowing multiple languages, but you are best served learning one at a time. Besides, once you've learned Java, picking up C# would be really simple, as the reverse is also true. You can also switch from either language to C++, although once you get to that stage, you probably wont want to.
Edit: Stupid answer.

Read http://www.gamefromscratch.com/post/2011/08/04/I-want-to-be-a-game-developer.aspx that.

Thanks for the link. I won't go with C++ for some time :).
I switched careers about 11 years ago from animator to programmer. It's certainly do-able, although a lot harder than I imagined at the time (and I'd be inclined to say it might be a bit harder these days!). Realistically it could take a couple of years to get the basics, but will probably be 5 years at least until you've got your head around some of the finer details. I've actually found the art background invaluable in my career. The ability to talk to both programmers and artists, and always understand the requirements from both sides, is an invaluable skill!

Given that, I'd probably say that you should learn python and C++. Skip Java/C# completely. C++/Python are *the* combination for programmers with art backgrounds (maybe add GLSL/HLSL to that list). Whichever art package you care to mention, will usually provide an API for plug-in development in either python, C++, or both (e.g. Maya, Xsi, Motionbuilder, Blender, Photoshop, etc). One of the biggest problem areas within game development is simply managing the art assets, and providing a reliable data pipeline that will extract the data from the art packages, and then compress it for use in the final game. This is a bloody hard thing to get right, but it's one area where your previous experience will help immeasurably. If you do decide that programming isn't for you, you will have still acquired skills that will help you in the future should you decide to return to art & design.

Jumping straight into C++ plug-in development won't be the easiest thing to do, so it's probably best to start with python APIs, however reading C++ docs is usually a good idea! (in my experience, you can sometimes find that the C++ docs are slightly more complete than the equivalent python docs. Some packages such as MotionBuilder only provide C++ docs - with the python interface mirroring them exactly). If your art pipeline to your game is reliable, it will be far easier to make it look well polished (because you'll be able to flex your artistic muscles so to speak).

Some heavy going C++ API docs:

Maya
http://download.autodesk.com/global/docs/mayasdk2012/en_us/index.html
X
SI
http://download.autodesk.com/global/docs/softimage2012/en_us/sdkguide/

p.s. Start learning everything you can about 3D maths!! (Vectors, Matrices, Quats, frustums, rays, etc). Read up on as many graphics techniques as possible (quad & oct trees, hierarchical animation, particle systems, bump mapping, SSAO, deferred rendering, etc). It will take you a few years until you're able to implement them properly, but the sooner you understand the technique, the sooner you'll be able to figure out what you need to learn to be able to implement it.
You should learn C++ at first, it is very powerful and useful language. On the beginning your adventure, may have problems,but it really help you.
When I was 14 decided to learn C++, but after 0.5 month changed my mind. I have regreted to nowa days.
(( I am learning English. ))
Yes, because C++ is a lower level language you have to code more to accomplish the same thing in a higher level language. This has advantages when you know how things work and make things more efficient and functional to the program your creating. The obvious disadvantage is that it takes a longer time to create something, especially for smaller programs C++ can make you write 4 times the code then if you wrote it in something like C# or java and accomplish the same.
Have a brief look at all the languages, you'll likely be learning about OOP first anyway and C like languages are very similar, maybe you will get attached to one (or the book thats teaching the language), it is far more easier to program if you like the language you are using. I would recommend C# only because of how amazing VS and .net are, plus you can bounce to other languages like F# for the sake of curiosity. .net also has other amazing features, entity framework, linq and in the near future async features that put F# and well any other language to shame

Either way you will likely learn other languages once you get comfortable with your primary language so it doesnt really matter where you start, as long as you find it fun, I personally would go for C#, not only does it hold your hand it holds your balls too, but dont expect it to do all the work for you, making something decent in C# requires work and effort and theres no System.IWIN namespace. Why spend 10 hours doing something in C++ when you can do it in 1 hour on C# (this isnt always the case but you will find a lot of the time it will feel that way, especially with manual memory management being a pain in the arse especially with all the * you'll be throwing in your code). Dont get me wrong C++ is useful you just have to remember what you signed up for when you pick it, especially as a first language

Some extra features (not all) about C# or .net in general, WPF, WCF, SL (which is great now, since it has XNA), MVC (for web development MVC is underrated and rarely spoke about but should be mentioned more often, considering how amazing it is).

For me .net (C#) won me over fast because of SL / MVC / WPF / WCF and now SlimDX, languages these days need to sell themselves and imo C++ does an awful job at it, from a personal point of view I found it far more fun to program in native C than C++, hell even assembly was more attractive and thats saying something, but thats just my opinion though ;)

PS. The A vs B comparison wars are awful, what can be said about A likely gets said about B in a different thread / article, C++ is popular and so is C#, as for programming in general 'hard' means 'time consuming', nothing is really hard but understanding something takes time (depending on what you are learning)
Firstly http://www.gamedev.net/topic/620212-is-learning-c-as-first-and-only-language-a-bad-way-to-go/

Now that we have that out of the way, lets look at some specific questions:

I need language advice/confirmation. From what i've read, understood and found, the languages Java and C# would be good to begin with, to then move on to C++.

You can move on to C++ whenever you want, but having a language or two under your belt will help significantly to overcome the learning curve associated with C++.

I'd appreciate confirmation to this assumption as well as any suggestions, literature or links to places where information can be found.

See the aforementioned links to "I want to become a game programmer", he has some resource links there that you will find useful.

Final question: Is there any point in choosing C# over C++ as my "second" first language apart from it being considered slightly easier?

XNA.

In time the project grows, the ignorance of its devs it shows, with many a convoluted function, it plunges into deep compunction, the price of failure is high, Washu's mirth is nigh.

The steps I think should be a high level scripting language (Python, Lua, ActionScript) then -> Java or C # -> (Maybe if you need the performance) C++. If your artistically inclined you would be a visual thinker and visual thinkers need to see feedback, that's how they best learn. I'm also visually inclined. There are many development tools available, Visual Studio, XCode, etc.. I think these might come be useful to you.

http://processing.org/
http://wonderfl.net/
http://jsdo.it/
http://www.microsoft.com/express
http://pygame.org/news.html

Nothing wrong with jumping right into Java / C# but I think you'll get more milage out of experimenting in a high level language and exploring programming there first. Most of these programing languages are in the same class, so experience in one will carry over to another. As you go down to a lower level programing language, you just have more restrictions and requirements and different syntax, but the nature of programming doesn't change.

-ddn

This topic is closed to new replies.

Advertisement