Hacker News new | past | comments | ask | show | jobs | submit login
[flagged] Python Shouldn't Be the Top Programming Language (itprotoday.com)
12 points by TheLocehiliosan on April 28, 2022 | hide | past | favorite | 38 comments



I need this to be satire or bot-generated.

1. Python Is Not Fast

It's fast enough and "fast" is relative

2. Python's Syntax Is Too Rigid

WTF???

3. Python Provides a Limited Programming Experience

I'm cracking up at this point.

4. Nothing Really Big Has Been Written in Python

Crying laughing at my keyboard.

Django, NumPy, just to start with

" you'd think someone would have done something more interesting with it by now than write scripts and simple apps. But they haven't, and they probably won't." AAAAHAAAHAHAHA


It would be a decent strategy if it were bot generated. Look at all the comments it has generated.


Yeah, it has to be a joke right? Or this is a rather Stunning Dunning-Kruger case. I'll add to Django and NumPy that Python is a dominant presence in Machine Learning (pytorch for example) as another example of "something more interesting" and something "big".


I see Python as the BASIC of the 2020s.

It's not to knock it, but the real strength of Python is as a language that the non-professional programmer can pick up right away and use to put their non-programming skills on wheels.

Jupyter, numpy, pandas, scikit-learn and such are the center of the ecosystem for many people. You can point your finger at these people and tell them to try Julia because it is better on paper... And they will, and they won't like it and they'll go back to Python.


Julia is only better on paper if you write the missing parts yourself or only trade in potential. There's just still much more ready-made libraries for Python, with more features.


> Jupyter, numpy, pandas, scikit-learn and such are the center of the ecosystem for many people.

Exactly this. At this point I'm not sure where I'd even go for the tasks I use this suite of tools for. I'd check out Julia but I haven't run into many problems that would inspire me to switch.


What languages do folks “graduate” to after Python?

(this was a genuine question as someone who primarily writes code in Python for fun, not professionally, and is looking to level up for fun)


It depends on what "graduate" means (I note your "scare quotes"). For some people, lexical styles matter a lot and it is easier to answer this question with that kind of constraint.

While its ecosystem is surely much smaller than even Julia's, Nim [1] has a lot of the concise, lexical feel of Python, but semantics more like Modula3/Ada and with Lisp-like syntax macros/metaprogramming to fill in other gaps.

Another possibility is Cython [2] which is basically a superset of Python with gradual typing..more targeted at writing new C-like Python modules/leveraging the Python runtime environment than "standing on its own".

[1] https://nim-lang.org/

[2] https://cython.org/


Python has PyPi and numba. PyPi is good for branchy things like RDF triple stores, business rules engines, etc.

CPython (and most other interpreters) has the big problem of the global interpreter lock which prevents it from taking advantage of threads... And that's a problem in a world where (1) 8-core laptops are common, (2) much bigger machines can be found in the server room and (3) many workloads can be parallelized over threads with just a little work.


Cython lets you do `with nogil`. That said, often processes with communication are enough to leverage multi-core with no global interpreter lock (GIL). CPython's pickling junk for its multiprocessing library can add a lot of overhead to that, though. A simpler pure binary version of multiprocessing could lower that overhead enough to make multiprocessing competitive with multithread unless inputs/outputs are really big (in which case tossing them in files and passing around pathnames is a not crazy fallback...). (EDIT: In the Linux kernel processes and threads are both just created by a system call named "clone" with various sharing flags. Threads are just processes with very unsafe settings - settings that many prog.langs think they can "tame well enough".)


In the ‘00s I found a python/C combination very effective. All control in python, compute in C and the class mechanism easily tied things together. I would recommend this for any new heavy cpu development as the needs for each portion are so different.


Right, that's one of the architectures for complex programs: use a scripting language for parts and a systems language for other parts.

Video games are a great example. You'd like a level designer to be able to edit scripts that control arbitrary things about the game play, but you also need a performance and GFX pro to program other parts.


The way I hear it frequently is: declarative shell, imperative core.


2. and 3. sound like advantages to me.

1. seems straightforward, it would be better if a language was faster.

4. is debatable, most programs are not big, so most programmers shouldn't need to use a programming language better suited for big programs, as long as it provides other advantages, if they are not going to build a big program.


