5 ms·
Yea, this project fixes all the problems nobody ever has. "See the value of some binary logic in real time" "You can't make syntax errors" All of this and mo
by justin_vanw 11y ago
Yea, this project fixes all the problems nobody ever has.
"See the value of some binary logic in real time"
"You can't make syntax errors"
All of this and more, and it works on a small subset of a language that nobody uses!
These are the sorts of things that would be really interesting to a student in their first programming class. I can't imagine anyone with any experience needing or even wanting this.
- bbcbasic 11y agoIt is a problem to me if the time between making a coding change and being able to verify via gui or unit test is too long.
- ktRolster 11y agoIf that's a problem, then maybe your code is too monolithic. Unable to test it in pieces.
- bbcbasic 11y agoMonolithic code is certainly one possible cause. Another is having to manually recompile, flip windows or whatever then open the app, get to the point where your code change has made an effect then test it. That's a lot of context switching out of the mindset of changing that code.
- justin_vanw 11y agoThen you need to do a better job of running the code in your head and understanding what it does. Code that is 'written by debugger' is easily recognizable in that it is crappy in pretty specific ways. If you often have to run your code so that you can verify that it is doing what you thought it would do, you don't have any idea what is going on and it's going to be a disaster. Of course you need to run it to catch mistakes that anybody will make, but not to check that the code does what you think it will do. For example, in some language you have my_list.sort() method. What does this do to the list? Does it sort it in place? Does this lock the list from other changes? Will concurrent changes to the list corrupt it? What is the expected runtime of this? If the list contains strings, how are they sorted? By unicode code point? By binary utf-8 encoded value? Randomly? You should just know all those answers in whatever environment you are working in. If you don't you should study up on it. Trying to get a project finished by repeated guess and check is going to take an eternity and you are going to do a poor job.
- Peaker 11y agoImmediate feedback is extremely valuable. This is presented and explained better than I could by Bret Victor's "inventing on principle" talk. We need to get programming out of the "blindly manipulating symbols" phase.
- justin_vanw 11y agoIf you are blindly manipulating symbols you are not good at it, this is not everyone.
- yairchu 11y agoI think that you and Peaker are merely interpreting the term "blindly manipulating symbols" differently. Here's an explanation of what the term means: http://blog.absentdesign.com/2013/05/blindly-manipulating-symbols/ http://blog.absentdesign.com/2013/05/blindly-manipulating-sy...
- justin_vanw 11y agoSo I read that page, and I think the explanation is even worse than what I interpreted it to be the first time. What they call 'blindly manipulating symbols' I call 'automation'. That is the entire point of computers in the first place, to very quickly perform tasks so that a human doesn't have to. That means describing the solution to those tasks. This is no different than mathematicians using equations. We don't need to do the entire process of solving every problem if they are the same except for changes in some parameters, we can write an equation and plug the parameters in. In software, we can write an algorithm/program that solves some specific problem, so long as the solution is the same and only the inputs are changing. Since programming languages support branching, we can make these algorithms as general as we think is useful.
- Peaker 11y agoYou misunderstand. Perhaps watch the "inventing on principle" talk (which is an awesome talk, you won't regret it)?