7 Billion Humans

7 Billion Humans

View Stats:
strask Aug 23, 2018 @ 4:27pm
Is the programming language assembly-ish?
Hi all!

I have several assembly language programming games from Zachtronics (TIS-100, Shenzhen I/O, plus Exapunks which isn't quite exactly assembly but close enough). I don't really feel like I need another one.

What I would really like is a game that uses a higher level language, what I really miss in the Zachtronics games is the ability to write functions with return values etc.

I haven't read the pinned command and technique reference because I want to avoid too much in the way of spoilers.

So my question is, how low-level or high-level is the language in this game? Can you define variables? Functions/methods? Dare I hope... objects? Probably not objects, I know. But I'm just looking for a sense of if I will enjoy the programming.

Thanks for any feedback!
Originally posted by Futae Yamagawa:
The language is quite low level. I would say it's more like BASIC than Assembly, but it still has some features found in Assembly. No formal methods, no general-purpose loop construct, you need to use a goto like function. You get 4 pre-defined variables. Nothing you can customize the name to or declare, but the variables can store any value you can get them. Those values can be, and usually are, objects (a data cube, the coworker next to me, my boss, the printer, etc...), but you can't declare new object types, if that's what you were looking for.

Gameplay consists mainly of getting workers to manipulate 'datacubes' in various ways. The game does have value beyond the programming elements itself, it contains humor and what I found to be a more concrete story than in prior games by this group.

I'd say it grants solid experience in multi-threaded programming and gives some exposure to object-oriented as a concecpt, but only in a limited way (I can look at what Fred is holding, yay). That said, I've met very few programmers who can follow multi-threaded programming, so if your current experience is lacking in that I'd suggest picking this up. It's one thing to give a task to one processor. It's a different sort of problem giving that same task to twenty processors running concurrently.

(Edit: For reference, my 'assembly' experience might be better called 'writing in machine code', as properly speaking there was no compiler - I'd say this game straddles the line between BASIC and Assembly, but others may disagree)
< >
Showing 1-11 of 11 comments
The author of this thread has indicated that this post answers the original topic.
Futae Yamagawa Aug 23, 2018 @ 4:58pm 
The language is quite low level. I would say it's more like BASIC than Assembly, but it still has some features found in Assembly. No formal methods, no general-purpose loop construct, you need to use a goto like function. You get 4 pre-defined variables. Nothing you can customize the name to or declare, but the variables can store any value you can get them. Those values can be, and usually are, objects (a data cube, the coworker next to me, my boss, the printer, etc...), but you can't declare new object types, if that's what you were looking for.

Gameplay consists mainly of getting workers to manipulate 'datacubes' in various ways. The game does have value beyond the programming elements itself, it contains humor and what I found to be a more concrete story than in prior games by this group.

I'd say it grants solid experience in multi-threaded programming and gives some exposure to object-oriented as a concecpt, but only in a limited way (I can look at what Fred is holding, yay). That said, I've met very few programmers who can follow multi-threaded programming, so if your current experience is lacking in that I'd suggest picking this up. It's one thing to give a task to one processor. It's a different sort of problem giving that same task to twenty processors running concurrently.

(Edit: For reference, my 'assembly' experience might be better called 'writing in machine code', as properly speaking there was no compiler - I'd say this game straddles the line between BASIC and Assembly, but others may disagree)
Last edited by Futae Yamagawa; Aug 23, 2018 @ 5:02pm
strask Aug 23, 2018 @ 5:36pm 
Alright, thank you for all that information! While I am a little disappointed in the low-levelness oif the language you describe, I'll take your advice and try it out for the multi-threaded programming angle.

Cheers!
Futae Yamagawa Aug 23, 2018 @ 5:53pm 
Best of luck, but do remember to stop and smell the flowers (or talk to the workers, whatever).
Futae Yamagawa Aug 23, 2018 @ 6:07pm 
(addendum, the challenge levels, especially the later ones, challenge the multi-threaded aspect - 65 I solved more or less by happy accident, but 60 and 62 kind of have me stumped)
strask Aug 23, 2018 @ 8:11pm 
I do like the humor and character of the game so far. :)

I've just hit my first real annoyance, though, on puzzle 20 ("Reverse Line") it won't let me use the previously-introduced "GiveTo" command. I can understand limiting the command set for early puzzles to ease the learning curve, but once a command has been introduced it should be available for later puzzles, imho. :(
Futae Yamagawa Aug 23, 2018 @ 8:34pm 
Mindset is everything - You get to choose if you are happy or grumpy. If they let you use Arrays.reverse() every time you wanted to reverse a line of datacubes, it'd hardly be a challenge. And forbid if they let you use strstr() for every challenge level...

Half the fun is in figuring out different solutions instead of copying solutons from prior levels ... though now you have me curious how you might reverse a string with the help of giveTo...
...
Great, now I'll want to puzzle that out myself. Thanks? -.-
Mroz Aug 23, 2018 @ 8:42pm 
Originally posted by strask:
I do like the humor and character of the game so far. :)

I've just hit my first real annoyance, though, on puzzle 20 ("Reverse Line") it won't let me use the previously-introduced "GiveTo" command. I can understand limiting the command set for early puzzles to ease the learning curve, but once a command has been introduced it should be available for later puzzles, imho. :(
Levels has a limited set of instructions in many cases. It is more about putting together available instructions like a puzzle. I think that's the main difference from Zachtronics' games which are more sandboxy.
strask Aug 24, 2018 @ 1:43am 
Originally posted by Futae Yamagawa:
Mindset is everything - You get to choose if you are happy or grumpy. If they let you use Arrays.reverse() every time you wanted to reverse a line of datacubes, it'd hardly be a challenge. And forbid if they let you use strstr() for every challenge level...

Half the fun is in figuring out different solutions instead of copying solutons from prior levels ... though now you have me curious how you might reverse a string with the help of giveTo...
...
Great, now I'll want to puzzle that out myself. Thanks? -.-
True enough, on the mindset/attitude thing.

My initial idea was to have them all pick up the cubes in front of them, hand them around until they were in propper order, and then put them back down, without the humans actually moving around. I just solved it another way and moved on without attempting the optimizations.

And yeah Mroz, as I've gotten further in the game I'm seeing that you are right. :)
GraShropp Aug 26, 2018 @ 11:36am 
Definately like Basic, nothing like programming registers in asm. Old basic too as the jump instruction is more like a goto construct. I am not that far into the game yet, so I don't actually know if it has if then else contructs or for loops. I hope it does. If you enjoy logic puzzles though this will feed the need. :-)
Last edited by GraShropp; Aug 26, 2018 @ 11:37am
The Renderer Aug 26, 2018 @ 11:45am 
Originally posted by GraShropp:
Definately like Basic, nothing like programming registers in asm. Old basic too as the jump instruction is more like a goto construct. I am not that far into the game yet, so I don't actually know if it has if then else contructs or for loops. I hope it does. If you enjoy logic puzzles though this will feed the need. :-)

It does have "if" constructs and later on it moves further into parallel programming territory including communication between workers. Still all very low level, of course. Overall there is more variety than HRM had, with pretty distinct changes in how you program between the game's "phases".
Stelly Aug 26, 2018 @ 2:26pm 
High or low level doesn't mean which features a programming language offers or it's complexity. It's a designation in the spectrum between machine language and human language. The more interpretation a language needs to reach machine language (abstraction), the higher level it is.

The game uses a visual programming language akin to Scratch which is one of the highest programming languages that exist.
And about complexity, you're not going to learn OO or SOLID. There's a bit of YAGNI, DRY and KISS if you go for the challenges.
< >
Showing 1-11 of 11 comments
Per page: 1530 50

Date Posted: Aug 23, 2018 @ 4:27pm
Posts: 11