Live data from Hacker News

Python Is Eating the World

zdnet.com

951–960 of 993 posts

Re: Python Is Eating the World

#951
post #884

Earlier quoted context omitted.

Could you elaborate or point to a resource? AFAIK, term "strongly typed" is usually used to refer to that the type cannot change but I'm failing to find a well defined definition or the comparison against statically typed.

Static typing means that types are figured out statically by looking at the source code, and type errors are detected then when it notices a mismatch. Dynamic typing means that types are worked out at runtime by looking at live objects when code operating on them executes. Strong typing means that types cannot be substituted for other types. In C, you can write `int x = "one"` and the char * (address of) "one" is aut…

You're explaining static typing vs dynamic typing. I'm still failing to see how different Strong vs Static. If the only difference is "Static" means "types are figured out statically by looking at the source code" do you mean it's possible to change the type unlike strong typing? If not, can we say Static encapsulates Strong?

Re: Python Is Eating the World

#952

Earlier quoted context omitted.

> Python leaves it open how you do it Are you saying “There’s more than one way to do it”?

The fact that there's more than one way to do things in Python is why i've found it so easy and flexible, I have no idea why that goober put this motto in the zen

It's general design guideline and I like Zen of python PEP-20. Explicit is better than implicit and most packaging system in python are explicit which I like. Been using it for over 15 years after perl and been happy with it.

Nothing to complaint as every language has their own set of good and bad. This is what makes it interesting, there is always a room to improve and make things better.

Re: Python Is Eating the World

#953

Earlier quoted context omitted.

How about all of the following: Python GIL takes away lots of viable solutions. Lack of metaprogramming / code generation at runtime. Lack of performance forcing me to severely compromise or implement things in C. Type system is probably among the worst in the dynamic language space (compare to Common Lisp and Erlang). Python is not an interactive programming language and can not be used to implement rapid feedback l…

> Python GIL takes away lots of viable solutions. Agreed the GIL is annoying, but I've had no issues with creating large distributed job engines with Python. Actually the tooling made it very easy. If you're trying to do this without using existing frameworks I guess it may be difficult. > Lack of metaprogramming / code generation at runtime. IMO Python is the definition of metaprogramming. Actually, usually you use…

I get the feeling that you are easily dismissing my points without having personally experienced the languages and ways of working I'm referring to. If that's true, then we can only agree to disagree as the only way for you to really see my point of view would be through familiarizing yourself with the paradigms and tools I mentioned.

I'll give you one example, for the last point, Python not being an interactive language. If you work in an actual interactive language (Smalltalk, Common Lisp, Erlang) you will realize what the term can mean when properly pursued and made the focus of a language, and see exactly how Python fails to live up to that.

Re: Python Is Eating the World

#954

Earlier quoted context omitted.

> Python GIL takes away lots of viable solutions. Agreed the GIL is annoying, but I've had no issues with creating large distributed job engines with Python. Actually the tooling made it very easy. If you're trying to do this without using existing frameworks I guess it may be difficult. > Lack of metaprogramming / code generation at runtime. IMO Python is the definition of metaprogramming. Actually, usually you use…

I get the feeling that you are easily dismissing my points without having personally experienced the languages and ways of working I'm referring to. If that's true, then we can only agree to disagree as the only way for you to really see my point of view would be through familiarizing yourself with the paradigms and tools I mentioned. I'll give you one example, for the last point, Python not being an interactive lang…

Unfortunately I can only speak with regard to Python, but I don't mean to dismiss your views.

The language isn't perfect, but I'm sure the languages you love have flaws as well.

Regarding interactive language, can you give an example? I've tried to search and while I can find a lot of examples of what I mean in the context of Python I can't see anything that gives me good info regarding Common Lisp, Erlang, or Smalltalk.

Also, can you answer my question whether you were leveraging libraries when you used Python or trying to create all your own solutions to issues?

Re: Python Is Eating the World

#955

Earlier quoted context omitted.

Can you expand a bit on weird semantics and the overhead? Are you referring to some particular benchmark?

I have a hard time reasoning about multiprocessing code, for various reasons. It's bitten me in a lot of weird, distinct ways, not really worth listing here. To communicate across mp you use pickle, which is a pretty significant performance impact relative to something like threading. There's also the issue of copy on write memory + reference counting interacting poorly.

> To communicate across mp you use pickle

I suspect this is the root cause of the difference in our experiences. My uses of mp have usually been somewhat more "embarrassingly parallel", for instance having a list of data elements which need to be processed with the same algorithm. For this use case, the usage of mp is pretty simple, often only a `pool.map(f, xs)`.

I can imagine that pickle might have tricky edge cases and/or be slow.

Re: Python Is Eating the World

#956
post #549

Earlier quoted context omitted.

Here’s my long list on why Python is terrible: 1) No pattern matching. In 2019, this is just unacceptable. Pattern matching is so fundamental to good FP style that without it, it becomes almost impossible to write good and clean code. 2) Statement vs expression distinction. There’s no need for this and it just crippled the language. Why can’t I use a conditional inside an assignment? Why can’t I nest conditions insid…

It seems you just want a functional language. If so, why are you using Python, as there are much better alternatives like you mentioned, if not in the data science space? I use Python only for data science and generally Elixir, Racket, Haskell etc for other use cases.

I do, but the question is, why don’t other people? It makes no sense to use Python for anything except data science.

Re: Python Is Eating the World

#957

Earlier quoted context omitted.

What system is this? Isn't the built in package system still just pulling from github URL's?

GitHub is still the host for many of them, but there are Modules, so you get proper versioning and all that even when the place you end up getting them from is GitHub.

Huh, nice to hear, I was waiting for this to happen but apparently missed it.

Re: Python Is Eating the World

#958
post #596
post #33

Python has a lot of problems that really slow down development, but they are all fixable. The biggest issue, in my opinion, is in dependency management. Python has a horrible dependency management system, from top-to-bottom. Why do I need to make a "virtual environment" to have separate dependencies, and then source it my shell? Why do I need to manually add version numbers to a file? Why isn't there any builtin way…

Python was a scripting language. All those problems are caused by people using it like something it isn't. Python has way outlived it's usefulness and it's about time we move on to something better.

Do you think that language exists right now? I can't think of a good alternative.

Re: Python Is Eating the World

#959
post #858
post #604

Earlier quoted context omitted.

Have you ever worked in a large engineering organization full of engineers with varying degrees of experience all trying to accomplish the same goal? I can't imagine anyone has ever tried to do engineering at scale (people wise) and did not find the value in static typing. It's why startups eventually moved off RoR once they started scaling. It's why there is such a large push to type JavaScript (have you seen the ro…

From the link: > 1. Uncaught TypeError: Cannot read property If you’re a JavaScript developer, you’ve probably seen this error more than you care to admit. This one occurs in Chrome when you read a property or call a method on an undefined object. Does typing stop null object errors in JS, Java or C for that matter? No. You need to continually check for null objects in all langs I use including Python. It seems most…

Null reference errors in Java and C are due to The Billion Dollar Mistake, which is a specific deliberate weakening of a static type system. Statically-typed languages that do not commit The Billion Dollar Mistake do not have null reference errors.

Re: Python Is Eating the World

#960
post #895

Earlier quoted context omitted.

50% of C++ devs don't use a package manager and 27% rely on a system package manager [1]. You don't hear C++ devs complaining about these issues not because they're happy with the state of dependency management in C++ but because there's a very low rate of adoption for package management systems. That, and the state of dependency management in C++ was so bad for so long that it's viewed as a fact of life. 1. https://…

Also with C and C++ your dependencies compile with your code into a single binary, unless you explicitly opt into using a library, and when you do it becomes a package manager's issue not yours.

That's vastly oversimplifying the problem. "DLL hell" is a term for a reason. The vast amount of effort and complexity Microsoft has put into managing this problem is proof that dependency management for C and C++ is not a solved problem.
Post reply on HN