高级语言,高级在哪?

高级语言、低级语言,都是对计算机而言。人类语言不存在这种说法。

在上篇文章(一分钟认识你的电脑)中,柚子向大家介绍了内存。

内存的最小单位是bit,二进制表示,并且大量、有序的排在一起。每连续8个bit,构成一个字节byte)。

内存是有序的,所以内存也就有了地址。寻址原理在计算机逻辑结构这门大学课程中有详细的介绍,柚子不再赘述。

对于编程,有些地址知识是必不可少的。

地址用十六进制表示,比如0x010001FF。十六进制的取值是0~9、A、B、C、D、E、F。0x是代表十六进制,010001FF是具体的地址。

每个地址,对应的是一个字节,也就是寻址单位是字节。

嵌入式开发中,经常会遇到对某一位(bit)操作的问题。基本方法就是先寻址到字节,然后按位操作。在柚子今后的课程中,会有详细介绍。

普及地址的知识给小伙伴们热热身,然后今天我们要了解编程语言

在内存和地址的知识中,柚子都提及了一个词,“进制”。计算机真正能识别的语言是二进制语言

什么是二进制?

十进制的取值是0~9,逢十进一。

二进制的取值是0~1,逢二进一。

柚子是学习过计算机基本原理后对进制有了全新的认识。生活中使用的十进制,不过是一种习惯,改成n进制也是可以的。

为什么是二进制?

我们看到的计算机,是看得见,摸得着的机器。计算机的核心设备,CPU、内存等,也都是实实在在的电子元件。为什么它就能读懂语言了呢?实际上,计算机语言是在对电子元件进行操作

让我们一起化繁为简,揭开计算机语言的神秘面纱。

电子元件由晶体管构成,基本元素是硅、锗。美国“硅谷”因此得名。

以目前最新的技术,晶体管最大切换频率达100GHz、最小单元可以做到1nm。2016年碳晶体管成功研制,比硅晶体管拥有更好的性能。

小伙伴们是不是都联想到了CPU的运算速度和内存的存储量?原因从这里来。

晶体管有个特性,开关特性,通俗的讲就是有电和没电,专业的讲是导通和截止。导通是1、截止是0。所以,计算机用晶体管的导通和截止当做自己的1、0语言

柚子这里讲的是现代计算机,电子科学技术的发展,一直推动着计算机的进步。世界上最早的计算机,并不是使用晶体管,而是使用电子管。电子管和晶体管的原理不同,但是都是实现为二进制。

计算机只能识别二进制语言,科学家们通过对电子元件的组合设计,就有了编码

每一个编码,都表示一次电子元件的状态,这个二进制编码,被命名为机器码

最初的程序员编程是一项“体力活”。每次编程,都要拿着码表扣0101。这么低级,只能叫它低级语言。

在01车轮的不断碾压下,程序员终于不堪重负,决定对机器码再进行编码。

假设,用X标记0101000100110101。通过汇编器(翻译作用),以后写个X,就完成这个动作,方便很多,它叫做汇编语言

汇编语言用标记的方式改变了01编码,但是它实际上还是直接对硬件进行操作,复杂且可读性差。汇编语言依然是低级语言。

虽然是低级语言,汇编语言却不是一无是处。汇编语言直接对硬件进行操作,特别适合编写硬件操作部分的代码,相比高级语言,有更高的执行效率。

再后来,程序员们就发明了更符合人类语言习惯,并且脱离了直接对硬件操作的语言,就是所谓的高级语言

Basic、Pascal、C/C++、java、python、C#等,都是高级语言。我们今后的课程,先从C语言开始。

高级语言逻辑性更强易学习易掌握

高级语言通过编译器(翻译功能)将程序编译成机器码。

现在比较主流的编译器是微软公司出品的Visual Studio系列,柚子从大学开始一直用这个系列,现在用的是Visual Studio2013。就是下面这个小骚紫。

小伙伴们有没有觉得涨姿势呢?

本文来自企鹅号 - 全球大搜罗媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一个会写诗的程序员的博客

附录C Java编程简史附录C Java编程简史丰富多彩的JVM生态参考资料

在20世纪60年代,软件曾出现过严重危机,由软件错误而引起的信息丢失、系统报废事件屡有发生。为此,1968年,荷兰E.W.Dijkstra提出了程序设计中常用的...

1084
来自专栏一个会写诗的程序员的博客

《Spring Boot极简教程》附录4 Java编程简史 附录4 Java编程简史参考资料

在20世纪60年代,软件曾出现过严重危机,由软件错误而引起的信息丢失、系统报废事件屡有发生。为此,1968年,荷兰E.W.Dijkstra提出了程序设计中常用的...

1032
来自专栏斑斓

利用Actor实现管道过滤器模式

《基于Actor的响应式编程》计划分为三部分,第一部分剖析响应式编程的本质思想,为大家介绍何谓响应式编程(Reactive Programming)。第二部分则...

3074
来自专栏java一日一条

面向对象设计的 10 条戒律

这也不是Jon Skeet / Martin Fowler / Jeff Atwood / Joel Spolsky(可以用你最喜欢的技术专家的替换这些名字)说...

862
来自专栏北京马哥教育

据说这篇总结覆盖了一般Python开发面试中可能会问到的大部分问题

通信背景,工作一年多不到两年。之前一直在做C++的MFC软件界面开发工作。公司为某不景气的国企研究所。(喏,我的工作经验很水:1是方向不对;2是行业有偏差)。然...

1332
来自专栏芋道源码1024

从一次 Snowflake 异常说起

1. 异常概述 2018年1月26日下午,业务方信贷小组的同学反馈服务执行数据库插入操作出现异常,异常信息显示数据库主键出现重复: ? 在仔细分析了用户的重复主...

5.5K7
来自专栏行者悟空

利用Spark通过nginx日志离线统计网站每日pv

5312
来自专栏企鹅号快讯

编程语言中间令人无语的规则

我们都知道,软件开发人员每天都在做各种各样的决策:如何更好地实现功能、如何修复bug、如何改进应用程序性能等等。但是他们也在其他人的工作成果中继续自己的决定,例...

3685
来自专栏Java技术栈

重大利好,Dubbo 3.0要来了。

关于Dubbo的好消息,2018年1月8日,Dubbo创始人之一梁飞在Dubbo交流群里透露了Dubbo 3.0正在开工的重大消息。 Dubbo是阿里开源的分布...

46910
来自专栏窗户

sed的粉丝

  UNIX/LINUX下有个工具叫sed,起源于ed命令,但没有人机交互,完全是脚本语言。sed虽然是结构化的程序,但其虚拟出来的机器与我们实际机器相差甚远,...

2249

扫码关注云+社区

领取腾讯云代金券