Live data from Hacker News

An opinionated history of programming languages

artagnon.com

41–50 of 135 posts

Re: An opinionated history of programming languages

#41
The graph is missing the complete hierarchy of the Wirth languages. A very important part of programming language history. They influenced many languages and of course are a direct predecessor to Go. While Go has mostly a C-style syntax, in my opinion, it is otherwise closely based on Oberon.

Re: An opinionated history of programming languages

#42

Anyone care to explain what template void recurseFillChildren(CurTy &E) { using PackTy = std::variant ; using TyL = std::variant_alternative_t ; static_assert(std::is_same_v ); using TyR = std::variant_alternative_t ; for (i32 j = 0; j ()); if constexpr (i + 1 (E.Children.back()); } }; does, and why it can't be translated into Rust?

This is a "non-type template parameter," that is, it's generic over that size_t i. Rust cannot yet do this. This is "const generics" in Rust speak.

Re: An opinionated history of programming languages

#43
post #36

Earlier quoted context omitted.

I would have thought that at least half of your opinions were unexpected: Go's design is at the very least controversial and considered poor by a vocal subset of the hackernews and programming community. Python is decidedly not dying... it's still the dominating game in town for ML and data science. I'm surprised anybody would posit that Python were dying. Perl definitely feels like it should be in Ruby's camp.

> Go's design is at the very least controversial and considered poor by a vocal subset of the hackernews and programming community. I'm in the camp of the rationales of Go's design being controversial. But the actual design is not bad IMO. For what Go wants to be (a modern C), it is not a bad design. But who wants a modern C? I don't. But if Go were available in the 90s, I would have jumped at the opportunity to writ…

> For what Go wants to be (a modern C), it is not a bad design.

Sure and there's this weird thing where Go felt marketed as a C replacement and then Rust existed and it was all "just kidding we meant services" and boy do I think Go is poorly designed for services. It has a lot of characteristics that make it appealing - fast compiler and execution speed, low resource usage... but I don't see how pointers, a half-baked type system and a totally undesigned error system are good design for where Go is currently winning.

> But considering Ruby dying and Perl don't, is very weird.

Agreed for sure, I think Ruby and Perl probably have similar trajectories based on current trends in languages. Python's staying power IMO is really only due to the data science/ML trends and I frankly think it's a pretty poor language and ecosystem if you can get away with using anything else. I think Python WOULD be losing ground if not for its popularity in these very large niches.

Re: An opinionated history of programming languages

#44
I came prepared for a faddish take on the froth of momentarily popular languages, and found instead a forward-looking, grounded assessment.

I hope Rust doesn't fade out, but honestly cannot expect otherwise. C++ has long needed serious competition, but has not had any.

Re: An opinionated history of programming languages

#45

Earlier quoted context omitted.

I would have thought that at least half of your opinions were unexpected: Go's design is at the very least controversial and considered poor by a vocal subset of the hackernews and programming community. Python is decidedly not dying... it's still the dominating game in town for ML and data science. I'm surprised anybody would posit that Python were dying. Perl definitely feels like it should be in Ruby's camp.

Python is still vital and thriving but I wouldn't be surprised if its market share is declining (slowly). As you say, it's dominant for data science... but recently it and R were the only practical choices... now other languages (Julia, for example) are valid options. The development of alternative Jupyter (formerly IPython) kernels has accelerated adoption of other languages. Similarly, a few years back it seemed li…

I want this to be true, by the way. As I mention in some other comment, I think Python is rather mediocre as an actual language for building software. Its appeal cannot be denied, but a majority of my peers would really like to use a language that has its tooling shit together.

Python is the only language I've had to deploy that makes me understand why anybody would want to use containers.

Re: An opinionated history of programming languages

#46

Earlier quoted context omitted.

I think a lot of people get it mixed up with Objective-C (which is a derivative of sorts of Smalltalk). And C++ derives much from Simula which comes from Algol. And C derives much from Algol. And link between C and C++ is kinda obvious!

Objective-C isn't so much a language as one language embedded in another -- C + ST inside square brackets...

The blazing fast speed of Smalltalk combined with the memory safety of C

Re: An opinionated history of programming languages

#47
Why did Haskell wane?

IMO, it's partly the ecosystem. There's regular Haskell, Haskell Platform, Cabal, Stack. It ends up being an alphabet soup of possibilities, and it's not clear what is depending on what.

And then there's monads, which are stumbling blocks.

State is allegedly the root of all evil. But I think the argument needs to be more nuanced than that: yes, state is difficult to reason about globally, but it's usually not so bad locally in small functions.

I think that this is what Rust gets wrong. It goes down the "state is evil" road, but there's really not that much wrong with the judicious use of mutated values.

If you really want to avoid mutability, then you're really going to need monads, something which seems a bad fit for Rust (based on what I see in Hackers News).

At the end of the day: fuggit, just use C++. It's fast, you can point in references to vars, and if you don't want them mutated, just make them const. That's the conclusion I drew a few years ago.

As Alan Kay might put it, most new languages are in the "pink plane": they're incremental improvements (sometimes a step back) on old ideas, and sometimes just inferior rehashes of them. None of them are what he calls "blue plane": revolutionary new ideas.

Kay seems to admire Erlang, though. What it brings to the table is the notion that a program can crash, and recover from it. That might be a "blue plane" idea.

I also assume he thinks Scratch is a blue plane idea; even though strictly speaking graphical languages are not new.

When I saw Ada couple of weeks ago, I noticed that it had the notion of tasks as a language primitive. I wonder if he'd consider that sufficiently blue plane.

Re: An opinionated history of programming languages

#48

Why did Haskell wane? IMO, it's partly the ecosystem. There's regular Haskell, Haskell Platform, Cabal, Stack. It ends up being an alphabet soup of possibilities, and it's not clear what is depending on what. And then there's monads, which are stumbling blocks. State is allegedly the root of all evil. But I think the argument needs to be more nuanced than that: yes, state is difficult to reason about globally, but it…

Waning is the natural course for any language. It takes a Miracle to avoid that fate. COBOL, FORTRAN, C, C++, Java, Javascript (and maybe Python?) each got a Miracle. Other languages didn't. Go and/or Rust might get one, but odds don't favor it.

Miracles are not awarded on merit, so when a language that got one is usable, it's like another miracle.

Re: An opinionated history of programming languages

#49
post #41

The graph is missing the complete hierarchy of the Wirth languages. A very important part of programming language history. They influenced many languages and of course are a direct predecessor to Go. While Go has mostly a C-style syntax, in my opinion, it is otherwise closely based on Oberon.

Also missing is Ada from that same lineage, the entire category of concatenative languages (with Forth the best known example), COBOL, SNOBOL/Icon, BASIC, APL, PHP, Racket, etc. It's laughably incomplete, not a history at all, and "opinionated" is a severe understatement. Was not at all surprised to see that the author's still a student specializing in Coq and similar things. Experience building actual complex systems whose users aren't computer scientists might have led to a broader perspective and a very different set of opinions.

Re: An opinionated history of programming languages

#50

Anyone care to explain what template void recurseFillChildren(CurTy &E) { using PackTy = std::variant ; using TyL = std::variant_alternative_t ; static_assert(std::is_same_v ); using TyR = std::variant_alternative_t ; for (i32 j = 0; j ()); if constexpr (i + 1 (E.Children.back()); } }; does, and why it can't be translated into Rust?

It demonstrates a method of generating a family of types or functions that, until C++17, would have required Template Metaprogramming via partial specialization or template function overloading, but is now just programming.

The key line is "if constexpr", which is evaluated at compile time and terminates the recursion.

Post reply on HN