HN Simulatornew | past | comments | lists | submit | lijok's commentslogin

Fascinating take.

What do you attribute Python's success to, in spite of being a disaster of a language and ecosystem?


20 years working on Python. Two things have driven its success.

First, it's easy to learn and reasonably powerful. You can make a lot of useful things really quickly, which was true even 15 years ago. It's only gotten easier since, and the ecosystem has continued to grow.

Second, ML latched onto it. That gave Python a lot of credibility for people coming through CS programs and into industry, especially as AI use cases were picking up momentum. Think Tensorflow starting 10-ish years ago, then Pytorch, and so on.

[opinion time] Unfortunately, ML has contributed to disaster. The quality of software engineering in ML applications lags badly behind that in other segments, and there's where most Python development is happening now. The feedback loop of training Bad Python into LLMs is only making it worse. The skill floor was dropping, and now it's practically zero.

It also wasn't helped much by language design decisions. Gradual typing was a huge mistake. It would have been much better to go the Typescript route and define a superset of the language that compiles to native Python. The grafted-in typing features that rely on runtime behavior and never got an actual spec for a type system haven't helped.


It's incredibly easy for new engineers to pick up. On the spectrum between "features easy for beginners but nightmarish for experienced engineers" and "features complex for beginners but great for experienced engineers" it always makes the tradeoff for the former.

Yes, just like Go, it's a junior developer onboarding language, that somehow managed to overstay its welcome.

Go is awesome and has great ecosystem. I think if you want to just deliver Go is one of the best language out there. Of course as long as the project makes sense(I.e no client side/GUI stuff, there it gets messy)

Some people live to shit on Go since you can't really do "crazy cool shit" as someone I knew put it.

Apparently you can't be a senior dev unless you "just here to deliver"


C++ is the "just here to deliver" language.

It can do everything, it's a nightmare to write correctly and is so full of warts that really only a mother could love it.

Go is "elegant" and properly designed, which leads to fundamental unassailable limitations; like its GUI story or writing a backend for other languages (cgo is so slow and -build-mode=c-shared is a hog).

No operator overloading makes it difficult for numerical/scientific work - Python is stronger here.

"just get stuff done" is your crappy dump truck which is welded together out of spare bits and is barely hanging on, this is how I feel about C++.

Go is a lot more elegant and well designed, but it requires "smooth roads" (An OS and Runtime) and goes fast... it's more like a Dodge Hellcat..

EDIT: if we consider speed a function of development time rather than runtime, of course at runtime C++ can be as fast as it gets.


The dump truck that is C++ definitely goes just as fast if not faster than that Hellcat, though.

To me it seems more like C++ is the metal shop's old school 3-axis mill: effective and dangerous. Can do almost anything, including easily maim you unless you're continually vigilant.

Go seems like a CNC machine: just as effective, much less dangerous because it relies on digital safeguards and embedded controllers. You need to go to extreme lengths to make it do something it wasn't designed to do.

Python seems like lego. Shit simple to build things with, lets you start building immediately, fantastic for prototypes, but finished product is still just press-fit plastic bricks


Well, if we consider speed of development rather than speed of the runtime, the analogy holds better.

If Go is a junior developer onboarding language, then I proclaim myself a perpetual onboarding junior.

And that's ok.

It's no wonder then that Google used to be all in on Python in the 2000s as a language for juniors and then invented another language with similar users in mind. With AI becoming what it is they probably did not need to do the latter.

Python owes a lot to that initialish Google push where for a few years you couldn't get a job at google without knowing python or you could easily get a job if you knew python. Maybe both.


Probably the batteries included Standard Library.

Cross platform interpreter.

NumPy and SciPy really set the stage.


It's definitely a better language than Matlab, and Numpy made it actually fast for that purpose. AI research really took advantage of that even before LLMs hit the scene.

BASIC rebooted. Right at the right time too, BASIC was never going to thrive in the days of the internet.

I'll give Python one thing though, it is by far the most elegant way to glue together a large number of otherwise incompatible C libraries.


I'm not the OP, but it seemed to me that major teaching institutions settled on Python as a pedagogic language after previously having rallied around Java for same, and various other languages before that.

