6 ms·
> You type in English what you want the application to do. In my experience this is the hardest part of coding, to a large degree.
by neatze 5y ago
> You type in English what you want the application to do.
In my experience this is the hardest part of coding, to a large degree.
- nexuist 5y agoBecause modern coding is still too low level to allow quick development of full blown applications. It would be really annoying if you had to tell a Subway employee behind the counter how to use their hands to pick up ingredients, how many ingredients to pick up, when to move the sandwich down the line, when to stop applying mayo etc. Instead we can just tell them to make a BLT sandwich and they'll do it with little to no intervention. This is the same ideal we should strive for in our compilers and interpreters. Maybe the request is too vague and the employee has to ask for clarification - and that's okay! That's still far faster than micromanaging their muscle movements. Modern coding is micromanaging muscle movements. We want to evolve to a point where we can just ask the computer to make us a cake and be able to eat it, too.
- feoren 5y agoJust like everyone who thinks no-code solutions are a good idea, you are fundamentally misunderstanding what programmers do. We're not assembly-line workers banging out code as the product. The assembly line is the compiler. We're researchers, engineers, and artists; the code is the design document. You're saying you'd like the sandwich maker at Subway to make you a brand new sandwich that has never existed before without having to micro-manage what they actually put on it. Writing code is nothing like micro-managing muscle movements, unless you're development an action that has never been done before (in that particular environment, circumstances, etc.). The level of abstraction in programming has been increasing every year since the 50s, and most of the code I write is me simply stating what I want to have happen at a very high level. When you want a BLT, you call getBLT(), unless a BLT is a brand new thing that has never existed before. The "don't reinvent the wheel" crowd massively under-estimates the size of the problem space we are exploring. The space of possible problems to solve is unimaginably huge. There's always reason for new wheels when there are 10^10^400 different terrains to drive on.
- dmix 5y agoFrom my understanding the OP was addressing using English to code and how that might look at the fundamental level. Not critiquing or misunderstanding what software developers do day-to-day. It’s instead about different layers of abstraction. Which is the world we work in as programmers and one normal languages meant for communicating to other people is ill suited for and would be way more overly detailed.
- ozim 5y agoSo what OP is doing he is disregarding how complex the world is. He is disregarding how much effort and how many moving pieces are needed to have an employee with which you can order a sandwich and have it done the same way each time. For starters you have to have ingredients ready, standard ways of storing them and much more. That is what Subway worked on for years to have standards and be able to hire someone to "make a sandwich". OP disregards that people hired in McD or Subway get !detailed! instructions how to make a sandwich and which ingredients should be put in which type of sandwich. Then their workplace is optimized to do so. List of ingredients is very limited as list of sandwiches you can order in Subway. List of ingredients in software is unlimited and there is no standard workplace and people imagination about what software to build is unlimited. There is lots of magical thinking in OP comment. He would like to magically remove all those layers of abstraction and gives simplified example, that breaks down when you think about that example more than 1 minute.
- nexuist 5y agoI think our fundamental disconnect is that you see a world in which all software is unique, special, and does completely different things. I see a world where every website I use has the same stupid follow button that does the same stupid thing, where every navbar comes with a logout button, where every social media app is trying to look like the demon spawn of Clubhouse and Snapchat. I see a world where every single mobile app wraps a UITableView with a few changed properties. You're trying to tell me that there are thousands of engineers out there designing cars with alternatives to gas pedals and steering wheels, and yet every car off the line still has the same gas pedal and the same steering wheel from 20 years ago. It just isn't reality. Almost all of this stuff is cloning existing stuff and tacking on some new feature. "But steering wheels today have so many more buttons!" Okay. Take a steering wheel, add some buttons to it. Is it really that alien from a steering wheel without buttons? And yeah! That new feature, that nobody has ever done before? You'll need to describe it to hell and back. Because of course the computer won't know what you're talking about. But the point is to get you 80% or 90% of the way there using common language, from there you can hire developers to finish the feature themselves or you can write a design spec for the computer to build. And now that the computer knows the feature? Well, you can create derivative works off that stored knowledge, and you won't have to spend your time writing the boilerplate and scaffolding needed to support that feature. I don't think I'm disregarding how complex the world is, I think you're disregarding how utterly predictable software is.