Hacker News new | past | comments | ask | show | jobs | submit login
Programming in a Mad Max Wasteland (avdi.org)
59 points by necrodome on Oct 13, 2015 | hide | past | web | favorite | 23 comments

See also the Gary Bernhardt talk, Capability vs. Suitability:


Some technologies are radical new developments designed to give people some new capability they never had before. Other technologies are refinements of some previous capability technology, restricting the capabilities but more suitable for some particular problem-space or setting. It's not necessarily "nobody has big ideas anymore", it's just a natural cycle.

On the other hand, if you want a less-charitable view, consider this: programming in the 1980s was dominated by ideas from C, a language developed in the 1970s. Programming in the 1990s brought the influence of Smalltalk, a language developed in the 1970s. The 2000s saw the introduction of functional programming ideas from Lisp, a language developed in the 1970s. These days, the hot new programming language features are being taken from Standard ML, a language developed in the 1970s. Someday the 1970s will be mined out, and then we can start coming up with new ideas again.

Great. I can't wait for Forth to happen again.

Forth never went away. It's the same tiny pack of fanatics impotently shaking their collective fists at the rest of the world and proclaiming everyone else is just not smart enough to 'get' Forth.

When 70s are depleted we'll move on to 80s. Will start drawing from things like Occam, for example. Still a long, long way to some really new ideas.

Or we could keep exploring new ideas today. I'm afraid there isn't enough invention going on to support the 2020s and beyond. Academic PL, at least, made a fundamental change away from design and invention after the 1990s to be more sciencey.

Maybe it's just a sign of todays technology reaching some sort of early maturity?

You don't see many new revolutionary cars around either - or at least they all conform to the same idea having four equally sized wheels, 5 seats and a round steering wheel. I'm guessing 100 years ago you saw many alternative "paradigms" in the car making domain too, before our society settled on something that worked for the majority of us.

You also see the same thing in bicycles (some very major features of a bike like which wheel was driven, whether the wheels were the same size, etc. varied wildly in the late 19th century), infantry weapons (assault rifles haven't fundamentally changed since the 60s), and commercial airliners (these days they're all engine-under-the-wing, cruciform tailplane, tricycle landing gear, and the like, but in the early days there was a lot more variety of shape).

Yes, this seems right. In the 1970s I imagine all these different languages were essentially good for a specific purpose and for some time it's been cross-breeding and evolving into a general purpose language.

This touches pretty close on PG's idea of the 100 year language [1], which is worth re-reading so thought I'd mention.

[1] http://www.paulgraham.com/hundred.html

We are seeing revolutionary cars now, though...who would ever thought that they would begin driving themselves?

Likewise, some more self driving in PL would be nice, it is way too hard and tedious today then it probably needs to be, suggesting there is still a lot of room for improvement.

> who would ever thought that they would begin driving themselves?

Any sci fi author since the 50-s?

Surely it was conceived of, but did we think it would happen in our lifetime? There are still people out there who won't think it will happen.

I mean, it's been in the works publicly for quite some time. I remember watching documentaries about efforts on self-driving cars in an 'exploring tech' class back in 2002.

Exactly. Arthur C. Clarke's Imperial Earth (1976) comes to mind.

funny you mentioned cars as I had just come across and article talking about the same thing.


In order to see genuinely new developments, you need to be in an environment where something genuinely new is happening. Most modern languages are some combination of decades old, or semantically essentially identical to languages decades old. If it seems like we're mostly shuffling the same basic ideas around and recombining them in those environments, well, yes, we absolutely are.

This is not as bad as it seems. There is something to be said with engineering with time-tested and well-established components. Even imperfect components with well-understood imperfections may be preferable to things that aren't well-understood, but some guy somewhere says may be theoretically perfect. But the flip side of the landscape being well-explored is that there is little new stuff to discover.

Two major places where you can see legitimately new stuff come to mind. First, Haskell. By being seriously, no foolin' concerned about purity and immutability, there's been a lot of work done in Haskell that in any other language, even those that sort of came close, was done by simply doing something impure and calling it a day.

Second, Rust. At the moment my perception of the community is that it is very young, the language is still changing significantly, and the concern right now is more about making new things work at all in the new paradigm than about the best way to do them. There's a big influx right now of the very new programmers who will later be doing new experiments, but they're still learning. Such exploration is absolutely necessary. But in the next year or two I bet we start to see a transition to more genuinely new things as the capabilities start to sink in, and the feedback loop between the real programs people are writing and what features the language grows develops.

(Personally, if you're really interested in new things, I'd stay here rather than go to the really academic languages. It is my perception that the academic languages often have serious problems because they've cut themselves off from the practical world and severed themselves from an incredibly valuable feedback loop, the one that Haskell has used to propel itself to what success it has by actually letting real programmers into the sandbox to try to do real work. Academia is, in its own way, stuck in a rut right now at the limit, IMHO, where it all sort of looks very same-y to me.)

  > the language is still changing significantly
Rust itself isn't changing these days (except for once-in-a-while adding new features backwards-compatibly), we're on to the next stage of maturity where only the libraries are rapidly changing and the prevailing idioms are still shaking out. :P

Often when a community gets bigger, the cool "garage band" type of things still happen. Its just that they are drowned by the pop culture in the media. You need to look in specific corners.

For programming languages I know the google term "conlangs" and I know that there is a scientific lang development place called "lambda the ultimate". If you want to see and use the cool stuff, look for that.

Its not possible to do anything really new and still qualify as 'programming'. The sad reality is that programmers write cryptic mainly textual code using complex tools. If you invent something better it must be for 'users'. No self-respecting programmer would be caught using a tool for users.

Its pretty dumb, but then again, programmers are pretty dumb since they're people.

It's happening right now in Haskell. The question is which ideas will filter down and when.

Anything truly innovative is likely to be on the impractical side, whether academic or otherwise.

But if you're looking for technology that's just making the transition from academic to practical, check out Idris, as one of the comments suggests.

Well, at some point you actually have to gather some good, proven ideas and use them to build a tool to solve real, everyday problems.

Radically new, exciting languages exist, but they're not yet practical.

>I haven't see it, therefore it doesn't exist

Would love to see a post-apocalypse style series where hackers are heavily involved using old smart phones, wifi routers etc. to cobble together technological solutions for survival

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact