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

×
I'm playing SpaceChem, enjoy it very much and wishlisted Infinifactory.
I want to try this one but looks like it is targeting programmer.
Being a non-programmer, will this game be too difficult? Will I learn how to programming (or on conceptual level) by playing this?
I never programmed any assembler code myself in real life, but I knew how it works and understand what it does and how a computer uses it to do math.

In university I did some Java and learned the basics in computer programming, but not that I would earn money with it.

Scripting on the other hand is something or a skill you do need a lot in real world and work. This includes fast learning of new scripting languages or APIs (program interface).

To me it is fun to find a solution to these things and I can spend hours looking at goa...ehh code :)

p.s. I think it is more important to be able to analyse numbers. There are only 13 different commands (instructions) you can use on this hardware to learn.
Post edited July 23, 2015 by disi
I took an introduction course on SQL in university, and oddly enough I had to apply this skill to solve problems in my first job in later years. Watched a few online videos about VB.net, and now is interested in VBA and hope it can reduce my workload. And now I record macro and make small changes, not coding apparently. Um...have to admitted I know one or two things on programming, but absolutely non-programmer.
They are far away from assembler, but this game hook me up and fear it is too challenging...
avatar
wongheiming: I'm playing SpaceChem, enjoy it very much and wishlisted Infinifactory.
I want to try this one but looks like it is targeting programmer.
Being a non-programmer, will this game be too difficult? Will I learn how to programming (or on conceptual level) by playing this?
Zach has been saying for ages that SpaceChem is not a game about chemistry, it's about programming, the chemistry is made up and people who don't know it would be just fine (I couldn't find a Zach quote, but here's a reviewer). I assume he got fed up explaining and made TIS as a spiritual successor where theme and substance match so that prospective players wouldn't be scared away. Since you play and enjoy SpaceChem, you already have the best possible training to be awesome at TIS.
avatar
wongheiming: I'm playing SpaceChem, enjoy it very much and wishlisted Infinifactory.
I want to try this one but looks like it is targeting programmer.
Being a non-programmer, will this game be too difficult? Will I learn how to programming (or on conceptual level) by playing this?
avatar
Starmaker: Zach has been saying for ages that SpaceChem is not a game about chemistry, it's about programming, the chemistry is made up and people who don't know it would be just fine (I couldn't find a Zach quote, but here's a reviewer). I assume he got fed up explaining and made TIS as a spiritual successor where theme and substance match so that prospective players wouldn't be scared away. Since you play and enjoy SpaceChem, you already have the best possible training to be awesome at TIS.
I never played SpaceChem, just because it looks like any other puzzle game with cute pictures. The freedom and ease of access in TIS is unique.
As I said before, you can also play TIS without even running the program. I start the new scripts in my head first by just thinking them through and get a concept before I start typing...
avatar
disi: As I said before, you can also play TIS without even running the program. I start the new scripts in my head first by just thinking them through and get a concept before I start typing...
Perhaps it's just the sheer meticulousness of it all. If you are asked what's the larger of two numbers people automatically use shortcuts in their brain and say 'That one of course!' never realizing that the computer is much like a blind person sitting in a chair and can't see both numbers at once.

You have to break instinctive habits to be a programmer. For you and me, we've probably made this transition long ago. For someone new? I'm not so sure. I once helped as a teaching assistant (since i was the top of my class) and no matter how i tried to explain or drill very simple concepts involving programming and Java, it wouldn't sink in for some people, it just can't (probably because it becomes too stressful and they quit long before they break past that threshold).


