【从计算机的发展角度理解编程语言】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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/143925.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构与算法学习day21-回溯法

一、组合 1.题目 . - 力扣(LeetCode) 2思路 把组合问题抽象成树形结构(N叉树) 每次从集合中选取元素,可选择的范围随着选择的进行而收缩,调整可选择的范围。 图中可以发现n相当于树的宽度&#xff0c…

[Linux]进程控制详解

1.创建进程 进程调用fork,当控制转移到内核中的fork代码后,内核做: ● 分配新的内存块和内核数据结构给子进程 ● 将父进程部分数据结构内容拷贝至子进程 ● 添加子进程到系统进程列表当中 ● fork返回,开始调度器调度 这个前面提到过&#…

c++基础入门三

文章目录 C基础入门(三)auto关键字auto简介使用细则一、可以和指针联合使用二、在一行定义多个变量 不能使用场景一、不能作为函数的参数二、不能用来声明数组 基于for的循环使用条件 指针空值nullptr C基础入门(三) 回顾上集,我们介绍了C的函数重载,引…

JAVA并发编程系列之Semaphore信号量剖析

腾讯T2面试,现场限时3分钟限最多20行代码,模拟地铁口安检进站。其中安检入口10个,当前排队人数是100个,每个人安检进站耗时5秒。开始吧! 候选人,心中万马奔腾!!!吐了一口82年老血&am…

电池管理仓的拆解

拆解视频里面可以学习到大厂的设计思想和创意,接触到比较行业化的设计方案,从而提升设计电路的水平。 电池仓: 电池管家的芯片用的就是前段时间了解到的STM32G030C8T6,便宜好用的典范: 弧形走线较为推荐: …

C++初阶学习——探索STL奥秘——标准库中的queue与stack

1、适配器模式 STL 中的适配器可以分为三类: 从应用角度出发 容器适配器 container adapters 迭代器适配器 iterator adapters 仿函数适配器 functor adapters 其中,容器适配器可修改底层为指定容器 如由 vector 构成的栈、由 list 构成的队列 迭代器适配器…

sqli-labs靶场搭建

下载了一个phpstudy进行搭靶场搭建 然后打开phpstudy安装好php,mysql等环境 正式sqli-labs靶场搭建 第一步:下载源码:https://codeload.github.com/Audi-1/sqli-labs/zip/master 解压后放进网站根目录,进到 sqli-labs的文件夹下&#xff0…

windows C++ 并行编程-异步代理库概述

异步代理库(简称代理库)提供了一个编程模型,该模型可提高支持并发的应用程序开发的可靠性。 代理库是一个 C 模板库,为粗粒度数据流和管道任务提升了基于角色的编程模型和进程内消息传递。 代理库构建在并发运行时的计划和资源管理…

Windows系统通过部署wsl + Goland进行跨平台开发

1.背景 近期项目中因为用到了 Golang库中的 "log/syslog" 包,而这个包是禁止在windows平台上编译的. 并且在windows环境上开发也会有诸多不便,如执行makefile文件的make命令,本地开发环境中docker,etcd,redis的搭建等等,而这些通过部署wsl去搭建一个linux环境就很可以…

如何使用下拉字段创建WordPress表单(简单方法)

许多网站所有者在收集用户输入时,都会因为表单过长而让用户感到压迫。 下拉列表字段通过提供一个简洁的选项列表,使表单变得更简单。这意味着它们可以提高表单完成率,并改善用户体验。 在本文中,我们将向您展示如何创建带有下拉…

Kubernetes从零到精通(11-CNI网络插件)

Kubernetes网络模型 Kubernetes的网络模型(Kubernetes Networking Model)旨在提供跨所有节点、Pod和服务的统一网络连接。它的核心理念是通过统一的网络通信规则,保证集群中的所有组件能够顺畅地相互通信。Kubernetes网络模型主要有以下几个关…

专业学习|随机规划概观(性质、针对问题与分类)

一、随机规划概观 随机规划(Stochastic Programming)是一种用于处理决策问题中的不确定性的优化方法。它能够在决策过程中考虑到未来的不确定性,从而帮助找到在不同情境下都能较好表现的解决方案。以下是随机规划能解决的一些主要问题以及它的…

阿里巴巴搜索API返回值:电商市场竞争的新武器含

阿里巴巴搜索API返回值在电商市场竞争中扮演着至关重要的角色,它为企业提供了深入了解市场、分析竞争对手的宝贵资源。以下是对阿里巴巴搜索API返回值及其在电商市场竞争中应用的详细解析,并附上示例代码。 一、阿里巴巴搜索API返回值概述 阿里巴巴搜索…

超大酒店司机收布草-酒店分层管理--酒店布草洗涤

一、大酒店布草分层管理 1. 提高效率 - 对布草进行分层,可以更有针对性地安排收集和分发流程,减少混乱和等待时间,提高整体运营效率。 2. 质量控制 - 不同层级的布草可能有不同的质量标准和使用场景。分层管理有助于确保每个层级的…

2024年第五届“华数杯”全国大学生数学建模竞赛 A题详细思路+详细matlab代码

没有更新完之前,专栏价格为59,更新完毕之后恢复到99. 专栏内包含2024年所有数学建模比赛思路和代码,有些重要比赛着重更新(华数杯、国赛、美赛),小比赛可能会有chatgpt4更新,只需订阅一次。有些文章没有完整代码,请到专栏内查找最新代码和思路。如果比赛结束后没有更新…

Web后端开发技术:RESTful 架构详解

RESTful 是一种基于 REST(表述性状态转移,Representational State Transfer)架构风格的 API 设计方式,通常用于构建分布式系统,特别是在 Web 应用开发中广泛应用。REST 是一种轻量级的架构模式,利用标准的 …

大语言模型超参数调优:开启 AI 潜能的钥匙

前言 在人工智能的广袤领域中,大语言模型(LLM)凭借其强大的实力,不断重塑着我们对机器理解语言的认知。然而,要使这些模型在特定应用场景中发挥最大效能,关键在于巧妙调整其超参数。本文将引领你深入探究 …

【SSM-Day2】第一个SpringBoot项目

运行本篇中的代码:idea专业版或者idea社区版本(2021.1~2022.1.4)->这个版本主要是匹配插件spring boot Helper的免费版(衰) 【SSM-Day2】第一个SpringBoot项目 框架->Spring家族框架快速上手Spring BootSpring Boot的作用通过idea创建S…

Kettle报错:使用mysql向hive中插入数据只能插入两条的错误

错误展示 我们在用kettle,使用mysql向hive中插入数据的时候,创建好了一个转换,里面的操作也全部完成了之后,在执行时爆出一下错误 例如我这里写入的表输入为: 表输出为: 解决办法 看起来是一点问题也没有…

HFSS 常见仿真警告、报错及bug处理

目录 引言提示信息警告信息报错信息导入csv文件报错 内部bugHFSS切换工程文件,视图窗口卡顿 引言 本文主要用于收录HFSS仿真中常见的错误及处理方法。欢迎大家在评论区贴出自己的报错信息,一起讨论分享。 提示信息 提示信息:Port 7 suppor…