5 ms·
I guess the most important distinction is the “B” part (benevolent). Guido is called that because he is known (since before BDFL is a thing) to listen to other
by uranusjr 7y ago
I guess the most important distinction is the “B” part (benevolent). Guido is called that because he is known (since before BDFL is a thing) to listen to other people, and adapt when they disagree strongly with his decisions. Google has never demonstrated the same attitude afaict, and in multiple occasions showed exactly the opposite.
Edit: And to answer the question, no, there’s no philosophical differences. And there’s nothing wrong with that. Python never called itself a community’s language (there are instances core devs said in no ambiguous terms that it is Guido’s project). The problem only arises if a project gives an impression that it is owned by the community when it actually isn’t.
- remus 7y agoGiven that the go core team has committed to adding generics I don't think it's fair to say they don't listen to critique from the community. Is there a more contentious issue in go?!
- pjmlp 7y agoNot really, that is the hand waving when the issue ever pops up. Rob Pike already stated publicly that he is against the proposed idea for Go 2.0. "Rob Pike - Go 2 Draft Specifications" - https://www.youtube.com/watch?v=RIvL2ONhFBI https://www.youtube.com/watch?v=RIvL2ONhFBI
- civility 7y agoI wonder if they'd ever consider adding hygienic macros instead of templates/generics. To me, that solves the problem of needing to write the same code for float32+float64 and so on. And it doesn't require so much careful thought about the type system, accidentally creating an awkward metalanguage like happened in C++.
- marcosdumay 7y agoRust people are very glad that Rust brought high-kinded types to replace the most common uses of hygienic macros. Using macros for everything is a nightmare. About using them as generics, how do you enforce constraints? Unconstrained generics won't lead you far (or better, will lead you far into JS's Wat territory).
- steveklabnik 7y agoRust does not have higher kinded types.
- civility 7y agoIMO, Rust has a very nice macro system, and this is a good thing (although I'm not familiar with any changes they've made in the last year or two). It's a bad thing that sometimes one needs to resort to the macro system because other features in Rust don't play well together, but that's a long topic with no solution in sight. > About using them as generics, how do you enforce constraints? I'm really thinking about the case for numerical algorithms where the exact same code works for different types (say float32 and float64 in Go). It sucks to copy and paste hundreds of lines of code and it sucks to have a separate code generator write your file for you (essentially an external macro processor). Imagine something like the C preprocessor for Go, but without the well known flaws of the C preprocessor: #define IMPLEMENT_FOOBAR(NAME, TYPE) \ void NAME(TYPE* ptr, long len) { \ hundred lines of implementation here \ } IMPLEMENT_FOOBAR(foobar32, float32) IMPLEMENT_FOOBAR(foobar64, float64) That parametric polymorphic enough for a lot of use cases, and this could work with data structures too. As for constraints, you can pass function names as arguments too. For instance: IMPLEMENT_SORT(sort_baz, baz, bazcompare) Other proposed features in go, such as the "check" statement for error handling, are probably implementable as a nice macro if you had a good macro language. This means the core language wouldn't have to grow, and features like "check" could be imported from a library. Including features like this in a library means the core language isn't bound by backwards compatibility when a better idea comes along. Old code used the old library, new code uses the new one, and the language stays clean and compatible with both.
- 7y ago
- chimeracoder 7y ago> Rob Pike already stated publicly that he is against the proposed idea for Go 2.0. Rob Pike is not a member of the Go team anymore, and he has not been for several years.
- hwj 7y agoThat's sad. Was it because of disagreements?
- chimeracoder 7y ago> That's sad. Was it because of disagreements? No, he moved to work full-time on Upspin: https://github.com/upspin/upspin https://github.com/upspin/upspin
- baby 7y agoWow. That makes me happy. The last thing we need in Golang are generics.
- vinceguidry 7y agoWasn't Linus the original BDFL?
- thrower123 7y agoI think the B stood for something else in his case...
- zimpenfish 7y agoSeems to have been Guido. https://en.wikipedia.org/wiki/Benevolent_dictator_for_life https://en.wikipedia.org/wiki/Benevolent_dictator_for_life > The phrase originated in 1995 with reference to Guido van Rossum, creator of the Python programming language.
- lllr_finger 7y agoThere are some who would argue it's a "soft B" - his recent conf outburst isn't the only example of him failing to listen and adapt.