The TIS-100 is much like one of the simplest computers in the world, one that doesn't exist and was invented only as a teaching aid. Of course i'm reminded of Richard Buckland's CPU too which is similar...
avatar
rtcvb32: You have to break instinctive habits to be a programmer. For you and me, we've probably made this transition long ago. For someone new? I'm not so sure. I once helped as a teaching assistant (since i was the top of my class) and no matter how i tried to explain or drill very simple concepts involving programming and Java, it wouldn't sink in for some people, it just can't (probably because it becomes too stressful and they quit long before they break past that threshold).
So much this. I remember it took me quite some time to understand what variables are for. (To be fair, it was a year after I first saw a computer, and I didn't have one at home, so i had only a faint idea of what computers are for.) The instructor said, "Let's write a simple progam that adds two numbers together, like, 3 and 5". The numbers were put in as variables, so I wrote something like input X, input Y, print "3 + 5 = "X+Y, compiled (compiling was sorcery, literally) and ran it, submitted random numbers for input and couldn't understand why the program wasn't printing 8. After experimenting more, I figured out it was printing the sum of whatever I typed in rather than 8 and thought it was a bug. Like, "Uh, I'm trying to add 3 and 5, but I only get 8 when I type in 3 and 5". I don't know how the instructor managed to keep a straight face, but he did and said, "You'd better rewrite this line as print X "+" Y " = " X+Y, this way, a user can add any two numbers. This is why we're using variables, not constants. There's not much use for a program that just adds 3 and 5".

And SUDDENLY EVERYTHING MADE SENSE.

(Except object-oriented programming. It wasn't taught in school and had to wait until several years after graduation, when I got my hands on source code for commercial Java software.)
avatar
Starmaker: So much this. <snip> (compiling was sorcery, literally) <snip> And SUDDENLY EVERYTHING MADE SENSE.

(Except object-oriented programming. It wasn't taught in school and had to wait until several years after graduation, when I got my hands on source code for commercial Java software.)
Yes object oriented programming is definitely more difficult to grasp, more because they usually do a really really bad way of explaining it... Trying to associate it with something we know like books and animals, the hierarchy of animals or some such stuff like that. Would be easier if they just gave raw attachments to something that isn't physical (like a random number generator or a simple replacement crypto as a filter). I remember while learning Java that the interfaces seemed totally stupid because you couldn't build anything with them. D does a much better job explaining these principles as i recall.
avatar
wongheiming: They are far away from assembler, but this game hook me up and fear it is too challenging...
You shouldn't put special attention to the word "assembler". The instruction set and the core/line count is very limited. I'm doing assembler and reverse engineering for ages - but it doesn't help that much, because the TIS is just different. It's somewhat easier for programmers because they are used to recognize patterns and already know some solutions to well-known problems.
The solution for the first puzzle is obvious and you learn new techniques with every puzzle and every optimization attempt. Given enough time and patience even a non-programmer should be able to solve the puzzles with a straight solution. Once you got all segments working you can spend as much time as you like with optimizations for cycles, nodes, and instructions. E.g. filling a rectangle with white pixels can be challenging... I've managed to reach the minimum possible cycle count by using undocumented but consistent behavior of the virtual machine - but I've read someone solved it with 10 instead of 13 instructions...

Another example: You have two inputs A and B and have to output A - B to X and B - A to Y
20 - 5 = 15, 5 - 20 = -15
0 - 10 = -10, 10 - 0 = 10
You can follow the instructions closely and calculate both expressions. But you might notice that Y must be -X, so you can make it far more simple by subtracting once and just writing the negated value to the other port.
Post edited July 25, 2015 by nicode
avatar
wongheiming: They are far away from assembler, but this game hook me up and fear it is too challenging...
avatar
nicode: You shouldn't put special attention to the word "assembler". The instruction set and the core/line count is very limited. I'm doing assembler and reverse engineering for ages - but it doesn't help that much, because the TIS is just different. It's somewhat easier for programmers because they are used to recognize patterns and already know some solutions to well-known problems.
The solution for the first puzzle is obvious and you learn new techniques with every puzzle and every optimization attempt. Given enough time and patience even a non-programmer should be able to solve the puzzles with a straight solution. Once you got all segments working you can spend as much time as you like with optimizations for cycles, nodes, and instructions. E.g. filling a rectangle with white pixels can be challenging... I've managed to reach the minimum possible cycle count by using undocumented but consistent behavior of the virtual machine - but I've read someone solved it with 10 instead of 13 instructions...

Another example: You have two inputs A and B and have to output A - B to X and B - A to Y
20 - 5 = 15, 5 - 20 = -15
0 - 10 = -10, 10 - 0 = 10
You can follow the instructions closely and calculate both expressions. But you might notice that Y must be -X, so you can make it far more simple by subtracting once and just writing the negated value to the other port.
Thank you for the link to the pad!
avatar
rtcvb32: Trying to associate it with something we know like books and animals, the hierarchy of animals or some such stuff like that. Would be easier if they just gave raw attachments to something that isn't physical (like a random number generator or a simple replacement crypto as a filter). I remember while learning Java that the interfaces seemed totally stupid because you couldn't build anything with them.
Again, this. The physical analogies fail for two reasons. First, classes (in anything a beginner might use) get simpler toward the root of the hierarchy and those on the very top are ultimately made up of simple type fields. They turn more abstract, but this abstraction is simple and easily graspable. In the real world, it's completely backward: "bicycle" and "tea" are a simple matter of pointing fingers, but what the hell are "vehicle" and "substance"?

Second, a large part of OOP is people writing new classes, growing moar branches. And that's not something people in the real world do all that often, because the ends of IRL branches are concrete physical objects grounded in reality, the conceptual structure doesn't have anywhere to expand into. Newbies can walk the whole chain of object - man-made - vehicle - car - Honda CR-V (of which this particular Honda CR-V is a single instance), but then what? "Let's make a subclass by combining it with a cattle inseminator"?
avatar
disi: Thank you for the link to the pad!
Links, hints, and more: http://tis100.complexity.nl/
avatar
Starmaker: In the real world, it's completely backward: "bicycle" and "tea" are a simple matter of pointing fingers, but what the hell are "vehicle" and "substance"?

Second, a large part of OOP is people writing new classes, growing moar branches. And that's not something people in the real world do all that often, because the ends of IRL branches are concrete physical objects grounded in reality, the conceptual structure doesn't have anywhere to expand into.

<snip>

"Let's make a subclass by combining it with a cattle inseminator"?
Other things are they usually attach actions to a class to explain it. The big example is they describe a book, that you open the book and you read from the book and turn the pages... Sure that's something i can do. But what about loading and saving? Those aren't something i can do, and it immediately drops the whole field of which side of the table you're suppose to be working on. If i wanted to do other things i'd want to do with a book, those commands fail utterly. Like smelling the book (they hold scents) throwing it (decent non-lethal weapon) or blocking with it (impromptu shield), and plenty more i'm sure.

Another one with inheritance is usually it ties a function with an observable attribute (has 2 legs, 4 legs, a tail, etc) rather than an action, which end up being "the cat meows" and "the dog barks", and such static sentences/data doesn't really befit classes at all.
WTF!!!111eleven

avatar
disi: Thank you for the link to the pad!
avatar
nicode: Links, hints, and more: http://tis100.complexity.nl/
thank you!

p.s. are these new puzzles actual from other users?
Attachments:
Post edited July 25, 2015 by disi
avatar
disi: are these new puzzles actual from other users?
Yes, see: http://steamcommunity.com/games/370360/announcements/detail/38628750771920467

ps:
avatar
disi: WTF!!!111eleven
No, ten - time to have some sleep *g*