13 ms·
There was a wise thing along the lines of "to build a simpler system, start with more powerful (and complex, by necessity) building blocks"... I think it was Al
by nnq 7y ago
There was a wise thing along the lines of "to build a simpler system, start with more powerful (and complex, by necessity) building blocks"... I think it was Alan Kay who said this or something very similar.
Worst thing is that "simple" languages like Go force you to mix up "business logic" with "plumbing/infra logic" with "error handling logic" if you try to be idiomatic... I know that for security crucial code you might want to see all error paths next to a piece of code, for for the other majority of the code I want error handling tucked away in different system, and also the business logic factored out in some other very generic one that doesn't care about actual implementation of infrastructure.
Sure, if infrastructure IS your very product like Go's use case probably is, then it probably makes sense to not have features for such separation.
- friendly_chap 7y ago> error handling tucked away in different system I'm not sure that can ever be done. I agree Go could use some syntactic around error handling but I think even modern software is incredibly flaky and Go is a step in the right direction. It's tiring to think about all the failure cases but it might lead to a world where the ATM gives me money instead of Windows BOD.
- Kye 7y agoI experienced a good example of this recently when trying to decide between Bitwig and an upgrade of Ableton Live Lite to Suite. Suite comes with a full-featured audio programming environment called Max for Live. It has some high level devices for common functions, but you can go very low level and make just about anything. The building blocks are all very simple and basic: oscillators, math functions, routing, etc. Bitwig's Grid takes a different approach with a small number of powerful building blocks. The range of possibilities is smaller, but you can be more productive if the thing you want to make is composable from the available devices.
- fauigerzigerk 7y ago>Worst thing is that "simple" languages like Go force you to mix up "business logic" with "plumbing/infra logic" with "error handling logic" if you try to be idiomatic... How so? Can you not write modular code in just about any language? I'm not saying programming languages don't matter, but in terms of seperating business logic from plumbing I don't see huge differences. I also don't think you can seperate errors from the rest of your code on the same level of abstraction. Business logic errors such as "account overdrawn" are business logic. Plumbing errors such as a broken network connection are plumbing. The only errors that can and should be kept separate are bugs that need to be fixed.
- ellius 7y agoFunny enough, one of my favorite talks argues the opposite. "Constraints Liberate, Liberties Constrain." I won't attempt to summarize but it's well worth a watch.