…from people who seem to refuse to install paredit or coloring plugins for either? ps lisp syntax ftw, it’s a feature!

  • Litanys
    link
    fedilink
    English
    27 days ago

    But s-expressions give you power that other syntax doesn’t. Data and code as one. Besides there is no other syntax than simply that so it becomes much easier to remember random extra things.

    Whitespace on the other hand, I hate with fiber of my being.

    • @pkillOP
      link
      12 days ago

      Yes definitely. However Rust manages to become extensible and capable of constructing powerful DSLs out of it’s macros without using S-expressions. But I still find them prettier than Rust’s syntax.

      • @[email protected]
        link
        fedilink
        2024 days ago

        OK, that’s excessively “convenient” for booleans. But I don’t get the passionate YAML hate, seems like a simple enough language for config. Didn’t have the pleasure (“pleasure”?) to work with it though, so what’s why else is it shitty?

        • magic_lobster_party
          link
          fedilink
          2924 days ago

          A property can have the wrong indentation and it would still be a syntactically correct yaml. It’s hard to distinguish whether a line is wrongly indented or not. Copy and paste a line and mistakenly use the wrong indentation, and the entire production breaks.

          In json it’s much harder to do similar mistakes.

          • Ethan
            link
            English
            122 days ago

            It’s hard to distinguish whether a line is wrongly indented or not.

            That’s very much not my experience. I use YAML regularly and while I’ve had copy paste indentation errors when I look at the offending line it’s always obvious to me how to fix the indentation. The only indentation thing that’s ever given me trouble is embedding YAML as a string within a file that uses tabs.

        • @[email protected]
          link
          fedilink
          2724 days ago

          Do a search for ‘why yaml is bad’ and you’ll get a lot of stories.

          Constant passing problems, especially when the yaml gets very large and complex. After I implemented a new feature I was pulled into a call with 12-15 people demanding to know why it didn’t work. The new feature worked fine, The guys yaml had the wrong amount of white space and so it didn’t parse.

        • @[email protected]
          link
          fedilink
          1924 days ago

          White space in the wrong place? Fails Wrong amount of tabs? Fail

          Working in a big configuration file that has a lot of nesting? Good luck.

          Best part is that most of these things don’t throw errors or anything, it just doesn’t work and you are left scratching your head as to why your deploy only fails in the production environment.

      • @[email protected]
        link
        fedilink
        122 days ago

        since yaml is just a superset of json, you can easily avoid all problems like this

        yaml is like a less strict json for me

    • @[email protected]
      link
      fedilink
      English
      1124 days ago

      Since it’s a superset of JSON, couldn’t you just use the JSON notation if you hate the semantic whitespace?

  • @[email protected]
    link
    fedilink
    3824 days ago

    Who hates s-expressions? They’re elegant as fuck…

    Python, on the other hand, deserves all the hate it gets for making whitespace syntactically significant - I even prefer Go’s hamfisted go fmt approach to a forced syntax to python’s bullshit.

    • @[email protected]
      link
      fedilink
      17
      edit-2
      24 days ago

      I dgaf about indices starting at 0 or 1, I can deal with case-insensitivity, but syntactically significant whitespace drives me up the wall.

      • @[email protected]
        link
        fedilink
        2624 days ago

        What’s so hard to understand about it? It’s how you should format your code anyway. Only it’s enforced.

        • magic_lobster_party
          link
          fedilink
          10
          edit-2
          24 days ago

          It’s quite often I have to second guess whether the code is correctly intended or not. Is this line supposed to be part of this if block or should I remove that extra indentation? It’s not always entirely obvious. Extra troublesome during refactors.

          In other languages it’s always obvious when a line is incorrectly indented.

        • @[email protected]
          link
          fedilink
          523 days ago

          sometimes, a script needs to be edited in a plain text editor, without having access to an lsp or any other dev tools.

        • @[email protected]
          link
          fedilink
          -324 days ago

          No it’s how Python wants you to format. Many times I want to separate two logical sections in one function and can’t coz Python go crazy

          • @[email protected]
            link
            fedilink
            624 days ago

            Just put them in separate functions. If you have too many levels of indent, your code is convoluted. Sticking to the line length limit sometimes forces you to write more lines than you’d like to. But it makes everything so much more readable that it’s 100% worth the trade off

            • @[email protected]
              link
              fedilink
              324 days ago

              What if the logic is more readable in one function?

              I use whitespace to make my code more legible, python forces more whitespace consistency but it comes at the cost of limiting the legibility.

          • @[email protected]
            link
            fedilink
            English
            524 days ago

            Are you saying that you want to separate your two logical sections by having different levels of indentation and that’s what makes Python go crazy?

        • @[email protected]
          link
          fedilink
          -424 days ago

          Yeah, it is a completely nonsensical thing to complain about. I hate to go around matching curly brackets like some braindead nematode. If you use more than two levels you should rewrite the code in most cases… just use advanced indexing and vectorization (by pythonic ;p). Or you can loop around like a freaking peasent in your inefficient garbage code that nobody can read because it is cluttered with comments explaining basic stuff. There is a reason Python is popular… and it is not because no one can read it. Same goes for dynamic typing - it is a blessing for most tasks. I do not want to explain to the machine what every temporary variables means…

    • @[email protected]
      link
      fedilink
      English
      924 days ago

      I hate em cos regardless of language auto formatter takes care of everything. So now im typing extra characters and fucking shit up and confusing myself when moving code between scopes.

    • TheHarpyEagle
      link
      fedilink
      923 days ago

      You take that back, python is my homie!

      In all seriousness, I freely admit that I’m biased towards python because it was my first language and remains my favorite. I use an IDE for anything but the simplest scripts, so I’ve very rarely had any issues with spacing.

    • @pkillOP
      link
      424 days ago

      I agree but still you can oftentimes expect that the average person’s initial reaction to be somehow reluctant… until they understand it. it’s like those foods and drinks that you might need to try a couple times before you start enjoying them.

    • @[email protected]
      link
      fedilink
      222 days ago

      In 20 years of using Python, I never had one issue with the indentation. Use spaces all the time, use PyCharm, and that’s it.

      Whitespace is statistically insignificant in Python.

    • @Tamkish
      link
      3824 days ago

      fine i will take the bait: thats 5 spaces

      • @[email protected]
        link
        fedilink
        3224 days ago

        As long as the next line also has 5 spaces, that’s fine. Python only complains about inconsistency, not the exact number of spaces/tabs.

            • @[email protected]
              link
              fedilink
              324 days ago

              (Sarcasm/deadpan detected but I’ll respond anyways).

              Not when they are visibly the same and the spaces have no other meaning in that context.

              Not to mention tabs being annoying in general because of how badly it works to adjust the distance of tab stops. That doesn’t really affect this particular case, but it’s why I generally use spaces instead of tabs.

              Most of the annoyance is from vim recognizing that spaces are an error in makefile recipes but still using them unless I copy paste a tab in, including when I hit enter on a line that is using a tab already. It matches the indentation but uses spaces instead of tabs. I’m sure there’s a way to adjust vim config to fix this, but I have yet to acquire the esoteric knowledge required to do so.

              • @[email protected]
                link
                fedilink
                224 days ago

                If by vim you mean neovim

                vim.api.nvim_create_autocmd(“fileType”, {
                    group = file_type_group,
                    pattern = “make”,
                    command = “setlocal ts=4 sts=4 sw=4 noexpandtab”,
                })
                

                Slap this in your config, done

  • @[email protected]
    link
    fedilink
    English
    3024 days ago

    Go home OP, you’re drunk.

    And give us your keys, you’ve had too much minimalism to drive.

  • DumbAceDragon
    link
    fedilink
    English
    27
    edit-2
    24 days ago

    I don’t get why people hate semantic whitespace. The whitespace would be there anyway, and if anything it’s easier to read as long as you avoid 15 nested if statements, and you’re not using a dynamically typed abomination like python.

    S-expressions are a hack because the Lisp devs didn’t know how to make an actual compiler, and instead had the users write the syntax tree for them. (For legal reasons I am being facetious).

    In all honesty, I can understand the reason people love s-expressions, but to me they’re just unreadable at a glance.

    • Traister101
      link
      fedilink
      2324 days ago

      Semantic whitespace is awful because whitespace (something that you can’t actually see) has meaning in how the program runs. Braces { } for scopes gives you the ability to easily tell at a glance where a scope ends. Whitespace doesn’t allow for that. Especially, especially when you can accidentally exit a scope (two new lines in a row with Python) and it’s not actually an error (Pythons global scope). Yeah formatters and linters make this less of an issue but it sucks… Languages with legible symbols for scoping are significantly easier to reason about, see end symbols in Lua.

    • @yogsototh
      link
      1223 days ago

      S-expressions are a hack because the Lisp devs didn’t know how to make an actual compiler, and instead had the users write the syntax tree for them. (For legal reasons I am being facetious).

      Just for anyone thinking you are serious; https://en.wikipedia.org/wiki/M-expression I love how S-expression existed.

      McCarthy had planned to develop an automatic Lisp compiler (LISP 2) using M-expressions as the language syntax and S-expressions to describe the compiler’s internal processes. Stephen B. Russell read the paper and suggested to him that S-expressions were a more convenient syntax. Although McCarthy disapproved of the idea, Russell and colleague Daniel J. Edwards hand-coded an interpreter program that could execute S-expressions.[2] This program was adopted by McCarthy’s research group, establishing S-expressions as the dominant form of Lisp.

      • @Corbin
        link
        English
        122 days ago

        And for anybody thinking of implementing M-expressions, look at Wolfram Mathematica, which is the only popular M-expression-oriented language. It turns out that high-level graph-rewriting semantics are difficult to make efficient! (If you want to try, you might also want to look at GHC or other efficient graph-rewriters to see what the state of the art is like outside Planet Wolfram.)

    • setVeryLoud(true);
      link
      fedilink
      623 days ago

      I literally can’t see whitespace, it gives me headaches looking for it. With brackets, I can get bracket matching in my IDE.

  • RedSeries
    link
    fedilink
    English
    1924 days ago

    ITT: Developers who think their code is readable complaining about Python and YAML.

  • @[email protected]
    link
    fedilink
    English
    1723 days ago

    So I’m going to say what I always say when people complain about semantic whitespace: Your code should be properly indented anyway. If it’s not, it’s a bad code.

    I’m not saying semantic whitespace is superior to brackets or parentheses. It’s clearly not. But it’s not terrible either.

    As someone who codes in Python pretty much everyday for years, I NEVER see indentation errors. I didn’t see them back when I started either. Code without indentation is impossible to read for me anyway so it makes zero difference whether the whitespace has semantic meaning or not. It will be there either way.

    • TechNom (nobody)
      link
      English
      13
      edit-2
      23 days ago

      Python decided to use a single convention (semantic whitespace) instead of two separate ones for machine decodeable scoping and manual/visual scoping. That’s part of Python’s design principle. The program should behave exactly like what people expect it to (without strenuous reasoning exercises).

      But some people treat it as the original sin. Not surprised though. I’ve seen developers and engineers nurture weird irrational hatred towards all sorts of conventions. It’s like a phobia.

      Similar views about yaml. It may not be the most elegant - it had to be the superset of JSON, after all. But Yaml is a semi-configuration language while JSON is a pure serialization language. Try writing a kubernetes manifest or a compose file in pure JSON without whitespace alignment or comments (which pure JSON doesn’t support anyway). Let’s see how pleasant you find it.

    • @[email protected]
      link
      fedilink
      6
      edit-2
      22 days ago

      This leads to weird bugs when you change indentation and miss a line or reorder lines. The logic changes. Not too bad when you’re on your own, as Python seems to be intended for. Add multiple developers and git merges and it is a recipe for disaster. With end tags at least you just end up with poorly formatted working code.

      • @[email protected]
        link
        fedilink
        English
        121 days ago

        It’s probably more prone to mistakes like that, true. But in practice I really never witnessed this actually being a problem. Especially with tests and review.

    • @eluvatar
      link
      522 days ago

      The number of times I move code around and can just press a hotkey to fix indentation though. Not possible with Python.

      • @[email protected]
        link
        fedilink
        English
        121 days ago

        Yeah, that’s definitely a good point. But it’s a minor thing. Adjusting indentation takes 2 keystrokes in vim, I barely notice it.

    • @coloredgrayscale
      link
      221 days ago

      Most IDEs support automatic code formatting, and doing so on save. Or have it as a github hook.

      • @[email protected]
        link
        fedilink
        English
        421 days ago

        Of course, but when indentation has a syntactic meaning the formatter often won’t be able to fix it.

  • @[email protected]
    link
    fedilink
    1522 days ago

    one of my least favorite things about python is semantic whitespace. no need to comment on yaml.

    fuck it, parenthesis all the way.

    • @Scoopta
      link
      221 days ago

      This sums up how I feel nicely. No issues with parens…but whitespace…fuck that shit

  • @[email protected]
    link
    fedilink
    924 days ago

    Haskell does both! Most people prefer to use whitespace when writing Haskell but it’s not required. Braces and semicolons are preferred if you’re going to be generating Haskell code.

  • @[email protected]
    link
    fedilink
    924 days ago

    Clearly, the superiour mode is to just use keyword based scoping (à la Ruby do ... end). When I was a kid I read an OBSCENE MAGAZINE where I saw a Forth program go dup dup dup and I was like “ok so what’s the problem here? Things happen and everything is just keywords?” and my young mind was corrupted forever I guess