设为首页
收藏本站
注册账号
登录
|
搜索
搜索
本版
文章
帖子
用户
门户
Portal
论坛
BBS
网赚问答
科教问答
平面设计
网站制作
软件开发
网络运维
网教网
»
论坛
›
网教网
›
软件开发
›
编程发展史
返回列表
发新帖
查看:
96
|
回复:
0
编程发展史
[复制链接]
贵州恒特
贵州恒特
当前离线
积分
12
3
主题
5
帖子
12
积分
新手上路
新手上路, 积分 12, 距离下一级还需 38 积分
新手上路, 积分 12, 距离下一级还需 38 积分
积分
12
发消息
发表于 2022-12-17 21:35:28
|
显示全部楼层
|
阅读模式
编程学习的是什么?让我们先回顾编程发展历史
从2014年12月,美国前总统奥巴马在“编程一小时”活动中写下自己人生第一行编程代码开始,青少年编程教育逐步成为公众关注的热点。2017年7月,国务院发布《新一代人工智能发展规划》,其中特别提到的“在中小学阶段设置人工智能相关课程,逐步推广编程教育”,给青少年编程教育的重要性一锤定音。提起编程教育,我们最先会想到如Scratch、Python等编程语言。是不是学会这些语言,就是学会了编程?到底学会多少语言,才算是学会了编程?想找到这些问题的答案,我们不妨从编程的发展历程中探寻。
1.历史中的可编程发明
如果被问到“什么是编程?”,许多人的回答可能是“敲代码”。
坐在电脑前,用键盘敲出一行行代码,这就是我们现在最常看到的别人编程的样子。
忧郁的程序员
然而,在80年代,计算机工程师编程并不是“敲代码”,而是“写代码”——真的在纸上写出程序代码。在纸上写好的代码也不能运行,工程师们还需要把程序制作成打孔纸带,把打孔纸带输入计算机,计算机才能读取程序并运行。从1943年第一台现代电子计算机发明开始,给计算机输入打孔纸带就是当时的“编程”方式。直到电子显示器发明并大规模应用后,纯数字化的代码输入得以实现,打孔纸带才退出了“编程”的舞台。
打孔纸袋
但有趣的是,使用打孔纸带、纸卡编程的历史比现代计算机还要早得多。1805年,拿破仑为法国纺织商人、发明家约瑟夫·雅卡尔颁发巨额奖金,嘉奖雅卡尔发明的,极大提升了纺织生产效率的自动化“可设计”织布机。
雅卡尔织布机
后来的各种计算机的设计,都借鉴了雅卡尔织布机的打孔卡片控制方法。十九世纪英格兰数学家查尔斯·巴贝奇,是公认的第一个机械式可编程计算机——分析机的发明者。他为了能更快的制作更准确的对数表等数学用表,设计制造了一系列“计算机”。巴贝奇就采用了打孔卡片来为分析机编写运算程序。他的助手艾达为分析机编写了完整的三角函数计算、级数相乘计算和伯努利数计算等程序。
巴贝奇差分机的重制品
2.现代编程技术的发展
雅卡尔织布机和我们熟知的八音盒这些发明,在其所在年代的还没有“编程”、“可编程”的概念。但它们在解决各自问题的过程中,都设计出使用了具有通用“编码”的方式来做自动化控制,用绕绳、滚筒、打孔卡片控制机器按人们的意志运行。今天我们所使用的各种计算机编程语言,就是控制计算机按我们的意志运行的技术工具。
回顾这些带有“编程”概念的历史上的发明,我们可以看到,雅卡尔发明织布机是为了改进复杂纹样纺织的生产效率;巴贝奇设计分析机是为了快速准确的进行复杂数学计算;八音盒为人们提供了便利的娱乐方式。这些发明家都是在探究各自问题的解决方法中,发明了这些装置所使用的“编程”方法。我们熟知的各种现代计算编程语言,也是因为解决特定的问题而被设计发明。
全球使用最为广泛的编程语言——C语言由美国贝尔实验室的肯·汤普逊和丹尼斯·里奇所设计。1969年,汤普逊和里奇正在埋头研发一种全新的、支持多用户多任务的操作系统——就是后来的UNIX。第一个版本的UNIX使用汇编语言,在一台DEC PDP-7电脑上开发完成。由于汇编语言极度依赖于硬件,当他们在把UNIX移植到更高级的电脑的过程中,觉得需要一种能够处理更多数据类型,能像机器语言一样直接操作存储器,又具有复杂易用的逻辑结构的编程语言。于是他们在当时的BCPL语言上进行了改进和改造,形成了一门新简洁、规范又强大的编程语言“C”。1973年,二人用C语言重新编写了UNIX,形成了UNIX更为标准化的版本。1983年,汤普逊和里奇因发明UNIX系统而获得计算机科学的最高奖项——图灵奖。
C语言的发明人肯·汤普逊和丹尼斯·里奇
而另一门与C同样流行的编程语言Java,在1990年最开始在SUN公司里被设计时(最初的名称不叫Java),是用于有线电视和嵌入式设备的应用开发。开发小组让Java能够方便的实现基于信息传输的应用开发,同时能够快捷的在使用不同处理器的设备上部署。Java的设计理念对于当时的有线电视来说有些过于超前。但是很快,Java就找到了适合它的广阔天地——互联网。1995年,SUN正式对外发布了Java,并把Java的特性精简概括为“WORA”,一次编写,到处运行(Write Once,Run Anywhere)。从此Java也迅速的流行开来。
当然,我们也发现,程序员的发型也由此奠定下来,我秃了,也变强了。没秃的就是你格局不够,水平还没达到。
Java发明人James Gosling
2000年之前的编程语言诞生期我国也涌现出来了很多人物。
你一定听说过雷军,没错,他是一个程序员。你也听说过马化腾,没错,也是一个程序员。你可能还听说过乔布斯(英年早逝那个)、比尔·盖茨(让你通过窗口看世界那个)、拉里·佩奇(被墙的那个)、马克·扎克伯格(继续被墙的那个)、刘强东(不知妻美那个)、李彦宏(跟莆田是好朋友的那个)、周鸿祎(转一圈那个)、张小龙(一个人孤独地站地球上那个)、张一鸣(让你刷得停不下来那个)、丁磊(养猪那个)……
到目前为止,全世界已经发展出超过600门的编程语言。从之前的统计数据看,使用量排名前十的编程语言是Java、C、C++、Python、C#、JavaScript、Visual Basic .Net、R、PHP、Perl。这十门语言占据了50%的使用量,它们普遍具有很强的通用性。比如Java就几乎覆盖了桌面软件、网络服务、嵌入式应用、操作系统、智能手机等绝大多数编程开发场景。Python是1991年出现的“老”编程语言,近两年大数据、机器学习的兴起,Python被发现非常适宜这两个领域的开发需求而获得了更多的使用量。新的编程语言也不断出现,从2010年到现在,就有15门全新的编程语言问世。随着社会环境、科学技术的发展,未来还会有更多的编程语言出现,用以解决全新的问题。
不论是历史中的可编程发明,还是近代的计算机编程语言发展,我们都能从中发现,新方法、新技术随着时代前进不断涌现。除了技术本身,社会环境也在变化。
3.提炼编程教育的核心价值
十年前没人会认为手机成为个人应用软件的主流平台;二十年前人们也无法想象互联网会接管我们大部分生活需求。在这样的发展节奏里,一个中学生今天接触、学习的编程技术,在十年后他步入社会时,很可能有翻天覆地的变化。所以,在中小学开始Scratch、Python等课程,只是编程教育一个小小的开始。我们必须提炼出编程教育的本质。
常见幼儿编程语言
不论是历史中的可编程发明,还是近代的计算机编程语言发展,我们都能从中看出,编程技术的目的是驾驭机器、驾驭计算机,让它们更高效的解决问题。所以我们要让学生逐步接触、理解、体验编程的逻辑操作、算法、数据结构、工程设计等通用的工程方法与数学知识。这些核心知识是编程语言的灵魂。学生在需要使用新的编程语言时,这些核心知识能够帮助他们更快的融汇贯通。更重要的是,学生可以脱离编程语言,更纯粹的思考如何让计算机解决问题,也就是让学生具有“计算思维”。
除掌握编程的核心知识,形成计算思维外,我们也要把学生的视野拓宽。我们在家庭、学校里看到的只有PC(个人计算机)和移动设备,我们还要让学生看到“大”如太湖之光,“小”如能在人体血管里工作的M3计算机,看到汽车、航空、航天、医疗、军事、经济、人工智能等各种领域的专用计算机,并且看到这些计算机都在解决什么问题。通过计算机与编程,我们让学生能够打开一个全新的视角,来观察、分析和思考社会的发展进步,以及同时面临的问题。
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表