5 ms·
Well, in the interests of actually furthering discussion: I feel as if string and map simply could have been part of the standard library. My solution to the t
by omnigoat 17y ago
Well, in the interests of actually furthering discussion:
I feel as if string and map simply could have been part of the standard library. My solution to the this for prism was to have a section of the standard library (which doesn't exist yet) marked as "integral", to effectively have an implicit "import string, map from std.__integral__" at the top of every translation unit.
The absence of overloading operators seems to contradict their claims of improving the visual "flow" and feel of programming. There are cases where savvy operator overloading works wonders: vectors/matrices/quaternions, strings, complex numbers, etc. To be able to write my_string + my_other_string is far more elegant than strcat(my_string, my_otherstring). Consider what happens when you have four of five strings you'd like to concatenate!
The choice of CSP reflects Google's mentality: Their problems lend themselves very well to CSP. Other domains (in my opinion) work better with a STM model. But that's clearly a design choice, and I think it's fine!
- agl 17y agoOperator overloading has good points and bad points: we're erring on the side of simplicity for now. However, you can write "abc" + "def" in Go and it does what you expect.
- astine 17y ago=> "egi"?
- d0m 17y ago:P Nice one, made me smile
- spicyj 17y agoI'm sorry if this is a stupid question, but where'd you get that? I don't get it. :(
- skarlath 17y ago"abc" + "def" a + d = e (1 + 4 = 5 = e) b + e = g (2 + 5 = 7 = g) c + f = i (3 + 6 = 9 = i) I think he was making a joke about how + with strings doesn't necessarily mean string concatenation.
- spicyj 17y agoOh, element-wise addition. Somehow I didn't figure that out. Thanks.
- patio11 17y agoI think the point is even better than a joke: there is a danger in allowing things like, e.g., operator overloading (or redefining methods in the standard library), because programmers have different feelings about what the code "obviously" means. If in your language, + means string concatenation by convention, then + darn well means string concatenation. If in your language + means "contextually appropriate depending on what arguments you pass to it", then "abc" + "def" => "egi" doesn't strike me as obviously wrong. More broadly, consider a language in which we teach initiates that "Plus adds things in the way you'd expect!" map = {} map2 = map + {"key" => "contents"} What are the contents of map and map2 now? Uh oh. More worrisome: map = MemcachedWrapper.new map2 = map + {"key" => "contents"} What just happened?
- omnigoat 17y agoI'd like to make two points in response... 1) I did say 'savvy'. Sort of because I don't get to use that word enough, but also because it is possible to abuse operator overloading. String concatenation with the addition operator isn't going to suprise anyone, even if you come from another language (well, it might, but the choice of the + operator isn't an unintuitive one). Furthermore, nobody's jumping at things with well-defined operators, like vectors/matrices, etc. I've written very little outside of a maths library that used operator overloading, but it's a godsend for the cases where it's appropriate... probably a truism. Secondly, they're just functions. You can look them up (y'know, assuming you can), you can optimise them, and you can document them. A programmer encountering an operator doesn't have to rely on their interpretation alone, and indeed shouldn't. They should know what that operator does. Now of course, if the operator has absolutely no contextual reason for existing, or is suprising divergent from its apparent purpose... well, see point 1. As for your example, how do you do a greater-than-or-equal comparison on strings? :D
- blasdel 17y agoThankfully strings in Go are completely distinct from Arrays -- immutable, and with hard baked-in UTF-8 support.
- aidenn0 17y agoI always thought a huge benefit of lisp using S expressions is the lack of infix operators saves a lot of time and energy arguing whether/when they should be overloaded.
- oconnor0 17y agoI'm not a huge fan of "+" for string concatenation as "+" is, traditionally, commutative; I like Lua's "..". That being said I like "+" more than "strcat".