当前位置: 首页 > 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

相关文章:

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

参考目录 前言什么是"computer"?计算机的大致发展历程计算机系统结构阶段(1946~1981)计算机网络和视窗阶段(1982~2007)复杂信息系统阶段(2008~today)人工智能阶段 越新的语言是越好的吗、越值得学习吗? 前言 最近读了 《Python语言程序设计基础》 这本书…...

《Google软件测试之道》笔记

介绍 GTAC:Google Test Automation Conference,Google测试自动化大会。 本书出版之前还有一本《微软测试之道》,值得阅读。 质量不是被测试出来的,但未经测试也不可能开发出有质量的软件。质量是开发过程的问题,而不…...

实战讲稿:Spring Boot整合MyBatis

文章目录 实战讲稿:Spring Boot整合MyBatis课程目标课程内容1. 创建员工映射器接口1.1 创建子包1.2 创建接口 2. 测试员工映射器接口2.1 自动装配员工映射器2.2 测试按标识符查询员工方法2.3 测试查询全部员工方法2.4 测试插入员工方法2.5 测试更新员工方法2.6 测试…...

基于深度学习的眼部疾病检测识别系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 眼部疾病的早期诊断对于防止视力下降乃至失明至关重要。然而,专业的医疗资源分布不均,尤其是在偏远地区,人们很难获得专业的眼科医生提供的及时诊断服务。本系统…...

curl格式化json之jq工具?

jq 是一个轻量级的命令行工具,用于解析、操作和格式化 JSON 数据。它类似于 sed 或 awk,但专门用于处理 JSON 格式。使用 jq,你可以从复杂的 JSON 数据中提取所需的信息,格式化输出,进行数据筛选,甚至修改 …...

百收SEO蜘蛛池

百收SEO蜘蛛池 网站搜索排名上不去?SSL证书来帮忙! #SSL证书#网站优化#搜索引擎优化 谷歌蜘蛛石的话有非常多的一个重要性,首先的话就是能够提升我们网站的一个输入,尤其是对于我们百收SEO蜘蛛池新站来说,我们在做独立…...

(娱乐)魔改浏览器-任务栏图标右上角加提示徽章

一、目标: windows中,打开chromium,任务栏中会出现一个chromium的图标。我们的目标是给这个图标的右上角,加上"有1条新消息"的小提示图标,也叫徽章(badge)注意:本章节纯属娱乐,有需要…...

JVM相关

1.JVM内存区域 一个运行起来的java进程就是一个Java虚拟机,就需要从操作系统中申请一大块内存。 内存中会根据作用的不同被划分成不同的区域: (1)栈:存储的内容是代码在执行过程中,方法之间的调用关系&a…...

9.18 微信小程序开发笔记

如何获取英语单词的发音,使其能在小程序界面通过点击外发? 1.通过外界API获取(例如有道API) 不下载音频文件,每次需要时直接API获取发音,存储压力小。但是一般的API都有使用次数限制,在背单词…...

dpdk课程学习之练习笔记八(dpvs的了解)

只是看到这个,跟着流程做一下练习,了解这个东东是干啥的,再就是搭建环境,基于dpdk的环境,顺手也就练习dpdk的环境搭建了。 0:总结 1:知道了lvs能实现的功能,挺强大。 2&#xff1…...

Linux标准IO-系统调用详解

1.1 系统调用 系统调用(system call)其实是 Linux 内核提供给应用层的应用编程接口(API),是 Linux 应用层进入内核的入口。不止 Linux 系统,所有的操作系统都会向应用层提供系统调用,应用程序通…...

LeetCode004-两个有序数组的中位数-最优算法代码讲解

最有帮助的视频讲解 【LeetCode004-两个有序数组的中位数-最优算法代码讲解】 https://www.bilibili.com/video/BV1H5411c7oC/?share_sourcecopy_web&vd_sourceafbacdc02063c57e7a2ef256a4db9d2a 时间复杂度 O ( l o g ( m i n ( m , n ) ) ) O(log(min(m,n))) O(log(min(…...

Unity携程Coroutine用法

一.携程概述 官方的解释是,携程允许你可以在多个帧中执行任务。在Unity中,携程是一个可以暂停并在后续帧中从暂停处继续执行的方法。 二.携程写法 下面示例使用携程和Update打印前5帧的时间间隔,展示了携程的基础写法 using System.Colle…...

腾讯百度阿里华为常见算法面试题TOP100(5):子串、堆

之前总结过字节跳动TOP50算法面试题: 字节跳动常见算法面试题top50整理_沉迷单车的追风少年-CSDN博客_字节算法面试题 子串 560.和为K的子数组...

「数据科学」清洗数据,真实数据集中缺失值的查看与处理

在数据科学的工作过程中,我们通过查看数据的基本要素和元数据之后,需要根据查看的结果,考虑是否需要清洗数据。缺失值的查看与处理,就是清洗数据的一部分。如果我们的数据集中,存在缺失值的话,就需要考虑如…...

彩蛋岛 销冠大模型案例

彩蛋岛 销冠大模型案例 任务: https://kkgithub.com/InternLM/Tutorial/tree/camp3/docs/EasterEgg/StreamerSales 视频 https://www.bilibili.com/video/BV1f1421b7Du/?vd_source4ffecd6d839338c9390829e56a43ca8d 项目git地址: https://kkgithu…...

大数据Flink(一百二十一):Flink CDC基本介绍

文章目录 Flink CDC基本介绍 一、什么是CDC 二、CDC的实现机制 三、​​​​​​​​​​​​​​传统 CDC ETL 分析 四、​​​​​​​​​​​​​​基于 Flink CDC 的 ETL 分析 五、​​​​​​​​​​​​​​什么是 Flink CDC 六、​​​​​​​​​​​​​​…...

SqlServer自定义类型的使用

目录 前言分类基于标量类型新建查询语句 用户定义的表类型新建查询语句 基于 CLR新建查询语句 前言 最近接触了SqlServer的自定义类型–TYPE,在此记录一下所得 分类 在 SQL Server 中,用户定义的类型(User-Defined Types, UDT)…...

LeetCode 滑动窗口 滑动子数组的美丽值

滑动子数组的美丽值 给你一个长度为 n 的整数数组 nums ,请你求出每个长度为 k 的子数组的 美丽值 。 一个子数组的 美丽值 定义为:如果子数组中第 x 小整数 是 负数 ,那么美丽值为第 x 小的数,否则美丽值为 0 。 请你返回一个包含…...

【JavaEE初阶】多线程(4)

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 线程安全的 第四个原因 代码举例: 分析原因 解决方法 方法1 方法2 wait(等待)和notify(通知) wait和sleep区别 线程安全的 第四个原因 内存可见性,引起的线程安全问…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...