这个问题来自于对过去50年左右计算领域各种进展的评论。
其他一些与会者请我把这个问题作为一个问题向整个论坛提出。
这里的基本思想不是抨击事物的现状,而是试图理解提出基本新思想和原则的过程。
我认为我们在大多数计算领域都需要真正的新想法,我想知道最近已经完成的任何重要而有力的想法。如果我们真的找不到他们,那么我们应该问“为什么?”和“我们应该做什么?”
这个问题来自于对过去50年左右计算领域各种进展的评论。
其他一些与会者请我把这个问题作为一个问题向整个论坛提出。
这里的基本思想不是抨击事物的现状,而是试图理解提出基本新思想和原则的过程。
我认为我们在大多数计算领域都需要真正的新想法,我想知道最近已经完成的任何重要而有力的想法。如果我们真的找不到他们,那么我们应该问“为什么?”和“我们应该做什么?”
当前回答
更好的用户界面。
今天的用户界面仍然很糟糕。我指的不是小的方面,而是大的、基本的方面。我不禁注意到,即使是最好的程序也仍然有一些接口,这些接口要么极其复杂,要么需要以其他方式进行大量的抽象思考,而且无法达到传统的非软件工具的易用性。
诚然,这是由于软件可以比传统工具做更多的事情。但这不是接受现状的理由。此外,大多数软件都做得不好。
In general, applications still lack a certain “just works” feeling are too much oriented by what can be done, rather than what should be done. One point that has been raised time and again, and that is still not solved, is the point of saving. Applications crash, destroying hours of work. I have the habit of pressing Ctrl+S every few seconds (of course, this no longer works in web applications). Why do I have to do this? It's mind-numbingly stupid. This is clearly a task for automation. Of course, the application also has to save a diff for every modification I make (basically an infinite undo list) in case I make an error.
解决这个问题其实并不难。在每个应用程序中都很难实现它,因为没有好的API可以做到这一点。编程工具和库必须显著改进,才能在所有平台和程序上轻松实现这些工作,适用于所有具有任意备份存储且不需要用户交互的文件格式。但在我们最终开始编写“好的”应用程序而不仅仅是足够的应用程序之前,这是必要的一步。
I believe that Apple currently approximates the “just works” feeling best in some regards. Take for example their newest version of iPhoto which features a face recognition that automatically groups photos by people appearing in them. That is a classical task that the user does not want to do manually and doesn't understand why the computer doesn't do it automatically. And even iPhoto is still a very long way from a good UI, since said feature still requires ultimate confirmation by the user (for each photo!), since the face recognition engine isn't perfect.
其他回答
我相信单元测试、TDD和持续集成是1980年之后的重大发明。
电视管盒
受保护的内存。在保护内存之前,如果你的程序犯了错误,你可以在任何地方开始执行代码——实际上总是挂起整个机器。没错,重启时间到了!
硬件成本低。我的第一台电脑在1978年花了500美元——这在当时是一笔巨款。降低成本让每个人的办公桌上都有了电脑。
MPI和PVM并行化。
包管理和分布式修订控制。
这些软件开发和分发方式的模式是最近才出现的,并且刚刚开始产生影响。
Ian Murdock称包管理是“Linux给业界带来的最大进步”。他会的,但他说得有道理。自1980年以来,安装软件的方式已经发生了重大变化,但大多数计算机用户仍然没有经历过这种变化。
Joel和Jeff在播客#36中与Eric Sink讨论了版本控制(或版本控制,或源代码控制)。似乎大多数开发人员还没有跟上集中式系统的步伐,DVCS被广泛认为是神秘和不必要的。
来自播客36的文字记录:
0:06:37 阿特伍德:…如果你假设——这是一个很大的假设——大多数开发人员都掌握了基本的源代码控制——坦白地说,我发现这是不正确的…… Spolsky:没有。他们中的大多数人,即使他们知道,也只是签入和签出,但分支和合并——这让他们感到困惑。