4 ms·
>what computers can do changes too fast for people who want to build a good unified set of abstractions over it. I was with you until this line. Is it really t
by indigochill 7y ago
>what computers can do changes too fast for people who want to build a good unified set of abstractions over it.
I was with you until this line. Is it really the case? x86 has been with us for... a while, and x64 is backwards compatible. We built an abstraction on top of that, a compiler that can take high level languages and turn it into machine instructions.
I think what people are looking for next is a compiler that can take something even higher level and "compile" it into high level language. The issue is that if you get too abstract, a standard compiler stops being able to make good guesses about your intent. However, if you built a "high level compiler" around specialized domain-specific use cases, then you might be able to make reasonable higher-level guesses about intent (though as with normal compilers, you'd need support for advanced developers to work around those assumptions).
- jacobush 7y agoI was also hesitating over that line. Maybe it's implied that computers enter new business areas all the time, which certainly is true. I have been in the game long enough to notice the same patterns of explosive growth and associated API chaos etc etc. Nowadays you can do everything in Node.Js for instance, but first you had to "reimplement all things!" except in many cases they didn't know (or care) they were reimplementing. I usually snark on Node.js but not really in this case, I understand well when the platform imposes a moat and it's easier to just re-do than integrate. Ain't nobody got time for that... it's still something of a tragedy but it's not something we have an easy fix for.
- adrusi 7y agoNot only advances in hardware affect what computers can do. Advances in software let computers do more things, but we can't count those when considering automating all software development, it wouldn't make sense. But there are advances in the capabilities of computers that are neither hardware developments nor the job of software developers, namely business/legal and theoretical advancements. So some new "things computers can do" from the last 20 years: - Fit in our pockets - Communicate wirelessly between any two major population centers on the planet, with high bandwidth - Store exabytes of data - Do excellent pattern-matching of all sorts of data - Be close to your customers, wherever they are on the planet, without you needing to have a ton of capital upfront - Cost as little as $7 while still being compatible with our complex software stacks - Be powerful enough to run an Electron application - Monitor your blood glucose levels and deliver the right amount of insulin in real time
- majkinetor 7y ago> Be powerful enough to run an Electron application Probably a next great milestone is being able to run multiple electron apps in parallel...
- wstuartcl 7y agoThen a few years after that, be able to run electron apps well.
- edmundsauto 7y agoLike fusion, this will always be a few years out.
- wetpaws 7y agoI would not put our hopes too high.
- mdorazio 7y agoI think you nailed it with the reference to a higher-than-high-level language being the next step. We went from binary programming (punch cards) to machine code to assembly to early low-level languages to high-level languages and then just kind of stopped there at the abstraction level. But do we really need to be manually coding in if statements, loops, data storage schemas, etc. over and over again when end users really don't care about any of those things? I hope eventually we'll get to a "super-level" language future where developers still input highly specific and organized needs, but not at the level we see today.
- AnimalMuppet 7y agoThe real world has a whole lot of "ifs" in it. "If it's this hardware rev, do this." "If the employee is a manager with more than five reports, they need to take this training." "If the account is more than 30 days delinquent, then send a second notice. If it's more than 60 days delinquent, call. If it's more than 90 days, begin collections." Because the real world is like that, there is no possible programming language that is going to prevent the need for "if". Users may think they don't care about that, but the requirements are full of "if". Loops you don't need to code today - if you don't need too precise a control over execution. If you need real control, you probably need to write the loop instead of just using a comprehension. Data storage schemas: As databases scale, efficiency of storage start to add up to real money. The user may not care, but the finance people care a great deal.
- wool_gather 7y ago> do we really need to be manually coding in if statements, loops, data storage schemas No, not necessarily, depending on the business requirements. There's already logic programming, for example a language like Prolog. You the programmer input a very high-level description of the rules that your information must follow. The computer figures out all the imperative bits.
- floriol 7y agoMaybe declerative programming could help with that, like prolog/datalog. I don't think you can go much higher than inputting only the rules and data of your app, the only thing more higher than that I could imagine is an AI that could create a program written in a declerative language with only a subset of the rules, figuring out the rest by itself - which is pretty much what developers do