当前位置: 首页 > 编程日记 > 正文

身为面向对象编程、移动计算机之父的他,为何说“计算机革命还没真正到来”?...

作者 | 年素清

责编 | 李雪敬

出品 | 程序人生(ID:coder_life)

艾伦·凯(艾伦 Kay)是近代计算机革命先驱之一,他最早提出了“面向对象编程”的概念,也是“Dynabook”(笔记本电脑的雏形)的最早阐述者。

他是一个真正意义上的全才,不仅是工程技术方面的专家,还在儿童发展理论、认识论、分子生物学等领域颇有建树,他擅长将它们融合在一起,在知识的交汇点上挖掘出更具价值的东西。此外,他还是个发明家。

艾伦有一句广为人知的名言:“预测未来的最好的办法就是创造未来。”

艾伦·凯,图片来自维基百科

首次提出“面向对象”

艾伦于 1940 年出生在美国马塞诸塞州。1岁时,全家随父亲迁往澳大利亚,世界第二次世界大战爆发后,又迁回美国。

艾伦3岁就可以阅读,家里有 6000 本书和大量的绘画。大量的阅读使得童年时期的艾伦就有了自己独立的观点,他说:“到我上学的时候,我已经读过几百本书。那时我已经有了许多自己的观点,我知道一年级所教的许多东西都很幼稚和虚假。当然我已经可以用五岁的声音维护自己的观点。”

1960 年,艾伦进入 Bethany 大学就读,但在一年之后,他就因抗议学校对待犹太人的不公问题而被学校开除。退学后的艾伦加入志愿兵服务队,在军队的一次计算机的能力倾向测试中,艾伦因为表现出众而被美国空军派遣到 IBM K101 工作。正是在那里,艾伦学习到了大量计算机有关的知识。

从军队退伍后,艾伦被科罗拉多大学录取,攻读数学和分子专业,毕业后进入犹他大学学习电气工程。

在犹他大学,艾伦开始使用由 1988 年图灵奖获得者伊凡·苏泽兰(Ivan Sutherland)开发的 Sketchpad 程序,结合 Simua 仿真语言编写程序。当时的计算机是个非常罕见的物件,那个时代的程序员使用一堆别人看不懂的字符工作,因为更高级的语言还没有被开发乃至推广。

随着对计算机接触的深入,艾伦开始思考计算机和编程。受这些程序思想的启发,再加上自己生物学的背景,他提出了“生物学类比”理论。艾伦假定理想的计算机将象生物体一样工作,为完成某个任务,每个“细胞”都要与其它“细胞”协同完成,而每个“细胞”又有自己的功能。为了解决另外的难题或试验另外的功能,“细胞”们可以实现重组,这一理论成为面向对象程序设计的萌芽。他的博士毕业论文也是围绕图形面向对象方面的研究展开。

 “计算机就像一种超级纸张”

1968 年,艾伦在 MIT 人工智能实验室见到了 Logo 语言的创始人西蒙·派珀特(SeymourPapert),派珀特和同事们向孩子们演示如何使用 Logo。艾伦看完之后,他之前对于计算机的认识受到极大冲击,艾伦后来回忆起这段经历说:“我看到了第一个真正的手写体识别系统。这是一套今人难以置信的系统。它对我产生了巨大影响,因为我有种心有灵犀的感觉。当我将这些观念综合起来,计算机的概念就象是一种超级媒体,一种超级纸张。”

从这以后,艾伦开始学习 Logo 语言。

 推动苹果 Mac 机的诞生

1971 年,艾伦进入 Xerox PARC(施乐帕克研究中心)开始参与 Alto 计算机的开发。当时的位图显示器十分昂贵,艾伦成功说服 PARC 让他使用这些位图显示器,这使得艾伦和他的团队能够实现不同大小和字体的文字,使用多窗口环境,以及一些对图像处理的高端支持。基于这些操作,艾伦最后发明了重叠窗口、图标等图形用户界面。

1979 年,艾伦邀请史蒂夫·乔布斯(SteveJobs)、杰夫·拉斯金(Teff Raskin)以及其它苹果公司的元老们来到 PARC 参观,乔布斯一行人对艾伦的视窗图形用户界面非常感兴趣,他们认为这就是未来的电脑。

1984 年,在乔布斯的极力邀请下,艾伦加盟苹果。同年,苹果推出 Macintosh 计算机(就是我们所知的Mac机),首次将图形用户界面应用到个人计算机之上,引起计算产业界的巨大轰动。

面向对象之父与移动计算机之父