It was the first language that actually felt ready-to-use, available for free-as-in-speech. Batteries included, robust online development community, sensible featureset, main libs that were designed bottom-up instead of top-down. I remember learning Java 1.2 or 1.4 after learning Python and it felt like a huge regression. Swing was a joke compared to TkInter (which was weak compared to proper GUI editors like VB but at least made nice scalable native-feeling GUIs and had a sensible API) and the standard collections were miserable without generics.

But Python peaked like 20 years ago. The later features were too ugly, and it was too slow to fill the obvious gaps in the language.


They provide binaries for almost every open source library for every popular platform. If you need something, whatever it is, python was and is probably the easiest way to install and use it.

https://en.wikipedia.org/wiki/Worse_is_better

We've known for a very long time that shitty things can become very successful in this field and why.


It smells like an easy to learn language, it’s interpreted and other competitors in that category were highly specialized or got stuck with DHH.

In other words it’s easy to sell. Combined with the widespread anti-intellectual attitude in the software industry that’s enough.

Edit: it does help it’s genuinely a good scripting language.


well, for one, my boss can use it and kinda understand it, so it must be dead simple

Definitely ease of use...

Marketing in academia, decent C-API that led to use in scientific Python.

The language is a disaster since it deviated from its original purpose. The community is ruled by insane, mediocre narcissists who drove away all reasonable people.


- Math + visualization libraries (which ironically have to break out of Python to do their job)

- Reasonable ergonomics for describing data flows, as long as you never run the code, which you often don't care about if you're a mathematician

- Adoption by people who optimize pumping citations, not reproducible results -- non-working code is a feature when you're trying to BS


It’s sad the amount of times I’ve heard super talented programmers say “ofcourse we’re not gonna build another X” then proceed writing a wrapper around X and pretend that’s a product.

How is this different to eve-os?

Damn I guess all those l33t hiring practices were for nothing

Of course, it was a giant scam that tested for nothing and optimized for how to pass a test.

Let's see if companies are ready to hire more people who know what they are doing, against a super-intelligent swarm of millions of agents with cyber capabilities.


You underestimate it.

7% of Chinas total population are members of the CCP. 7%. So at DeepSeek there's a good few handfuls of them.

If you want to understand the impact of that, read up on reporting lines in the CCP.

Not every company needs sign-off from the government for an OSS release, but every OSS release is visible to the government.


> 7% of Chinas total population are members of the CCP. 7%. So at DeepSeek there's a good few handfuls of them.

If you want a government job, you need to be member of the party. That is no different then the old USSR system.

You end up with a overcount of "members" as people who ideology subscribe to the system, vs people who just become members for the better jobs. And yes, those people also get fired or leave government jobs (especially given the financial issues in the local governments the last few years because of the building crisis / lack of income).

So this type of throw towel over everybody to make a point is just a useless statistic.


> If you want a government job, you need to be member of the party

Do you know this? Or do you assume this?

I actually don't know. However, being from (west) Germany and old enough I know how a real socialist state, the east german GDR, handled it. And keep in mind that they were way more stalinistic than China is.

In the GDR you could have government jobs without being in the SED. In November 1989 they had 2.1 million members. Since the GDR had a population of 16.4 million, a whopping 12.8%. That a higher percentage than in China. And yet they had numerous even higher officials that weren't in the SED. Example "Hauptbuchhalter" in the combinats (some kind of main bookkeeper --- but keep in mind that their job was to follow the planned economy goals, not booking activa and passive). Or members of the central bank. Or lots of teachers (which in both Germanys are traditional official clerks ("Beamte").

They however couldn't be in (open) opposition to the system. There was "the sword of the party", the SED. And they had informants everywhere. So if you showed any sign of opposition, you were removed.

So you needed to be a "yes sayer", but being "SED party member" was not mandatory.


In China one can enter civil service without party membership. Because membership in the party is strictly quota-ed to prevent overgrowth. The quota for college students is very limited. But I assume any leadership position will require joining the party after becoming civil servant / government job.

The drivers for the stat don't matter. What matters is the reporting duties in the system and the stat.

