Q&A

Started by
3 comments, last by GrimB73 7 months, 2 weeks ago

For someone with zero experience in programming or game design, (not since 8th grade 1990 apple PC IBM pong) lol, but a general sense of computer knowledge and a lifetime of Gaming experience, would it be easier to learn python or C+. Would learning Java be a good prerequisite. for either or a waste of time. What other skills/knowledge are necessary to learn any of these.

Advertisement

GrimB73 said:
What other skills/knowledge are necessary to learn any of these.

C++ or Java, like the very most languages, are based on C. So i would recommend learning C first, together with some basics of C++ to get familiar with OOP. After that, adopting other languages such as C#, Java, php, JS, etc., requires very little effort.
C++ is ideal for both performance critical code and maintaining large projects, which games tend to be. It's also the primary language regarding support from graphics APIs or libraries such as a physics engine.

C++ is usually no recommended to beginners, since it's considered hard after so many modern features have been added over time. But that's nonsense imo, coming from the assumption that you would need to know everything about the language.
That's not true. Almost nobody knows or uses all features. It's never needed. You can just learn and use the features you like. C is enough to get started, C++ can be added over time. (C and C++ is supported by the same compilers, so adding C++ things to your C code is seamless.)

That said assuming you want to make a game from scratch, since you did not mention engines like Unity or Unreal.
If you want to use such engines, they usually dictate what language you should use for gameplay code. Often that's scripting languages, eventually custom to the engine.

Java or C# make things a bit easier because they help with memory management, but this comes at a performance cost.
Python is easy but not fast, i've heard.

It surely depends a lot on what you want to achieve. For Pong any language is fine, but a modern 3D game written entirely in Python might not run fast enough, for example.

GrimB73 said:
be a good prerequisite. for either or a waste of time

Not a prerequisite. Some languages are easier to learn than others, and learning a second, third, or later language is easier than learning the first, but many people learn each one of those as a first language.

GrimB73 said:
…learn python or C+. Would learning Java…

All are fine choices. Python is a little more forgiving toward errors, Java is more verbose and does more behind your back, C++ is a little more picky because it allows more direct manipulation of systems, but any of them make a great first language if you're using good books and guides.

For python, LearnPython.org is approachable, and the python.org getting started pages has a long list of useful resources.

For C++ the top answer here has a set of long-recommended books. In short form, if you're a raw beginner C++ Primer or skip it, then Accelerated C++, then Effective C++, Effective Modern C++, and Effective STL. That will cover the core fundamentals, although Accelerated C++ has some practices that have better modern equivalents which do those fundamentals behind your back. That list hasn't changed much in 20 years, except for a few newer editions of the books.

For Java, Dev.java is the official platform that is pretty okay but not amazing. Both Head First Java and Thinking In Java are both well-regarded books, with the same caveats that they teach the older core functionality and not the most modern extensions.

GrimB73 said:
What other skills/knowledge are necessary to learn any of these.

In general, logical reasoning is essential. Math generally as most every statement works as functions with operands. Computer skills generally. Ability to look up error messages and using the already-mentioned reasoning skills to apply the generic message to the specific code.

Thank you, as a retiree coming up I'll have plenty of time to learn these languages.

This topic is closed to new replies.

Advertisement