1968 年,艾伦受派珀特启发,他构想出一台像书本一样大小的计算机,用户尤其是儿童可以用它来代替纸张,他将这个项目称之为“Kiddie Komp”,并在此基础上提出了“Dynabook”的概念,后来在 1972 年一篇名为《适合各年龄段儿童的个人计算机》的论文中发表了这个概念。“Dynabook”后来演变成了今天的超薄笔记本电脑。

为了将 Dynabook 的想法落地,艾伦开始着手 Smalltalk(面向对象的程序设计语言)的研发。之后,他率领团队对 Smalltalk 的执行效率和规模进行了优化,他们引入了继承和子类的概念并确定了语言的语法,这使得编译器能够产生高效、可执行、精炼的二进制代码,这些概念的引入使 Smalltalk 成为最早的面向对象语言。艾伦因此被誉为“面向对象之父”,2003 年4月,美国计算机学会(ACM)将当年的图灵奖授予了艾伦,以表彰他和他的 Smalltalk 语言。

此外,Smalltalk 吸取了 Mac 机原型的优秀经验,能够通过高度便携的联网方式,以编辑、授权的形式模拟所有现有媒体。1993年,苹果推出世界上第一款掌上电脑“Apple Newton”,终于将 Dynabook 理念成为了现实。艾伦也因此被后人称为“移动计算机之父”。

 “计算机革命并未真正发生”

尽管计算机自诞生之日到艾伦的时代经历了翻天覆地的变化,但是他却认为计算机革命并未真正发生,软件工程正在向和摩尔定律相反的方向发展,当硬件容量逐年递增的时候,软件则在无谓地持续膨胀,而背后的原因可能是虚弱而难于扩展的思路和工具、懒惰和缺少知识等。

当时有首搞笑的单行诗:“Andy 给予的一切,都被 Bill 夺走”。指的是每当 Intel 的 CEO 安迪·葛洛夫(Andy Grove)推出一款性能更高的芯片,微软的 CEO 比尔·盖茨(Bill Gates)都会通过升级软件使新硬件带来的更高性能消失于无形。

为了改善当前软件开发的窘境,艾伦领导了向着彻底改造编程技术的 STEP 研究课题,目标是实现摩尔定律在软件代码表达效率上的飞跃,途径是把开发系统所需要编写的代码量减少到原先的百分之一、千分之一、万分之一甚至更少。

2011 年,艾伦指出软件工程已陷入停滞,成为了迷失的学科,无法跟上硬件和其他科学技术领域发展的步伐。巨大的代码库已经沦为了一个垃圾场,大到任何人都无法看懂产生 Vista 或者 Word 的1亿行源代码,而本来只需要一小部分代码就够了。

参考链接:

https://baike.baidu.com/item/%E8%89%BE%E4%BC%A6%C2%B7%E5%87%AF/10709189?fr=aladdin

http://www.gerenjianli.com/Mingren/28/o5o1idm8om.html

http://media.people.com.cn/n1/2019/0510/c14677-31077446.html


更多精彩推荐
☞12306 背后的技术大牛:我不跟人拼智商,我就跟他们拼狠!
☞融资 2000 万美元后,他竟将核心代码全开源,这……能行吗?
☞鸿蒙加海思,麒麟加龙芯,组合拳能否渡劫“生态”危机
☞用 Python 详解《英雄联盟》游戏取胜的重要因素!
☞2020 年最厉害的 10 门编程语言
☞“善”用区块链:善是初心,链是保障
点分享点点赞点在看

相关文章:

动态表单构建器——建造者模式

在编写一个弹出框时,它可以包含确定按钮,取消按钮,标题栏,关闭按钮,最小化按钮,内容,最大化按钮等内容,但这些内容在不同的需求下又不是必须存在的,不同的需求需要对这些组件自由组合…

网页素材大宝库:50套非常精美的图标素材

图标对网页设计师来说是宝贵的财富,高质量的图标素材既能为设计师节省时间,又能有很不错的效果。网上的免费图标素材非常多,可以说是琳琅满目,那些充满分享精神的设计师们把素材共享出来,让更多的人可以使用他们的优秀…

​AI 面试“泛滥”的时代,HR该如何甄别真假“AI”?

作者 | 无缺编辑 | 王晓曼出品 | AI科技大本营(ID:rgznai100)在互联网、物联网蓬勃发展的中国,AI在商业化领域的运用,大家并不陌生。但AI在人力资源领域的发展前景如何?这是一个复杂且相对陌生的话题,也没有…

C语言里面%2d 意思

