Hacker News new | ask | show | jobs
by ori_b 698 days ago
For the same reason people prefer languages like Python over Perl. Simplicity improves usability and understandability.

It's pleasant to use a minimalist, viable product.

9front is not the only OS I use, but it is one of my daily drivers.

4 comments

Hey Ori :) I particularly enjoyed your video talk "not dead just resting" - thanks for everything you do

https://www.youtube.com/watch?v=6m3GuoaxRNM

Python started out decades ago as a language for beginners or non-professional programmers, but is the current language simple or minimalistic?
Not at all, it has C++ complexity level, if one wants to master it at all levels.

Additionally, since even minor versions introduce breaking changes, getting something from e.g. Python 1.6 to run on 3.12 is an exercise in trial and error, or unexpected surprises at some moment at runtime.

> Not at all, it has C++ complexity level, if one wants to master it at all levels.

Would be interesting to hear what levels you think those are because as someone who has been learning and writing C++ and Python for over 20 years now, I'd say there's no level of Python which comes even close to the complexity of C++ at a comparative level.

> getting something from e.g. Python 1.6 to run on 3.12 is an exercise in trial and error, or unexpected surprises at some moment at runtime.

Fair enough. But then again: that's irrelevant for any new project written since about the start of the last decade. And to continue the C++ comparison: whereas Python 1 -> 2 -> 3 imo solved some real issues, the consecutive C++ standards never did this resulting in something which is, yes, backwards comptible (roughly - try getting 30-40 year old code getting to compile with /std:c++latest and /Wall - or look at all those tiny behavior changes between the last couple of standard iterations) but also seriously plagued by that as it holds back innovation. Modern C++ minus a lot of the old UB-prone stuff would definitely be better and less complex than what we have now.

Easy, mastering the language (everything you can do with it, everything!), the main language runtime, the C extensions API, and the complete standard library.

Then just like C++, add the set of key implementations, CPython, Cython, PyPy, key libraries everyone uses (parallel to Boost).

Since you have such a wide Python experience, naturally you already printed out all the PDFs of Python documentation, and read them cover to cover.

I did such thing back on Python 2.0 days, and it only grew bigger.

How many pages was it again?

The dynamic and metaprogramming parts of Python can get pretty complicated, especially when it's done in a large program/library like SQLAlchemy.
I now describe python as enjoyable for the author and miserable for the user.

If you give the tiniest of Fs for your user, do not write your thing in python.

Python isn't simple.
Perl is less simple. Though, I suppose lua would be a better comparison.
I fail to see your point. To me, these three are all very close to each other in "simplicity" and any ordering seems arguable. If anything, isn't Perl simpler than Python and if not, why?

Perhaps vast differences in ergonomics and language-culture-fit but that's orthogonal/unrelated?

The point is that simplicity is an ergonomic consideration, regardless of how you nitpick the analogy.
In context though, you gave it as an example why people would not want more feature-rich software.

The supposed simplicity of Python over Perl has nothing to do with Perl being more feature-rich and that compromising its simplicity.

It seems like Plan9 would get closer to "Python simplicity" by adding features and extending interfaces. Which would be at conflict with the "minimalist MVP simplicity".

You present it as mutually exclusive. I believe it's the same word used for two fundamentally different aspects of software - less of a nit.

You're absolutely right, my analogy sucked. Python is not a good example of a simple language.

Complexity is in conflict with usable composition. Because of simple, small interfaces, the surface area needed for composition to cover all cases in a plan 9 environment is much smaller.

This allows for things like remote login to be implemented as a small number of 'mount' calls, git to serve repos in a way that can be scripted without writing gobs of porcelain, or sshnet to trivially replace the entire network stack in userspace (namespace by namespace), so that software doesn't need to implement features like socks proxy support.

The simplicity and uniformity of the interfaces and tools is an enabler.

But, you're right. I should have picked scheme or lua as an analogy. Scheme is a particularly good one: the simplicity of its syntax enables easier macro manipulation. How many special cases would you need to have if you were implementing a lisp style macro system for C++?

Smaller interfaces and implementations, lead to smaller sets of special cases and contexts to keep in mind, easier interposition and emulation, and faster debugging.

> You present it as mutually exclusive.

I honestly have no idea what you mean. What is the "it" that I am presenting, and what do you think I presented it as excluding?

Lua is great, and `eval "$(luarocks path --bin)"` in your ~/.bash_profile or ~/.bashrc seems fine, better than Perl's where you gotta export PERL5LIB, PERL_LOCAL_LIB, PERL_MB_OPT, and PERL_MM_OPT, for example.
He didn't say Python was simple. He mentioned simplicity, those are different things.
Python's `venv` Just Works (and is standard), while whatever it was that I dug up to get the same effect in Perl mostly didn't. I somewhat prefer Perl for things where this isn't an issue.

I should probably make time look again in case I missed something or it's improved in the last decade.