Hacker News new | ask | show | jobs
by peteretep 4189 days ago
Python strikes me (as a Perl, Haskell developer) as the boring scripting language, which I consider to be a feature. Golang, not Python 3 is the obvious successor for people who want One Way To Do Everything.

Ruby was the obvious successor to Perl, rather than Perl 6, but I wonder if Rust ends up being Perl's natural successor. It's fast, there are awesome functional features, and Perl developers tend to be pretty comfortable with the general concept of references... Not going to appeal to the "hack it to get it done quickly" crowd, but as a replacement for bigger Perl 5 projects...

4 comments

Rust is a statically-typed systems programming language. A language where deal with pointers and manage memory. In the way of purpose and design, Rust has next to nothing in common with Perl, Ruby, Python, etc. I don't understand these comparisons, but then again I don't get the comparisons between Rust and Go either.

We should be comparing Rust to modern C++, Nim, etc.

I do feel comfortable with your Go / Python comparison, though. Not insofar as intent, but rather in the people that are adopting it and in the places it is being deployed. Golang seems to be carving out an interesting little niche between managed and dynamic languages.

Rust, on the other hand, looks like it can (will?) steal C++1x's thunder. Games, browsers, applications, operating systems... I really want to write new stuff in Rust.

    > In the way of purpose and design, Rust has next to
    > nothing in common with Perl, Ruby, Python, etc
This is the top-rated reply to my initial comment, so I'll try and fill in the gaps.

People choose Python instead of Perl because - and the reason they give may be different, but it comes down to the same thing - there's one RIGHT way to do everything. There's a _pythonic_ way to do everything. PEP 8 not only exists, but people take it _seriously_. Python code is predictable, and while people will bring different engineering approaches to bear on certain problems, good Python looks the same at every company.

Go is the Next Level Up of that. "go fmt" and "go vet" are baked right in. The language is small, and explicitly leaves out certain constructs in order that there is one, clear, obvious way of doing things. In short, Go code is meant to be predictable, and good Go code should look the same everywhere.

If you want to spend your time thinking about the problems, solving the problems, and zero time decorating your art, Python and Go are for you. They are the International Style or architecture, they are Brutalist languages, and that's not only OK, but it's a fundamental part of their success.

Me? I like Baroque.

I like my sigils, I like combining functional and imperative constructs in ways that I think look beautiful as I write them. I like cute tricks, and coworkers can see code I wrote because I come back to my favourite beautiful and intuitive idiomatic patterns over and over again, just as I can identify their code for what they do. I don't think `map` is a dirty word, and I love starting with a list and whittling away at it, sorting it, reshaping it, exercising the differences between lists, arrays, hashes, and the coercions between those.

You go to the back of the Camel book, and it gives you four different code styles, depending on what you're optimizing for. Perl Best Practices is the most controversial book ever written.

I'm still a Rust baby, but I'm telling you, it TASTES like Perl. The language "features" thing is reminiscent of someone suggesting you shouldn't buy an iPhone based on processor speed.

Personal opinions of what languages are "boring" aside: "Golang, not Python 3 is the obvious successor for people who want One Way To Do Everything."

Uhh, what? I'm not even sure why you're comparing Golang to Python. One is a compiled language that specializes in concurrency and the other is a interpreted scripting language. They're for completely different purposes. Python3 was never intended to be a "one way to do everything language".

That isn't the first time such a comparison has been made, and the people making it are always remarking more on the culture surrounding the language than its implementation details (not that the latter are irrelevant, but Python certainly could be a Compiled Languageā„¢ if Guido so chose). The takeaway here is that both Go and Python codebases lend themselves to team efforts between early contributors and new arrivals, because the set of idioms you'll find is very consistent from one codebase to the next. This promotes a certain confidence in teams working on very large projects, as well as tools that must be maintained for a long period of time. It's a hard thing to measure. You certainly won't identify it just by asking what features the language has.
>Python3 was never intended to be a "one way to do everything language".

Python's motto is "There should be one-- and preferably only one --obvious way to do it." - its not meant that Python should be the only tool, but that written python code should only have one have common implementation. (https://wiki.python.org/moin/TOOWTDI)

Golang also seems to share the same ideal when it comes to written code.

I don't see any similarities between Perl and Rust at all.
> Golang, not Python 3 is the obvious successor for people who want One Way To Do Everything.

If Go had generics, I'd be inclined to agree with this.