• PieMePlenty@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    20 minutes ago

    I dont mind Python, in fact I kind of like it. Its easy enough, works fast enough and has a huge community backing. Open up notepad and start typing. The space thing is kinda stupid. I prefer braces and semicolons but apparently new programmers cant remember to use them so Python just got rid of them… not my thing but whatever, I can live with it.

    However, I’d never really want to create a large project in it. The dev tools arent there, .net style project management isnt there. I can see how it just becomes a mess if you try to make something that isnt just downloading some data, parsing and importing to somewhere else. Its great for simple stuff. It can do larger stuff - though not as good. It cant do enterprise, performance heavy, commercial stuff.

    Pick the right tool. Yeah you can make a website in x86 ASM and you can make embeded systems for the space shuttle in Python. The question is why.

  • fl42v@lemmy.ml
    link
    fedilink
    arrow-up
    25
    ·
    10 hours ago

    I’ve learned python after CPP… And I can’t #even remember all the cases when I thought “damn, I wish I could’ve just used pointers”

    • Treczoks@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      24 minutes ago

      Even our C++ guys won’t touch my C code with all the pointer tricks and unions used for hidden castings. Whimps!

      But python has worse problems than lacking pointer. Have you ever copied a piece of code from an external source into a python source? It really can f-ck up everything if one has tabs and the other has spaces.

    • Tiefling IRL@lemmy.blahaj.zone
      link
      fedilink
      arrow-up
      8
      ·
      7 hours ago

      I’ve been in industry for a decade, big tech for over 6 years. And I STILL fucking hate Python. I can write in it, but everything about it just feels wrong

      • dafo@lemmy.world
        link
        fedilink
        arrow-up
        1
        ·
        54 minutes ago

        Similar story in our team with 2-15 YoE. We do TS and C# but recently did a good takeover of the API from one of our offers which is in python We all now fucking hate python. The codebase is fine, the language isn’t.

  • CarrotsHaveEars@lemmy.ml
    link
    fedilink
    arrow-up
    13
    ·
    11 hours ago

    Let me guess. Are the Java and Python programmers happy after because they leave up their technical debt for someone else to resolve? 🤭

    • eldavi
      link
      fedilink
      English
      arrow-up
      2
      ·
      8 hours ago

      that’s why it’s so addicting. lol

  • masterspace@lemmy.ca
    link
    fedilink
    English
    arrow-up
    98
    arrow-down
    10
    ·
    18 hours ago

    Lmao, bruh. How do people keep praising a language where messing up a space breaks everything and there is no real type system?

    • porous_grey_matter@lemmy.ml
      link
      fedilink
      arrow-up
      1
      arrow-down
      1
      ·
      1 hour ago

      where messing up a space breaks everything

      Messing up some character breaks everything in any language, skill issue

      there is no real type system

      What does “real” mean? It’s pretty robust these days.

    • HiddenLayer555@lemmy.ml
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      6 hours ago

      A statically typed Python would be my dream programming language.

      Can someone please make Typethon?

      • porous_grey_matter@lemmy.ml
        link
        fedilink
        arrow-up
        1
        ·
        1 hour ago

        Type checking for python is not bad these days, just run pyright (or mypy, I would like to prefer the non MS solution, but we have found pyright much more rigorous) on your code. Yes obviously you can still get out of it with an ignore statement, and that might occasionally be necessary for some libraries, but if you enforce no errors in pre-commit or CI then it’s only a little worse than compile time.

      • ma1w4re@lemm.ee
        link
        fedilink
        arrow-up
        1
        ·
        4 hours ago

        Pyright language server makes Typethon out of your Python at the cost of massive bugs and performance. I used to like it, until I got really sick of waiting about 10 seconds for a suggestion to appear when typing open() and really fucking sick of the entire server crashing after I type pow()

    • TriflingToad@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      2
      arrow-down
      1
      ·
      7 hours ago

      because it’s easy to use. I don’t like strangling my code because it’s screaming about semicolons again

    • jedibob5@lemmy.world
      link
      fedilink
      English
      arrow-up
      57
      ·
      18 hours ago

      The whitespace doesn’t bother me. Any IDE worth a damn will manage that for you. As for the type system, yeah, I strongly prefer static typing, but for simpler projects I can see the convenience of it.

      My real issue with Python comes with managing a development environment when multiple developers are working on it. Dependency management in Python is a headache, and while in theory, virtual envs should help with synchronizing environments from machine to machine, I still find it endlessly fiddly with a bunch of things that can go wrong that are hard to diagnose.

      Python is great for small scripts, proofs-of-concept, and such, but I wouldn’t write anything more heavy-duty than that in it.

      • morrowind@lemmy.ml
        link
        fedilink
        arrow-up
        8
        arrow-down
        1
        ·
        12 hours ago

        Any IDE worth a damn will manage that for you.

        Yeah in like 10% of cases. I’m copying something from a pdf my prof gave. The only ones able fix spacing now are me and God

      • Eager Eagle@lemmy.world
        link
        fedilink
        English
        arrow-up
        15
        arrow-down
        1
        ·
        16 hours ago

        You can totally write heavy duty things if you know what you’re doing: use type hints, static checkers, tests, etc. It just takes a bit more effort and care.

        • ByteJunk@lemmy.world
          link
          fedilink
          arrow-up
          9
          arrow-down
          1
          ·
          13 hours ago

          But why would I use something that takes more effort and care?

          I’m sure you’re right and it’s possible, but if I don’t have to fix another python project at work I’ll be in heaven.

          • Eager Eagle@lemmy.world
            link
            fedilink
            English
            arrow-up
            2
            ·
            6 hours ago

            it’s more effort and care compared to a throwaway script, not necessarily compared to other languages

          • grue@lemmy.world
            link
            fedilink
            English
            arrow-up
            13
            arrow-down
            1
            ·
            11 hours ago

            Because “more effort and care” in Python is still way less of a pain in the ass than the minimum enforced boilerplate necessary in most other languages.

              • grue@lemmy.world
                link
                fedilink
                English
                arrow-up
                1
                ·
                5 hours ago

                Implement a basic socket connection in C (20 lines of manipulating struct sockaddrs and such), then do the same in Python (2 lines).

                And then go back and make the C version support IPV6, because your initial implementation didn’t.

        • Ephera@lemmy.ml
          link
          fedilink
          English
          arrow-up
          4
          arrow-down
          1
          ·
          15 hours ago

          Personally, my estimate doubles when we’re asked to implement something in Python…

          • Eager Eagle@lemmy.world
            link
            fedilink
            English
            arrow-up
            9
            ·
            15 hours ago

            That’s a proficiency matter. Python is the language I can get something done the fastest today, but 6 years ago that would be Java or even JS for me.

            • Ephera@lemmy.ml
              link
              fedilink
              English
              arrow-up
              1
              ·
              6 hours ago

              Eh, it’s most definitely part of it, but the biggest time sink that I expect when working with Python is fixing the build system every two weeks on different devs’ PCs. I do imagine, if you eventually find a solution that works on most PCs that this workload will go down, but we had a substantial Python part in my previous project and over the course of the 1½ years that we worked on it, it really felt like we were making negative progress. Near the end of it, I couldn’t use PyCharm anymore, because I couldn’t figure out for the life of me, how to make it recognize the dependencies again.

      • masterspace@lemmy.ca
        link
        fedilink
        English
        arrow-up
        7
        ·
        edit-2
        16 hours ago

        Yeah, working on python projects professionally is always a nightmare of configuring env variables and trying to get your system to perfectly match the reference dev system. I find Node.js projects to often be the simplest and most pain free to setup, but even compiled languages like C# and Java are often easier to get up and going than python.

    • Riskable@programming.dev
      link
      fedilink
      English
      arrow-up
      28
      arrow-down
      9
      ·
      edit-2
      17 hours ago

      Haha: “A space breaks everything.” Fuck YES! Are you kidding me‽ It’s one of the best features!

      Why? Because it’s so easy to see. In other languages you’ve got semicolons which are surprisingly difficult to notice when they’re missing. Depending on the situation (or if you’re just new to programming) you could spend a great deal of time troubleshooting your code only to find out that you’re missing a semicolon. It’s frustrating and it makes you feel stupid which is never a good thing for people who are new programming.

      Types are in a different category altogether with seemingly infinite reasons why you’d want a feature-rich, low-level type system and also why you’d want to avoid that.

      IMHO, the point of Python is to be a simple language that’s quick to write yet also very powerful and speedy when you need it to be (by taking advantage of modules written in C or better, Rust). If it had a complex type system I think it would significantly lower the value of the language. Just like how when I see an entire code repo using Pydantic and type hints everywhere it makes the code unnecessarily complex (just use type hints where it matters 🙄).

      I’m not saying using type hints on everything is a terrible thing… I just think it makes the code harder to read which, IMHO defeats the point of using Python and adds a TON of complexity to the language.

      The promise of type hints is that they’ll enable the interpreter to significantly speed up certain things and reduce memory utilization by orders of magnitude at some point in the future. When that happens I’ll definitely be reevaluating the situation but right now there doesn’t seem to be much point.

      For reference, I’ve been coding in Python for about 18 years now and I’ve only ever encountered a bug (in production) that would’ve been prevented by type hints once. It was a long time ago, before I knew better and didn’t write unit tests.

      These days when I’m working on code that requires type hints (by policy; not actual necessity) it feels like doing situps. Like, do I really need to add a string type hint to a function called, parse_log()? LOL!

      • masterspace@lemmy.ca
        link
        fedilink
        English
        arrow-up
        26
        arrow-down
        1
        ·
        edit-2
        16 hours ago

        I don’t mean this insultingly because lots of programming jobs don’t require this and for the ones that do we still tend to all start here, but in all honesty this sounds like it’s coming from someone who’s never worked on a large project maintained by multiple people over time.

        First of all, the hysteria over semicolons is ridiculous when JavaScript, Typescript, C#, Java, Go, Swift, etc. etc. wil all automatically highlight missing semicolons, if not automatically insert them for you when paired with an IDE and standard linter. On top of that, JavaScript and Typescript do not require semicolons at all, but they are still used alongside braces, because they make your code more scannable, readable, and moveable.

        Secondly, without type safety your code is no longer predictable or maintainable. If you’re working to quickly sketch out some new fangled logic for a research paper it’s one thing, if you need to write test code so that your codebase can be tested an infinite number of times by other coders and whatever CI/ CD pipelines to make sure that nothing’s broken, then all of the sudden you start seeing the value in strict typing.

        Honestly, complaining about type safety adding “extra code” is a complaint that almost every coder has when they start out, before you eventually realize that all that “extra code” isn’t just boiler plate for no reason but is adding specificity, predictability, reusability, and maintainability to your code base.

        When defining types looked like this it was one thing:

        String name = new String("Charles Xavier");

        But when it looks like this, there’s no reason not to use strong typing:

        const name = "Charles Xavier";

        • kameecoding@lemmy.world
          link
          fedilink
          arrow-up
          21
          ·
          16 hours ago

          Anyone who thinks a strong type system is a drawback has never worked on any real project where you actually have to collaborate with others.

        • Ephera@lemmy.ml
          link
          fedilink
          English
          arrow-up
          7
          ·
          15 hours ago

          Yeah, the alternative to static typing is to write tons of unit tests, which definitely adds a lot more code to your codebase.

        • Riskable@programming.dev
          link
          fedilink
          English
          arrow-up
          6
          arrow-down
          5
          ·
          16 hours ago

          without type safety your code is no longer predictable or maintainable

          This sounds like someone who’s never worked on a large Python project with multiple developers. I’ve been doing this for almost two decades and we never encounter bugs because of mismatched types.

          For reference, the most common bugs we encounter are related to exception handling. Either the code captured the exception and didn’t do the right thing (whatever that is) in specific situations or it didn’t capture the exception in the right place so it bubbles up waaaaay too high up the chain and we end up with super annoying troubleshooting where it’s difficult to reproduce or difficult to track down.

          Also, testing is completely orthogonal to types.

          • masterspace@lemmy.ca
            link
            fedilink
            English
            arrow-up
            12
            ·
            16 hours ago

            This sounds like someone who’s never worked on a large Python project with multiple developers. I’ve been doing this for almost two decades and we never encounter bugs because of mismatched types.

            Have you worked on major projects in other languages in that time period to be able to compare and contrast?

            The last two python projects I had to work on didn’t have bugs because of type issues, but it was much harder to come into the codebase and understand what was going on given that you didn’t have type information in many many places which forced you to go back and comb through the code instead.

      • kameecoding@lemmy.world
        link
        fedilink
        arrow-up
        6
        ·
        edit-2
        16 hours ago

        What are you writing your code in? Windows notepad? How the hell do you not see the semicolon missing?

        • Swedneck@discuss.tchncs.de
          link
          fedilink
          arrow-up
          1
          arrow-down
          4
          ·
          14 hours ago

          because semicolons are tiny characters that oftenhave to be appended to the end of lines (precisely the worst place for them to be easily visible, since they’ll blend in with the previous character)

          whitespace meanwhile is very easy to notice that it’s missing, as i’m sure you noticed when reading the above sentence.

          • m532@lemmygrad.ml
            link
            fedilink
            arrow-up
            1
            ·
            37 minutes ago

            In both cases, you press compile and the compiler goes “you missed a whitespace/semicolon HERE”

      • Gamma@beehaw.org
        link
        fedilink
        English
        arrow-up
        4
        ·
        16 hours ago

        It’s kinda funny that Godot’s custom language GDScript is, at least on a surface level, pythonic (no list comprehensions, context managers, decorators, etc, it’s mostly syntactical similarities). But type hints do make it run faster!

        I was blessed to get to skip most of the old pains in python. I only had a handful of scripts that ever needed to be ported from 2 and they didn’t rely on any libraries. The ecosystem is easy to work with and I’m looking forward to working with Python for the foreseeable future

      • Eager Eagle@lemmy.world
        link
        fedilink
        English
        arrow-up
        4
        arrow-down
        2
        ·
        edit-2
        16 hours ago

        Exactly! I’ve wasted more time hunting missing semicolons in languages that use them, than fixing wrong indentation in Python.

    • Ismay@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      12 hours ago

      Not even the worst. This function declarations with separations between positional and enum variables… Or the infamous global…

  • kameecoding@lemmy.world
    link
    fedilink
    arrow-up
    23
    arrow-down
    7
    ·
    16 hours ago

    Java is in a completely different leagues to the rest of these.

    Whatever you think Java sucks at, the other languages mentioned here suffer from much worse.

  • Pasta Dental@sh.itjust.works
    link
    fedilink
    arrow-up
    20
    arrow-down
    4
    ·
    19 hours ago

    Every time I use python it makes me want to throw my computer through my window. Doesn’t happen with other languages. Pip fucking sucks it seems like every time I want to install dependencies for a project there is one that throws a compilation error when installing it. Like, why does it not try to download the version of the package that works with my version of python?? It doesn’t even tell me why it failed!!!

    • Swedneck@discuss.tchncs.de
      link
      fedilink
      arrow-up
      3
      ·
      14 hours ago

      i still do not fathom what on earth you people are doing to get these issues.
      The worst annoyances i’ve had with python is just running the correct commands to install stuff, which is no different from working with git.

    • Riskable@programming.dev
      link
      fedilink
      English
      arrow-up
      5
      arrow-down
      2
      ·
      edit-2
      17 hours ago

      Yeah that’s annoying but it’s a short-term problem. Python just recently cleaned up some long-standing issues that broke backwards compatibility in packaging (for certain things). Most public modules that broke made trivial changes to fix the problems (once they learned about them) and life went on.

      However, for some fucking reason a whole bunch of dependencies related to AI are dragging their feet and taking forever to fix their shit. Insisting that everyone “just use Python 3.10” and it drives me nuts too.

      This problem started to become a real thing almost two years ago (so they had plenty of warning and time to fix things) and yet here we are with still a handful of core dependencies that won’t install for things like Stable Diffusion, Flux, and various LLM stuff because they’re dragging their feet.

      I blame corporate culture: Enterprises hate upgrading their shit and they’re as slow as glaciers sometimes. There’s probably tooling at Nvidia, for example, that needs a ton of work for Torch to work with new versions of Python and since all their documentation already was written for running on Python 3.10 (and Ubuntu 22.04 LTS) they’ve created a lot of work for themselves.

      Any day now they’ll finally finish fixing all these little dependencies and then we’ll have another two years of ease before the problem rises again with Python 3.14 and it’s massive GIL-free improvements that require big changes in code to actually take advantage of them.

    • jas0n@lemmy.world
      link
      fedilink
      arrow-up
      5
      arrow-down
      4
      ·
      17 hours ago

      Yup. The fact that the “proper” method to develop is to work in a sandboxed environment tells me everything I need to know. I feel like the only thing you learn from python is how to fight python instead of anything about programming. Personally, I think we need to stop recommending it as a first language.