Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411491 Posts in 69377 Topics- by 58433 Members - Latest Member: graysonsolis

April 29, 2024, 03:47:27 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperTechnical (Moderator: ThemsAllTook)Which to learn?
Pages: 1 [2] 3 4
Print
Author Topic: Which to learn?  (Read 10612 times)
Hajo
Level 5
*****

Dream Mechanic


View Profile
« Reply #20 on: March 24, 2009, 03:09:47 AM »

If you are new to OOD/OOP, Java might be better for learning, it is a bit more strict in syntax than C++.

C++ has more of the geek factor though, allowing you do do everything in the most obscure ways.
Logged

Per aspera ad astra
Gold Cray
Level 10
*****


Gold Cray


View Profile WWW
« Reply #21 on: March 24, 2009, 06:18:27 AM »

No one has mentioned Lisp yet. OO isn't the only paradigm, you know.
Logged
rogerlevy
Guest
« Reply #22 on: March 24, 2009, 06:47:14 AM »

C# + Microsoft's XNA platform is my recommendation.  Don't waste your time with C++.  It's complicated, hard to read, and dated.  I personally think C# has almost everything over C++ (it's simpler, more consistent, and .Net was designed for it) and supposedly competes with C in speed so not much to lose.  So I think it's the best choice for a beginner and probably better in general if you don't care about the fact that C++ is pretty much universal...
Logged
Gold Cray
Level 10
*****


Gold Cray


View Profile WWW
« Reply #23 on: March 24, 2009, 07:14:00 AM »

...probably better in general if you don't care about the fact that C++ is pretty much universal...
Yeah, cross-platform is stupid. Let's just go on maintaining Microsoft's monopoly. XNA is also perfect for weeding out the inferior Windows machines (an arbitrary, but important distinction).
Logged
gnat
Level 1
*



View Profile WWW
« Reply #24 on: March 24, 2009, 07:44:58 AM »

I would completely avoid C++. Although knowing C++ can be useful, I do remember dumping ungodly amounts of my youth into learning it. You'll also put a lot of time into learning and debugging things that modern languages give you for free or make substantially easier. Generally expect to be programming in C++ for at least a year (if not more) before doing any cool "game" stuff with it.

I believe the point of learning C++ is moot for most people here as there are tons of easier, just as capable game development languages/tools out there now. I would recommend Python, Java, Game Maker, or Flash.

Logged

LAN Party List - The definitive LAN party list. Also Game Jams, etc.
GitHub
rogerlevy
Guest
« Reply #25 on: March 24, 2009, 07:45:57 AM »

...probably better in general if you don't care about the fact that C++ is pretty much universal...
Yeah, cross-platform is stupid. Let's just go on maintaining Microsoft's monopoly. XNA is also perfect for weeding out the inferior Windows machines (an arbitrary, but important distinction).

