task: error messages

This commit is contained in:
Kartik K. Agaram 2021-10-21 20:46:04 -07:00
parent d19a5c66e0
commit b044bd4264
2 changed files with 51 additions and 0 deletions

View File

@ -215,3 +215,48 @@ shows that Mu consistently follows a few rules:
If you're stuck, as always, [my door is open](http://akkartik.name/contact).
You can also see a solution in the repository, though I won't link to it lest
it encourage peeking.
## Task 6: getting used to a few error messages
If you're like me, seeing an error message can feel a bit stressful. It
usually happens when you're trying to get somewhere, it can feel like the
computer is being deliberately obtrusive, there's uncertainty about what's
wrong.
Well, I'd like to share one trick I recently learned to stop fearing error
messages: deliberately trigger them at a time and place of your choosing, when
you're mentally prepared to see them. That takes the stress right out.
Here's the skeleton for `tutorial/task6.mu`:
```
fn main {
var m: int
var r/edx: int <- copy 0
# insert a single statement below
}
```
(Reminder: `m` here is stored somewhere in memory, while `r` is stored in
register `edx`. Variables in registers must always be initialized when they're
created. Variables in memory must never be initialized, because they're always
implicitly initialized to 0.)
Now, starting from this skeleton, type the following statements in, one at a
time. Your program should only ever have one more statement than the above
skeleton. We'll try out the following statements, one by one:
* `m <- copy 3`
* `r <- copy 3`
* `copy-to r, 3`
* `copy-to m, 3`
Before typing in each one, write down whether you expect an error. After
trying it out, compare your answer. It can also be useful to write down the
exact error you see, and what it means, in your own words. Flipping the
"runbook" that way can be a useful aid to memory when you see an error for
real, during a real programming session.
(Also, don't forget to delete the statement you typed in before you move on to
trying out the next one.)

6
tutorial/task6.mu Normal file
View File

@ -0,0 +1,6 @@
fn main {
var m: int
var reg/edx: int <- copy 0
# insert a single statement below
}