当前位置: 首页 > news >正文

【从计算机的发展角度理解编程语言】C、CPP、Java、Python,是偶然还是应时代的产物?

参考目录

  • 前言
  • 什么是"computer"?
  • 计算机的大致发展历程
    • 计算机系统结构阶段(1946~1981)
    • 计算机网络和视窗阶段(1982~2007)
    • 复杂信息系统阶段(2008~today)
    • 人工智能阶段
  • 越新的语言是越好的吗、越值得学习吗?

前言

在这里插入图片描述

  最近读了 《Python语言程序设计基础》 这本书,起初没读的时候我以为是草草介绍一些基本语法的一些入门书籍而已,的确,读过一章之后,我发现他的确是一本入门书籍,令我吃惊的是他第一部分把计算机和语言的应时代发展讲的很好,今天特地参考书籍结合自己理解来写一篇博客。

  我想读过本篇文章之后可以回答你以下问题:

  • 计算机的大体发展历程是如何的?
  • 为什么会出现C、CPP、Python等众多语言?为什么他们具备其各自的特点?
  • 作为学生,我们应该选择C\CPP?还是Java?Python?

这里仅仅是谈自己的一些观点,有处理不妥善之处还请谅解…


什么是"computer"?

“compuper”,人类最伟大的发明之一。这是这本书开始的一段话…这不是空穴来风的一句话,的确,计算机的发展在过去的百年里已经深深的改变了世界。

“computer”最初指的是从事计算工作的人,后来在20世纪中叶,计算机的崛起成为计算机的专有名词。
  实际上,计算机不仅仅指的是电子计算机,比如我们的笔记本电脑、台式电脑…更准确来说,计算机的概念指的是对数据按照指令集进行处理的设备。也就是说,计算机的概念可以拓展到光子计算机、生物计算机…而不仅仅局限于电子计算机,当然还是以电子计算机最为常见就是了。
在这里插入图片描述
我们知道,现代意义上的计算机大概出现在20世纪中叶。那计算机以不到百年的时间迅速改变世界,经历了一个大致什么阶段呢?

计算机的大致发展历程

计算机系统结构阶段(1946~1981)

  1946年,全球首台数字计算机ENIAC诞生,标志着计算机正式起步发展,拉开了计算机系统结构阶段的序幕。
在这里插入图片描述

  这个阶段的特点,就是计算机主要服务于军事、商业、科学等国家或团体;其次,这个阶段的计算机普遍算力一般(相对于现在计算机而言),即使是现在几百块钱的“山寨”手机也比百年前“超级计算机”强得多…。
  受制于计算机的算力不足,科学家们必须从系统结构层面尽可能的让仅有的算力完成尽可能多的工作。——因此,为了完成这一目的,高效而简洁的C语言诞生了C语言应时代要求,以高效的执行方式出色的完成了大大缓解了几十年前计算机算力低的问题,使计算机算力充分得到利用,大大促进了计算机的发展。
  实际上,更准确的说是时代选择了C语言,与C语言同年代的一并出道的编程语言并不在少数,然而由于各种原因以及语言自身的局限性并没有得到大范围推广或延续…
后来,随着计算机的不断发展,1981年,IBM PC为代表的个人计算机诞生,为科学家、军事服务的计算机时代结束,计算机技术进入面向大众的新的历史阶段。
在这里插入图片描述

计算机网络和视窗阶段(1982~2007)

  1982年,面向全球子网间组网的TCP/IP网络协议的标准化为个人计算机PC的进一步发展提供了条件,计算机发展进入“互联网”时代。
  四百年前,新航路的开辟、美洲发现把世界由孤立逐渐拉近距离,成为全球。五十年前,“互联网”的出现则使信息快速传递提供了条件,“地球村”时代来临。
  应互联网发展的需求,各种技术层出补充,围绕计算机,网络技术、视窗技术、多媒体技术发展,个人计算机逐渐取代军事、科学专用机成为时代主流。为了更好的造好计算机面向大众使用,微软、苹果这些富有时代先觉的企业率先成立互联网公司,为电脑制造商业化…促进了计算机的普及。随后,为了提升用户体验,视窗技术迅速被两家世界互联网公司(微软和苹果公司)发觉,制造出了“图形化界面”。大大降低了用户的电脑使用学习成本。那个时代的计算机更加趋向于“图形化”计算机革命。计算机的图形化不仅仅依赖于硬件,更需要软件编程的支持。因此需要更加抽象,允许高度可移植、跨平台在不同机型上跑的编程语言被迫切需要——CPP、JAVA语言应运而生。
  最初CPP为CPP之父——Bjarne Stroustrup所构建,后来更多人加入了CPP发展计划…作为高级语言面向对象的先驱语言,CPP有很多优点,支持面向对象支持模板…但是有些问题是必须有先驱语言来“踩坑”的,CPP也造出了很多语法上的大坑,比较经典的就是零星虚拟继承的问题,为了填补这些大坑和向前兼容性,CPP又额外引入了一些复杂语法作为填补。毫无疑问,这会使CPP语言学习难度倍增…
  以CPP为前车之鉴,JAVA吸取CPP优点,集众语言之长,避免了CPP中的许多大坑,JAVA作为新一代抽象面向对象的高级语言诞生…