Python prioritizes human time over machine time. Human time is expensive. Machine time is cheap.

There are also many, MANY ways to make it faster if it actually matters, but it rarely does.


>This is great if you don't mind taking the time to follow all of Python's syntactic rules. But if you just want to churn out code quickly, Python is probably not the best language.

People have trouble following Python's syntactic rules?


Aside from significant whitespace (which I suppose takes a little getting used to), is there anything that marks out Python's syntax as particularly rigid compared to other languages?

I'm struggling to understand what the author is trying to argue here.


> Aside from significant whitespace (which I suppose takes a little getting used to),

If Python's whitespace takes getting used to, then you're probably poorly formatting your code to begin with.


One thing I do find mildly annoying about the whitespace is that you can't jump to the end of a block with e.g. % in Vi (goes to the matching bracket). Not a huge deal but something I notice.


This is jarring to me. Does the author use Lisp, APL, Forth or what?


I can't help but imagine someone who writes PHP without using any indentation.


well, Lisp doesn't have that much syntax. Also Brainf*ck is famously syntactically light.


Are they coding in Notepad.exe?


“There are only two kinds of languages: the ones people complain about and the ones nobody uses.” ― Bjarne Stroustrup

This article is not useful, and not-particularly well-reasoned either. Best to let it drop.


These arguments don’t really make much sense. Python is easy to read, write and teach that’s why it’s a top programming language.

The point about speed is nonsense, python is fast when it needs to be due to the ability to optimize python with C/cpp extensions. Also the idea that “every millisecond counts” in 2022 is dubious at best, IoT is just one domain of programming and not even the most popular one.

I have never heard anyone comment about python’s syntax rules being hard to learn, in fact when I first coded in python I just jumped right in with my knowledge of Java and reworking snippets from stackoverflow. I know non-technical people who have jumped into python directly and they run more so into basic errors in logic like accidental quadratics than syntax errors in python, in fact that’s one of the strengths of python.

> knowing how to code in Python is merely one step up from knowing how to run programs in a Bash shell, which is not coding at all.

This is a silly point as well, the strength of python is beginners and even non-technical experts in other fields can program in a simple interactive environment via the REPL or jupyter and do real work. When they want to ship their software they can use the plethora of tutorials to deploy with docker or learn how to distribute wheels. 90% of my software development skills I learned from working on a project in production so I don’t really understand what your choice of programming language has to do with it.

> Nothing really big has been written in python

This is not correct, I think that python is not the best tool for writing a complex web application or web service. However there are many large complex Django apps for instance or ETL pipelines that are written in python.

I think if you were to write a fair version of this article the reasons why python shouldn’t be a top programming language are:

1) lack of a typing system like Typescript

2) no agreement on a standard way of packaging and distributing python programs

3) too many ways to accomplish the same task

4) the GIL

However, I think python should be the top programming language simply because it’s easy to learn, teach, read and write. No matter what problem you have in your python code you can usually google and find an answer or a tutorial. Like I said anyone with a little bit of coding experience can pick up python and accomplish real work in a few days and that’s powerful.


"Python is easy to read, write and teach that’s why it’s a top programming language."

Easy to teach? Yes, but the language is getting bigger and more complex with each passing year. Add having to teach typing and it is already difficult.

Easy to write? Maybe, with a bit of getting used to.

But easy to read? Hell, no. In fact, it is one of the hardest languages to read, double that when you need to understand a big project. Triple it if that project has a bunch of classes entwined together.

You make good points on the other reasons, though. Python really needs a good and simple standard for packaging. Lack of good typing system is maybe a con if you actually can make good case for adding the whole typing complexity. In a language like Python, I don't really see it. The many ways of doing the same thing is also a major con, as well as the lack of good multi-threading options.

"However, I think python should be the top programming language simply because it’s easy to learn, teach, read and write."

Again, this was the case in the past. Now, things have changed for the worse.

But yeah, the article itself is nonsense. Speed? C extensions cover that if you need it. Bad syntax? Nonsense. What limited experience? The last argument is a sad joke, at least I hope it is.


I think the assumption here is that programming is about making applications, which it's not. Python provides a fantastic way for moderately technical users to interact with the web, their computers, and their data.

