两个字说清楚编程语言实质-Python基础前传(3)

时间:2022-09-15 09:58:35

大家都知道Python对于数据分析而言,意义重大。但对于运用Python来做数据分析的我们来说,学习一门编程语言,却有不小的难度:首先大部分伙伴不是计算机相关专业的科班出身,其次我们基本上也都没有程序员经验,所以正确的理解编程语言,对于我们学习Python就显得尤为重要,今天jacky就跟大家聊聊:编程语言的实质到底是什么?

(一)编程语言的实质

编程语言的实质是什么?

  • 实质就是二个字:语言

1.为什么说编程是语言类的技能

关于编程为什么是语言类的技能,有这样一个故事:

新东方的创始人之一王强,毕业留校在北大教英语,但他并不想要一种老教授的生活,还要为理想拼搏一下,于是去了美国;

当时计算机在美国刚刚兴起,王强看到了机会并决定转行计算机领域;但是当时他连微积分都没学过、计算机都没见过,却成功的说服了所报考学校的考官并成功入读了计算机专业的硕士,最后还进入了美国著名的贝尔实验室。

他是怎样说服考官,让一个零基础的小白去深造计算机专业呢?

当时王强跟考官说:编程语言的编程我不会,但是语言我会啊,我跟语言打了半辈子交道了,汉语这么难我都能研究的透,编程语言我也一定能研究得通,对于中文都这么好的我们,快速的学习一门编程语言是没有问题的。这番话打动了考官,并使得他成功的入学。

这是一个真实的故事,激励很多人,当然也让我明白了编程的道理。

2.写程序就是写作文

回忆小学,我们学写作文的三个阶段:

  • 第一阶段 :学习汉字怎么写,数字怎么写,符号怎么写;

  • 第二阶段:学习语法,学习造句,例如用“如果怎样… …就会怎样… …”造句;

  • 第三阶段:学习完整成文;

编程语言,也是由人发明的规则,既然能称作做语言,它同样也遵循着语言的规律;

  • 第一阶段 :学习各种数据类型的规则,字符的规则是什么,列表的规则是什么,字典的规则是什么等等;

  • 第二阶段:我们学习if 语句,学习循环语句等等的造句;

  • 第三阶段:完整的运用代码做出我们的项目;

(二)编程语言的演变逻辑

1.定义

现在我们可以给编程语言一个定义,并分享它的演变逻辑

  • 编程语言的定义:

    • 给定一套规则,并让计算机运行

2.演变逻辑

(1)机器语言

  • 机器语言是计算机唯一能接受和执行的语言。机器语言由二进制码组成,每一串二进制码叫做一条指令。一条指令规定了计算机执行的一个动作。机器语言是直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义,例如某台计算机字长为16位,即有16个二进制数组成一条指令或其它信息。16个0和1可组成各种排列组合,通过线路变成电信号,让计算机执行各种不同的操作。

(2)汇编语言

  • 后来写0101的这些人写烦了,他们就想办法能不能给这些0101分个组,相当于我们的活字印刷术,用一些字符做对应着不同的分组,就形成了汇编语言;

  • 用能反映指令功能的助记符表达的计算机语言叫汇编语言。它是符号化了的机器语言。用汇编语言编写的程序叫汇编语言源程序,计算机无法执行。必须用汇编程序把它翻译成机器语言目标程序,计算机才能执行。这个翻译过程称为汇编过程。

(3)C 语言

  • 随着计算机的发展,上述简单的编程越来越满足不了我们日益增长的需求,这个阶段就出现了C语言,对于程序员来说,有了C语言,就有了跨时代的飞跃,会了C语言就大大的节约了劳动力,我们就可以非常轻松的写出一个应用程序了;

  • 但是程序员的能力参差不齐,我们想要一些“更自动化,更方便,更简单”的编程语言,这就出了我们后面要说的高级语言,那么在此之前,jacky会跟大家说清楚C语言为什么不方便;

C语言为什么不方便?

  • C语言需要我们自己去管理它的内存;

    • 比如说一台计算机,我们想在某一块内存里开辟一块空间,让这个空间里放一点东西,那么我们需要做几件事:1.先找到这个地址,然后说,我要用你这块空间;2.用完之后,我们还要释放空间,说我不用了,你可以被别人用了 ;所有这样带来的弊端就是:程序员的能力有高有底,有很多情况是,黑客还没有攻破你程序的时候,你的程序自己就崩溃了,自己就把自己的内存全耗干了;比如说我只去拿不释放,那么你的代码直接就崩溃了;
  • C语言给我们提供现成的功能比较少;

(4)高级语言( Java、C#、php、Python)

我们拿Python举例来说

  • Python是在C语言的基础上开发,我们写一句Python代码,Python会转化为一个字节码,然后C会执行这个字节码并生成机器码,最后通过机器码在转化成0101二进制,这样计算机就能识别到了;

  • 有了高级语言,我们不在需要再去管理内存了;每一门语言都有自己的”虚拟机(解释器)”,现在的程序员,我们只需写代码就可以了,对于分配内存和释放内存都由虚拟机来做了;

  • 当然,C语言仍旧有它的优势在:C的执行效率高,高级语言(如:Python)的开发效率高;