I've got 18 months to learn a programming language on my own time...

I've got 18 months to learn a programming language on my own time. I want to use it for professional work and amateur gamedev. Should I focus on C++ or C#? C# seems to be the easier of the two but I feel like exploring C++'s low-level concepts will make me more competent as a programmer.

Attached: C-vs-C.png (2340x1440, 106.76K)

Other urls found in this thread:

github.com/diasurgical/devilution
twitter.com/SFWRedditImages

You should use c and make your own game wngine.

Sorry i meant assembly

I would've told you to use C# instead of C++ in any other circumstance but in gaiming C++ opens more doors. You can learn both though.

If its between unity and unreal, your decision should be focused on the engine, not the language.
And for what its worth C++ in unreal is very easy and almost feels like C#. They have a lot of macro magic going on

nerds won't tell you this, but C++ is 10x as hard for 1.5x the reward. Don't learn it as your first language. It's a good way to stunt your growth rate as you're trying to get a handle on things to start with.

While I mainly use C++ and like it a lot, this is very much true. I’ve been greatly hindered by this autism, don’t make the same mistake

Sorry but i'm a massive C# shill and even i aknowledge that in gayming, C++ is unavoidable. If the dude wanna make career in gayming he is going to learn it. I honestly don't understand why he can't learn both.

if you want to really experiment: C/C++ and play around with no-engine TUI games

The problem of unreal's c++ is not the programming language since it's java like. It's the fact that you have to use linear algebra.

start with C#, after 6-12 months, dabble a little in C++, build at least some experience there.
Then spend the rest of your time gitting gud at one of them.

after 18months, specific programming languages knowledge is much less important.

>C# seems to be the easier
>exploring C++'s low-level concepts
Don't make the mistake of assuming C# is simple just because it's not low level.
There is a tremendous depth to explore in C#.

Instead of worrying about managing your memory you craft inheritance schemes for your factory patterns.

Instead of sifting through core dumps to figure out where your program accessed invalid memory you are building extension methods for adding your library to the dependency injection system.

Instead of debugging why your unicode string is coming back as ANSI you are architecting a cloud repository pattern with massive parallelism.

Attached: 62c90ec1f562f5838c173d74a5c88166d127645b4fa8120d64e614bb9b874825.jpg (434x428, 114.4K)

All of these things are made piss easy to do for anyone competent, and that's the only commendable point about modern .NET, the tooling is ridiculously insane, so much so you're a retard if you aren't developing on windows (if you got ssms and VS database project tooling to work on Linux you know why)

It is the best language to teach you web development, it's hardest aspects to master aren't all that you make out to be tho. Comparing it with something like c++ in terms of what you get for your expertise and time invested is criminal.

You think "adding a library" to the DI container in .NET is hard? It's literally made to be easy so anyone can do it, that's why you call it "adding a library".

You're not supposed to be stuck admiring this as non-trivial, because it is, anyone competent wasting their time "mastering" c# is just lying to themselves

Everything is easy in c#. Something you admit yourself. The trick is vast number of easy things you can do with the framework. It's impossible to learn it all. Adding classes to DI is a basic concept. Doing it with extension methods is an intermediate concept and something to work up to once you are no longer slogging through the simple concepts and instead turn your attention to architecture. Note that I didn't specifically call out web applications. The framework gives you a DI container in aspnet, but you can also include it in console applications. It's an area of further exploration and study. There is nothing in c# that will make your head spin. Just applying thousands of simple concepts in unique and interesting ways.

Learn C/C++. It is an absolute must.
It is still used for native code and many other languages rely on it underneath.
It's one of the, if not the, most mature languages there are.
You must absolutely know C/C++ if you want to program things that are close to the OS or machine.
Even if you use Python, for some OS dependent stuff you will always have to dip down to C/C++.
As for C#, there is P/Invoke, so you can do things that are pretty close to the OS.

Still, C/C++ is more versatile and since you want to use it for learning purposes, in part, it's absolutely the language you should learn.
Other languages will not give you the experience of managing memory properly, for example, as .NET has garbage collection.
You will also never learn about aspects such as linking, relocatable code, name mangling, type aliasing, etc. as well as you will learn with C++.
C/C++ are here to stay for many more years to come and no programmer is complete in his skillset without knowing it.
I am being so forceful and repetitive because I really think C++ is just that important.
And once you start learning about it more, you will quickly see why.


If you want to look for inspiration, the project that reverse engineered Diablo 1 is here: github.com/diasurgical/devilution

* It's written in C++ and I had recently looked at it, which is why I'm throwing it out there, seemingly at random.

There are a million other reasons, such as .NET being too Microsoft centric. But you will quickly see why I think C/C++ is the only language/environment that is the, as of today, ONLY universal programming language in terms of the range of projects you can manage with it: everything from kernel development, embedded, all they up to UIs, large networked applications, and that with increasing ease as the language is slowly modernized for more convenience.

There is absolutely nothing, NOTHING, as powerful as C/C++. The only people getting pissy when you say that are the ones who don't know C/C++.

its about what to start learning. he wont learn both at the same time
I'd say c# is the easier route, then he can still learn c++

Your language isn't hugely important when you're just learning programming logic. Don't worry about implementation, just learn the tools available first.

>exploring C++'s low-level concepts will make me more competent as a programmer.
It looks like that but thats not true cpp makes low level concept's complicated to implement and you spend more time messing with syintax than learning the actual concepts. For example pointer its just an adress of a memory unit simple right but c and cpp make syintax (to assign to initialize to subtract)so convoluted and retarded poeple dread it forever. Also Im not a fan of OOP but it is really nesesary and useful in game development unless you are doing something really simple. Cpp makes declaring a class initiating a class making a child class so filled with random retardation that you loose the focus on building object oriented system and focus mainly on syintax again. Go with c# on this it will be easier and if you are not doing some huge game you can even use few other languages in unity . Which is probably what you are aiming for

No reason to use unity over unreal.
Unreal has a garbage collector anyways. I hate unity.

What kind of professional work are you planning on using it for? Unless you're going to be doing incredibly low level stuff, which it sounds like you wouldn't be, you probably want to go with C#.

Any Forumstards love to think that writing C/C++ makes them elite hackers, but really it's just a waste of time. C# has so much functionality built right into the standard library, so many useful packages, and a standard package manager you won't have to configure. It would really be a waste of time to learn C/C++ if you don't have a really good reason.