Hacker News new | ask | show | jobs
by ori_b 698 days ago
Perl is less simple. Though, I suppose lua would be a better comparison.
2 comments

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?

> > 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?

Simplicity vs feature-rich. Your last follow-up mostly resolves that, I think.

BTW, I think you just sold me on diving into Plan9 some time soonish (:

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.