这个问题来自于对过去50年左右计算领域各种进展的评论。
其他一些与会者请我把这个问题作为一个问题向整个论坛提出。
这里的基本思想不是抨击事物的现状,而是试图理解提出基本新思想和原则的过程。
我认为我们在大多数计算领域都需要真正的新想法,我想知道最近已经完成的任何重要而有力的想法。如果我们真的找不到他们,那么我们应该问“为什么?”和“我们应该做什么?”
这个问题来自于对过去50年左右计算领域各种进展的评论。
其他一些与会者请我把这个问题作为一个问题向整个论坛提出。
这里的基本思想不是抨击事物的现状,而是试图理解提出基本新思想和原则的过程。
我认为我们在大多数计算领域都需要真正的新想法,我想知道最近已经完成的任何重要而有力的想法。如果我们真的找不到他们,那么我们应该问“为什么?”和“我们应该做什么?”
当前回答
The mouse - There have been posts about human interaction. To me, the mouse was the gateway to human interaction. Without it, we'd still be typing and not clicking in dragging, even with our fingers. GUI - Complimented the mouse perfectly. I work in an environment where an as400 is the backend of one of our major apps. Yeah.. Interesting stuff but it just reminds me of the screens 'Bill Gates' is working in in the movie 'Pirates of Silicon Valley' even though that's not what it was. To me, 1 and 2 are the reason anybody, including grandpas and grandmas can use a computer. Excel / spreadsheets - Someone mentioned this before but it's work mentioning again. It's so user friendly and is a great entry point for non-technical users to try their hand at simple programming concepts when performing calculations on cells. Granted it came out before 1980, but the versions post 1980 are when the technology in spreadsheets evolved. Internet (of course) - Not sure how people wrote code without it! Don't flame me for repeating because this belongs on every list. INTELLISENSE - LOVE IT LOVE IT LOVE IT!!!!
其他回答
有一件事让我吃惊,那就是简陋的电子表格。非程序员的人用一个简单的公式网格就可以为现实世界的问题构建狂野而奇妙的解决方案。在桌面应用程序中复制他们的努力通常需要比编写电子表格多10到100倍的时间,最终的应用程序通常更难使用,充满bug !
我相信电子表格成功的关键是自动依赖分析。如果电子表格的用户被迫使用观察者模式,他们就没有机会得到正确的结果。
因此,最大的进步是自动依赖分析。现在,为什么没有任何现代平台(Java, .Net, Web Services)将其构建到系统的核心中呢?特别是在一个通过并行化扩展的时代——依赖关系图导致并行重新计算变得微不足道。
编辑:我刚查过。VisiCalc发布于1979年——让我们假设它是1980年后的发明。
Edit2:似乎艾伦已经注意到了电子表格——如果让他来这个论坛的问题是正确的!
更好的用户界面。
今天的用户界面仍然很糟糕。我指的不是小的方面,而是大的、基本的方面。我不禁注意到,即使是最好的程序也仍然有一些接口,这些接口要么极其复杂,要么需要以其他方式进行大量的抽象思考,而且无法达到传统的非软件工具的易用性。
诚然,这是由于软件可以比传统工具做更多的事情。但这不是接受现状的理由。此外,大多数软件都做得不好。
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.
基础设施的改变使家庭和办公室都能接入互联网。
记录并接受了从W3C到api的标准
除此之外,我们所认为的大多数新事物都比你想象的要久远得多(例如GUI, OOP)。
我没有资格在一般意义上回答这个问题,但仅限于计算机编程?并不多。
为什么?我思考这个问题已经有一段时间了,我认为我们缺少两样东西:历史感和客观评价我们所创造的一切的方法。并非所有情况都是这样,但大体上是这样。
For history, I think it's just something not emphasized enough in popular writing or computer science programs. Take language features, for example. A canonical source might be HOPL, but it's definitely not common knowledge among programmers to be able to mark the point in time or in which language a feature like GC or closures first appeared. And of course after that there's knowledge of progression over time: how has OOP changed since Simula? Compare and contrast our sense of history with that of other fields like maybe political science or philosophy.
至于判断,这确实是我们寻求成功的客观衡量标准的失败。给定foobar,它以什么可衡量的方式改进了编程行为中的某些方面,其中foobar是任何设计模式,敏捷方法,TDD等等。我们有没有试过测量这个?我们到底想测量什么?正确性,程序员的生产力,代码的易读性等等?如何?软件工程确实应该着手解决这些问题,但我还没有看到。
标签,信息分类的方式。是的,就是每个问题下面的小方框。
令人惊讶的是,标签发明花了大约30年的时间。我们使用了目录和目录;我们使用了为印刷书籍优化的东西。
然而,30年比人们意识到印刷书籍可以用更小的格式的时间短得多。人们可以把书放在手里。
我认为核心CS玩家低估了标签概念。所有的研究都集中在自然语言处理(自顶向下的方法)。但是标签是第一种计算机和人类都能很好理解的语言。这是一种自底向上的方法,使计算机使用自然语言。