3 ms·
A practical, robust method for separating essential complexity from accidental complexity in software engineering. Trevor Blackwell has written about something
by rsaarelm 17y ago
A practical, robust method for separating essential complexity from accidental complexity in software engineering.
Trevor Blackwell has written about something like this: http://tlb.org/busywork.html http://tlb.org/busywork.html
- abossy 17y agoIt fascinates me that Trevor Blackwell has AdSense on his essays.
- tlb 17y agoI make like $150 / month from it even though my traffic is small, which I think is pretty cool. Essays about how to build stuff get high-CPC ads for servo motors & robot kits & stuff.
- silverlake 17y agoThanks for the pointer. Basically, Trevor wants the distraction of low-level tweaking so he can think about the high-level problem. That's the weakest argument for low-level languages I've ever heard. But Python fits the bill: Python for high-level, C libs for performance and low-level tweaking.
- rsaarelm 17y agoThe big solution I was thinking of would have to go a bit further than Python/C. Basically you should be able to write a description of the actual essential functionality of a program without going into data structure and algorithm implementation that isn't relevant to the problem domain. Something like Prolog or Haskell here, Python isn't all that declarative compared to them. Then you could write the bits that need tweaking in a lower level language, but you should be able to automatically verify that the low-level implementation matches the high-level description, at least through extensive QuickCheck-style automated testing if a full automatic proof isn't feasible. You don't get anything like this with a Python/C style solution.
- tlb 17y agoI've ended up with that style. The robot software is Python at the high level, C++ for low-level or OS-specific stuff. It runs fast and is easy to hack on
- TrevorBurnham 17y agoThe world is definitely in need of more programming tools in general that reduce cognitive load while keeping details accessible. Personally, I think that's going to come in the form of a programming language that's completely different from everything that's come before, something that's more than just lines of plain text. Perhaps something along the lines of StarLogo TNG, which lets you write games by fitting puzzle pieces together, but much more polished and general-purpose: http://education.mit.edu/starlogo-tng/ http://education.mit.edu/starlogo-tng/