3 ms·
An important difference is that Go not only has a concise set of constructs, it also tends to deliberately avoid abstraction. So any given piece of code is ver
by robert_tweed 7y ago
An important difference is that Go not only has a concise set of constructs, it also tends to deliberately avoid abstraction.
So any given piece of code is very explicit and self-contained. Apart from function calls, you can tell exactly what it does without looking up anything else, like a macro definition for example. It similarly doesn't have a lot of different ways to do the same thing tends to be opinionated about idioms (gofmt, for example).
Something like a Lisp DSL would be antithetical to the Go model of what simplicity means.
- ken 7y ago> Apart from function calls, you can tell exactly what it does without looking up anything else, like a macro definition for example. It sounds like you’re splitting hairs here. In my experience, macros aren’t any more mysterious than functions. The only difference, after all, is when they’re evaluated.
- balfirevic 7y agoThe other crucial difference is how their arguments (and result) are evaluated.
- silasdavis 7y agoThe difference is that they generate code. So now you have compile some code in your head as well as running your hypothetical execution. Nothing wrong with that but they tend to be harder to understand than functions.
- pjmlp 7y agoYep. Copy-paste for the win. Maybe they should do away with the abstraction that memory is endless.
- _ph_ 7y agoGo does not avoid abstraction, only certain constructs. You do have functional abstraction with high order functions. You do have types and methods.