看看下面的说明就知道啦:修饰符 格式说明 意义 int a1;int b1234;double c1.2345678;printf("%2d\n",a);printf("%2d\n",a);printf("%4d\n",a);printf("%2d\n",b);printf("%2d\n",b);printf("%4d\n",b…

DatagridView自动充满屏幕,并能指定某列宽度

1、要使datagridview正好充满屏幕,设置其AutoSizeColumnsMode属性为fill 2、 同时,我们想要某列宽点,某列窄点,在AutoSizeColumnsMode属性为fill的前提下,设置FillWeight 属性 FillWeight :获取或设置一个值…

在网页中动态的生成一个gif图片

作者: love.net 大家知道股票网站的K线图是动态生成的定时刷新PHP 就有动态生成图片的功能 那么怎样用asp.net在网页中动态的生成一个图片呢? 下面我要举的例子是动态的生成一个图片显示当前时间 namespace Wmj { using System; using System.Drawing; u…

11项重大发布!百度大脑语言与知识技术峰会全程高能

AI正在向更深层次进化,语言与知识技术的重要性愈加凸显。8月25日,以“掌握知识、理解语言、拥有智能”为主题的百度大脑语言与知识技术峰会重磅开启,百度CTO王海峰发表主旨演讲,解读百度语言与知识技术的发展历程与最新成果&#…

MySQL 5.5.35 单机多实例配置详解

一、前言 二、概述 三、环境准备 四、安装MySQL 5.5.35 五、新建支持多实例的配置文件(我这里配置的是四个实例) 六、初始化多实例数据库 七、提供管理脚本 mysqld_multi.server 八、整体备份方便后续迁移 九、管理MySQL多实例 十、登录MySQL多实例 十一…

ASP.NET超凡的代码控制

crystal译yesky 适应性 肯定的是,通常任何一个全新的技术,在市场渗透都会花费一些时间。微软正在开始让ASP和IIS平台通过行业验证,以便让其作为其它网络服务器之外可以供选择的平台 对于在其基本构架上的如此巨大的改变,是很难说服…

老码农:这是我见过最操蛋的代码,切勿模仿!

作为一名老码农,我的心这次凉透了!事情起因很简单:我在全国最大ZZ的同性组织某Hub上浏览时候,发现这样的一条信息:Python 超过 C、JS 薪酬排行第一(最大招聘网站Indeed.com数据)噗,9…

QTP时间格式的转换(YYYYMMDDHHMMSS)

之前查了好多资料都是这样写的: sendTime year(sendTime) & right( "00 " & month(sendTime),2) & right( "00 " & day(sendTime),2) & right( "00 " & hour(sendTime),2) &…

Selenium2+python自动化25-js处理日历控件(修改readonly属性)

前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题。 基本思路:先用js去掉readonly属性&#xf…

ASP.NET强大的性能

crystal译 yesky 一个程序,速度是一件非常令人渴望的东西。一旦代码开始工作,接下来你就得尽可能的让它运作的快些,再快些, 在ASP中你只有尽可能拧干你的代码,以至于不得不将他们移植到一个仅有很少一点性能的部件中。…

POJ-1753 Flip Game 枚举 状态压缩

刚开始做这题时总是在想应该用何种的策略来进行翻装,最后还是没有想出来~~~ 这题过的代码的思路是用在考虑到每个点被翻装的次数只有0次或者是1次,所以对于16个点就只有2^16中请况了。再运用位运算将状态压缩到一个32位…

“半真半假”DeepFake换脸也能精准识别?阿里安全提出全新检测方法

一段包含多个人脸的视频中,攻击者只对一个或者几个人的人脸进行伪造,这种“半真半假”的伪造情况能否被检测识别?近日,阿里安全图灵实验室宣布,其已成功打造出针对这种换脸视频的DeepFake检测技术,阐述该技…

python 定时任务

Python 定时任务 最近学习到了 python 中两种开启定时任务的方法,和大家分享一下心得。 sched.scheduler()threading.Timer()sched 定时任务 使用sched的套路如下: s sched.scheduler(time.time, time.sleep) s.enter(delay, priority, func1, (arg1, a…

思科AP与交换机端口的配置

思科AP与交换机端口的配置。 思科AP可以分IOS AP 和LAP。 1、IOS AP 中如果AP上需要创建多个SSID,连接的交换机端口则需要: switch(config-interfa)# sw mod trunk switch(config-interfa)# sw trunk allow vlan 1,x,x,x (SSID对应的VLAN) 另外注意&…

Namespace(命名空间)的使用

作者&#xff1a;飞刀 关于Namespace(命名空间)的使用常用<% Import Namespace"System.Data" %>,这是在引用M$为我们提供的Namespace,这和ASP不同的&#xff0c;我们贏SP.net必须先引用与我们操作有关的Namespace后才能使用相应的功能。其实说白了&#xff…

“编程能力差!90%输在这点上”谷歌AI专家:其实都是瞎努力!

最近几年&#xff0c;我看过市面上很多 Python和人工智能的教程&#xff0c;基本都在这样讲&#xff1a;先介绍Python基本语法、dict、tuple 等基本库的使用&#xff0c;最后学习机器学习、深度学习的常用算法......但我与Google人工智能开发专家彭靖田老师沟通后发现&#xff…

NAS存储对称和非对称结构之前的区别概述

传统的系统利用紧耦合对称架构&#xff0c;这种架构的设计旨在解决HPC&#xff08;高性能计算、超级运算&#xff09;问题&#xff0c;现在其正在向外扩展成为云存储从而满足快速呈现的市场需求。下一代架构已经采用了松弛耦合非对称架构&#xff0c;集中元数据和控制操作&…

Lucene:基于Java的全文检索引擎简介(转载)

Lucene是一个基于Java的全文索引工具包。基于Java的全文索引引擎Lucene简介&#xff1a;关于作者和Lucene的历史全文检索的实现&#xff1a;Luene全文索引和数据库索引的比较中文切分词机制简介&#xff1a;基于词库和自动切分词算法的比较具体的安装和使用简介&#xff1a;系统…

昨天,我用 Python 写了一个婚介模型

作者 | 天元浪子来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;先声明一下&#xff1a;本文纯属七夕应景娱乐之作。如果有人因为遵循本模型提出的择偶理论而导致失恋或单身&#xff0c;除了同情&#xff0c;我不能补偿更多。在中国的传统节日里&#xff0c;七夕可…

WCF服务一:WCF服务简介

一、回顾开发历史&#xff1a; 软件架构的设计经历了&#xff1a;从面向对象程序&#xff0c;到面向组件程序设计&#xff0c;再到面向服务程序设计。这三种方式都致力于同一个目标&#xff1a;封装和重用。 面向对象程序设计&#xff1a;类封装功能并提供代码重用。 面向组件程…

MIT 更新最大自然灾害图像数据集,囊括 19 种灾害事件

作者 | 神经小兮来源 | HyperAI超神经&#xff08;ID&#xff1a;HyperAI&#xff09;内容提要&#xff1a;麻省理工学院在最近 ECCV 2020 上提交的一篇论文中&#xff0c;发布了一套自然灾害图像数据集。这是迄今为止规模最大、质量最高的自然灾害卫星图像数据集。2020 年&…

DataBind数据核心

作者&#xff1a;飞刀 这一节主要是要讲DataBind&#xff0c;这个在ASP.net中是很重要的东东&#xff0c;几乎所有的控件都需要它来控制数据的操作。也可以说是ASP.net的数据核心。 我们先来看一个简单的例子&#xff1a; <% Page Language"C#" %> <% …

convertViewsetTag方法的一点理解

转自&#xff1a;http://blog.163.com/freemanls126/blog/static/164585061201171210504864/ 前言 首先我们要知道setTag方法是干什么的&#xff0c;SDK解释为 Tags Unlike IDs, tags are not used to identify views. Tags are essentially an extra piece of information tha…

iOS使用Security.framework进行RSA 加密解密签名和验证签名

iOS 上 Security.framework为我们提供了安全方面相关的api&#xff1b; Security框架提供的RSA在iOS上使用的一些小结 支持的RSA keySize 大小有&#xff1a;512&#xff0c;768&#xff0c;1024&#xff0c;2048位支持的RSA 填充方式有三种&#xff1a;NOPadding,PKCS1,OAEP 三…

Android APK反编译详解(附图)

这段时间在学Android应用开发&#xff0c;在想既然是用Java开发的应该很好反编译从而得到源代码吧&#xff0c;google了一下&#xff0c;确实很简单&#xff0c;以下是我的实践过程。 在此郑重声明&#xff0c;贴出来的目的不是为了去破解人家的软件&#xff0c;完全是一种学习…

你不知道的18个Python高效编程技巧

来源 | Python编程时光初识Python语言&#xff0c;觉得python满足了我上学时候对编程语言的所有要求。python语言的高效编程技巧让我们这些大学曾经苦逼学了四年c或者c的人&#xff0c;兴奋的不行不行的&#xff0c;终于解脱了。高级语言&#xff0c;如果做不到这样&#xff0c…

Alisql源码编译安装(详细篇)

前言 AliSQL 在 2016 云栖大会宣布开放源代码之后&#xff0c;迅速就获得了广泛的关注&#xff0c;目前(2016-10-27) star 数目已达 1187&#xff0c;欢迎访问 AliSQL GitHub 项目关注。社区反应也非常活跃&#xff0c;在 Issue 中提了不少反馈建议&#xff0c;其中有一部分是和…