It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
Become a machine learning specialist who makes neural networks, but your cat seems to be better at it. Build a cat-to-human translation system in while True: learn(), a game that is now available on GOG.COM along with a 20% discount that will end on 30th April 2021, 1 PM UTC.

Also until 30th April 2021, 1 PM UTC, the game's DLCs are available 10% off. If you buy while True: learn() along with all 3 of its DLCs on GOG.COM, an additional 10% discount will be applied to such purchase.

Share our love for games? Subscribe to our newsletter for news, releases, and exclusive discounts. Visit the “Privacy & settings” section of your GOG account to join now!
Hello everyone!

As someone who really enjoys the Zachtronic's type programming games, I am quite curious about this one.
However, I am not yet convinced of the actual "programming" stuff you are supposed to do and how they are represented. So, I am going to wait a bit and look out for some gameplay footage first.


Regarding the question of the purpose or usefullness of "programming games":

I have seen those discussions coming up a lot since the success of Zachtronic's "Spacechem".

Initially, I was sceptical, as well. Actual programming is also part of my engineering work career.
But after I gave Zachtronic's "Infinifactory" and "Spacechem" a chance, I could see the appeal of such games, if they are done well!

First, as already mentioned by eric5h5, you do not need to learn a specific language to learn how to program. It is all about the abstraction of a problem and its parameters in order to find one of the many suitable solutions. Furthermore, you usually get to learn intuitively the development cycle of analysing, designing, implementing and testing. And I do agree with eric5h5, that learning those concepts, as well as the different concepts of structural versus object programming, or even parallelisation can be way more valuable than a specific programming language. (Especially, since the exact language to be used could depend on each individual project, development environment and other factors.)

Second, depending on the programming task at hand, code or process optimisation may or may not be needed or desirable! And games can teach those principles and ways to accomplish it. Take, for instance, the Zachtronic's games. They do a really good job in allowing for a pletora of possible, working solutions instead of just the one and only solution intended by the game's designer, while at the same time giving enough incentive (e.g. through histogrammes) for the inclined ones to optimise their solution for better performance in one of three categories (in "Infinifactory" those are for example Cycle Count, Block Count, and Footprint Size). The genius within the Zachtronic's games lies in making these extra efforts entirely optional for the player.

Third, while the process of abstracting a problem and developing a solution can be satisfying in itself, seeing your implemented solution operating and working is a much better source for satisfaction. But often those results are less exciting in many of the real worlds programming tasks. Modern programming games on the other hand cleverly depict the 'running' of your program how it produces its 'outputs' in real time, letting you see it operating like an intricate clock-work doing its thing. And that is so much more fascinating!
For sure, some games do this in a more sophisticated way than others--I prefer the way how "Infinifactory", "Spacechem", "Opus Magnum" or even "TIS-100" and "Human Ressource Machine" do this than for example the less tangible visual feedback in "Shenzhen I/O".

And last but not least--this is actual my main interest in 'playing' programming games versus real life programming tasks--you get seemingly arbitrary problems and corresponding restrictions or constraints to deal with in order to find a creative solution, which can range from very simple, basic programming exercises (teaching concepts) to actual complex challenges of the kind you might never face in your secular work! And the typical beginner or self-learner might not choose such type of problems or come up with those arbitrary constraints by him/herself!
As an engineer, I like to be challenged with something new and different every now and then. But often you might be stuck in a certain scope of tasks and repsonsibilities at your work causing some kind of routine to settle in. Games about programming present a valuable alternative with diverse problems to solve, especially, because they take away the heavy pressure of responsibility or urgency from the real life--they are games for entertainment afterall and your income does not depend on your success in them!

To sum up my opinion, whether you see 'good' programming games as playground or testing field for learning a variety of (new) skills or if you consider them as a 'relaxing' or an 'intriguing' complement to your regular day-to-day secular work or activities, they can be benficial for both non-programmers (or beginners) and experienced professionals.

Kind regards,
foxgog
avatar
i_ni: But of course, Clever Cat's giving a hint to:
:-D
I think he is saying: give me chicken ;-)
But you will have to finish the game to talk with the cat and find out.
Post edited April 25, 2021 by LinuxFire
avatar
eric5h5: If you learn a made-up game language and can successfully transfer the concepts to real programming, you understand what you're doing far more than someone who learned the syntax of Python but is then utterly lost when they have to use a different language.
Oh ok, so you are depicting a case where someone is just copy&pasting other people's code, without understanding any of it? A bit like just learning a few phrases from an unknown language, but not really trying to learn the language itself?

I was talking about someone actually learning, yes, learning a real programming language, and how to use it to solve different kinds of problems and tasks. Yes, I still believe such person knows much more about programming, and can also pick up "other programming languages" easier, than someone whose knowledge about programming come from playing "programming games".