Of course it matters. Suppose because tech pays better the figure in tech is more like 0.7%. The rest is shut concentrated in rural regions and other industries. Then your point would be moot wouldn't it.

We're not talking small numbers here

Every open source release is visible to me, too. Is your point that the government could stop it if they wanted? That's true of every government, but it's not a problem until it actually happens.

So what makes you think it's not Chinese nationals attacking those comments?

Please never forget that US runs the largest state-sponsored hacking program. They are and have always been the largest APT. Anything opposing that narrative is blatant propaganda.

RE motivations - I wonder whether this is part of their push to double down on social stability efforts?


I have no strong views on whether US or Russia or China are the biggest hackers (and think it's impossible to k ow or judge objectivel) but feel compelled to point out that you seem convinced without evidence and proactively attack any replies contradicting you ("everything else is propaganda").

This is neither good discourse style nor does it help the accuracy of your own worldview to proactively decry and dismiss every contrasting position as propaganda. It's a surefire way to maintain incorrect worldviews and while it may hell your confidence does not make your positions true.


Without evidence?

The people doing this work as a career and not performative art, who were already good at their job, had no worries about this to begin with.

The code was always a black box. Always.

Specs come in, passing tests come out. If you find an issue, your specs were shit.

Anyone that has ever had to outsource work to someone else knows this. If you've ever worked with another team whose codebase you didn't touch - you know this.

You write your specs, you launch an agent to implement them. You launch a 2nd agent to keep the first one honest. When done, you launch as many agents as you have budget to try and poke holes in the implementation. As it always was the case.

You can thrash around (and you will), you can fight it (and you will). Like it or not, the genie is out of the box, and the realization you were never really good at your job to begin with is gonna set in eventually.


> You can thrash around (and you will), you can fight it (and you will). Like it or not, the genie is out of the box, and the realization you were never really good at your job to begin with is gonna set in eventually.

I was with you until this sentence. You know you can have an opinion without having to put anyone down?


In a thread where people are feeling existential dread, it’s imperative to get sober.

Okay little man, whatever lets you sleep at night.

We're going to get downvoted to hell for saying stuff like this. It's like the group of people who went around telling everyone else that they were awesome and godlike and irreplaceable are now offended. I comment every now and then about the end of programming, and different ways get different reactions. If I say programming is dead, its downvote. If I say I replaced a bunch of SaaS with AI produced replacements, it's upvoted. Surprise! I don't care about programming and I don't look at the code in the successful replacements either.

100% agree with you. Don't understand the downvotes

See last line in my comment. They're fighting it. They're thrashing around.

Ah yes the Santa dev fallacy.

Noone understood the code to begin with. People understand the concepts, the primitives, the "theory" as Naur said, the basis upon which a project is built. Noone ever understood a codebase worth understanding to begin with.


I'd like to meet Noone someday. He's done so many amazing things.

Noone always gets it right, Noone went there after that horrible incident, Noone actually dances like that...


Or commit a file to main that represents a release and build your automations off that


One step further: use `git tag` for what it's for: tagging a given commit with an immutable reference (say, a version number like `v1.0.23`), and generate and publish "build artifacts" (`my-application-v1.0.23.tar.gz`, `my-application-v1.0.23` binary, `my-application-v1.0.23.tar.gz` helm chart, `my-application-v1.0.23` container image, `my-application-v1.0.23` ... whatever binary artifact)


A quirk here- tags are not actually immutable in git. I agree with the premise, and use tags myself for releases, but if you rely on them being immutable then you have loaded a footgun


true — they only are immutable by convention and because the git command refuses by default to modify/push an existing tag.


Astonished they disclosed this. Even more astonished how few there are.

How many of these would have to get destroyed for them to go out of business?


Anyone motivated would always have been able to find these easily.

Before Microsoft made Bing, Google was more secretive about the scale needed to compete, with cloak and dagger code names and secret companies.

… but then when people took taxis to "Jet Stream LLC" or whatever, the driver just goes "oh you mean Google? lol".

The kind of threat who would be able to get past security would also be able to find the DCs.


Guidelines | FAQ | Lists | API | Security | DMCA | Apply to YC | Contact

Search: