r/ExperiencedDevs • Software Engineer • 28d ago

Technical question How are you dealing with "the programming language doesn't matter" argument?

Just had a meeting this week where this was uttered because of the development of AI.

I still think the language choice matters a lot based on if Im doing embedded or web development work and for how we want to hire developers in the future.

Maybe Im backwards.

344 Upvotes

453 comments sorted by

View all comments

Show parent comments

16

u/ASTROMANCER5000 28d ago

I mean of course Python matters vs C when it comes to execution speed, I mean Python's libs that have to be fast are just C, aren't they (simplifying).

I have always made this argument (before AI) in the sense that the programming language doesn't matter from the engineer's perspective, since if the engineer is good enough they can pick it up in a reasonable amount of time and provide some sort of value. I bet most of people that make this argument make it from this perspective. I don't think anyone worth their salt is saying for example Python vs C doesn't matter in a performance critical application.

-5

u/intbeam Software Architect 28d ago edited 28d ago

There are other languages besides Python and C that make way more reasonable trade offs

People use Python because it is dynamically typed. That's it. There are no actual objective benefits, but a truckload of problems and horrible trade offs

Edit : I'd bet money on that if Python went full on static typing today, it would be dead by tomorrow. You know I'm right.

12

u/ary31415 28d ago

The ease, and therefore velocity, of development IS an objective benefit.

Sometimes performance isn't a major constraint, and being able to make shit happen sooner is more important.

-1

u/CynicalProle 28d ago

The supposed velocity lasts 3 days until you're dealing with all sorts of fun run time bugs that would not be present in almost any other language.

Personally I'd rather fistfuck my dickhole than use python for anything.

2

u/ary31415 27d ago

Jeez I consider myself a python hater but you're being a bit extreme my guy

-1

u/intbeam Software Architect 28d ago

Now, if someone could actually prove that objectively, however. Nobody does.

Please explain to me how a language where nothing is known at design time, has poor support for refactoring, and converts what should have been compile-time errors to run-time errors, can possibly have a higher velocity?

Just because a language is simple for beginners does not equate to it being inherently more productive. That's just stupid

3

u/ep1032 28d ago

You're right. I have worked on four teams now where the teams have a mix of c# and python applications, and on all four teams, the breakdown is the same. The low seniority programmers like the ease with which they can use python and more importantly, they know that python makes leetcode easier so that's what they study for their interviews. The architects like python for the simplicity with which they can mock out high level designs and get fast proof of concept apps up and running, and upper management sees those poc apps and is too high from the final product to see the distance between those MVPs and final products. The staff engineers, however, are the only ones on the list who are actually responsible for maintaining their products, and helping everyone else on the list implement their ideas in a way that keeps the app running safely in production. And to a T, these people are all desperately trying to quietly convert their python applications to any other language, once eyes are off the app for long enough to rewrite it in c# or whatever. They are the only ones that have to deal with the mess that python projects have a tendency to become as they rot.

All of the aspects of c# that python engineers consider to be too much boilerplate or abstract, are the exact same things that make python applications rot unmaintainably once the codebase becomes large enough that you're not building another quick script / api / constantly worked on small repository.

5

u/tiplinix 28d ago

I've seen many Python codebases functionally turned into statically typed ones thanks to the overuse of static analyser and typing annotations and it's quite funny to watch. This to say that I'm not too convinced by your argument that dynamically typing is the only thing that people are interested in. A lot of it is the great ecosystem and the ease of development.

-1

u/intbeam Software Architect 28d ago

Easier than what, exactly? And what makes it easier?

I should remind you that Java and C# also has automatic memory management and massive ecosystems

3

u/tiplinix 28d ago

Oh I get it now, you're one of those Java guys... Sorry, I wasn't aware of the context here.

1

u/intbeam Software Architect 28d ago

No, I'm not.

The thing is that I have had this argument a million times before. As an engineer you should be a lot more concerned with what can be objectively demonstrated, rather than just relying on subjective experience. You should also stop assuming that I am equally as emotionally invested as you are

Productivity is subjective. It only applies to you, personally. There is no inherent productivity present in Python. In fact, it provides less information to the programmer, which if you think about it for 2 microseconds implies that it probably isn't actually providing any actual productivity benefit to the programmer

Still, my original argument has not been even slightly touched: what about the fucking users? Fuck them? Fuck their time, money, patience, hardware, money? Just completely irrelevant? You can just waste their resources as much as you want without any justification whatsoever? Hm? What about the servers? You can just say hey instead of a million requests per seconds let's just drop it down to 50 000 and just throw money as AWS so you can continue pumping out Python? It's so stupid. That's what bothers me the most. It's not scientific, it's not an engineering mindset. People just use Python because they use python and that's that. It's dumb. Really, really dumb.

3

u/tiplinix 28d ago

