1980 년 이래 컴퓨팅 분야의 중요한 새로운 발명
이 질문은 지난 50 년 동안 컴퓨팅의 다양한 발전에 대한 의견 에서 비롯되었습니다 .
나는 다른 참가자들로부터 전체 포럼에 대한 질문으로 제기하도록 요청 받았습니다.
여기서의 기본 아이디어는 현재 상황을 부끄럽게하는 것이 아니라 근본적인 새로운 아이디어와 원칙을 내놓는 과정에 대해 이해하려고 노력하는 것입니다.
저는 대부분의 컴퓨팅 영역에서 정말 새로운 아이디어가 필요하다고 주장하며 최근에 수행 된 중요하고 강력한 아이디어를 알고 싶습니다. 정말로 찾을 수 없다면 "왜?"라고 물어봐야합니다. 그리고 "우리는 무엇을해야합니까?"
인터넷 자체는 1980 년 이전에 출시되었지만 Tim Berners-Lee가 제안하고 구현 한 World Wide Web ( "단순한 메커니즘을 통한 분산 하이퍼 텍스트")은 1989/90 년에 시작되었습니다.
하이퍼 텍스트에 대한 아이디어가 이전에 존재했지만 ( Nelson의 Xanadu 는 분산 방식을 구현하려고 시도 했음) WWW는 분산 하이퍼 텍스트 시스템을 구현하기위한 새로운 접근 방식이었습니다. Berners-Lee는 간단한 클라이언트-서버 프로토콜, 마크 업 언어 및 주소 지정 체계를 강력하고 구현하기 쉬운 방식으로 결합했습니다.
대부분의 혁신은 기존의 조각을 독창적 인 방식으로 재결합하여 만들어 졌다고 생각합니다. WWW의 각 조각은 이전에 어떤 형태로 존재했지만 그 조합은 뒤늦게 만 분명했습니다.
그리고 나는 당신이 지금 그것을 사용하고 있다는 것을 확신합니다.
자유 소프트웨어 재단 (1985 년 설립)
비록 당신이 그들의 철학을 전적으로지지하지 않더라도, 그들이 추진해 온 자유 소프트웨어, 오픈 소스 아이디어는 소프트웨어 산업과 일반적으로 콘텐츠 (예 : Wikipedia)에 놀라운 영향을 미쳤습니다.
1980 년에 컴퓨터를 사용한다면 그 대가를 받거나 괴짜라고 말하는 것이 타당하다고 생각합니다. 그래서 무엇이 바뀌 었나요?
프린터 및 소비자 수준의 전자 출판 . 대량의 고품질 인쇄물을 만들기 위해 인쇄기가 필요하지 않다는 것을 의미했습니다. 그것은 컸습니다. 물론 오늘날 우리는 그것을 완전히 당연하게 여기고 있으며 어쨌든 모든 사람이 온라인 상태이기 때문에 대부분 인쇄 부분에 신경 쓰지 않습니다.
색상 . 진지하게. 컬러 화면은 괴짜가 아닌 사람들의 게임 및 응용 프로그램에 대한 인식에 큰 변화를 가져 왔습니다. 갑자기 게임은 힘든 일이 아니라 TV를 보는 것과 비슷해 보였습니다. Sega, Nintendo, Atari 등은 소비자 게임을 가정으로 가져 오는 문을 열었습니다.
미디어 압축 (MP3 및 비디오 파일). 그리고 TiVO와 iPod과 같은 많은 것들이 우리가 더 이상 컴퓨터로 생각하지 않는데, 그것들은 너무나도 편재하고 사용자 친화적이기 때문입니다. 하지만 그렇습니다.
여기서 공통점은 한때 불가능했던 것 (인쇄 된 문서 만들기, 컬러 이미지의 정확한 재현, 실시간으로 전 세계에 메시지 보내기, 오디오 및 비디오 자료 배포) 이었지만 장비와 물류로 인해 비용이 많이 드는 것입니다. 관련되어 있으며 이제는 소비자 수준입니다. 그래서-지금까지 불가능했던 대기업은 무엇을하고 있지만 우리가 그것을 작고 싸게 할 수 있다면 멋질 수 있습니까?
여전히 물리적 인 교통 수단을 포함하는 모든 것은 흥미 롭습니다. 화상 회의가 실제 회의를 (아직) 대체하지는 않았지만 올바른 기술을 사용하면 여전히 그럴 수 있습니다. 일부 레크리에이션 여행은 완전한 감각의 몰입 형 환경에 의해 제거 될 수 있습니다. 홈 시네마는 사소한 예입니다. 다른 하나는 소호의 사무실 건물에있는 "가상 골프 코스"로, 시뮬레이션 코스에서 실제 골프 18 홀을 플레이합니다.
하지만 저에게있어 다음으로 중요한 것은 제작입니다. 물건 만들기. 숟가락, 기타, 의자, 옷, 자동차, 타일 등. 여전히 제조 및 유통 인프라에 의존하는 것. 더 이상 영화 나 앨범을 사러 가게에 갈 필요가 없습니다. 옷과 주방 용품을 사러 가게에 갈 필요가 없을 때까지 얼마나 걸리나요?
물론 OLED 디스플레이와 GPS, 모바일 광대역, IoC 컨테이너, 스크립팅, "클라우드"와 관련하여 흥미로운 개발이 진행되고 있지만 여전히 화면에 사진을 표시하는 새로운 방법 일뿐입니다. 내 사진을 인쇄하고 내 웹 페이지를 작성할 수 있지만 책상 옆 구석에 정확히 맞는 린넨 바구니와 기타 FX 장치를 책상에 부착하기위한 마운팅 브래킷 등을 제작할 수 있기를 원합니다. 내 핸드폰을 자전거 핸들 바에 걸고
프로그래밍과 관련이 없습니까? 아니요 ...하지만 1980 년에는 어느 쪽도 사운드 제작이 아니 었습니다. 또는 비디오 배포. 또는 잠비아의 친척에게 메시지를 보냅니다. 큰 생각, 사람 ... :)
패키지 관리 및 분산 개정 제어.
소프트웨어를 개발하고 배포하는 방식의 이러한 패턴은 매우 최근의 것이며 여전히 영향을 미치기 시작했습니다.
Ian Murdock은 패키지 관리를 "Linux가 업계에 가져온 가장 큰 발전"이라고 말했습니다. 글쎄요,하지만 그는 요점이 있습니다. 소프트웨어 설치 방식은 1980 년 이후 크게 변경되었지만 대부분의 컴퓨터 사용자는 여전히 이러한 변화를 경험하지 못했습니다.
Joel과 Jeff는 Podcast # 36 에서 Eric Sink와 함께 개정 제어 (또는 버전 제어 또는 소스 제어)에 대해 이야기했습니다 . 대부분의 개발자는 아직 중앙 집중식 시스템을 따라 잡지 못한 것으로 보이며 DVCS는 신비스럽고 불필요한 것으로 널리 간주됩니다.
에서 팟 캐스트 (36) 증명서 :
0:06:37
Atwood : ... 대부분의 개발자가 근본적인 소스 제어를 어느 정도 마스터했다고 가정하고 이것이 큰 가정이라면 솔직히 사실이 아닙니다.
Spolsky : 아닙니다. 대부분의 경우 체크인, 체크 아웃이 이해되지만 분기 및 병합이 문제를 혼란스럽게합니다.
BitTorrent . 그것은 이전에 명백히 불변의 규칙처럼 보였던 것을 완전히 바꾸어 놓았습니다. 한 사람이 인터넷을 통해 파일을 다운로드하는 데 걸리는 시간은 다운로드하는 사람의 수에 비례하여 증가합니다. 또한 솔루션 자체에 유기적 인 방식으로 특히 '거머리'와 관련된 이전 피어 투 피어 솔루션의 결함을 해결합니다.
BitTorrent는 일반적으로 불리한 부분 (많은 사용자가 동시에 단일 파일을 다운로드하려는 경우)을 장점으로 전환하여 파일을 다운로드 프로세스의 자연스러운 부분으로 지리적으로 배포합니다. 두 피어 간의 대역폭 사용을 최적화하기위한 전략은 부작용으로 거머리를 방지합니다. 조절을 적용하는 것이 모든 참여자에게 가장 좋습니다.
다른 누군가가 그것을 발명하면 분명하지는 않지만 간단 해 보이는 아이디어 중 하나입니다.
Damas-Milner 유형 추론 (종종 Hindley-Milner 유형 추론이라고 함)은 1983 년에 발표되었으며 이후 모든 정교한 정적 유형 시스템의 기초가되었습니다. 그것은 프로그래밍 언어에서 참으로 새로운 아이디어였습니다 (1970 년대에 발표 된 아이디어를 기반으로 인정되었지만 1980 년 이후까지는 실용적이지 않았습니다). 중요성 측면에서 나는이를 Self와 Self를 구현하는 데 사용되는 기술로 올렸습니다. 영향력 측면에서 동료가 없습니다. (나머지 OO 세계는 여전히 Smalltalk 또는 Simula를 변형하고 있습니다.)
유형 추론에 대한 변형은 여전히 진행 중입니다. 내가 가장 많이 뽑은 변형은 오버로딩을 해결하기위한 Wadler와 Blott의 유형 클래스 메커니즘이며, 나중에 유형 수준에서 프로그래밍을위한 매우 강력한 메커니즘을 제공하는 것으로 밝혀졌습니다. 이 이야기의 끝은 아직 쓰여지고 있습니다.
여기에 Google map-reduce 용 플러그가 있습니다. 그 자체가 아니라 신뢰할 수없는 상용 기계 농장에서 빠르고 안정적인 서비스를 실행하는 Google의 성과에 대한 프록시입니다. 확실히 중요한 발명품이며 1980 년에 보금 자리를 지배했던 헤비급 계산에 대한 대규모 메인 프레임 접근 방식과는 완전히 다릅니다.
태그 는 정보가 분류되는 방식입니다. 예, 각 질문 아래의 작은 텍스트 상자입니다.
태깅을 발명하는 데 약 30 년이 걸린 것은 놀랍습니다. 우리는 목록과 목차를 사용했습니다. 인쇄 된 책에 최적화 된 것을 사용했습니다.
그러나 30 년은 사람들이 인쇄 된 책이 더 작은 형식 일 수 있음을 깨닫는 데 필요한 시간보다 훨씬 짧습니다. 사람들은 손에 책을 보관할 수 있습니다.
CS 핵심 녀석들 사이에서 태깅 개념이 과소 평가 된 것 같다. 모든 연구는 자연어 처리 (하향식 접근 방식)에 중점을 둡니다. 그러나 태깅은 컴퓨터와 사람이 모두 잘 이해할 수있는 첫 번째 언어입니다. 컴퓨터가 자연어를 사용하게하는 상향식 접근 방식입니다.
나는 우리가 이것을 잘못된 방식으로보고 잘못된 결론을 내리고 있다고 생각합니다. 내가 이것을 올바르게하면주기는 다음과 같다.
아이디어-> 첫 번째 구현-> 소수 채택-> 임계 질량-> 상품 제품
첫 번째 아이디어에서 상품에 이르기까지 아이디어가 그 단계에 도달했다고 가정하면 종종 수세기가 걸립니다. 다빈치는 1493 년에 일종의 헬리콥터를 뽑았을지 모르지만 실제 기계를 지상에서 들어 올릴 수있는 데는 약 400 년이 걸렸습니다.
William Bourne이 1580 년에 잠수함에 대한 첫 번째 설명에서 1800 년에 처음으로 구현할 때까지 220 년 동안 현재 잠수함은 아직 초기 단계에 있습니다. 우리는 수중 여행에 대해 거의 알지 못합니다. 잠재적 인 부동산;).
그리고 우리가 방금 들어 본 적이없는 훨씬 더 이른 아이디어가 없었다는 말도 없습니다. 일부 전설에 따르면 알렉산더 대왕이 BC 332 년에 잠수함의 기본 개념 인 잠수함의 기본 개념 인 일종의 잠수 종을 사용한 것처럼 보입니다. 바다 아래로 사람과 공기를 공급하는 장치입니다. 이를 계산하면 아이디어 (기본 프로토 타입 포함)부터 제품까지 2000 년을 바라보고 있습니다.
제가 말하고있는 것은 1980 년 이전에는 아이디어조차 없었던 제품은 말할 것도없고 오늘날의 구현을 찾는다는 것입니다. 고대 중국의 일부 무명 파일 사무원이 "빠른 정렬"알고리즘을 사용했습니다. 그래서 뭐?
40 년 전에는 네트워크로 연결된 컴퓨터가 있었지만 오늘날의 인터넷과 비교할 수 없었습니다. 기본적인 아이디어 / 기술이 거기에 있었지만 상관없이 온라인으로 워크래프트 게임을 할 수 없었습니다.
저는 대부분의 컴퓨팅 영역에서 정말 새로운 아이디어가 필요하다고 주장하며 최근에 수행 된 중요하고 강력한 아이디어를 알고 싶습니다. 정말로 찾을 수 없다면 "왜?"라고 물어봐야합니다. 그리고 "우리는 무엇을해야합니까?"
역사적으로, 우리는 아이디어에서 가깝고 빠른 속도로 "찾아 낼"수 없었습니다. 주기가 빨라지고 있다고 생각하지만 컴퓨팅은 여전히 어리 석습니다.
현재 홀로그램 (물리적 지원없이 스타 워즈 종류)을 만드는 방법을 찾고 있습니다. 나는 그것을 작동시키는 방법을 알고 있다고 생각합니다. 나는 도구, 재료, 자금을 모아 본 적이 없지만 어느 정도 성공하더라도 실제 아이디어는 이미 수십 년이되었을 것이고 관련 구현 / 기술은 오랫동안 사용되었습니다. .
실제 제품을 나열하기 시작하자마자 개념과 첫 번째 구현이 얼마 전에 존재했음을 확신 할 수 있습니다. 상관 없습니다.
당신은 어떤 이유에서든 새로운 것은 없으며, 모든 것이 항상 새로운 것이라고 주장 할 수 있습니다. 그것은 철학이며 두 관점 모두 옹호 될 수 있습니다.
실용적인 관점에서 보면 진리는 그 사이 어딘가에 있습니다. 진실은 이진 개념이 아니며 부울 논리는 저주합니다.
중국인들은 얼마 전에 인쇄기를 생각해 냈을 지 모르지만 대부분의 사람들이 합리적인 가격으로 집에서 괜찮은 컬러 사진을 인쇄 할 수있는 것은 불과 10 년 밖에되지 않았습니다.
당신의 기준과 기준에 따라 발명은 어디에도 없습니다.
Google의 페이지 순위 알고리즘. 웹 크롤링 검색 엔진을 개선 한 것으로 보일 수 있지만 1980 년 이후에 개발되었다는 점을 지적합니다.
DNS, 1983, and dependent advances like email host resolution via MX records instead of bang-paths. *shudder*
Zeroconf working on top of DNS, 2000. I plug my printer into the network and my laptop sees it. I start a web server on the network and my browser sees it. (Assuming they broadcast their availability.)
NTP (1985) based on Marzullo's algorithm (1984). Accurate time over jittery networks.
The mouse scroll wheel, 1995. Using mice without it feels so primitive. And no, it's not something that Engelbart's team thought of and forgot to mention. At least not when I asked someone who was on the team at the time. (It was at some Engelbart event in 1998 or so. I got to handle one of the first mice.)
Unicode, 1987, and its dependent advances for different types of encoding, normalization, bidirectional text, etc.
Yes, it's pretty common for people to use all 5 of these every day.
Are these "really new ideas?" After all, there were mice, there were character encodings, there was network timekeeping. Tell me how I can distinguish between "new" and "really new" and I'll answer that one for you. My intuition says that these are new enough.
In smaller domains there are easily more recent advances. In bioinformatics, for example, Smith-Waterman (1981) and more especially BLAST (1990) effectively make the field possible. But it sounds like you're asking for ideas which are very broad across the entire field of computing, and the low-hanging fruit gets picked first. Thus is it always with a new field.
What about digital cameras?
According to Wikipedia, the first true digital camera appeared in 1988, with mass market digital cameras becoming affordable in the late 1990s.
Modern shading languages and the prevalence of modern GPUs.
The GPU is also a low cost parallel supercomputer with tools like CUDA and OpenCL for blazing fast high level parallel code. Thank you to all those gamers out there driving down the prices of these increasingly impressive hardware marvels. In the next five years I hope every new computer sold (and iPhones too) will have the ability to run massively parallel code as a basic assumption, much like 24 bit color or 32 bit protected mode.
JIT compilation was invented in the late 1980s.
To address the two questions about "Why the death of new ideas", and "what to do about it"?
I suspect a lot of the lack of progress is due to the massive influx of capital and entrenched wealth in the industry. Sounds counterintuitive, but I think it's become conventional wisdom that any new idea gets one shot; if it doesn't make it at the first try, it can't come back. It gets bought by someone with entrenched interests, or just FAILs, and the energy is gone. A couple examples are tablet computers, and integrated office software. The Newton and several others had real potential, but ended up (through competitive attrition and bad judgment) squandering their birthrights, killing whole categories. (I was especially fond of Ashton Tate's Framework; but I'm still stuck with Word and Excel).
What to do? The first thing that comes to mind is Wm. Shakespeare's advice: "Let's kill all the lawyers." But now they're too well armed, I'm afraid. I actually think the best alternative is to find an Open Source initiative of some kind. They seem to maintain accessibility and incremental improvement better than the alternatives. But the industry has gotten big enough so that some kind of organic collaborative mechanism is necessary to get traction.
I also think that there's a dynamic that says that the entrenched interests (especially platforms) require a substantial amount of change - churn - to justify continuing revenue streams; and this absorbs a lot of creative energy that could have been spent in better ways. Look how much time we spend treading water with the newest iteration from Microsoft or Sun or Linux or Firefox, making changes to systems that for the most part work fine already. It's not because they are evil, it's just built into the industry. There's no such thing as Stable Equilibrium; all the feedback mechanisms are positive, favoring change over stability. (Did you ever see a feature withdrawn, or a change retracted?)
The other clue that has been discussed on SO is the Skunkworks Syndrome (ref: Geoffrey Moore): real innovation in large organizations almost always (90%+) shows up in unauthorized projects that emerge spontaneously, fueled exclusively by individual or small group initiative (and more often than not opposed by formal management hierarchies). So: Question Authority, Buck the System.
One thing that astounds me is the humble spreadsheet. Non-programmer folk build wild and wonderful solutions to real world problems with a simple grid of formula. Replicating their efforts in desktop application often takes 10 to 100 times longer than it took to write the spreadsheet and the resulting application is often harder to use and full of bugs!
I believe the key to the success of the spreadsheet is automatic dependency analysis. If the user of the spreadsheet was forced to use the observer pattern, they'd have no chance of getting it right.
So, the big advance is automatic dependency analysis. Now why hasn't any modern platform (Java, .Net, Web Services) built this into the core of the system? Especially in a day and age of scaling through parallelization - a graph of dependencies leads to parallel recomputation trivially.
Edit: Dang - just checked. VisiCalc was released in 1979 - let's pretend it's a post-1980 invention.
Edit2: Seems that the spreadsheet is already noted by Alan anyway - if the question that bought him to this forum is correct!
Software:
Virtualization and emulation
P2P data transfers
community-driven projects like Wikipedia, SETI@home ...
web crawling and web search engines, i.e. indexing information that is spread out all over the world
Hardware:
the modular PC
E-paper
The rediscovery of the monad by functional programming researchers. The monad was instrumental in allowing a pure, lazy language (Haskell) to become a practical tool; it has also influenced the design of combinator libraries (monadic parser combinators have even found their way into Python).
Moggi's "A category-theoretic account of program modules" (1989) is generally credited with bringing monads into view for effectful computation; Wadler's work (for example, "Imperative functional programming" (1993)) presented monads as practical tool.
Shrinkwrap software
Before 1980, software was mostly specially written. If you ran a business, and wanted to computerize, you'd typically get a computer and compiler and database, and get your own stuff written. Business software was typically written to adapt to business practices. This is not to say there was no canned software (I worked with SPSS before 1980), but it wasn't the norm, and what I saw tended to be infrastructure and research software.
Nowadays, you can go to a computer store and find, on the shelf, everything you need to run a small business. It isn't designed to fit seamlessly into whatever practices you used to have, but it will work well once you learn to work more or less according to its workflow. Large businesses are a lot closer to shrinkwrap than they used to be, with things like SAP and PeopleSoft.
It isn't a clean break, but after 1980 there was a very definite shift from expensive custom software to low-cost off-the-shelf software, and flexibility shifted from software to business procedures.
It also affected the economics of software. Custom software solutions can be profitable, but it doesn't scale. You can only charge one client so much, and you can't sell the same thing to multiple clients. With shrinkwrap software, you can sell lots and lots of the same thing, amortizing development costs over a very large sales base. (You do have to provide support, but that scales. Just consider it a marginal cost of selling the software.)
Theoretically, where there are big winners from a change, there are going to be losers. So far, the business of software has kept expanding, so that as areas become commoditized other areas open up. This is likely to come to an end sometime, and moderately talented developers will find themselves in a real crunch, unable to work for the big boys and crowded out of the market. (This presumably happens for other fields; I suspect the demand for accountants is much smaller than it would be without QuickBooks and the like.)
Outside of hardware innovations, I tend to find that there is little or nothing new under the sun. Most of the really big ideas date back to people like von Neumann and Alan Turing.
A lot of things that are labelled 'technology' these days are really just a program or library somebody wrote, or a retread of an old idea with a new metaphor, acronym, or brand name.
Computer Worms were researched in the early eighties of the last century in the Xerox Palo Alto Research Center.
From John Shoch's and Jon Hupp's The "Worm" Programs - Early Experience with a Distributed Computation" (Communications of the ACM, March 1982 Volume 25 Number 3, pp.172-180, march 1982):
In The Shockwave Rider, J. Brunner developed the notion of an omnipotent "tapeworm" program running loose through a network of computers - an idea which may seem rather disturbing, but which is also quite beyond our current capabilities. The basic model, however, remains a very provocative one: a program or a computation that can move from machine to machine, harnessing resources as needed, and replicating itself when necessary.
In a similar vein, we once described a computational model based upon the classic science-fiction film, The Blob: a program that started out running in one machine, but as its appetite for computing cycles grew, it could reach out, find unused machines, and grow to encompass those resources. In the middle of the night, such a program could mobilize hundreds of machines in one building; in the morning, as users reclaimed their machines, the "blob" would have to retreat in an orderly manner, gathering up the intermediate results of its computation. Holed up in one or two machines during the day, the program could emerge again later as resources became available, again expanding the computation. (This affinity for nighttime exploration led one researcher to describe these as "vampire programs.")
Quoting Alan Kay: "The best way to predict the future is to invent it."
Better user interfaces.
Today’s user interfaces still suck. And I don't mean in small ways but in large, fundamental ways. I can't help but to notice that even the best programs still have interfaces that are either extremely complex or that require a lot of abstract thinking in other ways, and that just don't approach the ease of conventional, non-software tools.
Granted, this is due to the fact that software allows to do so much more than conventional tools. That's no reason to accept the status quo though. Additionally, most software is simply not well done.
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.
Solving this probem isn't even actually hard. It would just be hard to implement it in every application since there is no good API to do this. Programming tools and libraries have to improve significantly before allowing an effortless implementation of such effords across all platforms and programs, for all file formats with arbitrary backup storage and no required user interaction. But it is a necessary step before we finally start writing “good” applications instead of merely adequate ones.
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.
HTM systems (Hiearchical Temporal Memory).
A new approach to Artifical Intelligence, initiated by Jeff Hawkins through the book "On Intelligence".
Now active as a company called Numenta where these ideas are put to the test through development of "true" AI, with an invitation to the community to participate by using the system through SDKs.
It's more about building machine intelligence from the ground up, rather than trying to emulate human reasoning.
The use of Physics in Human Computer interaction to provide an alternative, understandable metaphor. This combined with gestures and haptics will likely result in a replacment for the current common GUI metaphor invented in the 70's and in common use since the mid to late 80's.
The computing power wasn't present in 1980 to make that possible. I believe Games likely led the way here. An example can easily be seen in the interaction of list scrolling in the iPod Touch/iPhone. The interaction mechanism relies on the intuition of how momentum and friction work in the real world to provide a simple way to scroll a list of items, and the usability relies on the physical gesture that cause the scroll.
I believe Unit Testing, TDD and Continuous Integration are significant inventions after 1980.
Mobile phones.
While the first "wireless phone" patent was in 1908, and they were cooking for a long time (0G in 1945, 1G launched in Japan in 1979), modern 2G digital cell phones didn't appear until 1991. SMS didn't exist until 1993, and Internet access appeared in 1999.
I started programming Jan 2nd 1980. I've tried to think about significant new inventions over my career. I struggle to think of any. Most of what I consider significant were actually invented prior to 1980 but then weren't widely adopted or improved until after.
- Graphical User Interface.
- Fast processing.
- Large memory (I paid $200.00 for 16k in 1980).
- Small sizes - cell phones, pocket pc's, iPhones, Netbooks.
- Large storage capacities. (I've gone from carrying a large 90k floppy to an 8 gig usb thumb drive.
- Multiple processors. (Almost all my computers have more than one now, software struggles to keep them busy).
- Standard interfaces (like USB) to easily attach hardware peripherals.
- Multiple Touch displays.
- Network connectivity - leading to the mid 90's internet explosion.
- IDE's with Intellisense and incremental compiling.
While the hardware has improved tremendously the software industry has struggled to keep up. We are light years ahead of 1980, but most improvements have been refinements rather than inventions. Since 1980 we have been too busy applying what the advancements let us do rather than inventing. By themselves most of these incremental inventions are not important or powerful, but when you look back over the last 29 years they are quite powerful.
We probably need to embrace the incremental improvements and steer them. I believe that truly original ideas will probably come from people with little exposure to computers and they are becoming harder to find.
Nothing.
I think it's because people have changed their attitudes. People used to believe that if they would just find that "big idea", then they would strike it rich. Today, people believe that it is the execution and not the discovery that pays out the most. You have mantras such as "ideas are a dime a dozen" and "the second mouse gets the cheese". So people are focused on exploiting existing ideas rather than coming up with new ones.
Open Source community development.
The iPad (released April 2010): surely such a concept is absolutely revolutionary!
alt text http://www.ubergizmo.com/photos/2010/1/apple-ipad//apple-ipad-05.JPG
No way Alan Kay saw that coming from the 1970's!
Imagine such a "personal, portable information manipulator"...
...
Wait? What!? The Dynabook you say?
Thought out by Alan Kay as early as 1968, and described in great details in this 1972 paper??
NOOOoooooooo....
Oh well... never mind.
참고URL : https://stackoverflow.com/questions/432922/significant-new-inventions-in-computing-since-1980
'Nice programing' 카테고리의 다른 글
Git을 사용할 때 Permission denied (publickey) 오류를 해결하는 방법은 무엇입니까? (0) | 2020.10.03 |
---|---|
Android의 전체 화면 활동? (0) | 2020.10.03 |
파이썬에서 한 문자열을 다른 문자열에 어떻게 추가합니까? (0) | 2020.10.03 |
JavaScript의 "새"키워드가 유해한 것으로 간주됩니까? (0) | 2020.10.03 |
C #에서 문자열 앞의 @는 무엇입니까? (0) | 2020.10.03 |