王国维在《人间词话》里写道:古今之成大事业、大学问者,必经过三种之境界:“昨夜西风凋碧树。独上高楼,望尽天涯路。”此第一境也。“衣带渐宽终不悔,为伊消得人憔悴。”此第二境也。“众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。”此第三境界。概括了一种锲而不舍的坚毅性格和执着态度。

知道自己不懂”是为第一境界;“不知道自己懂”是为第二境界; “知道自己懂了”是为第三境界。

无论你是小白,还是小白,还是小白,你在学习编程的过程中都会深深的体会到这三句话太准确了。学习编程意味着我们将要进入一个与日常生活经验迥然不同的新领域,这最初的曲折辛酸,以及逐渐初窥门径、小有所成并最终笑傲江湖、独当一面的欣喜正是上面所说的学习三境界的真实写照。这篇文章将要介绍计算机编程的前世今生,如果你想要了解程序猿这一高收入人群的真实生态,这篇文章就是IT界的《物种起源》,为你道尽它们的演化历程和苦乐悲喜。

电脑的诞生

首先我们热烈欢迎世界上最早的电脑登场,对,它的名字就叫安提基特拉机械,被认为是最初的电脑,展示于雅典国家考古博物馆。

此机械是在希腊安提基特拉岛附近的安提基特拉沉船里发现的,所以叫安提基特拉机械。它诞生于公元前100年左右,属于模拟计算机,至今已有二千多年历史。类似的复杂工艺技术直到14世纪时欧洲制造了天文钟后才重新出现。它是古代人类智慧的最高杰作之一。

那么,真正的近代的电脑诞生于什么时候呢?答案是1945年,诺伊曼发明数字式电脑。此处应该有掌声。

诺先生规定用二进制替代十进制运算,并将计算机分成五大组件,他的思想为电子计算机的逻辑结构设计奠定了基础,并且已成为计算机设计的基本原则。

1951年,EDVAC计算机宣告诞生。由于他在计算机逻辑结构设计上的伟大贡献,诺先生被誉为「计算机之父」。

由上图可以得知,直到93年,我们现在一般用户熟知的window操作系统才诞生。

电脑程序运行的基本原理是什么?

感谢诺先生,没有他的发明,小编今天就不能够在电脑面前给大家科普了。接下来小编首先给大家分析一下开启计算机主机的那一瞬间,桌面蹦出来的画面是怎么回事。

在一台电脑里有很多程序。其中,计算机做任何事情之前必须存在和运行的最重要的程序是操作系统程序。对,没错。就是你每次开机时候看到的那个熟悉的画面,伴随着叮当叮当的音乐,世界首富比尔盖茨的微软公司就是靠发明这个windows系统发大财的。这是计算机的主要“系统程序”。此操作系统程序不仅控制硬件部件,还控制其他软件(许多应用程序),还可让计算机用户与计算机本身进行互动(比如通过键盘,触摸屏,语音激活等等)。实在是万能之神啊。

什么是计算机语言?

与人类语言的复杂多变一样,现在世界上已经有200种以上的计算机语言了。当然其中也有很多几乎很少使用的语言,实际经常用到的语言只有20到30种。尽管如此,一个人要掌握太多计算机语言的话还是比较难的。

在那么多的程序设计语言中,学习哪个才好?下面是最常用的语言,程序猿们的本事可不仅仅是直立行走那么简单,掌握这些工具中的大部分,并且精通其中的一两种,才是一只合格的现代程序猿。

人类语言是指,人类用特定的格式和词汇来向他人发出指令,表达意愿,进行交流。不同种类语言的词汇和格式不尽相同,但可以达到相同的交流目的。

同样,我们也可以用“语言”来控制电脑,让电脑为我们做事情,这种语言叫做编程语言(Programming Language)。我们先简单介绍一下常用编程语言。 编程语言也有固定的格式和词汇,我们必须学会使用,才能在此基础上编写程序控制电脑。常用的编程语言有C语言,C ++,Java,C#,Python,PHP,JavaScript,Go语言,Objective-C,Swift等等,每种语言都有自己的优点。

计算机是如何听懂编程语言的呢?实际上,如果没有编译器(一种专门程序)的存在,计算机是无法理解编程语言的。编译器用来将编程语言编写的指令转换为机器语言。打个比方,人类有自己的人类语言,计算机也有自己的语言系统。它们使用只包含1和0的二进制代码,1表示“on”,0表示“off”。编程语言更容易被人类所学习和掌握,而编译器编译出的计算机语言则更容易让计算机接受。

