Made with KolourPaint and screenshots from Kate (with the GitHub theme).

  • Oriel Jutty :hhHHHAAAH:@infosec.exchange
    link
    fedilink
    arrow-up
    11
    ·
    2 months ago

    Because let x: y is syntactically unambiguous, but you need to know that y names a type in order to correctly parse y x. (Or at least that’s the case in C where a(b) may be a variable declaration or a function call depending on what typedefs are in scope.)

    • HiddenLayer555@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      6
      arrow-down
      1
      ·
      edit-2
      2 months ago

      Can’t say I’ve ever experienced this kind of confusion in Java but that’s probably because they intentionally restricted the syntax so there’s no ambiguity.

    • Gamma@beehaw.org
      link
      fedilink
      English
      arrow-up
      4
      ·
      edit-2
      2 months ago

      Also useful when the types are optional, like Python. Though they don’t use any let or var or anything so maybe throw that entire point out the window

  • TootSweet@lemmy.world
    cake
    link
    fedilink
    English
    arrow-up
    5
    ·
    2 months ago

    The Go programming language documentation makes a big deal about how it “reads from left to right.” Like, if you were describing the program in English, the elements of the Go program go in the same order as they would in English.

    I say this as someone who likes Go as a language and writes more of it than any other language: I honestly don’t entirely follow. One example they give is how you specify a type that’s a “slice” (think “list” or “array” or whatever from other languages) of some other type. For instance a “slice of strings” would be written []string. The [] on the left means it’s a slice type. And string on the right specifies what it’s a slice of.

    But does it really make less sense to say “a string slice”?

    In Go, the type always comes after the variable name. A declaration might look like:

    var a string
    

    Similarly in function declarations:

    func bob(a string, b int, c float64) []string { ... }
    

    Anyway, I guess all that to say I don’t mind the Go style, but I don’t fully understand the point of it being the way it is, and wouldn’t mind if it was the other way around either.

    • bleistift2@sopuli.xyz
      link
      fedilink
      English
      arrow-up
      3
      ·
      2 months ago

      But does it really make less sense to say “a string slice”?

      That’s an interesting point. You say “a pizza slice” or “a slice of pizza”, but you only say “a slice of bread”, not “a bread slice” (right? I’m not a native speaker).

  • Shanmugha@lemmy.world
    link
    fedilink
    arrow-up
    5
    ·
    2 months ago

    My attempt of an honest answer to my best knowledge:

    As @TootSweet@lemmy.world mentioned, to make a programming language closer to spoken English language, most likely (hi, Python, I am looking at you too). Which infuriates me immensely: when programming, I do not speak languages, I express data structures and operations on them, stacked one upon another. The last thing I need here is ambiguity, loose structure and information duplication (forgot correct term for the last one) that are typical to natural languages of human communication

  • ByteWelder@feddit.nl
    link
    fedilink
    English
    arrow-up
    2
    ·
    2 months ago

    In Kotlin, you can have the type become implicit with the former syntax: let text = number.toString() (text is a String here)

  • PowerCrazy@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    Enlightenment is realizing that variables don’t have nor need a type, they are all just arrays of bits.

    • NotSteve_@lemmy.ca
      link
      fedilink
      arrow-up
      1
      ·
      2 months ago

      Are you the person who’s writing these APIs that just return dynamically generated untyped JSON that I need to deal with on my team at work? Typing absolutely matters and I will die on this hill

    • balsoft@lemmy.ml
      link
      fedilink
      arrow-up
      1
      ·
      2 months ago

      True enlightenment is realizing that variables don’t exist, it’s all just a sequence of bits in RAM that we assign meaning to as desired.

      Ascension is realizing that bits don’t exist, it’s all just trapped electrons in transistors which we imagine to be bits.

      Transcendence is realizing that transistors or code doesn’t exist, and it’s just some quarks and electrons attracted and repulsed by weird forces, vibrating and convulsing in a soup with entropy constantly rising until the heat death of the universe, of which we make futile attempts to make sense or purpose.