Remember this is a beginner we're talking about.  A beginner shouldn't be concerned with cross-platform, stupid or not (and I didn't say it was!).  Also, Microsoft is indeed evil but C# is not bad and great for a beginner to learn from.  He can always step up to C++ or some other less monopolistic platform after he has the programming foundation in his brain.
Logged
Mikademus
Level 10
*****


The Magical Owl


View Profile
« Reply #26 on: March 24, 2009, 08:21:43 AM »

Re:
If you are new to OOD/OOP, Java might be better for learning, it is a bit more strict in syntax than C++.

C++ has more of the geek factor though, allowing you do do everything in the most obscure ways.

Again, I repeat: if you're planning to go into C++ DO NOT START WITH JAVA. Learn Java AFTER you know C++ or you'll create huge and unnecessary headaches for yourself.
Logged

\\\"There\\\'s a tendency among the press to attribute the creation of a game to a single person,\\\" says Warren Spector, creator of Thief and Deus Ex. --IGN<br />My compilation of game engines for indies
Hajo
Level 5
*****

Dream Mechanic


View Profile
« Reply #27 on: March 24, 2009, 08:38:51 AM »

Re:
If you are new to OOD/OOP, Java might be better for learning, it is a bit more strict in syntax than C++.

C++ has more of the geek factor though, allowing you do do everything in the most obscure ways.

Again, I repeat: if you're planning to go into C++ DO NOT START WITH JAVA. Learn Java AFTER you know C++ or you'll create huge and unnecessary headaches for yourself.

I started with C++ and learned Java later, so maybe I did things right just by chance. But I still would like to know why you put so much emphasize on that the other order will be bad? The only thing I can imagine is that people get used to garbage collection, and might struggle with C++ memory management. But there are garbage collectors for C++ too, if people really can't learn explicit memory management.

I don't mean to criticize your statement. I'm just asking because I feel fairly fluent in both languages and cannot imagine such big troubles like you seem to warn of; still i assume they exist, and would like to learn about them.
Logged

Per aspera ad astra
muku
Level 10
*****


View Profile
« Reply #28 on: March 24, 2009, 09:20:59 AM »

Another vote against C++, for all the reasons already mentioned: too low-level, too complicated, too ugly, too easy to shoot yourself in the foot, too overwrought with warts stemming from the need for  backwards compatibility. See something like this for all the stuff you're supposed to keep in your head to be considered a "good" C++ programmer; it's just not worth it.

I think Python and Lua are good languages for learning to program games, because you can dive in quite quickly (PyGame and LOVE were already mentioned). ActionScript 3 might also be okay, though it's a bit more complicated because it forces you to do object orientation from the get go. Or maybe play around with Processing to get the hang of coding? I haven't tried it myself, but I hear it's very intuitive.
Logged
Ivan
Owl Country
Level 10
*


alright, let's see what we can see


View Profile
« Reply #29 on: March 24, 2009, 09:23:16 AM »

If you've never programmed before, I would vote against C++ as well. While it is something that you should make the jump to eventually, you will waste alot of time using it from the get go, time you can spend learning basic programming concepts in an easier language. LUA+LOVE, Pygame, Processing or AS3 would be my suggestions.
Logged

http://polycode.org/ - Free, cross-platform, open-source engine.
ஒழுக்கின்மை (Paul Eres)
Level 10
*****


Also known as रिंकू.


View Profile WWW
« Reply #30 on: March 24, 2009, 09:45:31 AM »

I suggest *not* learning programming yet, and instead making mods and level edits for moddable games and games that include level editors. At this stage in your life you'll really get far, far more benefit and learn much more about game design from making levels and playing around changing other people's games than learning a low-level language and attempting to make a game from scratch. It's kind of how when you first start drawing, you start with color by numbers, by tracing, by drawing lines and simple geometric shapes, and so on, rather than just jumping in and drawing something complex right off the bat.
Logged

bateleur
Level 10
*****



View Profile
« Reply #31 on: March 24, 2009, 09:54:26 AM »

Yup, definitely not C++.

One of the main reasons being: no garbage collection.

The only reason to ever accept a language with no garbage collection is if you're trying to code something that runs incredibly fast. If your game is going to be 2D, this is unlikely.
Logged

gnat
Level 1
*



View Profile WWW
« Reply #32 on: March 24, 2009, 10:22:14 AM »

@muku
I like that idea. Processing is a very good suggestion if you want to dive directly into visual programming! Yet another language I wish we had around back when I was starting.

Quote
The only reason to ever accept a language with no garbage collection is if you're trying to code something that runs incredibly fast. If your game is going to be 2D, this is unlikely.

IMO, this is an understatement. You'll more than likely never see the speed advantage of using C++ nowadays. Modern hardware is fast, and is only getting faster.

Quote
If you've never programmed before, I would vote against C++ as well. While it is something that you should make the jump to eventually, you will waste alot of time using it from the get go..

And then make the jump back to Python or whatever when you realize it can do the same things, and that C++ is a complete waste of time. Wink
« Last Edit: March 24, 2009, 10:32:20 AM by gnat » Logged

LAN Party List - The definitive LAN party list. Also Game Jams, etc.
GitHub
Gold Cray
Level 10
*****


Gold Cray


View Profile WWW
« Reply #33 on: March 24, 2009, 10:41:37 AM »

Quote
The only reason to ever accept a language with no garbage collection is if you're trying to code something that runs incredibly fast. If your game is going to be 2D, this is unlikely.

IMO, this is an understatement. You'll more than likely never see the speed advantage of using C++ nowadays. Modern hardware is fast, and is only getting faster.
Sim Nuclear Transport Simulation
You might still be able to pull that off in Java if by "modern computers" you mean "supercomputers ten years from now." That was a joke.

Otherwise I guess my last arguments for C++ are that it's not nearly as hard to learn as everyone says it is (if I could learn it when I was 13 years old and only knew a little Visual Basic, then it can't possibly be that hard), and if you learn C++, you can spend the rest of your life looking down on the rubes and knaves who use all those inferior languages (actually, this is probably true for any religion language).
Logged
Ivan
Owl Country
Level 10
*