程序猿使用编程语言编写的程序代码,编译器可以理解,编译器会将源代码转换为二进制代码(目标代码),然后汇编程序帮助这个目标代码转换为低级指令,指示机器执行,最后重新获取结果。

为什么要有编译器的存在呢?

简单的回答是,虽然编程语言已经编写代码告诉计算机该怎么做了,但计算机只能理解两种不同类型的数据:开和关。实际上,一台电脑实际上只是一个开/关(晶体管)的集合。计算机所做的任何事情背后的真相只不过是无数晶体管的开闭组合。

二进制码就是作为1和0的表示的组合,其中每个数字表示一个晶体管。二进制代码分为字节组,8位数组表示8个晶体管。例如,11101001。现代计算机包含数百万甚至数十亿个晶体管,这意味着无法想象的大量组合。

于是这里出现了一个问题,为了能够编写一个计算机程序,打出数十亿的1和0将需要超人的脑力和精力,编一个小程序可能需要一两年的工作。编程语言和编译器中,前者对人友好,后者对机器友好,两者通力合作,才能将人类的想法快捷而准确的传达给计算机。

为什么会存在那么多的计算机语言?

数百种不同的编程语言使我们有可能创建计算机软件,应用程序和网站。而无需编写二进制代码,他们让我们相对容易的编写,阅读和理解代码。同时,每种语言都带有自己特殊的编译器程序,它负责翻译我们编写的二进制代码,让机器明白我们的意图。

那么,为什么我们有这么多语言呐?

这是因为不同的语言被设计为用于不同的目的,一些可用于Web开发,一些用于编写桌面软件,其他用于解决科学和数字问题等。此外,编程语言也可以是低级或高级的。低级语言更接近计算机所理解的二进制代码,而高级语言更容易编程,因为它们接近人类的语言和思维模式,设计简单易于编写。几乎所有的主流编程语言都是高级语言。

编程语言生成的程序代码是什么样的?

程序是一种用特定编码语言编写的文本文件。程序文件中的代码称为源代码。每个编码语言都有自己的文件扩展名,用于识别用该语言编写的代码文件。例如,Python是'.py'。要编写程序,可以在纯文本编辑器(如记事本)中编写代码,并将文件保存到计算机。

如何运行一个程序,并实际得到它来执行命令?编码语言之间有所不同。一些语言保存到计算机后可以生成可以直接运行的单独二进制文件,而其他语言的程序由某些软件间接运行。例如,JavaScript程序文件将通过Chrome浏览器等运行。PHP程序文件将由像LAMP这样的Web服务器运行。

以hello.py文件为例,Python语言附带一个命令行,它将显示程序的输出文本“Hello,world!”。如果要将代码输入命令行并按enter键,程序将运行并且命令将被执行。是不是成就感油然而生啊。

运行程序时会发生什么?

电脑实际上并不了解“Hello,world!”这个短语,不知道如何在屏幕上显示。它只能理解开关。所以要真正运行一个命令,如打印“Hello,world!”,它必须将程序中的所有代码翻译成一系列可以理解的代码。

首先,源代码被翻译成汇编语言。汇编代码被翻译成机器语言。机器语言直接作为二进制代码执行。我们再来理解一些细节。编码语言首先必须将其源代码转换为汇编语言,一种使用单词和数字来表示二进制模式的超低级语言。根据编程语言不同,这可以用解释器(程序被逐行翻译)或编译器(程序整体翻译)来完成。

然后,编码语言将汇编代码发送到计算机的汇编器,该汇编器将其转换为计算机可以直接理解并直接作为二进制代码执行的机器语言。

结论

如果大家对C/C++感兴趣的话,可以加一下我们的学习交流Q群:637  935  295,免费领取一套学习资料和视频课程哟~

像二进制代码(计算机的母语)一样简单和原始的东西可以创建计算机软件这样复杂的东西,这是不是很令人惊奇呢?屏幕,操作系统,照片,视频,互联网,微信,在线银行帐户和本网站,所有这些都可以从1和0构建。编码语言存在的全部原因是为了简化所有这一切,这是人类智慧成就的象征。

最后,最重要的是,有一个循序渐进的行动计划,从学习编码开始,你就将进入一个全新的世界。加油吧,少年。

