10 ms·
What soured Python for you?
by cglong 4y ago
What soured Python for you?
- eminence32 4y agoOne too many TypeError at runtime. I became increasingly annoyed that nothing was catching my silly typos or other mistakes. These days there are some really good python static checkers available, but I'm not sure I really knew about them half a decade ago when I started to move away from Python
- kitkat_new 4y agocan you recommend a checker?
- leetrout 4y agoNot Op but once I experienced Go I started writing less Python by choice. Then TypeScript and hopefully soon more Rust. Typed Python 3 is just awkward enough to not make me enjoy it on small scripts and not accurate enough (yet) to be confident in it on large projects. I don't use numpy & friends so Python doesn't offer me much any more compared to newer typed languages once I go beyond a simple script.
- culi 4y agoYou should try out deno. TypeScript with zero set up. You can write a .ts file anywhere on your computer and run it with, e.g., `deno run hello-world.ts`. It's my new goto for quick scripts
- leetrout 4y agoYea! I actually wanted to teach using Deno back in 2019! It was a stretch topic for the last couple weeks of class in my syllabus but we were too far behind. Excited to see where it continues to go and we are writing more scripts in TS at work (without Deno, tho).
- prottog 4y ago> Then TypeScript Have you done any backend TS? I'm curious what the best practice there is, these days.
- leetrout 4y agoI am definitely not the person to ask there. I have been on a couple teams that used Node. Everyone was/is still using express and various ORMs / query builders. Knex and Prisma are what I saw. Lots of neat stuff with Zod and relatedly EdgeDB.
- raincole 4y agoI don't know if I just use Python "wrong" or something. When I worked as a TA, I've written a lot of untyped Python as Blender/Houdini plugins, and I think it worked pretty well for this purpose. But later I did some backend stuff, I tried to use typed Python and wrote safer code. Then the whole toolchain becomes so cluncky. MyPy, Pylinter, Flake8, etc. They're so slow, and their VSCode extensions are so weird to configure. And I never got the best practice to work with other untyped libraries. It's not that I don't know how to use typed language. Actually I do backend stuff faster in Rust than Python. It's probably just me or my VSCode acting up.
- kitkat_new 4y agoMy experience with Python recently: I have been working on a mediumish project (without tests or type hints) where I needed to add functionality including a bit rewiring. My main problems were: - I didn't know what data (types) were passed around when looking at parts of the code, so I had to look were the data structures were created, adapted and passed along to actually know more (or just debug it) - After changing parts of the code, I was 100% certain that I had to run it a dozen times to fix new bugs or things I had forgotten How it works with Rust: - I see the types in the function signature - I know the properties of 'classes' without scanning the whole code of the class - when it compiles, it works 90+% of the time, because the compiler tells me where I forgot something before, if the IDE hasn't already told me
- kazinator 4y ago> How it works with Rust ... You will be amazed to find that that's how it works with C, Pascal, Java ... Types being declared in function headers and checked is 1960's technology.
- johnny22 4y agoexcept the type system in C isn't that good.
- amluto 4y agoThat’s an understatement. If you see a function in a header like: char *func(char *in, size_t len); It’s anybody’s guess what the actual input type is, not to mention the ownership or lifetime of the output.
- kazinator 4y agoHN now supports backslash escapes for asterisks (which, unescaped, are markup notation for italics).
- iudqnolq 4y ago
- lmm 4y agoI left Python when I found Scala, and while a good type system was a big factor, the groundhog day of "Python dependency management is awful with 4 different tools none of which quite work right, but this new tool has fixed it, for real this time" every few years was the part that really made me despair.
- epage 4y agoNot OP but to me the ecosystem is too disjoint. To ship "production python", you need to figure out which of the "current" tools are to cobble together to build, test, and share your code. `cargo` combines poetry, ruff, pipx, sphinx, pytest, etc. You might expect this to be worse. In some cases, it is (e.g. pytest). The super power is in being able to get a project up and going immediately without wasting time on figuring out which tools to use, scaffolding them together, setting up a host for your documentation, etc. Then there comes the problem of distributing it where the target system has to have just the right version of Python.
- artursapek 4y agoit’s slow and there’s no helpful compiler