I am a beginner programmer, coding for my own pleasure (meaning that, while I use LLMs for guidance, I write all my code by hand, and my only goal is enjoyment, not career). Safe for a brief journey into JavaScript and PHP as a child, now, in my adult years, all my experience has been with Godot. Recently, I started to have the desire to actually learn how to program and make simple CLI/TUI tools for my own use, and since GDScript can only exist within the game engine, I started looking for another programming language to learn.
I landed on two: Python and Go, and now, knowing that it's probably a bad idea for a beginner to learn two languages at once, I need help from people with more experience in order to decide which of the two I should commit to. I'm at this stage in both where I've written simple exercise command line programs, and I want to try and build something bigger and actually get to know the language under pressure.
Python greatly appeals to me because it is basically the same thing as GDScript (but with a ton of features that GDScript does not have due to being specifically tailored for Godot), it is famously easy and I could start building actual apps in no time, and it has a breadth of beginner resources probably unmatched by any other language. Besides all the books focusing on specific tasks (I've enjoyed Automate the Boring Stuff with Python quite a lot), Learning Python is absolutely brilliant, going through logic, syntax, design choices and the standard library in exhaustive detail.
But Python just doesn't get me excited exactly because it is too abstract, too simple, too close to what I know from GDScript, it feels more like a scripting language than something to use to build whole programs, it just doesn't scratch that itch of curiosity that is pushing me to learn programming in the first place.
On the other hand, Go does scratch that itch a lot more. It excites me, as someone whose only experience is with JavaScript/PHP and GDScript, to learn a serious language, compiled, fast; it excites me to learn about lower-level concepts like actual typed variables and pointers. Go's logic of composition also appeals to me, because programming in Godot, I would rack my brain trying to figure out the right inheritance hierarchy just to notice that I messed up and need to refactor the entire system. Go's structs, methods, embedding and interfaces strike me as a much more flexible way to achieve the same thing.
But there is a relative scarcity of resources for people in my situation. I've browsed through the available textbooks and they're either made for more advanced learners, are general overviews of the language (Learning Go, for instance, only explains the syntax and the logic, but does not go over the standard library, which means, if I understand correctly, that it was written for people who will read the fucking manual), or are infantile (Head First, Get Programming with Go, etc). Either way, I'm starting off half-blind, stumbling through the standard library documentation, having no idea what I can and cannot do, or how.
I'm also worried about another thing. Though I am not an absolute beginner, my experience being with GDScript means that I've never actually written a standalone program; I never learned to think about architecture, what my program does from start to end: I can only think in simple systems that are driven by event handlers from user input, while the engine handles all the rest for me.
Although, as you see, Go excites me a bit more, I'm worried that if my primary goal is to learn how to think through complex problems and build programs from start to finish, it would be better to choose the simpler language. Or is it the opposite? What do you think? Will building something bigger be easier in Python, or will the relative restrictiveness of Go help me think through building a bigger project?
What would you do in my situation? Should I learn to build a program without worrying about learning the language (the Python route), or would it be better in my situation to learn a stricter, less abstract language first, and learn how to read the documentation on my own (the Go route)?