Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411500 Posts in 69373 Topics- by 58429 Members - Latest Member: Alternalo

April 25, 2024, 02:47:22 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperTechnical (Moderator: ThemsAllTook)Choosing The Right Programming Language
Pages: [1] 2
Print
Author Topic: Choosing The Right Programming Language  (Read 2424 times)
0stasis
Level 0
**



View Profile WWW
« on: April 18, 2016, 01:49:38 PM »

c++? c#? Javascript?

A lot of this is overwhelming and I thought why not ask the community on their thoughts of choosing a programming language.
I know some basics but really don't know where to continue off.

I want to make side scrollers, top down and all that stuff but I know there's a lot to learn in programming, so I know that won't happen until I dive in deep and learn about it for months on end.

So my question is what are factors in a decision for choosing a programming language? Is it knowing it's limitations or is a mater of preference?
Logged
Polly
Level 6
*



View Profile
« Reply #1 on: April 18, 2016, 02:10:41 PM »

So my question is what are factors in a decision for choosing a programming language?

Which platform(s) you want to target is a factor ( in my opinion ).
Logged
Moon Goon
Level 1
*



View Profile
« Reply #2 on: April 19, 2016, 07:55:28 AM »

I'd choose none of the above personally.  I'd second choosing what platform you want to target decides what tools you can use.

RAD (rapid application development) tools are my poison of choice.  Things with less focus on hairy, complicated syntax and more on easy expression.  BASIC-like languages with robust IDEs and little to no configuration and building from scratch nightmares.

In order to get more direct feedback I'd tell us what platforms you intend to make games for.
Logged

I'm a PEEK'er. I'm a POKE'er. And I'm a midnight coder. I type my programs and hit RUN.

Check out itch.io for my Atari 2600 game ROMs! http://theloon.itch.io/
Richard Kain
Level 10
*****



View Profile WWW
« Reply #3 on: April 19, 2016, 09:16:42 AM »

It's really becoming pointless to choose one "right" language. The truth is that anyone even partially serious about learning coding is going to learn multiple languages. I'd start with a something like C#, with strict typing but also memory management. It's a good language for learning some programming basics, and especially for getting a grasp on object-oriented programming and inheritance. (a concept that can take a little while to wrap your noodle around)

After that, I would learn javascript if you want to go higher level, and C++ if you want to go lower level. All three languages are ECMA-script, so the general syntax is very similar. (decent crossover)

Not a bad idea to get started with a few markup languages as well. HTML and XML.

There's never going to be just one "right" language. Learning a programming language is just adding another potential tool. Some are more flexible than others, but sooner or later you might find a use for even the more obscure ones. Start with one of the more flexible ones, but be open to the idea of learning more than one.
Logged
oahda
Level 10
*****



View Profile
« Reply #4 on: April 19, 2016, 11:56:08 AM »

The choice is indeed kind of pointless for a lot of applications, but when it comes to learning itself I do think there are certain pros for beginners to choosing certain languages over others.

I don't think a language that enforces OOP like C# and Java are a good place to start. It might seem to seasoned programmers like it would be intuitive and "match the real world", but in my experience, to newcomers, it seldom does. It tends to be too complicated for them to start with and only distracts them from the core concepts. Even if you can basically write everything in one class when you're just starting out, there's a lot of fluff in the code that has to do with OOP and that still gets in the way. I feel every time someone tries to teach someone without much prior experience programming a language like that they constantly have to keep saying "don't worry about that for now, just type it, and we'll cover it later". With some languages you don't have to do that, at least as much.

There are many other considerations. A lot of beginning programmers write really messy code and tend not to really get the purpose of indentation sometimes. I think learning Python to begin with can be a good thing, since its syntactic dependency on indentation makes the concept a lot more meaningful to beginners.

However, I'm not sure I think dynamic typing is the way to go for a beginner if they're to really understand how stuff works. I think that too can introduce unnecessary confusion even if it's another one of those things that might seem "easier" at first glance.

I actually find something like C (considering only the language and not more difficult stuff like compiling) to be closer to what I'd recommend to a beginner. But working with C strings seems like a bit of an unnecessary hurdle for people who are just starting out, so a subset of C++ that's basically C features plus STL strings and minus heap allocation could be better. But C++ can be a bit of a syntactic mess and not optimal either. Plus, again, the whole deal with compiling and linking and so on, which can get nasty once you start getting into third-party libraries, especially if you want to compile for multiple systems... And beginners will want to show others their work! Executables are a clumsy way to do that, especially if you're unable to compile to all systems right away.

I suspect newer languages that are similar but more "modern" like D and Haxe (or does Haxe enforce OOP too?) might be a better solution, but I don't really know enough about those to be sure.

