Live data from Hacker News

Python 3.15: features that didn't make the headlines

blog.changs.co.uk

201–210 of 236 posts

Re: Python 3.15: features that didn't make the headlines

#201

Earlier quoted context omitted.

I've found JS/TS Web stacks equally lacking and ugly after Django. I'm totally spoiled by a decade in Django. Just let me build a CRUD app, on the server, that spits out HTML without an excessive swamp of unmaintained nonsense and a cultish abhorrence of simplicity.

what do django do that's contrived in js or say aspnet or rails?

Work

Re: Python 3.15: features that didn't make the headlines

#202
post #93

Earlier quoted context omitted.

It's unrelated to the lazy keyword. Instead it's another feature related to error messages. The example: >> 'hello'.toUpperCase() Traceback (most recent call last): ... AttributeError: 'str' object has no attribute 'toUpperCase'. Did you mean '.upper'?

I’ve often thought it would be funny if instead of an error message for stuff like this, a language could be designed to be “typo-insensitive”. If a method or function call is similar enough to an existing one or a common one from other languages, to just have it silently use that.

At the very least Python could quit on `quit` instead of saying that it knows what I want, but won't do it.

Re: Python 3.15: features that didn't make the headlines

#203
post #15

Earlier quoted context omitted.

This is straightforward in the first instance, but how do you see maintenance of those projects going forward - especially adding more complex features ? I can see one way forward being to prototype them in python and convert.

It’s completely the opposite. LLMs write awful python. Horrendous. They write pretty reasonable go and do it quite quickly. We started in Python because of “the ecosystem”. It was a mistake. The amount of time we spend ripping out each dependency and pruning it to what we need is way higher than if we’d spent the month building out what we need. I miss compilers and LLMs will NOT generate config driven code or things…

> It’s completely the opposite. LLMs write awful python. Horrendous.

I've been using Claude Opus and it's pretty competent. I rarely have to make steering corrections. Once I had to deal with confusion, but, overall, the code is neat and the approaches sensible. It all depends on how much context you give it to work from, for instance. If it's building on top of a well organized codebase with a good best-practices document, it performs just fine.

Re: Python 3.15: features that didn't make the headlines

#204

Earlier quoted context omitted.

I’ve often thought it would be funny if instead of an error message for stuff like this, a language could be designed to be “typo-insensitive”. If a method or function call is similar enough to an existing one or a common one from other languages, to just have it silently use that.

At the very least Python could quit on `quit` instead of saying that it knows what I want, but won't do it.

If you have a variable named `quit`, you would have a different behavior in running a file vs running in the CLI.

Re: Python 3.15: features that didn't make the headlines

#205

Earlier quoted context omitted.

On most unix-likes all "imports" via shared libraries (e.g. in C / C++) are lazy by default.

Eh, resolving object symbols is something done at runtime. #include absolutely is eager. I wouldn’t compare this in any way to Python’s lazy imports.

Lazy in the sense that by default calls to external symbols will jump through the PLT which will jump into ld and resolve the symbol during the first call to the symbol (ld then patches the PLT to point to the actual function for later calls). Not lazy in the sense that shared objects are resolved at runtime, which is existential to dynamic linkage.

Re: Python 3.15: features that didn't make the headlines

#206
post #192
post #189

I used to be obsessed about language design and now, since I almost never write code directly (it's always Claude), I completely lost interest. It feels like a total waste of time and I wonder if other feel the same. One of the consequences of the LLM tsunami might be the freezing of research and development in programming languages. Maybe we'll be stuck with J's and python forever...

> I almost never write code directly (it's always Claude) Who, then, understands the code? If the answer is "no one really", entropy will overwhelm your codebase sooner or later. Otherwise, you need to read the code, and for that the knowledge of language is still relevant.

I do, with different tools and most of the time at a higher level of abstraction. The same way we understood the machine code 2 years ago, even though we didn't write it directly. Just another layer, nothing more.

Re: Python 3.15: features that didn't make the headlines

#207
post #163

Earlier quoted context omitted.

Well it might prefer libraries but the culture around basic DX things like ORMs is toxic. Just write the SQL yourself they say, until they themselves optimise to a half baked in-house ORM of their own.

I don't think I will ever understand the culture of Go. The syntax of a very low level language (needlessly verbose), combined with the performance of a very high level language (needlessly slow), with a bizarre aversion to any DX conveniences (pattern matching, ORMs, etc). If you're already giving up all that performance, why would you not take the extra convenience? Not to mention that the demographic using Go - a…

It was a mix of who came up with it, and having hit jackpot with Docker and Kubernetes rewrites from Python and Java respectively, into Go.

Had the rewrites not taken place, or Rust already being 1.0 by then, most likely would have had as many commercial success as Oberon and Limbo managed to.

You see this happening nowadays newer CNCF projects tend to be done in Rust, and there are even some that even go the C++ way, e.g. Envoy.

Re: Python 3.15: features that didn't make the headlines

#208
post #93

Earlier quoted context omitted.

> When an AttributeError on a builtin type has no close match via Levenshtein distance, the error message now checks a static table of common method names from other languages (JavaScript, Java, Ruby, C#) and suggests the Python equivalent Oh, that is such a nice thing.

It's unrelated to the lazy keyword. Instead it's another feature related to error messages. The example: >> 'hello'.toUpperCase() Traceback (most recent call last): ... AttributeError: 'str' object has no attribute 'toUpperCase'. Did you mean '.upper'?

thats cool, I have the problem alot because I switch languages multiple times per day

Re: Python 3.15: features that didn't make the headlines

#209
post #93

Earlier quoted context omitted.

It's unrelated to the lazy keyword. Instead it's another feature related to error messages. The example: >> 'hello'.toUpperCase() Traceback (most recent call last): ... AttributeError: 'str' object has no attribute 'toUpperCase'. Did you mean '.upper'?

I’ve often thought it would be funny if instead of an error message for stuff like this, a language could be designed to be “typo-insensitive”. If a method or function call is similar enough to an existing one or a common one from other languages, to just have it silently use that.

Fuzzy function calling. What could go wrong?!

Re: Python 3.15: features that didn't make the headlines

#210

Earlier quoted context omitted.

It turns out that volume of training data isn't the most important thing. Elixir beats Kotlin and C#, which beat pretty much everything else. Kotlin is probably the sweet spot for most things.

"sweet spot for most things." care to expand on this a bit? Thanks.

Kotlin has the combination of JVM ecosystem, overall good performance and agents are good at writing it. I'd argue that it's a better default choice to reach for when working on non-frontend code than Go, though Rust and Python still have use cases.
Post reply on HN