DEV Community

Discussion on: How I chose a programming language and beat bad habits

Collapse
 
robertomaurizzi profile image
Roberto Maurizzi

I'm having a "similar but opposite" problem that might even be what you'll find next in your programming adventures: I've been coding for decades but recently I decided I'd like to start making games, mostly for fun (so, no obvious corporate or career constrains nor directions). I'm currently conflicted between:

0) Using Python since I already know it well (and work with it daily) but the limited choice of game engines are limited to computers and aren't exactly top notch.
1) going Javascript (I don't like it, but it has a nice game library -Phaser- and can be ported everywhere)
2) Learning C# (I like the language but I don't like Unity's UI and their "new subsystem of the week" development approach)
3) Brush up my C++ from 30 years ago and use Unreal (I like the language but it's a slow going and more importantly Unreal is mostly targeted toward BIG 3D games and that's not good for independent developers working in their spare time)
4) Use this as an excuse to learn Rust (there' s a very nice, wonderfully complete tutorial to create Roguelike games in Rust). It almost worked... but in the end Rust's current frameworks are more or less as limited as Python's. WASM is promising... but at this point maybe we can WASM Python too?

ARRRGH :-D

I do agree very much with your general idea but your approach doesn't resolve my indecision. What to do? Roll a dice? 😅

Collapse
 
gwutama profile image
Galuh Utama

I‘ll play devil’s advocate here. 😀

Brush up your C++. Latest standard is C++20. Modern language. Zero cost abstraction. You got all the power you need. Using smart pointers you dont even need to manage memory manually anymore. Haven’t needed to do it since C++11.

Python too slow? Write C++ library (or use an existing one) and build python module from it using swig. Call your performant C++ library from your python code.

Want WASM? Compile your C++ code with emscripten. Call it from javascript.

Downside of C++ is package management though. There are some but there isn’t really de facto standard package management for the language.

Mobile and desktop apps? Use Qt/QML.

This is exactly the reason why I’ve been so unmotivated to learn rust: I got better results with C++ for systems programming. For prototyping, small apps and scripting I use python all the time anyway. I also use JS from time to time for frontend stuffs.

So right now I‘m settling for Go for backend purposes. I’m still learning it. I think It’s a good middle ground between performance, security, development speed and popularity.

Collapse
 
emlautarom1 profile image
Martín Emanuel

You could use C# with MonoGame. I've heard a lot of great things about it!

Collapse
 
bukazoltan profile image
bukazoltan

I can also recommended the Godot engine. Not really strictly C# but very close.

Collapse
 
thesnowmanndev profile image
Kyle Martin

Yeah that seems like an issue very similar to mine. Just more advanced. From a beginner perspective I'd say you are at the point where you wouldn't really struggle with the language aspect. You are at the same point I was but with game development engines. Just pick the one that interests you most. Unreal is really friendly for small team or individuals. Same with unity. Godot I hear is nice too but still in the "infancy" stage. Epic gives free assets every month to unreal users. Even if you just have a unreal account.