So for lack of better options at the moment, I think I'd recommend Python to a beginner. But you can start anywhere if you really want to. My first languages were JavaScript and PHP, tho of course I made websites rather than games with those. And some HTML before that, which while it isn't a programming language still helps you get into the coder's syntactic mindset of opening and closing things properly (corresponding to parentheses, braces, brackets and so on in programming), doing things in the right order and so on.

But basically my idea of the best programming language for beginners is one that allows you to focus on the most fundamental principles (even if it has the capability of allowing more than that if you need it) without having to deal with confusing fluff like compulsory classes, and ideally one that also enforces strict syntax so that you really understand that as well. As compressed as possible.
« Last Edit: April 19, 2016, 12:18:03 PM by Prinsessa » Logged

Shine Klevit
Level 1
*



View Profile WWW
« Reply #5 on: April 19, 2016, 02:54:10 PM »

Actually, I personally didn't have that hard of a time grasping Object Oriented concepts, but when I did, I found it extremely easy to go from language to language. I mean, it's pretty damn standard at this point.

Of the languages listed, I'd definitely say C# is probably the best choice. Javascript is easier but doesn't really enforce learning to program correctly that well, and has some major limitations on the kind of options you have. C++ is by far the most portable, but it doesn't have a very good safety net, and it's much easier to fall into bad practice if you don't really know what you're doing. However, if you learn OOP principles, and C#, transferring over to C++ will be much easier.

I honestly would disagree majorly on starting with C. There are many aspects of it that might come off as confusing to newcomers, and you kind of really have to have a firm grasp on what's going on at the lower levels to get anything done. Also, even if you don't get OOP, there are some big advantages to utilizing objects built within the language(strings, vectors, etc.).

I think Python is usually the most common suggestion. From what I read it has a good balance, is well supported, and easy to code in. I can't speak from personal experience because I have yet to really give it a go, but it might be a good place to start. When I first started trying to learn how to program, and crash and burned with C++, I tried Ruby out and found it ridiculously easy. However, it has a lot of the same problems as Javascript except for well worse. I mean, it's easy to learn, but there's not a lot you can really do with it. In fact, I probably should have tried Python instead. But, it's still an option if you want something you can learn on, but aren't worried to much about practical application.

Then again, maybe the real point is that the language is not important, though. It's the concepts. Once you learn the concepts, you can pretty much navigate between languages since most popular languages seem somewhat standardized at this point.
Logged
0stasis
Level 0
**



View Profile WWW
« Reply #6 on: April 19, 2016, 06:08:01 PM »

A lot of information but I really value everyone's thoughts. I think I'm gona start with Python since a coder from work also recommended it.

I do have a follow up question.

In terms of learning a language, does having have tips or methods that helped with their learning curve?

I know some teach like ok now type this and we'll get to that later or learn EVERY little thing that you do. I just want to manage overwhelming information.
Logged
Shine Klevit
Level 1
*



View Profile WWW
« Reply #7 on: April 19, 2016, 06:30:03 PM »

I know some teach like ok now type this and we'll get to that later

I hated that a lot when I first started learning, and am still not convinced it's the best way to teach. You will notice, however, the further you get into tutorials, and such, this happens less.

Just remember that programming is an extremely broad topic. It's something you can do for a decade, and still learn something new. I wouldn't quite recommend the top-down way of learning just because it's what I tried first, and it didn't pan out(albeit, it might work for some people).

Just find your own pace, I say. You're probably going to get nowhere if you jump in head first(at least, you won't get anywhere very soon). I can fully sympathize with the frustration of being told to do something without any indication of why. However, it just happens to be the preferred method of teaching at the moment. The real trick is figuring out all the little pieces. Once you got that down, you'll probably have a good understanding of how to put them together.
Logged
oahda
Level 10
*****



View Profile
« Reply #8 on: April 20, 2016, 04:07:12 AM »

I know some teach like ok now type this and we'll get to that later

I hated that a lot when I first started learning, and am still not convinced it's the best way to teach.
Agreed. Which is, again, why I think new learners are best off with a language that can be used right away without needing a lot of fluff or boilerplate that's better left aside for later. I would not teach someone to make their first interactive application using OOP. I like starting people off with "guess the number" with a functional implementation.
Logged

0stasis
Level 0
**



View Profile WWW
« Reply #9 on: April 20, 2016, 12:06:04 PM »

would you guys recommend a video series?

I sorta got started with Python and reading certain sites.
Logged
voidSkipper
Level 2
**


View Profile
« Reply #10 on: April 21, 2016, 10:50:24 PM »

I think the biggest question here is do you want to learn how to program, or do you want to learn how to make games?

You can quite happily make very full-featured games using in many programming languages for many platforms, so it's really just a question of what features you need and what you want to target.

However if you specifically want to learn to program, then you're better off going with one of the more "hairy" languages and learning how a computer actually works.
Logged
Cheezmeister
Level 3
***



View Profile
« Reply #11 on: April 21, 2016, 11:02:03 PM »

This is what programming language you should learn

Spoilers: No, I can't answer that for you, either.
Logged

෴Me෴ @chzmstr | www.luchenlabs.com ቒMadeቓ RA | Nextris | Chromathud   ᙍMakingᙌCheezus II (Devlog)
Cheezmeister
Level 3
***



View Profile
« Reply #12 on: April 21, 2016, 11:31:45 PM »

Quote
I think learning Python to begin with can be a good thing, since its syntactic dependency on indentation makes the concept a lot more meaningful to beginners.

However, I'm not sure I think dynamic typing is the way to go for a beginner if they're to really understand how stuff works.

I have this conflicted feeling about Python, too. It'd be the perfect beginner's language if it weren't for all the "mushiness" dynamic typing brings along. Are there any semantic-whitespace, static languages? If not, there should be!
Logged

෴Me෴ @chzmstr | www.luchenlabs.com ቒMadeቓ RA | Nextris | Chromathud   ᙍMakingᙌCheezus II (Devlog)
InfiniteStateMachine
Level 10
*****



View Profile
« Reply #13 on: April 22, 2016, 05:51:52 AM »

Quote
I think learning Python to begin with can be a good thing, since its syntactic dependency on indentation makes the concept a lot more meaningful to beginners.

However, I'm not sure I think dynamic typing is the way to go for a beginner if they're to really understand how stuff works.

I have this conflicted feeling about Python, too. It'd be the perfect beginner's language if it weren't for all the "mushiness" dynamic typing brings along. Are there any semantic-whitespace, static languages? If not, there should be!

F# has those properties. I'm not sure but I think possibly all ML variants have that property (F# is an ML variant).
Logged

0stasis
Level 0
**



View Profile WWW
« Reply #14 on: April 22, 2016, 06:48:23 AM »

I think the biggest question here is do you want to learn how to program, or do you want to learn how to make games?

You can quite happily make very full-featured games using in many programming languages for many platforms, so it's really just a question of what features you need and what you want to target.

However if you specifically want to learn to program, then you're better off going with one of the more "hairy" languages and learning how a computer actually works.

Making games but there's so much to choose from and I always hear to with C++ but people seem to debate about it so I wanted to see the community thinks.

In terms of a platform, probably PC for now since my first game will probably be a concept. Side scroller mixed with a top down shooter/slasher.

Btw thanks Cheezmeister! I will dive in to the link.
Logged
0stasis
Level 0
**



View Profile WWW
« Reply #15 on: April 22, 2016, 09:07:05 AM »

Speaking of games, if the goal is to make games, what about game creation systems like Game Maker Studio? What am I restricted to?

I mean I still want to learn how to code to make games but I want to know the pros and cons between the two.

I feel the obvious would be restrictions.
If I want to make a side scroller/top down, what would I be restricted to?

Logged
Polly
Level 6
*



View Profile
« Reply #16 on: April 22, 2016, 10:27:40 AM »

Speaking of games, if the goal is to make games, what about game creation systems like Game Maker Studio?

If your goal is to ( learn how to ) create a game, going with something like Game Maker is a very good choice.

If I want to make a side scroller/top down, what would I be restricted to?

I'd take a look at the showcase page to get a impression of what Game Maker is generally used for.
Logged
oahda
Level 10
*****



View Profile
« Reply #17 on: April 22, 2016, 10:55:23 AM »

GM is quite versatile and general-purpose.
Logged

ProgramGamer
Administrator
Level 10
******


aka Mireille


View Profile
« Reply #18 on: April 22, 2016, 12:01:32 PM »

In Game Maker, you can make pretty much anything in 2D without any major hurdles.

You can even make 3D games, such as this particularly impressive game.
Logged

Richard Kain
Level 10
*****



View Profile WWW
« Reply #19 on: April 22, 2016, 01:29:12 PM »

I feel the obvious would be restrictions.
If I want to make a side scroller/top down, what would I be restricted to?

If those are the perspectives you're thinking about, you actually have quite a few options. Most game engines can handle that sort of thing.

I usually point people to either Unity 3D (an obvious choice) or Godot. (a less obvious choice) Both of these engines have extensive platform reach, have inexpensive options, and play nice with low-cost open-source content creation software. They also both have scripting systems, which allows you to ease your way into programming.
Logged
Pages: [1] 2
Print
Jump to:  

Theme orange-lt created by panic