If you feel (as I’m guessing most of us here do) t...
# thinking-together
s
If you feel (as I’m guessing most of us here do) that software development hasn’t progressed very much in the last several decades, can you share any thoughts/theories you might have on why that has happened?
🍿 3
i
In my personal experience, Macromedia Flash was a remarkable tool that took a lot of brilliance with it when it died. It was a good enough programming environment (arguably on par with modern JS, or Lua), but that programming environment was embedded within and subservient to a powerful graphics program. People could (and would) use it just to draw pictures or make animations, never touching the programming features. So the absence of a modern equivalent is, I think, one way in which we've actually lost progress. We have Unity and Unreal, but while they do have basic 3d modelling features, they are by no means 3d art tools themselves — you still need to bring your own Blender, so to speak. This is why I see potential for visual programming — it's not just a way to make the programming experience more live, it's actually a way to make the programming experience embedded within and subservient to the arts. Like Flash, but more so. I think this sort of "embed the programming within the domain" is a useful, subtle inversion of the idea of a DSL. Spreadsheets are this. So I think some of the stagnation has been the relative lack of new initiatives of this type.
1
👍 6
t
Short answer: We're at a local maximum. There is a distinct valley of utility between where we are (text programming) and where we could be (fully interactive computing systems) which is deep and difficult to cross, because there isn't really a good incremental way to turn text programming into a fully interactive visual language. Any in-between would be too constrained and clumsy for a fluent programmer working with mature text-based systems, and too difficult to use for a non-programmer who needs programming. There's not a lot of need or market in that valley between the peaks. The mountain has to be climbed from the bottom, and it's counterintuitive to make a "programming language" that "isn't for programmers" (at first).
👍 4
1
I could see an alternate universe where Engelbart's demo happened a handful of years later (when it would have been more possible for others to emulate), when many of its ideas could take off immediately, and programming evolved directly from SketchPad, completely leaving text programming in the dust of the 1970s
🤔 1
There could have been a world where we chose the trail to the Interactive Programming peak from the very beginning.
c
imo, there's a "medium is the message" / "you have to become the medium to process information" aspect at play - computing has offered us 2 primary modes to work in, text/CLI and windows, and that's dictated the terms - things haven't really moved (on), because we don't experience other frames, true other platforms - The usual forms of programming in both modes are obvious, but even the "novel" modes that we've seen — browsers, notebooks — are really just conversations in the same terms. Even the above is too pedestrian to say in a forum of this quality. But it still feels like it's the case. We aren't informed by other modes yet, such as audio/oral programming (eg, your computer is your AirPods; modify Alexa in a meaningful way with your voice), or true spatial/temporal (as AR will offer with pseudo-holography), beyond pilot & novelty projects. And even once we have those, will we still think primarily in terms of desktop and mobile for "reach", and hence be back / constrained in the 2D plane. It's very well possible that 200 years from now programmers, artists, and tool-builders may still think "yeah, a single window is really all I need". Captain Picard's crew didn't open a holodeck to get shit done, they remained at their station on the bridge. (ok, they did open a holodeck a couple times - also they went back in time) We may need a whole new mode beyond "information" to really feel out an alternative paradigm. Information itself may not need much more than what we have.
On another line of argument, it's always worth re-reading https://www.dreamsongs.com/RiseOfWorseIsBetter.html
🤔 2
t
I think programming has gotten a lot better in the last few _decades_: there are tons and tons more people who can do it, the web has been the most amazing distribution system so far, and tooling/languages have gotten good enough that people can operate with a minimum of low-level knowledge or engineering background. I think programming has gotten slightly worse in the last 10-15 years because languages and techniques have been dominated by what FAANG companies have created, and those approaches have scaled down catastrophically poorly.
👍 2
🤔 1
k
@Ivan Reese That’s also the argument I made about Emacs in https://malleable.systems/blog/2020/04/01/the-most-successful-malleable-system-in-history/. I really like your framing of it being the dual of DSLs. Maybe the fact that CS started out from considerations about universal properties of symbolic manipulation has been haunting us all the time. “General purpose” programming is not something many people see a need for.
w
Yes friends, I'm going to go with better and worse. To narrow focus, consider the progression from basically no source control to CVS to SVN to several distributed systems to Git.
k
In view of @Tom MacWright’s and @wtaysom’s comments, maybe we should first define what we consider “better”.
w
Good point @Konrad Hinsen. One pattern we tend to see is that as the rough edges in a system get ground down toward being easier to use, more "features" are added or at least more complex tasks are attempted.
j
To add to @Tom MacWright’s comment, my impression is that programming got much better over the last few decades for large industrial users, at the direct expense of more convivial uses. More layers of abstraction to understand, more constant overheads for starting a project, more moving parts to maintain. But dramatically better distribution, tooling and scaling. In many ways, malleability is the opposite of what a big company wants. When you have ten thousand engineers you're more concerned with trying to pin the damn thing down.
👍 4
On a totally different tangent, I think the latency of a lot of tools has gotten steadily worse over the last few decades. Too many layers?
💯 2
i
Yes, latency is to the point that I'm infuriated by it daily. macos 10.15 feels like Mac OS 8 to me (and that was one of the bad ones). Though I think that's not a fault of programming tools directly, but rather how we've decided to employ them not being a good fit with their strengths. Eg: improving battery life was a top priority at Apple there for a few years, which meant things like timer coalescing, which meant making everything asynchronous, which meant new pauses and hiccups, new race conditions, new latency, new places to inject network calls that delay UI handling, new failure modes. None of that was caused by programming tools, but programming tools haven't helped us adequately address it.
👍 2
k
@Ivan Reese Check out https://sigpipe.macromates.com/2020/macos-catalina-slow-by-design/ for the background on macOS' slowing down. I am sticking to 10.14 as long as I can.
t
@Konrad Hinsen Absolutely: "better" is a hidden value judgment. I'd say that my definition of better is "the total combined increase of people's abilities unlocked by programming" or some sort of "# programmers X leverage that programming gives them"
o
I come a bit late (!) too this conversation, but I agree with @Ivan Reese when he says:
This is why I see potential for visual programming — it's not just a way to make the programming experience more live, it's actually a way to make the programming experience embedded within and subservient to the arts. Like Flash, but more so.
And Scratch offer something like that: you program the sprites and even the scene. You have a simple sound editor and a drawing tool built in, and I see lots of children spending more time drawing than programming, some doesn't even feel like to program at all. In the end you might feel that programming is only one mean among others in your creation process.
I also like the local maxima point from @tbabb. I feel the same that it is difficult to make an incremental move from one maximum (now/text programming only for experts) to an other (future/programming that end user can do).
There's not a lot of need or market in that valley between the peaks. The mountain has to be climbed from the bottom, and it's counterintuitive to make a "programming language" that "isn't for programmers" (at first).
That is why I guess that a good approach can be to make something that is targeted at end-user programmers. Maybe with a secondary focus to make some expert programmers happy, but not try to convince or make them move all at once.
w
Going with the Scatch example. You can make costumes for your sprites. You can program sprites to change costumes. But you can't program sprites to make costumes.
p
People don’t get Rx / eventStreams 😜 & FRP
c
that's so 2018, devs can only collectively swoon over one thing at a time, now it's CRDTs
😂 1
i
It was CRDTs in 2010, too ;) Or maybe, like the hipster who burnt their mouth on the pizza, I was into CRDTs before they were cool.
😄 1
c
You probably were all about FRP in 2009 - so tell us about 2028 Ivan
p
Still, I think this is a real issue preventing progress. Sorry. :< 😄