Earlier quoted context omitted.
> Haskell and Idris are beautiful and powerful, but inaccessible to most software engineers. I don't see any fundamental reason why that should be the case. It seems to me that while it's true that most engineers would have a hard time navigating these languages today, it's mostly due to socio-historical accident. It's not because the languages are particularly difficult or arcane, it's mainly because people don't al…
> it's mostly due to socio-historical accident. It's not because the languages are particularly difficult or arcane, it's mainly because people don't already know it, and people don't like to learn to do things differently I beg to differ. I studied compsci BSC at an eastern european university. The professors decided to test that theory and decided to introduce programing to everyone in our program through Haskell.…
The Python Paradox (2004)
171–180 of 275 posts
Re: The Python Paradox (2004)
#172Funny how emergence works with tools. Give a language too few tools but viral circumstances - the ecosystem diverges (Lisps, Javascript). Give it too long an iteration time but killer guarantees, you end up with committees. Python not falling into either of these traps should be understood as nothing short of magic in emergence. I only recently discovered that python's reference typechecker, mypy, has a small side pr…
From this, people started making lots of libraries that accelerated code and provided bindings to other software.
At a certain point the ecosystem reached a critical mass, and the rest is history.
Re: The Python Paradox (2004)
#173Earlier quoted context omitted.
Python has types now (though it didn't when I wrote the 36kLOC program I had in mind). What problems are there with python variable scoping -- you can have global and local variables, shouldn't that be enough?
> though it didn't when I wrote the 36kLOC program I had in mind). Yeah, that was my assumption. Still, typing in Python feels very clunky compared to TypeScript. And even though it is much better after 3.8 and 3.9 updates, the adoption of typing in various useful libraries was relatively low as far as I remember. > What problems are there with python variable scoping -- you can have global and local variables, shoul…
The typing has been great in my experience. Most of my deps have types and if they don't I can autogenerate them. The powerful typing of TypeScript is mostly not needed if you're not interacting with JS code.
Re: The Python Paradox (2004)
#174Earlier quoted context omitted.
> Imagine reading the C++wg release notes in the same mood that you would the python release notes. Which mood are we talking about here? Mild dread? They keep adding new features to the language. The Python programming language is around 30. The release notes at this point should be "wow, we found a bug this year! Didn't expect to see one of those!". The secret of Python is it is actually a large community all learn…
My mood when reading the PEPs is of excitement. While I'm not too keen on hardcore feature divergences, most of the new features have been really nice things to have, and which are never imposed. (E.g. the walrus operator, type hints, dataclasses, etc). I don't see the need to be so outright hostile to changes, unless they were clearly breaking features.
I'm not sure about that part. Even if one personally ignores something new, someone else within the same project or a dependency will employ the new shiny, and invent one or a couple more ways of doing the same thing in a different way.
That means if it's in the language, you'll have to account for it. Not saying Python is, but given enough new features a language may become a kitchen sink of ideas over time.
--
(At the risk of contradicting myself a bit here, I actually agree with the features you mentioned here are all nice to have, and I like using them. IDK if nice to have is a high enough barrier to clear though.)
Re: The Python Paradox (2004)
#175Re: The Python Paradox (2004)
#176Earlier quoted context omitted.
Do you really have no problems? I find the lack of proper type support and proper variable scoping to be a huge issue.
Lack of typing support is a major advantage. If you don't have types you don't need interfaces, generics, etc. The resulting code is shorter and less bug prone.
Re: The Python Paradox (2004)
#1772004. Almost 20 years ago. Was Python even a teen? Python does not attract smart young iconoclasts anymore. It's the scripting language everyone writes because everyone writes Python. What languages do attract smart young iconoclasts? Nim? Elm? Whatever you're doing that is not yet old enough to drink by the time you comment?
Interesting how it started to attract people with the same mindset that likes Java: great care for trivial correctness guarantees s.a. those ensured through type hints or producing programs through ticking boxes in existing templates. And disregard to large-scale design issues, something that was initially thought to be helped by more concise syntax and greater freedom to explore / less fear of novelty.
However, the thought that dedication to a (marginal) language will help you hire better programmers isn't new, and has some supporting evidence. I remember similar argument coming from Linus Torvalds, when he didn't want C++ programmers working on Git, for example.
I also happen to think that a lot of new(-ish) languages today are trying to ride the hype wave, and by doing so are trying to become instantly more popular rather than appealing to the tastes of a small but dedicated community. Eg. Rust is trying to be a "better C++", but in a way C++ programmers would most likely not be repulsed by it. Both superficial decision (s.a. "familiar" curly bracket syntax) and more fundamental ones are there to ensure that large audience of C++ programmers would have an easy migration path.
I think that, today, if you wanted to match the effect the author saw created by hiring Python programmers in 2004, you'd have to go after hiring people dedicated to undeservedly forgotten languages s.a. Ada, Scheme or Erlang. Rust is posed to become just a slightly different flavor of C++ with the large volume of low-skill programmers pumping out low-quality software from big corporate shops. For now, it may attract enthusiastic people, but that's not going to last.
Re: The Python Paradox (2004)
#178Earlier quoted context omitted.
> Haskell and Idris are beautiful and powerful, but inaccessible to most software engineers. I don't see any fundamental reason why that should be the case. It seems to me that while it's true that most engineers would have a hard time navigating these languages today, it's mostly due to socio-historical accident. It's not because the languages are particularly difficult or arcane, it's mainly because people don't al…
I do see fundamental reasons. Haskell was designed from conception to be a platform for research and education. I’d say it was a wild success at those two things. Certain decisions that made it successful as a platform for research and education make it less suitable for use writing applications in industry. The main decision I am thinking about is lazy evaluation. Lazy evaluation forces authors to write pure code, w…
That said, the type system _does_ stand in the way of learning it - though it's very powerful once you get your head around it - and lazy evaluation means you do spend more time than you'd generally like hunting down space leaks if you're writing the sort of code that's capable of getting space leaks.
Re: The Python Paradox (2004)
#179It was right then, but it's kind of dated and misses an evolutionary lesson: beautiful code isn't enough, it has to be safe, beautiful, maintainable, productive, understandable, and resource efficient. Ruby is still great for throwing something together fast and maintaining it until it runs into scale problems. It added gradual typing with sorbet and RBS. Crystal is a neat typed, compiled Ruby-alike but it's buggy. R…
Cargo has been working to resolve this, it's been testing a new feature that lazily fetches fine-grained index info over HTTP rather than the legacy approach, which is to clone the entire index stored as a git repo (which worked fine when crates.io was young and small, but hasn't scaled well). You can enable it on nightly Rust via the sparse-registry config flag, and it was recently accepted for the 1.68 release in March (which means you can try it out on the beta channel right now). In the future, it will become the default behavior.
https://doc.rust-lang.org/nightly/cargo/reference/registries...
Re: The Python Paradox (2004)
#180It was right then, but it's kind of dated and misses an evolutionary lesson: beautiful code isn't enough, it has to be safe, beautiful, maintainable, productive, understandable, and resource efficient. Ruby is still great for throwing something together fast and maintaining it until it runs into scale problems. It added gradual typing with sorbet and RBS. Crystal is a neat typed, compiled Ruby-alike but it's buggy. R…
> Haskell and Idris are beautiful and powerful, but inaccessible to most software engineers. I don't see any fundamental reason why that should be the case. It seems to me that while it's true that most engineers would have a hard time navigating these languages today, it's mostly due to socio-historical accident. It's not because the languages are particularly difficult or arcane, it's mainly because people don't al…
I'm somewhat of a fan of Haskell (though its standard library is awful) and very much a fan of Idris (at the very least it's a better-Haskell, at best, dependent types!), but hard disagree.
These languages are difficult and arcane, compared to eg Python. A beginner to programming can get started with Python immediately, it reads like pseudocode.
Get started with Haskell or Idris, you quickly hit higher kinded types, monad transformers, free monads, final tagless. It's a different universe.