程序猿的崛起,一篇文章看懂编程语言相关推荐

  1. 一篇文章看懂:量化交易

    什么是量化交易? 度娘官方版 - 理论这么说 量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种"大概率"事件以制定策略,极大 ...

  2. 一篇文章看懂变量提升(hoisting)

    文章转自:一篇文章看懂变量提升(hoisting) - 知乎 前沿 大家对变量提升(hoisting)一定不陌生了,这篇文章希望可以建立一个系统的规则,以后碰到变量提升,可以重新看这篇文章,根据文中的 ...

  3. 一篇文章看懂@Scheduled定时器/@Async/CompletableFuture

    一篇文章看懂@Scheduled定时器/@Async/CompletableFuture @Scheduled注解解析: 1.cron:最重要的一个参数 cron表达式[秒] [分] [小时] [日] ...

  4. c++ socket线程池原理_一篇文章看懂 ThreadLocal 原理,内存泄露,缺点以及线程池复用的值传递问题...

    编辑:业余草来源:https://www.xttblog.com/?p=4946 一篇文章看懂 ThreadLocal 原理,内存泄露,缺点以及线程池复用的值传递问题. ThreadLocal 相信不 ...

  5. 一篇文章看懂MySQL的多表连接(包含左/右/全外连接)

    MySQL的多表查询 这是第二次学习多表查询,关于左右连接还是不是很熟悉,因此重新看一下.小目标:一篇文章看懂多表查询!! 这篇博客是跟着宋红康老师学习的,点击此处查看视频,关于数据库我放在了Gith ...

  6. 一篇文章看懂makefile编写规则

    该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客:(最原始版本) http://blog.csdn.net/haoel/article/details/2886 我转自 ...

  7. Java读取excel的方式,一篇文章看懂(详细)

    目录 一.excel读取的两种方式 1.1 jxl 和 poi 的区别和选择 二.jxl 的使用 2.1 导入相关依赖 2.2 操作 三.poi 的使用 3.1 导入相关依赖 3.2 操作 四.总结 ...

  8. 一篇文章看懂函数式编程与命令式编程

    文章目录 1 历史来源 2 编程范式 3 函数式编程的崛起 4 函数式编程 4.1 函数 4.2 纯函数 4.3 变量与表达式 4.5 函数与方法 4.6 状态 4.7 函数式编程的特性 4.7.1 ...

  9. 一篇文章看懂有关iOS开发语言的一切!

    看什么看!点我呀!全栈程序员,免费入门到精通! 作者丨开发之家 https://www.jianshu.com/p/1fd231cfe54b 前言 iOS开发语言有哪些?OS开发语言主要包括什么?iO ...

最新文章

  1. vs矩形框边框线显示被选中的区域;_如何使用OpenCV可视化的截取感兴趣区域
  2. BUUCTF-WEB:[极客大挑战 2019]LoveSQL 1
  3. Elasticsearch教程 IK分词器安装
  4. 微信小程序生成分享图片踩坑大计划
  5. springboot的一些基层原理 2021-05-28
  6. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_17-页面静态化-模板管理-GridFS研究-存文件...
  7. 崛起于Springboot2.X之集成单机Redis(14)
  8. GP数据库(Greenplum)单机版安装
  9. Java实现 LeetCode 343 整数拆分(动态规划入门经典)
  10. OpenNLP进行中文命名实体识别(上:预处理及训练模型)
  11. 解决浏览器无法打开github官网的问题
  12. 读小说赚钱吗?这个年入百万
  13. 0x0报错解决--win11预览版升级报错0x0的快速解决方案
  14. 盘点程序员逃离一线的Plan B
  15. 《Redis设计与实现》笔记
  16. php 敏感关键词检测,字符串 - PHP 敏感词违法关键字检测 算法方案
  17. 菜鸟慢慢爬行-----web(5)
  18. 500G硬盘分区标准
  19. android view z总结的好帖子
  20. s3c2440 IIC AT24C08 (II)非中断模式

热门文章

  1. 2021中国垂类电竞KOL发展洞察行业报告
  2. 为什么长视频没有强算法推荐的产品
  3. 抖音城市美食算数报告
  4. 作者:王倩(1983-),女,上海计算机软件技术开发中心工程师。
  5. 【C语言】第八章 地址操作与指针 题解
  6. 云计算应用之路--第三届中国云计算大会
  7. dedecms--需要注意的细节
  8. eclipse导入myeclipse项目
  9. Android IOS WebRTC 音视频开发总结(二六)-- webrtc调用堆栈
  10. Web开发者一定会用的5个google浏览器插件