I am sure playing Guitar Hero also teaches you concepts about playing a guitar, but I think if you want to learn to play a guitar or any other instrument, better just learn notes and said instrument.
Post edited April 25, 2021 by timppu
avatar
timppu: Are there "programming games" that teach some actual programming language that can be used in real life, not just in that game?
Yes, one of the most successful (at least AFAIK) would be Screeps.

https://screeps.com/
I don't know...this seems more like hard work than an actual game.
avatar
timppu: Are there "programming games" that teach some actual programming language that can be used in real life, not just in that game?

To me it just feels... odd to try to learn some made-up-for-that-game-only programming language, when I could use that time to learn some real programming language like python or what have you and even do some real-life projects of your own with it.

It is a bit like if there were games where you were supposed to learn made-up human (or alien) languages. It sounds kinda pointless as well, and no I am not interested in learning klingon or that elven language in LOTR. Heck I already know Finnish, there is no challenge for me in those made-up languages!

Here's a joke I just made up:

What does it mean when a klingon says: "Khrak gurk KRAAAK gurgle kahtar grög graag!".

It means he has a chicken bone stuck in his throat and he is gasping for air. What did you think it would mean, huh?!?
I actually know a few, and i used to be semi-decent at Klingon, too. There's actually some use to artificial languages, so i'll argue that point. If you actually want games for the purpose of teaching programming, that can be discussed, too, but I don't think you're actually interested in that.

Artificial languages (both programming and communicative) are useful in practicing concepts with something you can throw away to learn how to learn a language without slopping up a real language and developing bad habits that are (near) impossible to get rid of. I can blunder in learning Klingon without fear of developing bad pronunciation, while also getting the experience of learning why that's a problem. Similarly, and more usefully, there are some games like TIS-100 or DroidBattles (which i thought about remaking, once) which are very, very close to real langauges. And then there's even games that teach you the language by virtue of more or less being
puzzle games like this one that teaches java.

But, hey, we're living in a world where people are making major programs using discord coupled with things like electron or node.js. At the end of the day, all these "fake" programming languages in games are more or less going though the same process as "real" ones, anyway. Then you have the wonderful gray area like the the scripts used in game engines.

But, i can't speak for this game in particular.
Post edited April 26, 2021 by kohlrak
avatar
eric5h5: If you learn a made-up game language and can successfully transfer the concepts to real programming, you understand what you're doing far more than someone who learned the syntax of Python but is then utterly lost when they have to use a different language.
avatar
timppu: Oh ok, so you are depicting a case where someone is just copy&pasting other people's code, without understanding any of it? A bit like just learning a few phrases from an unknown language, but not really trying to learn the language itself?

I was talking about someone actually learning, yes, learning a real programming language, and how to use it to solve different kinds of problems and tasks. Yes, I still believe such person knows much more about programming, and can also pick up "other programming languages" easier, than someone whose knowledge about programming come from playing "programming games".

I am sure playing Guitar Hero also teaches you concepts about playing a guitar, but I think if you want to learn to play a guitar or any other instrument, better just learn notes and said instrument.
My nephew plays professionally and he learned primarily from Rocksmith.

Those game looks like it's all about visual coding and teaching higher level concepts than the language.

To use your language analogy, it's talking about his it's rude to tip a waiter, and impolite to make "your mother" jokes. Indeed, this game is like teaching about a culture, not a language.

This information is useful. For one, if you want to build, you can make another step and learn a language. 2 - visual builders probably exist now and will certainly exist later. Programming is getting more and more high-level, more accessible. 3 - I don't think most would play if it got bogged down in learning a language. Especially if you're interested in python and the game teaches Visual Basic. And 4 - as previously stated, concepts run across all languages.

I'll throw in a 5, too. I think that people who learn this stuff become better computer users, more engaged in computing concepts, and less of a sucker from snake-oil salesmen.
avatar
timppu: Are there "programming games" that teach some actual programming language that can be used in real life, not just in that game?
avatar
Geralt_of_Rivia: Yes, one of the most successful (at least AFAIK) would be Screeps.
https://screeps.com/
A nice complement for those who want to learn JavaScript, thanks.
And we can vote for it to come on GOG:
https://www.gog.com/wishlist/games/screeps
Post edited April 26, 2021 by LinuxFire
avatar
timppu: To me it just feels... odd to try to learn some made-up-for-that-game-only programming language, when I could use that time to learn some real programming language like python or what have you and even do some real-life projects of your own with it.
Programmers often enjoy logic and optimisation puzzles. That's what games like this are.

Moreover, the puzzles tend to be relatively small, and so you have a fairly short reward loop, which is satisfying. And when you're done, you can purge it from your brain. The constraints or 'made-up-for-that-game-only' aspects also mean they exercise your brain differently. All of this makes them an enjoyable break from 'real' programming.