I built something this week that takes a source document, extracts entities from the text, uses that to build a query, ranks the results and returns a load of relevant documents.

It's massively useful to me and my organisation, complex enough to require coding, but absolutely sufficient as a quick command line script.

I'm not a CS grad or a serious developer, I only got into coding in the last few years, but I can make all this awesome stuff without worrying about compilers, garbage collection, pointers and whatnot. Python rocks.


"I don't see any truly large, complex, momentous applications or platforms written in Python."

Except YouTube LOL. Don't get me wrong, Python is not fast. But every time you run into a bottleneck you just rewrite it in C/C++/Rust and move on.


Or Instagram..


Someone writing an article in 2022 about Python's speed, and only citing articles from 2020 is not being honest about Python's speed. There were major speed improvements in Python 3.8, which was quite new then -- the linked article was not specific about which subversion of Python it was using, so we don't really know what the comparison was. In addition: The article that actually compared the speeds of the languages did a really bad implementation of a speed test in Python. The time library in Python includes a function for performance testing, which wasn't used, so much of the speed difference could well be due to using the wrong resolution clock. Also, if you're doing numerical calculations for speed, you should be using numpy. So, yes, if you tie Python's ankles together, and time it using an analog clock on the wall, it will not post a faster time than an NCAA Division I sprinter at a track meet. Thanks, that's helpful.


Seen the same argument a decade ago over PHP for the same reasons a) PHP wasn't professional and enterprise ready, b) PHP cannot be taken seriously because it didn't have "this feature or that feature", and now look where we are. We at version 8 and PHP has still stood its ground in the face of how many other languages? Python is where PHP was a decade ago in relation to the points being argued over, and I believe Python will evolve enough to maintain its top place in years to come. And the reason for that is two points. First the huge community that underpins Python and secondly the continued development of the large library or module base it enjoys. And it has been said before. Each language is a tool and you apply the tool to the appropriate job best suited.


"JavaScript is much better than Python!"

I.e., I cannot read that page without enabling JS in my browser... :-)


This is a very poor "article." When you write something today, you can't just say what you want without backing things up. In the first point "Python Is Not Fast" you would expect a table with one of many language benchmarks out there. Instead, you get the TIOBE index table. It makes no sense. And it's clear the author is not an expert in the field when he writes that Java is "not especially fast."


> But if you just want to churn out code quickly, Python is probably not the best language.

This person (bot??) has never used Python.


I appear to have very different taste is programming languages than most programmers. The languages I think of as amazing don't tend to gain traction, and the ones I dislike tend to be very popular. I've never gotten the appeal of Python, but a lot of people I respect adore it so try to see what they see.


Is the author really arguing that the existence of Wordpress is an argument that PHP is better than Python?


I don't wholly disagree with the title of the post, but I don't understand the reasoning at all.

"1. Python Is Not Fast"

I'm not a software engineer and I don't have a background in computer science, but in my experience the question of "speed" is always a subtle one. Are you doing scientific computing? If so, there are plenty of Python wrappers that make it easy to run vectorized operations (instead of, say, running for loops). I don't buy the argument that "every millisecond counts" in every scenario. I can't distinguish between 1ms and 10ms when I'm throwing a basic script together.

"2. Python's Syntax Is Too Rigid"

Someone will have to explain this to me. I've never heard Python's syntax being called "too rigid". Python is not a good language to churn out code quickly? I've only heard the opposite ("it's too easy to churn out junk code quickly"). The only qualm I might understand is tabs vs. spaces.

"3. Python Provides a Limited Programming Experience"

> you could argue that Python is creating a generation of programmers who don't necessarily know "complete" programming. They just know how to write interpreted code.

I don't necessarily disagree -- although navigating the web of Python environment hell (obligatory https://xkcd.com/1987/) does force you to learn a thing or two -- but I don't see why Python being a popular programming language necessarily means everyone who uses Python is a programmer.

"4. Nothing Really Big Has Been Written in Python"

I'm not qualified to judge, so I'll just go back to studying C++. Big things have been written in C++ and everyone loves C++ !


re: point 4.

OpenStack and Ansible are pretty large applications/ecosystems




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

Search: