Jump to content

Unable to decide which programming language to learn

Karan Chopra

Hello there,

My name Karan. I have been building pc(s) since I was 7 years old and now I want to learn programming.But I am confused which language should I learn,As I want to learn programming to develop mobile games and pc games and also low end mods for pc games like the low spec gamer.

Any help would be massively appreciated.?

Link to comment
Share on other sites

Link to post
Share on other sites

It really doesn't matter, once you figure out how programming works learning a new language is easy. If you want to try mobile development then the only choices are Java or Kotlin for Android and Objective C or Swift for iOS. I would recommend Kotlin but as I said it doesn't matter that much.

8 minutes ago, Karan Chopra said:

mobile games and pc games and also low end mods for pc games like the low spec gamer.

Don't aim for the moon right away, start with the basics or you'll just get lost.

Don't ask to ask, just ask... please 🤨

sudo chmod -R 000 /*

Link to comment
Share on other sites

Link to post
Share on other sites

42 minutes ago, Karan Chopra said:

Hello there,

My name Karan and I am 14 years old.I have been building pc(s) since I was 7 years old and now I want to learn programming.But I am confused which language should I learn,As I want to learn programming to develop mobile games and pc games and also low end mods for pc games like the low spec gamer.

Any help would be massively appreciated.?

Hey Karan, cool that you want to learn programming! It's a very nice hobby and of course a great career path too.

I can't tell you 100% what language to learn, but what I can always recommend is: don't learn to program, program to learn.

What I mean by that, is that learning how to approach problem-solving is infinitely more important that knowing a language from your head.

 

So in that sense, I don't think it matters what you use as a first language, as it's all about being able to adapt as a programmer in the 'real world'.

 

That being said, if you want to develop games (whether it be mobile or desktop), I think Unity3D is an easy way for anyone to start out with programming and general game development. Unity3D uses C#, a widely used programming language.

You can always move to another platform/language if you feel like this one is limiting your abilities, but I think it's a good start.

 

Some people would recommend Python or Javascript as a first language too, but I think the problem with those two are that dynimically/weakly typed. What I mean by that, is that in programming we work with variables. A variable can hold some information (like it can hold a sequence of letters, which we humans call 'words'  or it can hold numbers, etc.).

A statically/strongly-typed language like C# will need you to say what kind of variable-type a variable is. While in Javascript for example everything is Var. 

One of the fundamentals of programming is the variable types. In my opinion, that is the first thing you should learn as a programmer. Javscript/Python don't have this.

That makes them really quick languages for more proficient programmers, but it's not a good idea to jump into that as a novice.

 

The sorts of variable I think are mandatory to learn are:

string: holds one or more letters and other characters (like a single letter, single number, multiple letters, a word, a sentence, multiple sentences, etc.)

int: a whole number (no decimal points)

double: number with decimal points

bool/boolean: true/false. A yes or no variable.

 

What the best way to learn a language is, depends on what way you learn best.

In general I would recommend finding a beginner tutorial series. That goes into detail on the different parts a beginner should know and naturally grow your knowledge of the language.

Start with a simple program.. Move to a simple 2D game, etc. etc.

 

Don't learn to run before you learned to walk! But of course remember to have fun too.

 

Good luck with programming and let me know if you have any other questions!

"We're all in this together, might as well be friends" Tom, Toonami.

 

mini eLiXiVy: my open source 65% mechanical PCB, a build log, PCB anatomy and discussing open source licenses: https://linustechtips.com/topic/1366493-elixivy-a-65-mechanical-keyboard-build-log-pcb-anatomy-and-how-i-open-sourced-this-project/

 

mini_cardboard: a 4% keyboard build log and how keyboards workhttps://linustechtips.com/topic/1328547-mini_cardboard-a-4-keyboard-build-log-and-how-keyboards-work/

Link to comment
Share on other sites

Link to post
Share on other sites

Do some of your own research.

 

Learning your first programming language will be the most difficult. When I was first learning I went with Python because of the simplistic syntax and it easy to follow. I'd highly suggest starting with python, if you jump into the deep end like you want (creating mobile games and mods) you'll get overwhelmed. Start with the basics, then go into the move advanced stuff.

 

I used w3Schools a lot when I started learning. I also used code academy to get my head around the basics.

 

Then once you've got to grips with python, possibly start with C#  or Java.

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

Unity3d.com

 

Learn C#. Should guide you for most of your intended goals & set you on the right path.

Link to comment
Share on other sites

Link to post
Share on other sites

43 minutes ago, minibois said:

Hey Karan, cool that you want to learn programming! It's a very nice hobby and of course a great career path too.

I can't tell you 100% what language to learn, but what I can always recommend is: don't learn to program, program to learn.

What I mean by that, is that learning how to approach problem-solving is infinitely more important that knowing a language from your head.

 

So in that sense, I don't think it matters what you use as a first language, as it's all about being able to adapt as a programmer in the 'real world'.

 

That being said, if you want to develop games (whether it be mobile or desktop), I think Unity3D is an easy way for anyone to start out with programming and general game development. Unity3D uses C#, a widely used programming language.

You can always move to another platform/language if you feel like this one is limiting your abilities, but I think it's a good start.

 

Some people would recommend Python or Javascript as a first language too, but I think the problem with those two are that dynimically/weakly typed. What I mean by that, is that in programming we work with variables. A variable can hold some information (like it can hold a sequence of letters, which we humans call 'words'  or it can hold numbers, etc.).

A statically/strongly-typed language like C# will need you to say what kind of variable-type a variable is. While in Javascript for example everything is Var. 

One of the fundamentals of programming is the variable types. In my opinion, that is the first thing you should learn as a programmer. Javscript/Python don't have this.

That makes them really quick languages for more proficient programmers, but it's not a good idea to jump into that as a novice.

 

The sorts of variable I think are mandatory to learn are:

string: holds one or more letters and other characters (like a single letter, single number, multiple letters, a word, a sentence, multiple sentences, etc.)

int: a whole number (no decimal points)

double: number with decimal points

bool/boolean: true/false. A yes or no variable.

 

What the best way to learn a language is, depends on what way you learn best.

In general I would recommend finding a beginner tutorial series. That goes into detail on the different parts a beginner should know and naturally grow your knowledge of the language.

Start with a simple program.. Move to a simple 2D game, etc. etc.

 

Don't learn to run before you learned to walk! But of course remember to have fun too.

 

Good luck with programming and let me know if you have any other questions!

Thank you do much for your valuable advice.I will surely follow your guidance.?

Link to comment
Share on other sites

Link to post
Share on other sites

21 minutes ago, fpo said:

Unity3d.com

 

Learn C#. Should guide you for most of your intended goals & set you on the right path.

Thank you for advice.It helped me a lot.

Link to comment
Share on other sites

Link to post
Share on other sites

47 minutes ago, Sauron said:

It really doesn't matter, once you figure out how programming works learning a new language is easy. If you want to try mobile development then the only choices are Java or Kotlin for Android and Objective C or Swift for iOS. I would recommend Kotlin but as I said it doesn't matter that much.

Don't aim for the moon right away, start with the basics or you'll just get lost.

Thank you for your advice.

Link to comment
Share on other sites

Link to post
Share on other sites

8 hours ago, minibois said:

Hey Karan, cool that you want to learn programming! It's a very nice hobby and of course a great career path too.

I can't tell you 100% what language to learn, but what I can always recommend is: don't learn to program, program to learn.

What I mean by that, is that learning how to approach problem-solving is infinitely more important that knowing a language from your head.

 

So in that sense, I don't think it matters what you use as a first language, as it's all about being able to adapt as a programmer in the 'real world'.

 

That being said, if you want to develop games (whether it be mobile or desktop), I think Unity3D is an easy way for anyone to start out with programming and general game development. Unity3D uses C#, a widely used programming language.

You can always move to another platform/language if you feel like this one is limiting your abilities, but I think it's a good start.

 

Some people would recommend Python or Javascript as a first language too, but I think the problem with those two are that dynimically/weakly typed. What I mean by that, is that in programming we work with variables. A variable can hold some information (like it can hold a sequence of letters, which we humans call 'words'  or it can hold numbers, etc.).

A statically/strongly-typed language like C# will need you to say what kind of variable-type a variable is. While in Javascript for example everything is Var. 

One of the fundamentals of programming is the variable types. In my opinion, that is the first thing you should learn as a programmer. Javscript/Python don't have this.

That makes them really quick languages for more proficient programmers, but it's not a good idea to jump into that as a novice.

 

The sorts of variable I think are mandatory to learn are:

string: holds one or more letters and other characters (like a single letter, single number, multiple letters, a word, a sentence, multiple sentences, etc.)

int: a whole number (no decimal points)

double: number with decimal points

bool/boolean: true/false. A yes or no variable.

 

What the best way to learn a language is, depends on what way you learn best.

In general I would recommend finding a beginner tutorial series. That goes into detail on the different parts a beginner should know and naturally grow your knowledge of the language.

Start with a simple program.. Move to a simple 2D game, etc. etc.

 

Don't learn to run before you learned to walk! But of course remember to have fun too.

 

Good luck with programming and let me know if you have any other questions!

Very nice advice! I´m also very interested in learning to code, but I´m not particularly interested in creating games... or anything in particular at the moment. Honestly I just want to get the strongest coding base I can with the first language I learn.

From what you´ve said I get that learning a statically/strongly-typed language is the best, would you then recommend me to learn C# first? I´ve read it can be hard for begginners, but once you learn it you will have a great, deeper understanding of programming.

Link to comment
Share on other sites

Link to post
Share on other sites

12 hours ago, fpo said:

Unity3d.com

 

Learn C#. Should guide you for most of your intended goals & set you on the right path.

Definitely this.

Link to comment
Share on other sites

Link to post
Share on other sites

4 hours ago, Quiverism said:

From what you´ve said I get that learning a statically/strongly-typed language is the best, would you then recommend me to learn C# first? I´ve read it can be hard for begginners, but once you learn it you will have a great, deeper understanding of programming.

I would recommend this approach as well, and I would recommend C# as an excellent choice for a good first language, or even a good language to learn at any time:

  • The language is under constant commercial and community development
  • It is widely used in industry, and has been for decades, so there are a plethora of knowledgeable professionals, most of whom are willing to help
  • Similarly to the above, the language implementers really want you to use C#, so there exists an unparalleled level of free and well organized canonical documentation, guides, and examples at all levels of complexity for the language.
  • C#, to me, seems to have an almost one-to-one ratio with state of the art understandings and theories of object oriented programming, yet is still accessible, so learning this language well will give you a deep and fundamental understanding of object orientation in general.

Just as some advice while learning C#, when you start to look for general object oriented things like inheritance, encapsulation, or polymorphism you will see quite a few code examples in Java. Do not be afraid of this, Java and C# are quite similar from a code example perspective, and after just a few days or weeks with C#, you should be able to translate between the two with no issues whatsoever.

 

Here is the first tutorial series that I would watch: It's supported directly by the C# language implementers and I just actually enjoy Bob Tabors teaching style: https://channel9.msdn.com/Series/CSharp-Fundamentals-for-Absolute-Beginners

 

This mini-course from Microsoft might also be of use if the previous course moves too quickly: https://docs.microsoft.com/en-us/learn/paths/csharp-first-steps/

 

However, I would strongly urge you not to learn C# with Unity. Unity has some, issues I'll call them, that will hamper your learning of good fundamentals applicable to all programming, but also things specific to C# programming. Additionally, programming anything in the graphics or game world involves some extra effort, and your initial learning shouldn't be hampered by a toolchain, or specific tools, algorithms, and efficiency analysis that will go into making useful or fun things in Unity. However, if you decide to learn C# with Unity, here's the resource that I found most useful: https://catlikecoding.com/unity/tutorials/ Notice how these get quite complicated quite quickly.

 

For those with experience reading this the most obvious issue with Unity that I could mention is that of using public fields to generate in-editor controls. Yes, you can get around this by using private fields with the [SerializeField] attribute, but the whole thing precludes the use of Properties and also dirties or even breaks the whole idea of encapsulation. Experienced developers can work around this, but for someone with no experience this would rob them of the opportunity to learn good fundamentals right from the beginning.

ENCRYPTION IS NOT A CRIME

Link to comment
Share on other sites

Link to post
Share on other sites

7 hours ago, Quiverism said:

Very nice advice! I´m also very interested in learning to code, but I´m not particularly interested in creating games... or anything in particular at the moment. Honestly I just want to get the strongest coding base I can with the first language I learn.

From what you´ve said I get that learning a statically/strongly-typed language is the best, would you then recommend me to learn C# first? I´ve read it can be hard for begginners, but once you learn it you will have a great, deeper understanding of programming.

Languages that people describe as 'easy' are usually easier because they skip over certain fundamentals. Programming become much easier when you don't have to worry about whether a variable int/double/string/etc. That is kind of how JavaScript and Python got their name as easy programming languages.

 

In my opinion though, knowing variable types and their purpose is an absolutely required knowledge and something that should not be skipped over.

 

C# isn't the easiest programming language, but that is because you can do a lot with it.

In my experience, programming is two parts:

1. The syntax/operations/variables/etc. 

And

2. How to make classes, how they work together, object orientation, etc.

 

I always recommend beginning with the first one, as the second one is kind of a method in making programs, which is equally important.. but it's more important to first know the basics.

 

What I would recommend is starting off with Visual Studio and making a Console project (.NET Core) and just following some tutorials that will show you the basics.

Start with doing some 'Hello World's program, move user to capturing user input and saying 'Hello user' (user of course being whatever the user said) and then moving over to more complicated stuff that will involve other fundamental skills like variables, if statements, loops, etc.

"We're all in this together, might as well be friends" Tom, Toonami.

 

mini eLiXiVy: my open source 65% mechanical PCB, a build log, PCB anatomy and discussing open source licenses: https://linustechtips.com/topic/1366493-elixivy-a-65-mechanical-keyboard-build-log-pcb-anatomy-and-how-i-open-sourced-this-project/

 

mini_cardboard: a 4% keyboard build log and how keyboards workhttps://linustechtips.com/topic/1328547-mini_cardboard-a-4-keyboard-build-log-and-how-keyboards-work/

Link to comment
Share on other sites

Link to post
Share on other sites

17 hours ago, Karan Chopra said:

But I am confused which language should I learn,As I want to learn programming to develop mobile games and pc games and also low end mods for pc games like the low spec gamer.

Write in C.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

7 hours ago, Dat Guy said:

Write in C.

C is definitely a language that should eventually be studied deeply by all programmers, but I think that it would be tough to make the argument that it's the best first language in modern times. Not least because most non programmers are using Windows, and the toolchain to write C on Windows is ridiculously complicated for non-programmers. Complicated enough that it's probably easier to install whatever flavor of Linux over a VM and learn VIM, GCC, and GDB rather than get the toolchain working on Windows.

 

What's your argument that C should be learned first?

ENCRYPTION IS NOT A CRIME

Link to comment
Share on other sites

Link to post
Share on other sites

“In modern times”, C is still the foundation of most computer systems. Including, but not limited to, your favorite toy language’s compiler.

 

The year does not matter when talking about timeless techniques.

 

(Also, C works quite well for the quoted requirements.)

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

11 minutes ago, Dat Guy said:

“In modern times”, C is still the foundation of most computer systems. Including, but not limited to, your favorite toy language’s compiler.

Well, that still isn't an argument for C.

 

If we want to get technical here, machine language is the foundation of all computer systems. So by extending your logic, the best first language to learn would be machine code.

A generalization of any sound argument should hold across all of space-time, so let's just imagine that we are back in the time of the Harvard Mark I computer. Can you really make the claim that Grace Hoppers notion of the compiler was wrong because it allowed you to break away from the foundation of computers and write in a language that did not directly represent what the machine was actually doing?

 

I mean, I can see where you are going: One should learn how things are working first. But C is not one-to-one with how things are actually working either. Why do you draw the line at C and not at assembly, or even at machine code? How can you say that it's necessary to first learn how things are actually working without being willing to say that one should first learn how things are actually working?

ENCRYPTION IS NOT A CRIME

Link to comment
Share on other sites

Link to post
Share on other sites

1 hour ago, straight_stewie said:

But C is not one-to-one with how things are actually working either.

True: C is not a high-level assembler (anymore). But it’s still a good idea to understand how memory allocation works. Especially “in modern times” where everyone writes applications which take half a GB of memory while idling.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

13 hours ago, Dat Guy said:

But it’s still a good idea to understand how memory allocation works.

I won't argue with you there. But I still believe that the barriers to entrance for C/C++ are too high for true beginners (people who legitimately have no idea about anything on the truly technical side of computing but are still interested in programming).

 

If there were some method to write ANSI C/C++ in a truly accessible and cross platform manner then I think you would have a stronger argument.


In a spoiler because slightly off topic, but still here because related to the discussion of making C more easily accessible to beginners:

Spoiler

I've been working for some time on a project that will make it easier to define new languages on top of the CLI. Actually, it's pretty cool if I can toot my own horn for a second. It's an L-System implementation over a generic IEquatable type Token with full support for all three types of context sensitivity, stoichiometric productions, parameters, and some additional features that we've come up with like parameter groups (these are actually really neat, allowing all kinds of things like modelling feed-forward and feed-backward systems, as well as symbolic parameters, stoichiometric parameters, and even runtime configuration of the output program by exposing parameter groups as part of the generated programs external interface) and L-Systems as tokens (a convenience feature for building very complex language definitions). We're getting close to meeting our "necessary to go public" goals. Perhaps a feasibility study on the beginnings of an ANSI C over CLI implementation as part of our debut "Look what it can do!" package is warranted. The CLR is a stack machine after all. Off the top of my head, I see no reason why such a thing shouldn't be possible, other than the amount of work that would go into making a good implementation of libc.

 

ENCRYPTION IS NOT A CRIME

Link to comment
Share on other sites

Link to post
Share on other sites

The relevant part of "ANSI C" is its portability. Sure: <windows.h> and <sys/whatever.h> are (usually) mutually exclusive. But that's not a C problem.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

1 hour ago, Dat Guy said:

Sure: <windows.h> and <sys/whatever.h> are (usually) mutually exclusive. But that's not a C problem.

If you can't write a program once and then have it run on every device for which a compiler/runtime/interpreter/whatever exists for that language without modification, it's a tough sell to call that language "portable", whether or not the canonical specification for the language allows a portable implementation to be made.

 

Sure. The specification says that ANSI C is perfectly portable to all devices for which a C compiler exists. Yet for some reason, I keep having to rewrite all of my non trivial C programs so that they work correctly on different devices, including the same physical device with a different operating system (the easiest case in which to get portability).

Regardless, we are getting away from the point here: C is ideally a spectacular first language. But C is realistically a terrible choice for a first language.

Just as an aside, you can totally learn how memory allocations work in C#. In fact, to do some things with anything resembling useful performance (such as a dynamically sized array, commonly known as System.Collections.ArrayList or System.Collections.List<T> in C# world), you have to write unsafe code, meaning that you use pointers.

ENCRYPTION IS NOT A CRIME

Link to comment
Share on other sites

Link to post
Share on other sites

2 minutes ago, straight_stewie said:

If you can't write a program once and then have it run on every device for which a compiler/runtime/interpreter/whatever exists for that language without modification, it's a tough sell to call that language "portable"

The language is not the problem then - the operating system's API is. While the "libc" has a widely portable arrangement (even on Windows, excluding the threading mechanisms), operating systems do not. Now which language will teach you about memory allocation and still not require "if POSIX else ..." constructs?

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

 

Quote

(Also, C works quite well for the quoted requirements.)

I would advocate for C. API like SDL, Open GL are made for C & wrapped for other languages like C++. 

 

However, the initial setup is a little confusing. It’s much easier to say “download unity” and then he has a wealth of low bar resources to help him along at his age. 

 

If he had a teacher to help him, I’d say “yes, C would be smarter in the long run for low level stuff & learning everything else on top of the base technologies is much easier.” 

 

I still vote Unity. C# is close enough that he can get a small jumpstart on C when he gets there. 

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×