I think this talk gives lots of food for thought.
Are we too entrenched in our ways, to think in other/better ways?
If you liked this talk, you may also enjoy the following: https://www.youtube.com/watch?v=8Ab3ArE8W3s
So let’s get into it - I’ve seen a few talks like this now and they’re always interesting and leave me with a sense of wonder, but there’s some holes that need to be filled.
First, a lot of what he’s advocating for has been accomplished. In fact, I’ll make an argument here that I’d like to hear people challenge:
Anything that we have succeeded at implementing in the ways being advocated for are no longer considered to be programming.
There are many things that could be seen as programming that simply aren’t because we have made enough progress. Think about spreadsheets, for instance - tabular information. I wouldn’t call that programming, but why not? It’s manipulating information in a data structure using dynamically inferenced types (mostly) to perform calculations and analysis. Why isn’t it programming? I contend that it’s because we’ve succeeded at providing a semi-successful user interface.
I’m arguing here that this is a moving goal post. The moment something is successfully accommodated with the right kind of UI/UX, it no longer seems like programming so it suddenly “doesn’t count” anymore.
My second contention is about his point on API’s. First, great segment - really enjoyed that. I’m very interested in this line of inquiry.
But let’s talk about what “communication” means here. Specifically, what defines a successful communication? I’d argue that it has to be attached to some kind of goal.
If our goal is to make a program segfault as fast as possible, then we need to communicate in a particular way. If that’s achieved, then our communication was successful. If we have some other goal, that communication is probably considered to be a failure instead.
Communication without goals is just noise as far as computers are concerned (I’m not going to make that claim in general, but I will for computers). Maybe what he means to say here is that the user should supply goals and the two endpoints need to figure out a way to connect towards those ends? In that case, I’d say we’re onto something but otherwise I think it’s a meaningless task to just get programs to “talk” to each other.
Anyhow, interesting video - check out that one from strange loop if you haven’t.
Really liked this talk, thanks for sharing @Sze. @AndrewCodeDev , also like the one you recommended.
Some thoughts:
So in 1968 the guy could have his writing and drawings recognized, and he could erase them by scribbling over them. This very morning, Apple presented the advanced writing recognition of the iPad with the Apple Pencil and how you could scribble over things to erase them! It’s only been 56 years. lol
On programs figuring out how to talk to each other, we seem to have failed at that one, instead preparing strict scripts (protocols) for the programs to follow. BUT, I think we’re now on the threshold of a much bigger accomplishment:
Let the programs write the programs.
I’m pretty much convinced that in a very short time frame, AI will be writing software way better than any human can. Just like AI can now play chess and Go at levels that no human can even dream come near to. So we, as programmers, need to start thinking very seriously about how we can evolve in the face of a major paradigm shift in software development.
I have a lot of thoughts on the AI space but I don’t want to drag this post into that. If you want, we can open a new thread for this. I think it’s important to approach that issue with research and I’ve got a few things to present there.
I will admit that I have a knee jerk dismissive response to people who state that C and C-like text programming should be a thing of the past. Abstractions all have tradeoffs that need to be considered. That said there are some interesting ideas in both talks, I’m definitely a big believer in visualization, hot code swapping, and debugger focused programming.
I’ve done a decent amount of declarative programming in Prolog and Haskell and I found both fun and interesting, but less productive in terms of actually making tools and applications. I have been learning Lean recently though and computer proof verification is very cool.
This recent podcast with Andrew Kelley and Ginger Bill is somewhat related to these topics. I can’t remember if it was already posted on here.
I think we should make a dedicated thread about this subject, because I have completely opposed views on the subject, and I’m curious to hear what makes you think that AI will be able to do a better job than us at programming, which it very well could be I’m not pretending like I know better, but so far I have not found enough material that would point me to believe that, so if you could expand onto why you believe that, It would be great
Another fun one is this Dylan Beatties “The Web That Never Was”. A clever exploration on what might have been possible if history took a different path.
To circle back to the original Bret Victor video, I think we have achieved a lot of what he was try ing to illustrate.
For example, drawing with a pen. We have things like figma, lucid, etc. that allow for drawing diagrams and manipulating them. We have games like Poly Bridge that allow for constructing and testing loads. We have CAD software that lets us construct and test 3d parts.
But to the point @AndrewCodeDev made, because they have become so widespread it’s not considered programming.
I think the Web to a large extent made this more of a problem than C like programming languages. Web is based on text protocols, which means that all communication must be in text. So there is a drive towards editing these types of files instead of iterating towards other ideas on how to write and interact with programs.