this post was submitted on 22 Apr 2023
29 points (100.0% liked)

Fediverse

17698 readers
2 users here now

A community dedicated to fediverse news and discussion.

Fediverse is a portmanteau of "federation" and "universe".

Getting started on Fediverse;

founded 5 years ago
MODERATORS
 

@fediverse What type of social media do you feel is lacking most in the fediverse?

To elaborate, there are a lot of different types of social media already on the fediverse such as microblogs, regular blogs, image sharing, link sharing and video sharing.

Personally, I'd love to see a gaming-focused social media platform on the fediverse.

you are viewing a single comment's thread
view the rest of the comments
[–] pingveno@lemmy.ml 2 points 2 years ago (1 children)

I've never bought this argument. It really doesn't take much brain power to figure out that if you are dealing with strings, the left side is going to be on the left and the right side will be on the right. That's incredibly intuitive logic.

I would offer up a different reason that neither should be used. Format strings do the trick nicely and allow you to start including literals, convert other types to strings, etc. as needed.

[–] ttmrichter@lemmy.ml 2 points 2 years ago* (last edited 2 years ago)

A whole lot of misdesigns are only a "small amount of brain power" to use. As your language accumulates these, however, the load builds up.

This also has the extra problem that overloading in general brings with it. What is the result of 3 + "string"? What is the result of "string" + 3? You have to have rules for this. These rules have to be learned. They have to be kept in mind. There is room for error. And of course the way different languages react to them will vary strongly.

For example in Rexx, Python, and Ruby these are errors (and with the latter two the error changes depending on which order). In Awk and Perl the result is 3 in both cases.

Format strings are better than + as concatenation, to be fair, but are still not very good compared to separate concatenation operators. It's hard to make them type-safe. They separate the value from its location in the string.

Using actual concatenation operators has the advantage of format strings, but add the possibility for type safety. For example in Ada:

...
    Put_Line("Distance: " & Distance_Value'Image & "km");
...

See here, & will only concatenate string types. If you want to print something that's not a string, you have to convert it to a string. This means you can't accidentally mix types. Further, it's immediately obvious where a given value will show up in the output. Compare and contrast with the C equivalent:

...
    printf("Distance: %skm\n", distance_value);
...

Not only is location of the value obfuscated—trivial to spot here, but in a complicated string it's very difficult to spot at times. And it's easy, too, to have the format code not match the value. As this example illustrates. Again, easy to spot in trivial code like this, but horrifically hard in real-world code, especially if the variable type changes.