What tasks will programming automation tools never be able to do?
I just finished a class on InfoPath where the teacher had a grim view of the future for programmers. I've always had a hard time believing that someone will write a tool that will allow a non-t开发者_StackOverflow中文版echnical person to do the job of a programmer but there seems to be some progress in that direction with things like SharePoint, InfoPath and DotNetNuke.
When I told the teacher that I was skeptical that programmers could be replaced he challenged me to come up with something that couldn't be done through one of these tools. I was hard pressed to come up with something on the spot (especially because I have little experience with these tools and therefore haven't experienced their shortcomings). What are some things that these tools will never be able to do?
A tool will never be able to be not a tool.
These tools work by allowing you to program at a "higher level", so things are easy to understand. This almost always means at the same time it restricts you. There will always be things that these tools won't be good for - would you use such a tool to create SQL Server? Don't think so.
Writing a program automation tool. Or any nontrivial algorithmic development. Or a compiler, or new programming language
There's all sorts of boilerplate that can be replaced, but anything that's not boilerplate really can't be. Could a program have come up with Dijkstra's algorithm, or a heapsort?
Now, bad programmers may be in for some hard times. I don't think this is a bad thing.
Programs that write programs have been around from the year dot of programming - it's an obvious thing to do. And some of them do quite a good (but typically not great) job. But most of what a programmer does isn't actually programming. it is:
- analysis
- design
- politics
- documentation
etcetera.
And programs are deeply cr*p at doing those things. So, your job is probably safe.
Writing the tool in the first place? Or the OS to run it on? Or the firmware in the BIOS, or many other devices? There are lots of areas where programmers will be needed. I don't believe a computer would be able to interpret requirements with precision; that requires a conscious intelligence. Nor would a conscious intelligence be capable of writing requirements with enough precision, unless you called those "requirements interpreters" programmers.
In short, your teacher isn't very smart.
Completely agree with Ziplin.
It's the same like iPhone OS, or the new Android App builder. They create a sandbox in which you can do basic things more easily. But all the stuff that makes it work smoothly, is made by real programmers. Error checking, lowlevel programming of the building blocks...
Bottom line is, someone intelligent should make the product so that the interface is intuitive and that you can make no errors. And that 'someone intelligent' is a programmer.
Programming is the translation of natural language, requirements, and "common sense" into a complete and correct algorithm that a machine can understand. Anyone can write a step-by-step list of instructions; programmers can do it better than anyone.
Specific types of programming can become obsolete. The role of the programmer changes over time:
- Machine instruction programming is becoming less and less common, as higher-level languages take over
- Programs that know how to re-write their own instruction set in memory are less relevant now that computer memory is abundant
- Frameworks, libraries, and tools like Sharepoint do some of the "grunt work" of programming and let the programmer spend more time on business logic and features that add value for the user
The people who today use these high-level languages, memory-abundant PCs, frameworks, and libraries, are still programmers. These kinds of advances lower the bar to entry for the programming field. Programmers share a uniquely precise, literal-minded way of thinking that lets them translate "soft" requirements into "hard" machine logic. Ordinary users may be able to use programming faculties; but, they often lack this mindset, and the software they create suffers for it.
Programming is the "everything" discipline. The problem space of programming is as broad as the number of different things people want to do in the world.
When we have invented a machine that can gather "soft" requirements from users, combine them with common sense, and translate them into a well-documented, human-usable tool, what we have is a true AI, not just a programming tool. Until our computers are smarter than we are, we will continue to have places in the world for programmers.
精彩评论