top 50 comments

sorted by: hot top controversial new old

Who gives a rats ass?

  • source
  • [–] 3 points 19 hours ago*

    By the popularity of type inference in variable declarations, a feature that’s included in most languages now: var in C# and Java, := in Go, auto in C++, and so on.

    I don't really like type inference, because I think that it makes it more-obnoxious to read code. That being said, I will concede that if you want a lot of static type information


    and compilers can do things with more information


    it does make for more concise code.

    EDIT: Hmm. I was trying to think what would make it better. Maybe I'd be more okay with it if all compilers for languages that did this had a trivial way to just run the type inference step and output code with inferred types present.

  • source
  • [–] 13 points 1 day ago (2 children)

    declaring multiple variables is less error-prone than in C. In C, the following declares x to be a pointer, but (surprisingly at first!) y to be a normal integer:

    int* x, y;
    

    Whereas the equivalent in Go does what you’d expect, declaring both to be pointers:

    var x, y *int
    

    I don't think this is a related at all. C could have easily decided that the definition makes both x and y pointers. They just decided not to so that you can declare more variables on one line by being able to do int x, *y, **z, .... It is more flexible.

    Similarly that Go line could have been parsed like var x, (y*) int if they wanted to. They just made a different choice.

  • source
  • hideshow 4 child comments
  • [–] 32 points 1 day ago (3 children)

    This doesn't matter so so much that I don't even have the words for it

  • source
  • hideshow 6 child comments
  • [–] 7 points 1 day ago (3 children)
  • [–] 3 points 11 hours ago

    It's only bike shedding if the people arguing over it don't know enough about the topic to actually make cohesive arguments.

    Things like how we name things and the grammar we use are quite important in cognitive psychology. And we can take advantage of research into cognitive psychology to better improve how we write software.

  • source
  • parent
  • [–] 6 points 18 hours ago (1 child)

    bikeshedding: Futile expenditure of time and energy in discussion of marginal technical issues.

    Not a term I was aware of. Thanks!

  • source
  • parent
  • hideshow 2 child comments
  • [–] 4 points 13 hours ago

    There was a pub in my town called the Bike Shed. I spent many happy hours there in futile discussions of marginal technical issues.

    Alas, they're now gone, I no longer drink alcohol, and the people I bikeshedded with have either died or moved away. I still occasionally shave a yak at work, though. Sometimes doing so is a necessary evil.

  • source
  • parent
  • [–] 7 points 1 day ago

    It does kiiiiinnnnda matter, but I just don't care and it doesn't affect me. Problem solving and remaining mentally flexible and able to switch gears is just kind of part of the field. But yeah, it feels like the "tabs or spaces" thing, in that, I have a preference, but I'm so used to encountering way, way dumber and worse bs that I don't even care about tabs v spaces.

  • source
  • parent
  • [–] 42 points 1 day ago (7 children)

    Hard disagree. Is that a joke? Type is far More important than name. Just ask the compiler.

  • source
  • hideshow 14 child comments
  • [–] 24 points 1 day ago* (last edited 1 day ago) (1 child)

    As other users have said, we aren't compilers.

    Types are important for type safety, so you don't access properties that don't exist, can use polymorphism etc. However, having worked in both duck-typing and hard typing languages, I believe the most important part of a type is it's name.

    Classes are are arbitrary constructs we create to help us understand and manage code. They are inherently organisational structures.

    That may sound like an argument FOR putting the name of the class first. "If I know it's a ConnectionCredentialsQuery, I don't need to know it's name, the use-case is evident!" Classes often get reused though, like a CartesianPoint. You may create several instances of them. Which of the name and type below are more indicative of use?

    CartesianPoint PlayerPosition; 
    

    Types are, to some extent, implementation detail. The name tells you what the variable is for, which is more important.

    Another point: You will always need to name variables well, because after declaration, whenever you see a variable, you will only see its name. You want to be able to fully understand what you are looking at without having to mouse over or go back to the declaration of a variable.

    Additionally, many typed languages will allow you to use a syntax to altogether avoid declaring the type of a variable if derived from somewhere else.

    var result = a + b;
    
    var customer = new Customer();
    

    Given that the type can be inferred, and therefore specifying it explicitly is optional, why make it the first thing you see? That means you need to move your eye back and forth when looking for the names of things. Which of these two are better for legibility:

    var result = a + b;
    CartesianCoordinate playerPosition;
    
    const result = a + b;
    let playerPosition: CartesianCoordinate; 
    

    Finally, you say that types are more important because they are important to the compiler, but compilers don't care about the order of these definitions. Compilers exist to allow us to write easier to read code. They exist to convert high level languages to low level byte code. They exist to enable more readable code.

    Thank you for coming to my TED talk.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 17 points 1 day ago (9 children)

    Controversial take: it doesn't matter in the slightest.

  • source
  • parent
  • hideshow 11 child comments
  • load more comments (7 replies)
  • [–] 4 points 1 day ago*

    Type is more important? So if the first argument of a function is minAge, which is an int, the important part is that it is an int? Just feed it any int?

    No, the important part is the meaning, what the variable actually is, if you use a compiled language the compiler will handle types for you anyway. You'll get a error if you feed it a string, or an water heater object, no surprises.

    Leave the machine work to the machine (compiler in this case), and concentrate on the real work, which is the meaning here.

  • source
  • parent
  • [–] 9 points 1 day ago (4 children)

    Maybe this comes from a non-typed language perspective... As someone who learned in Java, I do not like it because yeah, type is way more important. If someone was coming from Python, I can see why they might think this...

  • source
  • parent
  • hideshow 6 child comments
  • [–] 4 points 1 day ago

    I learned Java first. I think type should come second as well, like in TypeScript et al.

    If you're ever looking for the variable manually for some reason, by searching with your eyes, it's easier to find it by searching in the first character column.

    Otherwise, if you ever need to see the type of something, which... should be obvious from the context in quality code, your LSP should just be able to tell you directly, by some mechanism (hover with mouse, or some keyboard action).

  • source
  • parent
  • load more comments (2 replies)
  • [–] 6 points 1 day ago (2 children)

    a lot of modern languages explicitly disagree, eg Kotlin and Rust

  • source
  • parent
  • hideshow 3 child comments
  • [–] 7 points 1 day ago (1 child)

    I think that's so type inference can work by just omitting the type, instead of having to use "var" or "auto" in front of the variable name

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 1 day ago

    not precisely. Rust has let mut and Kotlin has val; ie the member layout and the mutability are treated differently, since those languages have mutability rules.

    this is a circular argument anyway. the language designers could have figured out a way to do type inference like, eg, Java, but, again, explicitly chose not to.

  • source
  • parent
  • load more comments (1 reply)
  • [–] 22 points 1 day ago (2 children)

    This suggestion was made by the year-day-month dateformat gang.

  • source
  • hideshow 4 child comments
  • [–] 15 points 1 day ago

    Was about to write a post asking what the beverage dispenser in the authors workspace provided.

    Then my brain snapped out of vacation mode and remembered that I mainly use var (mainly C# backend dev) which is effectively the same, and I've never had an issue with it.

    Now I'm left torn and confused, and in work mode on vacation... What a day, and it's not even 08:30.

  • source
  • [–] 6 points 1 day ago (1 child)

    name before type makes it easier for compiler writers. Not the language users imo.

  • source
  • hideshow 1 child comment
  • load more comments (1 reply)
    [–] 5 points 1 day ago (2 children)

    This is just arguing about whether the surname goes before or after the given name.

    If you think int x makes the most sense, you might be Chinese. Or Hungarian. Or English speaking if you grew up with characters like Fireman Sam or Postman Pat... erm...

  • source
  • hideshow 4 child comments
  • [–] 1 point 13 hours ago

    This is my take as well. I will add that I think I'm more likely to notice an issue with the type if the type is first though since it preps me to expect a certain thing after it.

    int firstName will likely trigger more alarms than firstName int but maybe thats just my perception due to familiarity. I feel like once I see the type my mind is looking to make the next part make sense whereas if I see the name first then I just assume what comes next makes sense and mentally move on.

  • source
  • parent
  • [–] 2 points 1 day ago

    Number one thing that screws me up when moving between the TypeScript client-side code and the Java server-side code: how variables are declared. Java is type first, TypeScript is name first.

  • source
  • load more comments
    view more: next ›