• JATth
    link
    fedilink
    15
    edit-2
    1 day ago

    Python is just a pile of dicts/hashtables under the hood. Even the basic int type is actually a dict of method names:

    x = 1;
    print(dir(x))
    ['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', ... ]
    

    PS: I will never get away from the fact that user-space memory addresses are also basically keys into the page table, so it is hashtables all the way down - you cannot escape them.

    • @[email protected]
      link
      fedilink
      1
      edit-2
      11 minutes ago

      js is similar, though it does not include python’s precalculated numbers
      calculates integers from -5 to 256, see:

      > a = 100
      > b = 100
      > c = 1000
      > d = 1000
      > a is b
      True
      > c is d
      False
      
  • oce 🐆
    link
    fedilink
    37
    edit-2
    3 days ago

    Some people think that because Python is the easiest language to learn, it’s going to be easy to learn programming with Python. But learning programming is still very hard, so many abstract concepts to grasp. Python just makes it a tiny less hard, almost insignificantly now that we can use an LLM to learn the syntax faster than than ever.

    • FuglyDuck
      link
      fedilink
      English
      353 days ago

      It’s also important to note that you might come out ahead in learning those abstract concepts using a harder language.

      But my first language was Pascal. from a book stolen from my dad’s library. Then C++. I still wouldn’t call myself anything other than an amateur… I mean, my dad can do more with one line of C than most programmers can do in their entire career. (he really shouldn’t. but he does. Calls it “job security”.)

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

        I was hacking scripts and web shit together in perl, python and php for many years before learning C, and just a couple months learning C/C++ made me understand so many more basic concepts than all previous years experiences combined.

      • oce 🐆
        link
        fedilink
        73 days ago

        It’s also important to note that you might come out ahead in learning those abstract concepts using a harder language.

        I agree that you will learn more abstract concepts with more low level languages, but they are often not necessary. See Scala, beautiful language, lot’s of fancy subtle computer science concepts, and a plummeting popularity since its main popularizer, Apache Spark, implemented a Python API.

        • FuglyDuck
          link
          fedilink
          English
          53 days ago

          Well. yes. it does strongly depend on what you intend to do with it.

          Python is a great language that’s very broadly used; there’s a reason that Apache added the python API; after all. (and why Scala is plummeting.) I wouldn’t even say Pascal was all that useful, to me. I think I ‘learned it’ enough to get through the dumb book, and then went on to something else. C++ was more fun anyhow.

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

      In practice, Python is not easy to learn programming with. Not at all. I see beginners wrestling with Anaconda and Jupyter notebooks and I weep.

      The fact that pip is intentionally broken on macOS and some modern Linux distros sure doesn’t help. Everything about environment management is insane.

      • @[email protected]
        link
        fedilink
        32 days ago

        That is because when you’re a beginner, you read everywhere that you should be using anaconda and jupyter notebooks. I know because I did so. Neither of them lasted more than a week on my computer though.

      • @[email protected]
        link
        fedilink
        183 days ago

        Comparing python env management to Ruby or rust or even Java for fucks sake just goes to show that nobody actually cares about how easy a language is to use, they just care about what is popular or what they think is popular.

        • @[email protected]
          link
          fedilink
          43 days ago

          Ruby, of all the examples you could come up with? My Redmine is updated only every few years because I rarely have a whole day to deal with the mess that is Ruby deps managent.

          Java deals with this ellegantly.

          • @[email protected]
            link
            fedilink
            21 day ago

            Huh? I assume you mean RubyMine and I have no clue what dependency issues you could be dealing with unless you’re on windows (which python is even worse with). You have one package manager and one build tool on Ruby, compared to Python’s now 16 tools. Ruby is the gold star for package management which is why both Rust and Elixir copied enormous parts of it when creating their tools cargo and mix.

            • @[email protected]
              link
              fedilink
              21 day ago

              https://www.redmine.org/ is a standard rails webapp. Nothing special. Straightforward to update, just a few commands, the only quirk is that at least one step always fails. Some obscure bug in a dependency, some problem with expected vs installed system libraries, or my favourite, a Segmentation Fault.

      • oce 🐆
        link
        fedilink
        3
        edit-2
        3 days ago

        Development environment is a mess, but given its popularity, it’s not difficult to find an up to date tutorial. Then it is the easiest I think, you will be able to try programming basics and get a minimum viable product (small web app, small analytics…) easlier than with any other language.

        • Rikudou_Sage
          link
          fedilink
          22 days ago

          Nah, php over python any day. Equally easy to start, equally fucked up core, but the ecosystem around it is so much saner and easier. And I’d argue it’s even easier for beginners.

          Unless you need something that only has python bindings, I’d never choose python.

    • @funkless_eck
      link
      32 days ago

      as a complete layman and hobbyist i also personally think that “more pythonic” coding can sometimes be more confusing.

      I dont think any beginner reads “j for j for i in k” and instantly gets it.

      maybe unpopular opinion idk

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

        Anything that’s not an integer or a range doesn’t belong inside []. Much more readable to use zip, map, filter, etc. And more powerful.

        EDIT: that was meant for indexing lists. Strings inside [] for indexing ducts are fine.

  • @[email protected]
    link
    fedilink
    133 days ago

    Good meme. However I do think that most people starting out will not really have to deal with any of those issues in the first few years apart from maybe the pip/venv/poetry/etc choice. But whatever they’ll pick it’ll probably work well enough for whatever they’re doing. When I started out I didn’t use any external libraries apart from pygame (which probably came pre-installed). I programmed in the IDLE editor that came with Python. I have no idea how I functioned that way, but I learnt a lot and hat plenty of fun.

    • @[email protected]
      link
      fedilink
      112 days ago

      What about the issue where people try to install new version of python sometimes try to uninstall the “old” pre-installed version on a linux system and thus borking the whole s

      Definitely not me, anymore

      • @[email protected]
        link
        fedilink
        82 days ago

        I may or may not have done this haha. I’m a threat to any working piece of software, just enough knowledge to be able to break shit and too little knowledge to avoid breaking shit. I think after all these years I’ve mostly learnt my lesson though. The package manager is the boss, and if I don’t like it I have to work around it without upsetting the package manager

    • @[email protected]
      link
      fedilink
      72 days ago

      This is basically what I’ve been telling people for years. Prototype in Python to get the concepts down, then when you’re serious about the project, write it in a serious language.

  • GTG3000
    link
    fedilink
    93 days ago

    Man, the variable scoping thing is insidious. It will never not be weird to me that ifs and loops don’t actually create a new scope.

    And then you try to do a closure and it tells you you didn’t import anything yet.