后来,苹果公司为了打败竞争对手微软(当然不仅是为了这个),苹果公司小型化个人电脑,2007年,制造出了iPhone智能手机。标志着计算机发展进入移动网络应用时代。
在这里插入图片描述

复杂信息系统阶段(2008~today)

  前文提到,2007年苹果公司发布iPhone智能手机。微软也不甘示弱,迅速投入到移动设备,尤其是手机领域的研究。苹果公司是一家软件硬件兼备的公司,当然容易把PC计算机小型化做出智能手机,微软是主要致力于硬件生产的公司,为了应对苹果公司的挑战,微软自己本身不搞软件,因此就联合谷歌开源操作系统——安卓操作系统。2008年,安卓系统的开源,是复杂信息系统时代的来临的开端
在这里插入图片描述
  该阶段,毫无疑问是竞争异常激烈的阶段…各种手机端APP的编写发布…各种电脑端软件与手机端软件的融合…在这个阶段,是多种技术相互协调发展的阶段,很难有一个技术”独领风骚“,而是各种技术相互融合发展。移动互联网、多核众核、云计算…物联网、互联网+…以及互联网信息安全技术…人类会逐渐到达自己所能理解掌控的智慧边界…
  为了更快的、抽象的、易学的。面向更多人、更多领域、更多业务的编程——Python作为新一代简单抽象易学面向大众诞生(2008年,Python3.0发布,并且不兼容Python2.0)并持续发展…时至今日,Python在编程语言排行榜上已是稳居前三,甚至经常是第一…
  实际上,Python语言如此“火爆”,是因为各个领域都会用到一点…我感觉Python简直可能会是下一个时段的“WPS”。
  该阶段目前仍在继续,已经逐渐向下一个阶段“计算机人工智能”阶段方向发展。当前,我们现在的AI并没有做出划时代意义的举动…但不久后一定会到来。

人工智能阶段

  这是未来的事情了,在未来,几十年之后,“人工智能”阶段展开。这必随着深度学习、智能机器人、搜索引擎、量子计算技术的发展…计算机将结合智能技术为人类呈现更友好的交互方式,逐步接管人类非创造性工作。
在这里插入图片描述

越新的语言是越好的吗、越值得学习吗?

主流语言都值得好好学习。

然而,这并不意味着Python语言就是最好的编程语言…只是说一种发展趋势而已,即使是今天,像很多大型游戏,系统内核用的主要依旧是C/CPP,很多网站、购物平台则用的是Java,很多插件则更多偏向于Python…

简而言之,C、CPP、Java、Python成为主流语言且常年不衰,是经得时间和实践考验的,更是时代的选择


EOF

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 面试真题:谈一谈Mysql的分库分表
  • Mysql梳理6——order by排序
  • Msf之Python分离免杀
  • [Python数据可视化] Plotly:交互式数据可视化的强大工具
  • 24年蓝桥杯及攻防世界赛题-MISC-2
  • podman镜像拉取加速
  • Qt之QFuture理解
  • Linux入门攻坚——32、Mini Linux制作
  • C++内联函数inline
  • 基于SpringBoot+Vue+MySQL的智能物流管理系统
  • 【STL】priority_queue 基础,应用与操作
  • 2024java面试-软实力篇
  • MySQL之表内容的增删改查(含oracel 9i经典测试雇佣表下载)
  • Avalonia:自定义控件
  • Unity教程(十六)敌人攻击状态的实现
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • nodejs调试方法
  • React Native移动开发实战-3-实现页面间的数据传递
  • React16时代,该用什么姿势写 React ?
  • Redis学习笔记 - pipline(流水线、管道)
  • SpriteKit 技巧之添加背景图片
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 前端面试总结(at, md)
  • 使用 QuickBI 搭建酷炫可视化分析
  • 微信公众号开发小记——5.python微信红包
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (二)pulsar安装在独立的docker中,python测试
  • (二)WCF的Binding模型
  • (回溯) LeetCode 131. 分割回文串
  • (十六)一篇文章学会Java的常用API
  • (四)图像的%2线性拉伸
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转) Android中ViewStub组件使用
  • (转)iOS字体
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET_WebForm_layui控件使用及与webform联合使用
  • .Net接口调试与案例
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • ::before和::after 常见的用法
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [ 数据结构 - C++]红黑树RBTree
  • [023-2].第2节:SpringBoot中接收参数相关注解
  • [12] 使用 CUDA 进行图像处理
  • [ACM独立出版]2024年虚拟现实、图像和信号处理国际学术会议(ICVISP 2024)
  • [C#] 基于 Token 的鉴权与签名机制详解 接口对接鉴权 token、sign(a=1b=2c=3d=4)、Base64、参数加密、MD5
  • [DDR5 Jedec 4-1] 预充电命令 Precharge
  • [Foreman]解决Unable to find internal system admin account
  • [HackMyVM]靶场 VivifyTech