Switching between human languages, such as for me, German and English, required me to learn English at a level that I think in it. Even with their shared ancestry, I don't expect these languages to use the same structure and concepts, like loop variable scoping. Admittedly, Go doesn't allow me to switch in and out into a different language mid sentence, which in human languages sometimes causes quite some hilarious reactions with my colleagues.
On Saturday, September 30, 2023 at 6:35:54 PM UTC+2 Victor Giordano wrote: > Thanks Alex, your insight was very helpful. > > Allow me to share the feeling I have => I still struggle a little in my > mind... I craft web fronts in javascript, and back in golang (and scala or > java). With this change I will have two different scoping rules... and I > feel I don't need it (because I learn how to use it well) nor ask for > them... but it is okay.. changes work that way. The bottom line is: I was > already comfortable with the language scope rules. > > El sáb, 30 sept 2023 a las 12:37, Axel Wagner (<axel.wa...@googlemail.com>) > escribió: > >> This has come up during the discussion already. I don't know enough about >> other languages to speak with confidence, but apparently there already is >> precedent for this and/or some languages are at least considering making a >> similar change. >> >> Note that scoping rules already vary between languages - in some cases, >> pretty widely. For example, Python is not block scoped - this works: >> def f(): >> if True: >> x = 42 >> print(x) >> And Perl has dynamic scoping, where variables can be scoped to a call >> stack, instead of any lexical element of the source code. Javascript, as >> far as I know, is pretty notorious for having extremely idiosyncratic >> scoping rules (e.g. it is a common confusion how `this` is scoped in >> different contexts) and also has several different kinds of declarations >> with AFAIK slightly different scoping rules. >> In C, a symbol is only scoped to a single file (as far as the processor >> is concerned) and in there, only from its declaration onwards, while in Go, >> a package-scoped definition can appear in any file of any package. And >> speaking of C, it doesn't have closures at all, so the scoping rules of >> loop variables are *already* very different. >> >> So I think the case that you *currently* don't have to be aware of how a >> language is using scoping is pretty vastly overstated. What's more, the >> majority of programs won't actually be affected by this - and for those >> that are, it seems that empirically, the new rules will align more closely >> with what people expect subconsciously. >> >> I don't think you should worry too much. Run your tests with the new loop >> variable semantics in Go 1.21 to see if everything still works. Most >> likely, it will - or you will discover a bug in your current code. >> >> On Sat, Sep 30, 2023 at 4:58 PM Victor Giordano <vituc...@gmail.com> >> wrote: >> >>> Hi gophers! How you doing? >>> >>> In my work we recently discuss with a buddy about this article >>> <https://go.dev/blog/loopvar-preview>. I need to talk about this.... >>> >>> I appreaciate that golang makes a lot of effort on this. Working with >>> clousures cames with perils and the go vet tool emiting a warning is a >>> great thing. >>> >>> Althought I do not think that chaning language semantics is something >>> 100% good, see my point: As long I use several languages for making a >>> system this "scope rule" will mismatch with other languajes, for example, >>> javascript. >>> >>> So from now onwards I shall be aware that for loops have variables >>> scopes in one fashion in Golang and in other fashion in another >>> languages... so at the end of the day, I feel like is adding some burden. >>> If for development we can use a single and sole language (Sauron don't read >>> this :P !) I would think this change is good, but that is not the case in >>> now-a-days. I try to think that with time, perhaps other languages evolves >>> it this way... but.. ¿what if I wanna have my "for loop" with legacy scope >>> (block scope, not per iteration scope)? >>> >>> So... I expect to the readers to talk with me, showing what they see and >>> feel. Is not my intention to generate hard feelings at all. I'm a person >>> that work crafting system in group with others.. I have had terrible >>> nightmares working with Scala where implicits and invoking methods as they >>> were feilds were terrible ideas for working in group (perhaps not if you >>> work solo). And this feature recalls me those feelings. >>> >>> Greetings >>> Víctor. >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "golang-nuts" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to golang-nuts...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/golang-nuts/5f31be67-d246-4778-a373-69d525772974n%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/golang-nuts/5f31be67-d246-4778-a373-69d525772974n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> > > -- > V > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/bf478159-7f74-4151-acc8-f663f42c557en%40googlegroups.com.