Conversely, real-life projects are usually much more complicated; take much, much longer to 'complete'; and probably still have bugs even then, which will require longer-term attention and maintenance. All of this means that you don't get such an immediate kind of reward.

I do programming for work; I also have hobby projects which I've written in my spare time; and I enjoy games like these. I get something different out of each of these things.
Post edited April 27, 2021 by Shadowcat
avatar
Tallima: 2 - visual builders probably exist now and will certainly exist later. Programming is getting more and more high-level, more accessible.
glade, visual studio, unity, etc. Yeah, visual building has been around for a long time now, and the coding is minimal when it comes to gui. They usually have a way to add code via a typing interface, to help glue things or add functionality, but it's already here. I've seen examples of visually built programs on GOG: all the gogrepo gui frontends. Behind the scenes, i imagine, it's all plug'n'play level stuff that doesn't even go as far as using equality operators to fill in the stuff. Actually, i think some of this stuff is older than GOG itself, so it's worth being aware of.

I've noticed, though, that it actually makes programming less accessible. It's more akin to driving. These visual bits are like the Barbie trucks. Then next up you have the scripting languages like JS, python, etc, which are a bit like driving a go-kart: doesn't go very fast for complex operations. Then you have the languages like C, C++, Java (yes, it's now got native binary support on Android and iOS), etc, which is like driving an automatic. Assemblies are like driving a stick shift: you'll get more control over your vehicle, you need to understand it better to keep from screwing up, but that extra requirement also makes you better at handling an automatic, and your manual overrides to the gear system can give you more power or milage depending on your desires, but the differences will be limited, but it also gives you access to 18-wheelers (sub-kernel). And, yes, I've played in these 4 levels.
3 - I don't think most would play if it got bogged down in learning a language. Especially if you're interested in python and the game teaches Visual Basic.
Yes and no. I learned C++ because I wanted to make missions for Star Trek: Starfleet Command III. I ended up not understanding enough of the build process to actually succeed, unfortunately, and had trouble getting any kind of help. Now that I have done assembly and have worked with the build process a bit, I understand now that I had done things that weren't unnecessary that i thought were that made it way, way harder to develop the mods, which is why I had never succeeded.

I think the big picture here is the chicken and egg issue, which is something I've learned when trying to help people with their programming studies and trying to help people learn coding outside of a classroom. At the end of the day, people see a long and hard journey ahead of them, and they want something to chew on and be proud of very early on. This is why languages like perl and python get gobbled up pretty quickly 'cause it avoids boilerplate code. On the flip side, they also don't want that long, painful journey of hardship and brain bending to be learning something that doesn't have the full tools available to them (so, like, if someone ever dreams of coding a game, getting them to learn PHP first is not going to fly). Of course, you and I both know that once you learn C or C++ or something like that, learning Visual Basic, Java, Python, etc is really easy, since the fundamental concepts behind the challenging parts to understand are all pretty much the same. However, we cannot communicate that to people. I think this is what timppu's problem is, because he's not demonstrating something here, that says "i'm a coder," but rather that he's certainly interested (i could be wrong though) demonstrated by awareness of certain topics, which implies to me that he's afraid of investing and getting burned. At the same time, people like him are very afraid of a raw, unguided investment, which is also what makes him the target audience of something like this: regardless of whether or not it actually works, coding game advertisements prey on your fear by promising to make it easy for you as opposed to raw learning.

I would invite timppu, or anyone else, to go ahead and spend a whole day off learning C (should be perfectly possible to get through all examples and at least half-understand the ideas in one day). You'll not be perfect at it at the end of the day, but a decent C tutorial that covers all topics is enough to get your feet wet, and going through the whole thing again 2 or 3 times after you realize how short and manageable it actually is, you'll probably take a week or two after work or school to learn the rest by going over it again with a fine toothed comb. If you find C hard, contact me and i'll set you up with some kind of assembler: assembly's supposedly harder, but it only is harder through it's simplicity: it's easy to understand but harder to put to practice, and I can help you get started in x86 or on android (the timer for android is running out due to some policy changes) without a series of complex tools (and I believe i can teach you assembly in about 2 hours by comparison, and you'll quickly take that up to learn C in about 4 hours making the process even faster than going straight to C, however i don't offer it first 'cause it's harder to find material to help you go that route).

I wish i had myself as a programming teacher: I would've accomplished my goal.
avatar
kohlrak: glade, visual studio, unity, etc. Yeah, visual building has been around for a long time now
Or, you know, Smalltalk since about 1970 :)
Post edited April 27, 2021 by Shadowcat
avatar
kohlrak: glade, visual studio, unity, etc. Yeah, visual building has been around for a long time now
avatar
Shadowcat: Or, you know, Smalltalk since about 1970 :)
I forgot that one 'cause no one talks about it, anymore, nor have i ever seen it. XD