大家都知道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)的开发效率高;

两个字说清楚编程语言实质-Python基础前传(3)的更多相关文章

  1. 快速掌握Python的捷径-Python基础前传(1)

    文: jacky(朱元禄) 开文序 最近看新闻,发现高考都考Python了,随着人工智能的火热,学数据科学的人越来越多了!但对于数据行业本身来说,现象级的火热,这并不是什么好事. 方丈高楼平地起,无论 ...

  2. 5分钟记住列表的使用功能-Python基础前传(7)

    学习任何一门技术,最重要的是逻辑而不是内容,仅会内容,我们仅仅是技术的使用者,但如果我们懂得了技术背后的逻辑,我们就是技术的创造者,所以同样领域的工作,有人月入5千,有人月入5万,就是这个差别: 学技 ...

  3. 字典-Python基础前传(9)

    (一)Python中为什么要有字典 jacky说科学存在的逻辑只有两个: 1.解释问题 2.解决问题 我们明白了科学的逻辑,我们理解任何的知识和技能,都是很简单的 之前jacky跟大家说list因为太 ...

  4. 函数第一部分:经典的永远是简单的-Python基础前传(10)

    (一)前言 对于零基础学习Python的朋友,或者转行做数据分析的朋友,跟jacky交流最多的问题就是Python网络爬虫学习问题,比如说要爬取美团,或者说爬取携程等等,在爬取的过程中,这些朋友总是会 ...

  5. Python数据类型之数值-Python基础前传(5)

    学习任何一门学科或者手艺,最忌讳的就是想的太多,做的太少: 有很多朋友私信问我:jacky,我们该如何选择Python的课程?或是我们该如何选择Mysql课程?到底谁的课件和书籍才是最好的? 借着今天 ...

  6. 秒懂数据类型的真谛—Python基础前传(4)

    一切编程语言都是人设计的,既然是人设计的,那么设计各种功能的时候就一定会有它的道理,那么设计数据类型的用意是什么呢? (一) 基本数据类型 基本数据类型: 数字 int 字符串 str 布尔值 boo ...

  7. 函数第二部分:为什么说动态参数是没有计划好的参数-Python基础前传(11)

    动态参数1-一个星号变元组 动态参数存在的意义? 函数的作者有时候也不知道这个函数到底需要多少个参数,这时候动态参数就有存在的意义了 动态参数创建-加* 底层原理是:把数值型或其他数据类型变成了元组类 ...

  8. Python基础--动态传参

    形参的顺序: 位置 *arg     默认值  **args  ps:可以随便搭配,但是*和**以及默认值的位置顺序不能变 *,** 形参:聚合 位置参数* >>元祖 关键字** > ...

  9. 3、编程语言与Python介绍

    一 引子 基于上一章所学,有了计算机硬件,再在硬件之上安装好操作系统,我们就有了一个应用程序的运行平台,我们接下来的任务就是学习如何使用某款编程语言来开发应用程序. 本章的主题是先了解一下编程语言,然 ...

随机推荐

  1. User space(用户空间) 与 Kernel space(内核空间)

    出处: User space 与 Kernel space (整理)用户空间_内核空间以及内存映射 学习 Linux 时,经常可以看到两个词:User space(用户空间)和 Kernel spac ...

  2. pb相关小技巧或用法

    1.动态post window lwlw = w_main lw.dynamic post event ue_all(ls_no,ls_table) 2.打开隐藏窗口 IF NOT IsValid(w ...

  3. MySQL SELECT语法(二)SELECT...INTO语法

    源自MySQL 5.7 官方手册 SELECT...INTO Syntax 一.SELECT...INTO介绍 SELECT...INTO用来将查询结果存储在变量或者写入文件中. SELECT ... ...

  4. 怎样查看或修改元素节点的id属性

    使用 el.id; el表示获取到的元素节点, 如下所示: // HTML 代码 // <div id="app" class="c1">hello ...

  5. MyEclipse中XML的智能提示和关于Spring 配置文件头的一些记录和解释

      一. 首先介绍XML文件的一些知识: <?xml version="1.0" encoding="UTF-8"?><beans xmlns ...

  6. 设计模式风格<二>;消息总线

    以前开发的动车模拟驾驶系统,有好几个软件(不在一台机器上),他们互相之间通信,因此每个软件要配置每个模块的IP和端口,就是每个模块都要知道别的模块的端口和IP. 这样有个重复的地方,B模块和C模块都要 ...

  7. 出现 HTTP 错误 500.19 错误代码 0x800700b7

    这个内容出现主要问题是在IIS上,我们一般程序开发 iis中默认的路径只是http://localhost/,相当于环境变量中已定义好了,如果自己创建的项目直接将路径定义到这,就会替换图二中的路径,然 ...

  8. luogu题解 P3629 【[APIO2010]巡逻】树的直径变式

    题目链接: https://www.luogu.org/problemnew/show/P3629 分析 最近被众多dalao暴虐,这道题傻逼地调了两天才知道错哪 不过这题比较良心给你一个容易发现性质 ...

  9. ES6复制数组

    ES6复制数组和合并数组 一.复制数组与合并数组 复制数组:它是复合数据类型,直接复制只是复制了指向底层数据结构的指针,而不是复制一个全新的数组 <!DOCTYPE html> <h ...

  10. ember server禁用Livereload server on http://localhost:49152

    ember server --live-reload=false