Kartik Agaram
Kartik Agaram
Ivan Reese
ogadaki
08/07/2020, 9:47 AMStefan
08/07/2020, 10:23 AMGarth Goldwater
08/07/2020, 10:40 AMKartik Agaram
Kartik Agaram
Kartik Agaram
robenkleene
08/07/2020, 7:36 PMKartik Agaram
Chris Knott
08/08/2020, 2:20 PMI'm curious to hear if anyone disagrees that we'll always have trade-offs, there's no getting away from them.
We will always have tradeoffs but the winners and losers are not always the same person. I might be in a situation where "nicer implementation properties" genuinely don't benefit me. For example, I am basically insulated from the difficulties Intel engineers have in understanding their chip designs. If they have to take on enormous extra complexity to give me a minor performance improvement, then from the perspective of God it probably isn't worth it, but from the perspective of me, it is, because the cost in this trade to me is smaller than even a small benefit. In this sense a faster chip is always better, there's no tradeoff. In nand2tetris, the language you design, Jack, requires each line to either start with
set
or do
. So instead of saying obj.func()
you have to say do obj.func()
, instead of a = 123
you say set a = 123
. The design tradeoff they made here is to make the implementation of the parser/compiler easier at the expense of an annoyance when using the language. In the context of the nand2tetris course this makes sense because the user of the language and the implementer of the compiler are both you, but if Jack was a real language this would be absurd.
Finally, just because there will always be tradeoffs doesn't mean there aren't sometimes outright improvements. Leibniz's calculus notation is strictly better than Newton's, IMO.Kartik Agaram