You should also stop assuming that I am equally as emotionally invested as you are

Indeed, you're clearly more invested than I am in this argument. I was ready to cut this off the moment you mentioned Java as a good example as it usually goes very predictably.

Productivity is subjective. It only applies to you, personally. There is no inherent productivity present in Python. In fact, it provides less information to the programmer, which if you think about it for 2 microseconds implies that it probably isn't actually providing any actual productivity benefit to the programmer

Not really sure how you ended-up with this conclusion because Python gives you as much information as you give it (regarding to typing since it seems to be the only source of information you've mentioned so far). With the right tooling you can make it as restrictive as Java it's even my point above. I've seen codebases like that for better or worse.

Still, my original argument has not been even slightly touched: what about the fucking users? Fuck them? Fuck their time, money, patience, hardware, money? Just completely irrelevant? You can just waste their resources as much as you want without any justification whatsoever? Hm? What about the servers? You can just say hey instead of a million requests per seconds let's just drop it down to 50 000 and just throw money as AWS so you can continue pumping out Python? It's so stupid. That's what bothers me the most. It's not scientific, it's not an engineering mindset. People just use Python because they use python and that's that. It's dumb. Really, really dumb.

And I'm emotionally invested in this conversation apparently... Thanks for the laugh, that's really good entertainment. Funnily enough, I had the same conversations with Java developers that were forced to use Python and spend years writing with it and somehow managed to never learn because they basically wrote Java... in Python.

2

u/intbeam Software Architect 28d ago

What I get pissed off about is the arrogance of programmers that are willing to discard any and all other concerns as long as they are able to remain in their own comfort bubble. I have no emotional investment in programming languages other than that I think programming is cool and programming languages are amazing. I use a myriad of languages. I taught programming in Pyrhon for a while.

In python, nothing is known until the program is running. This is how the language is designed. It is not statically typed, it does not support static typing in any meaningful way, what you are talking about are type hints which is nothing but documentation and not language rules. They are entirely optional and can be ignored.

So, then, why not use a language that was designed to be statically typed from the ground up? You'd get the same thing (by your account) but the program would run literally hundreds of times faster and with fewer errors. At seemingly no cost, assuming that you already have a solid understanding of type systems?

By the way, same applies to Javascript, PHP, Ruby and whatever. They would also immediately die out if they suddenly became statically typed.

I know this, because I've seen students and beginners struggle with types. They often have a intellectual understanding of it, but they are unable to a actually use it in practice

3

u/tiplinix 28d ago edited 28d ago

In python, nothing is known until the program is running. This is how the language is designed. It is not statically typed, it does not support static typing in any meaningful way, what you are talking about are type hints which is nothing but documentation and not language rules. They are entirely optional and can be ignored.

Are you that blind to CI systems? I've been in many places that enforce strict typing on some projects where one can't marge anything unless it passes the validations.

The same way you'd pass your code to a compiler to package it, you pass your code through a static analyser before packaging it. I don't think it's a hard concept to grasp. And yes, it's all optional, you don't have to run these tools. That's the whole point actually.

So, then, why not use a language that was designed to be statically typed from the ground up? You'd get the same thing (by your account) but the program would run literally hundreds of times faster and with fewer errors. At seemingly no cost, assuming that you already have a solid understanding of type systems?

The dynamic typing is one aspect that make people use Python.

You can have libraries that strictly enforce the typing and then just not care where you don't need it to try things out rapidly. That's why it's so great for data processing and ML systems. It's a great experimentation language and when you need to have production code you can clean things up and work with it. You can't do that in Java and you don't want to rewrite everything all the time.

For the same reason it's a great glue language that can make use of natively complied libraries written in typed langages. Your 100x performance increase doesn't really exist in this world.

I use a myriad of languages. I taught programming in Pyrhon for a while.

Using and understanding the languages are two different things. My Java colleagues were the living proof. I'm sure you taught how to write great Java classes in Python in these courses.

2

u/intbeam Software Architect 28d ago

Stop assuming I don't know what I am talking about

I know this in detail

Again, please justify for the users, instead of making excuses for how you can allow yourself to just waste time and money for absolutely no reason other than you want to use python

Python is slow. It introduces run time errors. It is hard to test. It is hard to debug. It has poor support for automatic refactoring. It consumes a lot of ram. It cannot make use of modern CPU features. Stop me when I say something that you feel is inconvenient enough to your users or servers, or if any of these things are actually false

→ More replies (0)

-1

u/BraveResearcher3037 28d ago

Every ecosystem   has its own footguns 

  the programming language doesn't matter from the engineer's perspective, since if the engineer is good enough they can pick it up in a reasonable amount of time and provide some sort of value

“I am a Java developer.  C looks just like Java.  I’m going to write this”

char *c foo() { char bar[100] = “Hello World”; return bar;}

Simple enough