Jason Morris
02/25/2022, 5:47 PMyeT
02/25/2022, 6:09 PMKartik Agaram
Imagine a programming language that doesn’t introduce the concept of a function until after you type almost the same code twice.
https://www.hedycode.com seems to be going something in this vein.
Kartik Agaram
Ultimately, they expect people to type code into a development environment. That has always seemed like a lack of vision, to me.
Imagine if you told someone having difficulty learning to write that others are lacking vision for expecting them to type letters into a keyboard. It feels confusing to tell them to wait for a technology that doesn't exist yet. I'd say it does them a disservice. I agree instead with your previous paragraph, that I quoted in my previous comment. We can only teach people what we know, though we can try to stage the concepts to be easier to learn. Anything else is research, something we have to learn ourselves before we can teach others. It feels a little dissonant that the two diametrically opposed views are so close together. Did you intend them as separate ideas, covering the space of possibilities?
Kartik Agaram
Kartik Agaram
Eric Gade
02/26/2022, 3:53 PMProgramming can be much, much better than it is. But only if the people who already understand it can genuinely focus on the interests of the people who don’t, without the hubris of assuming that their aspiration should be to become like us.We can (and I would say, should) flip this question around: what would programming look like if we considered "using" a computer no different from "programming" it?
Eric Gade
02/26/2022, 3:54 PMJason Morris
02/28/2022, 9:14 PMKartik Agaram
Jason Morris
02/28/2022, 10:47 PMJason Morris
02/28/2022, 10:50 PMJason Morris
02/28/2022, 10:53 PMKartik Agaram
Understanding a strange codebase is hard. I can't change that, but I think I can make it easier for people to persevere. I want to carve steps into the wall of the learning process. Most programs today yield insight only after days or weeks of unrewarded effort. I want an hour of reward for an hour (or three) of effort.(http://akkartik.name/about) My previous project actually involved helping people understand how their code was translated all the way down to machine code: https://github.com/akkartik/mu. It wasn't visual, however. The goal is to introduce increasing subsets on demand -- and minimize the amount of backtracking. Later stages shouldn't require unlearning previous stages. The point of my orbital mechanics example was that we teach Physics to everyone today (aspirationally) but we still don't require everyone to know all of Physics. I've long advocated that everyone needs to learn to code (most recently https://archive.org/details/akkartik-2022-01-16-fosdem), but I haven't quite been so bold as to say everyone should know, say, how to write an OS. Instead, my definition of literacy is, "everyone can read novels even if only a few people write novels." So I think you can have everything you want while having diverse programming activities. As long as the process of learning to go from one kind to the other doesn't have abrupt transitions. Another possibility. In a world where everyone knows to program, I think we'll also see a change in the distributions of different kinds of programs being created. If everyone's hacking on federated versions of services we don't need all the queries-per-second, uptime guarantees, fault tolerance of centralized services today. CRDTs give us ways to minimize what people have to learn about race conditions. So the spectrum of programming may shrink, making it easier for people to span it from end to end.