此主題已被鎖定
The Michael 2013 年 1 月 15 日 下午 6:12
What languages Should I learn C, C++, C#, Java, or Python.
I've been wanting to create a game for quite a while now, and I was wondering wht kind of code I need to learn in order to make a game, right now I'm learning basic stuff like XHTML and CSS, but I want to be able to make games and other stuff, I hopefully plan to learn all of these, but I need to know which ones will jump start me into my project.
< >
目前顯示第 16-30 則留言,共 44
RJ 2013 年 1 月 16 日 上午 11:25 
Unity is a great engine where you can script things together in Javascript, C#, or Booscript (some Unity-specific Python implementation), or - via packages in the asset store - create games without programming a single line!

I highly recommend Unity (with C#) for jumping straight into making games. If you want to start from the ground up and build your own engine however, then C++ with SDL I believe is a pretty powerful and capable choice.

PushyPixels' Cooking WIth Unity video series are great for learning Unity, and the unity3d reddit is a great community for support or other learning resources.
Mivo 2013 年 1 月 16 日 上午 11:52 
Actually, you might want to stop by here: http://www.codecademy.com Do the courses for Python, JavaScript and Ruby, and see if anything appeals to you. It's free and well done.

JavaScript is not actually a bad choice for a first language (combined with node.js), though that is a statement that tends to draw flak. Game-wise, it is relevant to HTML5 and, as mentioned above, Unity.

If you llke JavaScript, this: http://eloquentjavascript.net/ is a good introduction to programming also (the printed version anyway, but the online version should be mostly the same). If Python, get "Heads First Programming" and/or "Head First Python".
Piyapon 2013 年 1 月 16 日 上午 11:54 
I started with C# and XNA and it was fun at least. I started making clones of easy games like Tetris and having a lot of fun. I also used a book called 'XNA 4.0 Game Development by Example' and learned a lot about 2D and basic stuffs.
ChrisW 2013 年 1 月 16 日 下午 12:59 
I would highly recommend avoiding the high-level languages for games. Sure, they are easier to program, but at a cost to the end-user. The goal is to help the end-user, not the developer. Trying to write a game in those languages will limit you to simple games and very high system requirements. If you want to be serious about writing games, you need a low-level language, like C or C++. Remember, lots of people will not install wasteful runtime environments or purchase games written in high-level languages.
Mivo 2013 年 1 月 16 日 下午 1:21 
^ I don't believe that most gamers care about what language a game was written in, as long as it works fine. The same is true for application software. The average person never actually even asks the question, "What language was this game/software written in?". From an end user's view, this is largely irrelevant. I also believe that most people don't care about what runtimes and libraries they need to install. Today, HDD space and bandwidth are plentiful (we are just talking about a few MB anyway). Steam installs them automatically, and all scripting languages have EXE packers that put the interpreter into the executable. .NET is pre-installed these days.

There are numerous commercial games, even on Steam, that were done with Unity. There are tons of games written in Python, and there are Steam games written in Basic dialects (like Evochron). Heck, plenty of games are written in Flash/ActionScript and sell just fine. :)

I'd not consider C++ a low level language, but I guess it's a matter of subjective definition. I'd put it in the mid-level range. Well, a bit below Java, but definitely much higher than C or Assembly. But for a beginner, I think it's important to learn language-independent fundamentals and concepts first, and those are easier to teach with a higher level language (which also yields faster results, something I feel is important to staying motivated). The only downside is that an excellent high level language like Ruby will make it hard to like something faster, but less elegant.

Generally, though, I'm in the "learn what you like" field. It really doesn't matter which language he picks as long as it is one he finds it appealing and interesting. There is no way I would ever have learned how to program if my first exposure would have been to C. I simply didn't "get" it, so Locomotive Basic (1984'ish) was a much better introduction. In the 1990s, it would have been Visual Basic. Today, it is Python or JavaScript or Ruby.
Morton 2013 年 1 月 16 日 下午 4:06 
I would not recommend C/C++ for beginners. All the reasons why to use these languages are related mostly to performance and there much to learn before concerning about that.

If you want to learn a language and also play with making games, C#+XNA is really good choice.

Or learn Java for Android with OpenGL ES, you can achieve really interesting stuff with it and also developing for mobile device might be more exciting with limits it imposes. You will learn important things about performance tuning and debugging in the process.

Unity is also interesting choice, especially when you use C# for scripting.

If you want to work as a game programmer, you will need to learn C/C++ eventually, but before that you need to learn many things related to programming like debugging, design patterns, some basic algorithms, technologies and also gain experience with development of more complex applications (actually most good games are really complicated applications from programmers perspective).