alright, let's see what we can see


View Profile
« Reply #34 on: March 24, 2009, 10:44:50 AM »

And then make the jump back to Python or whatever when you realize it can do the same things, and that C++ is a complete waste of time. Wink

It's really not. C++'s advantages are not only its speed. In fact, that's really the least of its advantages. There are a million other reasons why you should use it. Multiple inheritance, templating, portability, library availability and ability to use any other language of your choice for scripting are just some of them.

It's not a good language to start with, but it's the language that will offer you the most freedom in the end, so if your interest is programming, that is the language you should strive towards.

If your interest is purely game design, of course, you should use tools like Unity or Game Maker, which let you not think too much about the technical bits.
Logged

http://polycode.org/ - Free, cross-platform, open-source engine.
ஒழுக்கின்மை (Paul Eres)
Level 10
*****


Also known as रिंकू.


View Profile WWW
« Reply #35 on: March 24, 2009, 10:44:56 AM »

re Gold Cray: Well, learning a language is easy, being able to write 20,000+ lines required for a complete game in that language is hard. Did you actually complete non-trivial games in it when you were 13, or just learned the syntax? Also, the person who started this thread is 13 according to his profile, coincidentally.
Logged

Ivan
Owl Country
Level 10
*


alright, let's see what we can see


View Profile
« Reply #36 on: March 24, 2009, 10:55:17 AM »

I agree. I learned C++ when I was 15, and I understood it pretty well. But I never wrote anything serious in it until I went through Python, Actionscript and Processing/Java and then made the curve back to C++ (via pure C Smiley.

The thing that interpreted languages allow you to do is they allow you architect whole projects from start to finish in an easier manner. And that is really the most important thing in programming. It's not what language you're using, it's all about getting something DONE. It's very hard to get something DONE when you're starting out with C/C++. Once you finish a few projects with Flash,Processing or whatever, you start to get a feel for how things actually work out in the real world, and then you start to realize that theres no reason you can't do the same things in C++. It's a kind of stigma you have to get past.

I really DO advise that eventual step back to C++ though. I've used many languages in my personal and professional career, but I've never used one more flexible than C++.

Logged

http://polycode.org/ - Free, cross-platform, open-source engine.
Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #37 on: March 24, 2009, 11:10:30 AM »

Multiple inheritance

Yeah I miss this in C#. Was happily coding away then suddenly hit the brick wall of only inheriting one thing and I had to change a load of stuff. Won't fall into that trap again at least, but it's still a silly ommision.
Logged

hexageek
Level 0
***



View Profile
« Reply #38 on: March 24, 2009, 11:41:08 AM »

It's time for a little renting Smiley
Although this may seem like a hate-writing read it carefully, it has some really good points. http://yosefk.com/c++fqa/defective.html

@OP, For 2D games you don't need the low-level freedom or performance of C++. It's that simple. There are so many other important parts that will make your life much more easier. I strongly recommend python, java, c#, lua or anything high-level with proper memory management.
Logged
Mikademus
Level 10
*****


The Magical Owl


View Profile
« Reply #39 on: March 24, 2009, 12:06:19 PM »

Could I suggest stopping this thread now? It is no longer helpful to the OP and well on the way into Holy War territory (especially the old trite "C++ vs. Java" one, which no one in the industry cares about any more).
Logged

\\\"There\\\'s a tendency among the press to attribute the creation of a game to a single person,\\\" says Warren Spector, creator of Thief and Deus Ex. --IGN<br />My compilation of game engines for indies
Pages: 1 [2] 3 4
Print
Jump to:  

Theme orange-lt created by panic