Hacker News new | ask | show | jobs
by mg 1105 days ago
I have a theory (which nobody I ever met shares) that the visually most beautiful language is the one that long-term results in the fastest development of a project:

Visual noise is like inflation. A constant tax on what you do. But you barely notice it. But it accumulates because it is constantly leading to slightly worse and more complex code. Since it is harder to focus on a noisy something in front of you, you make slightly worse decisions. Over time this accumulates. And similar to how Warren Buffet noticed that a Dollar of his youth is not even worth a penny these days, over time, exponentially more effort is needed to develop the more and more complex system.

So over a longer timeframe, a visually more elegant language wins by a long shot.

Python is the visually most elegant language.

8 comments

Those hypothetical tiny gains are instantly and completely eclipsed by the lack of static checking support.
__visuallyelegant__
That should trigger the good sense of any “Zen of Python” die-hard. Not saying I haven’t used/got access to double-underscore thingies in Python in my 15+ years of writing Python code, but I always felt dirty in doing that.
But isn’t that the point? The naming convention is for protocols that have syntax support
Scheme has entered the chat.
> Python is the visually most elegant language.

Having program login buried in a nauseating amount of boilerplate doesn’t feel very “visually elegant” :-P

What you’re saying is only partially correct - Yes, for more exploratory programming for a new product with full US/EU/CANZUK based dev workforce it makes sense to prioritize maintainability.

For a company complaining about infrastructure costs for a product that has been cloned many times over, and which is large enough to hire offshore devs, the cost equation favours rewriting in something like Go, Rust or even Java. These are quite tailored towards Reddit’s current use case and many companies including Twitter did that rewrite.

Using a language with a faster runtime makes the system run faster. But it does not compound. So you are limited to a ceiling at about an order of magnitude faster execution.

Making better decisions on a daily basis compounds. You evolve towards a better architecture. Which can make the code multiple orders of magnitude faster.

One of many examples: In a complex system, developers often have a blurry vision of what can be cached, in which situations it can be cached, and how cache invalidation should be done. While in a more elegant system, the borders between different approaches to caching are clearer. Leading to the more elegant system being multiple orders of magnitude faster as it can leverage the different caching layers (in memory cache, on disk cache, the CDN ...) more effectively.

This doesn't sound like argument in favor of Python, though. In my experience, Python code quickly reaches the level of an impenetrable word salad, at which point all the compounding stops.
This depends on your editor color settings though. C++ can look very handsome
C++ looks very handsome.

Usually someone will pop up showing crazy meta programming template code and use it a straw man to declare cpp=bad.

Which is why elegance argument would've favored staying with Lisp - not only it looks elegant, but also you can do all the "crazy metaprogramming" without the crazy, but rather in straightforward and elegant code.

And I say that as someone doing C++ for a living, and occasionally engaging in said crazy template metaprogramming stuff. Occasionally, because people tend to frown at it during code review; apparently, metaprogramming is reserved only to library authors...

I've bee using C++ since the late 90s, and namespaces are still annoying.
Just use `using namespace std;` inside your function and C++ suddenly becomes nice.
Using boost or std in a function is much better than doing it in the header for obvious reasons, but still annoying.
How so?
Although now people use types with python, is it still ?
What other people use does not change how you can use the language. You don't have to use types.

I just took a look at the 4 latest Show HNs which are written in Python. None of them uses types.

I agree with you. C++ and Python are great. Haskell looks the best but it’s way too tiring to write. Go is the worst offender.