It isn't really about language, its about skills you learn by learning and using them. Then with enough time you will be able to make anything in any language you pick.

flyingturtle 2013 年 1 月 16 日 下午 7:01 
If you're a total beginner, and you have some web knowledge, you could also just try to make games in Flash. If you know a modicum of Javascript, then the transition to ActionScript isn't hard since they are both ECMAScript-based language so the syntax is very similar

Prototyping simple game ideas in Flash is pretty fast and easy once you know your way around it. You've got everything in one place, the IDE and all the drawing tools.

I think, like others have pointed out, it's more important to just pick a language (whatever that is) and learn it. Once you get one language under your belt and understanding basic programming fundamentals, it isn't that hard to switch.

The goal first is to understand programming (knowing CSS or XHTML isn't programming), understanding functions, variables, loops, etc (then later OOP principles).

So if you quickly want to have fun and make something fast, Flash and ActionScript is one good suggestion. For non-programming designers, this suggestion has worked more often, than when I've suggested learning Java, C# etc.

If you aren't that visually focused and your head doesn't hurt while doing logic problems, then, yeah, pick whatever.

With C#, you'll be able to make Windows and XBOX Arcade games right away.

With Java, you can play your game on any platform and also do Android development.

Note, Java and C# share a lot of the same syntax so going one from another is easy (if you don't include the Windows-specific graphics API).

With Python (and I really like a lot), it's such an elegant language. Lots of game dev tools for it. You'll most likely have to learn another language afterward, but it's nice (modern) language.

You could also just stick with JavaScript. Lots of game libraries for it, and even Google released a javascript-based gaming toolkit (to encourage people to play games in Chrome).

I ditto the sentiment, if you get serious and want to squeeze out extra performance, you'll eventually may have to learn C/C++, a lower-level language.

Another option is to learn Objective-C as well, for Mac and iOS development, like with C/C++ though, you have to do some careful memory management.


GreekStrike 2013 年 1 月 16 日 下午 8:57 
Alright so I have a question for all the programers out there. For instance, if you really wanted to make something like a game or an application, would you have to look at your notes to remember all the different commands? I learned a little python when I was about 16 years old from a beginners book, and it taught me some very basic things but it seemed like there was a ton to memorize. Then again, I dont plan to go into programing but to me it just seems like a basic coder has so many different things to know and think about. How bad is it really?
Vitdom 2013 年 1 月 16 日 下午 10:05 
I think C is the best language to start with, and it is also one of the most used and popular languages ever. C++ is a little more high-level than C which is low to mid-level. C++ is also nice BUT if you want to get more action quickly, like most do tend to want, C is the way to go, since it encompasses a lot less high-level stuff like OOP, you can learn C++ later if you want, it's pretty much an extension + a few twists. And if you learn C, you will recognize tendencies in how languages are designed and have an easier time learning other languages later. C / C++ is also the industry standard language of use when it comes to games and operating systems.
The primary reason why you should choose C or C++ though is: THEY ARE BOTH ISO INTERNATIONAL STANDARDIZED PROGRAMMING LANGUAGES!

If you don't know what an ISO standard is:
http://www.youtube.com/watch?v=AYBVTeqKahk

Java is currently dying, no doubt about that. Stay away from it.

Python is good if you want to learn a nice powerful language without divulging into how a basic computer works in detail.

Lua is primarily a scripting language(and good), but it's not the best one's first language to bet on if you want to make a full game.

I see a lot of others recommending C# as well, but I don't have any experience at all with it.

引用自 GreekStrike
Alright so I have a question for all the programers out there. For instance, if you really wanted to make something like a game or an application, would you have to look at your notes to remember all the different commands? I learned a little python when I was about 16 years old from a beginners book, and it taught me some very basic things but it seemed like there was a ton to memorize. Then again, I dont plan to go into programing but to me it just seems like a basic coder has so many different things to know and think about. How bad is it really?
If you want to make a game, you have to know an entire programming language, i.e. know everything about the language to a limit of ~90%, the rest you can check up when you need to remember it. You also use a lot of other implementations that other peope have programmed, e.g. graphics libraries like OpenGL / Microsoft DirectX, which you also must learn and memorize, but to a lesser extent, because there is always a huge documentation of use, guidelines, guides, details and reference assemblies etc. Making a complete game is nothing you normally try by yourself, but it is possible, though it will take quite some time to finish the game.
最後修改者:Vitdom; 2013 年 1 月 16 日 下午 10:38
Asuka99 2013 年 1 月 16 日 下午 11:18 
Uh... I got a different opinion. If you want to wirte a game, program should not be the top priority though it's important. I suggest you should conceive what kind of game you are interested, the story, and most importantly, the creativity.
Ledow 2013 年 1 月 17 日 上午 2:57 
引用自 GreekStrike
Alright so I have a question for all the programers out there. For instance, if you really wanted to make something like a game or an application, would you have to look at your notes to remember all the different commands? I learned a little python when I was about 16 years old from a beginners book, and it taught me some very basic things but it seemed like there was a ton to memorize. Then again, I dont plan to go into programing but to me it just seems like a basic coder has so many different things to know and think about. How bad is it really?

The basic underlying language? That becomes second-nature and you don't even think about it.

The libraries, etc. that you use? You make sure you have decent tools, IDE's and examples and you'll never have to remember what they do, you just right-click on the command/whatever highlighted in your editor and they give you a brief summary which - once you get used to it - is enough to kickstart you back to the programming instead of the detail. In the space of my previous project, I "relearned" C99 in under a day. I took a program written for Linux Gnome desktops (which I'd never played with), stripped out all the Gnome functionality and replaced it with hand-created SDL (which I'd not used very much) to replicate the functions. The "looking up" bit consisted of having a browser window open with a function reference for Gnome and one for SDL and then doing all the hard work in-between

With my current project? I "relearned" OpenGL in a few days (learned more than I knew because last time I tinkered it was direct mode only and most of the advanced features of OpenGL didn't even exist), I learned several libraries related to hashing, encryption, compression, networking, etc. within a couple of hours each (and most of that was actually writing test code to check I was using it right, that ended up in the main program).

You have a LOT to remember, that's undeniable, but once you have the basis of the stuff you use all the time, the rest is just having an appropriate reference nearby. I find books too slow for that kind of thing (and they rarely publish full references anyway), but just an online Google'd reference or even a well-documented header file is enough to get an experienced programmer coding things up with only occasional references to check details.

I have an ATROCIOUS memory. Honestly. People have to remind me to do things several times and my brain still doesn't retain the memory. I can go upstairs literally five times for the same thing and still not come down with it. My boss even gets used to it and see my blank expression as I walk in to their office and says "It's okay, come back when you remember", and even then I'll have to come back 3-4 times to get everything I needed. But the core language? I can do that off-by-heart for almost any language I was taught (Java is huge and ever-changing and thus an exception as they are really a "library", not a core part of the language). The individual libraries I use? I have memorised the bits I use all the time but I still have to look up whether something is an int or a pointer, or what order the function arguments need to go into, etc. for almost everything.

It's not a big deal. Have a tabbed browser open in another window with some tutorials / library references / example code open and switch as you feel necessary. This is also why you shouldn't fuss too much about books and just "reading" about a language. Most of programming is learning how/when/why to use things, not just repeating things from books parrot fashion. Reading about programming is like reading how to paint. Sure it'll help out on the basics, but after that you just need to keep doing and doing and doing and no amount of reading will make you a better painter.
krystianpants 2013 年 1 月 17 日 上午 8:49 
C# and C++. C# is pretty much like Java except not as useless. Java is a dying language thanks to all the security vulnerabilities and oracle taking over. I don't even have java installed on any of my machines.
GreekStrike 2013 年 1 月 17 日 下午 12:03 
Thanks Vitdom and Ledow for your comments!
ManiacMal 2013 年 1 月 17 日 下午 12:21 
I'd like to know how so many of you think Java is dieing when it is the mobile market! That makes absolutely no sense in the least. Regardless of the vulnerabilities it possess it's not going anywhere.
Swagner 2013 年 1 月 17 日 下午 12:53 
Python's easy to use, but it runs rather slowly and is written much differently than any of the others. I've met too many people who have a hard time transitioning to other languages after learning python to recommend it as a first language, unless it's also going to be your only language. Learning it later is fine, and it does provide useful functions for messy number crunching.
I'd recommend starting Java and then moving into C++ and C#. Java's great for learning in that lots of nitty-gritty details (particularly storage classes & pointer handling) are provided for you, but it doesn't provide nearly the execution speed of the C derivatives. You can make games with Java, but keep in mind that they won't run particularly fast. Not many that I'm aware of use C for making games, since C++ provides most of C's functionality but allows object-oriented programming (which Java, Python, and C# support as well). Given the list of languages you're interested in, you'll inevitably need to know what object-oriented programming is, so you may as well learn now.
< >
目前顯示第 16-30 則留言,共 44
每頁顯示: 1530 50

張貼日期: 2013 年 1 月 15 日 下午 6:12
回覆: 44