哪些任务是编程自动化工具永远无法完成的?
我刚刚上完 InfoPath 上的一门课,老师对程序员的未来持悲观态度。我一直很难相信有人会编写一个工具,让非技术人员能够完成程序员的工作,但 SharePoint、InfoPath 和 DotNetNuke 等工具似乎在这个方向上取得了一些进展。
当我告诉老师我对程序员是否可以被取代持怀疑态度时,他要求我想出一些无法通过这些工具完成的事情。我很难当场想出一些东西(特别是因为我对这些工具的经验很少,因此没有经历过它们的缺点)。有哪些事情是这些工具永远无法做到的?
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-technical 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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
工具永远不可能不是工具。
A tool will never be able to be not a tool.
这些工具的工作原理是允许您在“更高级别”进行编程,因此事情很容易理解。这几乎总是意味着它同时限制了你。总有一些事情是这些工具无法胜任的——您会使用这样的工具来创建 SQL Server 吗?不这么认为。
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.
编写一个程序自动化工具。或者任何重要的算法开发。或者编译器,或者新的编程语言
有各种各样的样板文件可以被替换,但是任何不是样板文件的东西都不能被替换。程序能否提出 Dijkstra 算法或堆排序?
现在,坏程序员可能会遇到一些困难。我不认为这是一件坏事。
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:
etcetera.
And programs are deeply cr*p at doing those things. So, your job is probably safe.
首先编写该工具?或者运行它的操作系统?或者 BIOS 或许多其他设备中的固件?有很多领域都需要程序员。我不相信计算机能够精确地解释需求;这需要有意识的智慧。有意识的智能也无法以足够的精度编写需求,除非您将这些“需求解释者”称为程序员。
简而言之,你的老师不太聪明。
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.
完全同意 Ziplin 的观点。
它与 iPhone 操作系统或新的 Android 应用程序构建器相同。他们创建了一个沙箱,您可以在其中更轻松地执行基本操作。但使它顺利工作的所有东西都是由真正的程序员制作的。错误检查、构建块的低级编程……
底线是,聪明的人应该制作产品,以便界面直观并且您不会犯错误。而那个“聪明人”就是程序员。
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.
编程是将自然语言、需求和“常识”翻译成机器可以理解的完整且正确的算法。任何人都可以编写分步说明列表;程序员可以比任何人做得更好。
特定类型的编程可能会变得过时。程序员的角色随着时间的推移而变化:
今天使用这些高级语言、内存充足的 PC 的人们、框架、库,仍然是程序员。这些进步降低了进入编程领域的门槛。程序员有一种独特的精确、直白的思维方式,使他们能够将“软”需求转化为“硬”机器逻辑。普通用户可能能够使用编程能力;但是,他们往往缺乏这种心态,他们创建的软件因此而受到影响。
编程是“一切”学科。编程的问题空间与人们在世界上想做的不同事情的数量一样广泛。
当我们发明了一种机器,可以收集用户的“软”需求,将其与常识相结合,并将其转化为有据可查的、人类可用的工具时,我们拥有的是真正的人工智能,而不仅仅是编程工具。在我们的计算机比我们更聪明之前,程序员将继续在世界上占有一席之地。
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:
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.