7 ms·
The best explanation I've seen is in the book "The Secret Life of Programs" by Jonathan E. Steinhart. I'll quote that paragraph verbatim: --- Computer program
by divan 4y ago
The best explanation I've seen is in the book "The Secret Life of Programs" by Jonathan E. Steinhart. I'll quote that paragraph verbatim:
---
Computer programming is a two-step process:
1. Understand the universe.
2. Explain it to a three-year-old.
What does this mean? Well, you can't write computer programs to do things that you yourself don't understand. For example, you can't write a spellchecker if you don't know the rules for spelling, and you can't write a good action video game if you don't know physics. So, the first step in becoming a good computer programmer is to learn as much as you can about everything else. Solutions to problems often come from unexpected places, so don't ignore something just because it doesn't seem immediately relevant.
The second step of the process requires explaining what you know to a machine that has a very rigid view of the world, like young children do. This rigidity in children is really obvious when they're about three years old. Let's say you're trying to get out the door. You ask your child, "Where are your shoes?" The response: "There." She did answer your question. The problem is, she doesn't understand that you're really asking her to put her shoes on so that you both can go somewhere. Flexibility and the ability to make inferences are skills that children learn as they grow up. But computers are like Peter Pan: they never grow up.
- asadawadia 4y agowhat a great explanation
- nextaccountic 4y agoThis is an amazing explanation, but I sense that it will become dated in some years, like, it will describe how computing worked in the old times, when people actually coded by hand. Because, > Flexibility and the ability to make inferences are skills that children learn as they grow up. But computers are like Peter Pan: they never grow up. LLMs will change all of this. Maybe in some decades we will see programming environments that don't require people to understand the solution in order to create a program. For example, it may be possible for people to create spellcheckers without understanding the rules of spelling. Unfortunately this will create a whole new class of bugs due to AIs hallucinating code, and I'm afraid that the average software quality will take a hit.
- benj111 4y agoThe programmer has to understand the problem. If the person behind the keyboard offloads that to AI, the AI is the programmer. The person behind the keyboard is basically just a manager.
- scarface74 4y agoThe gap between “understanding the problem” and “coming up with a solution” has become a lot narrower over the years. 1. To do anything interesting and at any speed on my Apple //e I had to know assembly. 2. Then I got a Mac in 1992 and the original Mac Toolbox routines could do a lot from a higher level language. 3. Then Visual Basic made graphical programs easier and later WinForms, C# etc. 4. Then AWS made provisioning infrastructure a matter of just writing a bunch of yaml 5. Now that LLMs exist and ChatGPT is well trained on AWS APIs in various languages, I can use natural language and it spits out code that works 95% of the time with only slight tweaks if any.
- benj111 4y agoI'd state it more as, you don't have to reinvent to foundations to solve a new problem. If your problem is writing a link list, you still have to understand linked lists. If your problem just happens to be solved by linked lists, you can rely on a library. Re point 5. If debugging is twice as hard as writing code. How long before AI becomes half as intelligent as the average programmer making said programs undebuggable by the average programmer? Is it a good thing to have black boxes writing black boxes?
- owl57 4y ago> How long before AI becomes half as intelligent as the average programmer making said programs undebuggable by the average programmer? It doesn't work this way. A programmer with a bit of experience knows to curb the desire for cleverness and write code they — and their teammates, probably having comparable intelligence and even less knowledge about specific code — can debug. Unless they are on a coffee trip and hacking on a cool weekend project, of course. Now that's another question, what in the hell will AI's weekend projects be.
- scarface74 4y ago> For example, you can't write a spellchecker if you don't know the rules for spelling, me: write a spell checker using Python. ChatGPT: gives me a simple Python script that uses the Pychant library. But a more realistic example… These days, with my slight career pivot, I am working mostly with AWS APIs using various languages. Luckily, there are plenty of examples on the web and ChatGPT is well trained on them. I can often just tell it what I want on a very high level and I get very good results. Using ChatGPT is more like working with an intern than a three year old if it is a domain it has been trained on.
- rafark 4y agoIsn’t that universe what we know as the “domain”?