两个字说清楚编程语言实质-Python基础前传(3)
大家都知道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)的更多相关文章
- 快速掌握Python的捷径-Python基础前传(1)
文: jacky(朱元禄) 开文序 最近看新闻,发现高考都考Python了,随着人工智能的火热,学数据科学的人越来越多了!但对于数据行业本身来说,现象级的火热,这并不是什么好事. 方丈高楼平地起,无论 ...
- 5分钟记住列表的使用功能-Python基础前传(7)
学习任何一门技术,最重要的是逻辑而不是内容,仅会内容,我们仅仅是技术的使用者,但如果我们懂得了技术背后的逻辑,我们就是技术的创造者,所以同样领域的工作,有人月入5千,有人月入5万,就是这个差别: 学技 ...
- 字典-Python基础前传(9)
(一)Python中为什么要有字典 jacky说科学存在的逻辑只有两个: 1.解释问题 2.解决问题 我们明白了科学的逻辑,我们理解任何的知识和技能,都是很简单的 之前jacky跟大家说list因为太 ...
- 函数第一部分:经典的永远是简单的-Python基础前传(10)
(一)前言 对于零基础学习Python的朋友,或者转行做数据分析的朋友,跟jacky交流最多的问题就是Python网络爬虫学习问题,比如说要爬取美团,或者说爬取携程等等,在爬取的过程中,这些朋友总是会 ...
- Python数据类型之数值-Python基础前传(5)
学习任何一门学科或者手艺,最忌讳的就是想的太多,做的太少: 有很多朋友私信问我:jacky,我们该如何选择Python的课程?或是我们该如何选择Mysql课程?到底谁的课件和书籍才是最好的? 借着今天 ...
- 秒懂数据类型的真谛—Python基础前传(4)
一切编程语言都是人设计的,既然是人设计的,那么设计各种功能的时候就一定会有它的道理,那么设计数据类型的用意是什么呢? (一) 基本数据类型 基本数据类型: 数字 int 字符串 str 布尔值 boo ...
- 函数第二部分:为什么说动态参数是没有计划好的参数-Python基础前传(11)
动态参数1-一个星号变元组 动态参数存在的意义? 函数的作者有时候也不知道这个函数到底需要多少个参数,这时候动态参数就有存在的意义了 动态参数创建-加* 底层原理是:把数值型或其他数据类型变成了元组类 ...
- Python基础--动态传参
形参的顺序: 位置 *arg 默认值 **args ps:可以随便搭配,但是*和**以及默认值的位置顺序不能变 *,** 形参:聚合 位置参数* >>元祖 关键字** > ...
- 3、编程语言与Python介绍
一 引子 基于上一章所学,有了计算机硬件,再在硬件之上安装好操作系统,我们就有了一个应用程序的运行平台,我们接下来的任务就是学习如何使用某款编程语言来开发应用程序. 本章的主题是先了解一下编程语言,然 ...
随机推荐
- Python 面向对象编程详解
Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...
- R-corrplot相关性绘图,只有你想不到的
初步接触数据集,探索性分析后,经常需要做一个相关分析,得到各变量间的相关系数以及显著性水平. 本文介绍一下R-corrplot包进行相关可视化展示. 一 数据准备 载入所需的R包,利用公共数据集mtc ...
- 安卓开发之利用XmlPullParser解析XML文件
package com.lidaochen.phonecall; import android.support.v7.app.AppCompatActivity; import android.os. ...
- 【51nod2026】Gcd and Lcm(杜教筛)
题目传送门:51nod 我们可以先观察一下这个$f(x)=\sum_{d|x}\mu(d) \cdot d$. 首先它是个积性函数,并且$f(p^k)=1-p \ (k>0)$,这说明函数$f( ...
- error connection reset by peer 104
connection reset by peer的常见原因 1.服务器的并发连接数超过了其承载量,服务器会将其中一些连接关闭:2. errno = 104错误表明你在对一个对端socket已经关闭的的 ...
- php的三个常用判断函数
<?phperror_reporting(E_ERROR);$a;$b = false;$c = '';$d = 0;$e = null;$f = array(); echo 'empty', ...
- Oracle笔记(十) 约束
表虽然建立完成了,但是表中的数据是否合法并不能有所检查,而如果要想针对于表中的数据做一些过滤的话,则可以通过约束完成,约束的主要功能是保证表中的数据合法性,按照约束的分类,一共有五种约束:非空约束.唯 ...
- redis——java访问redis
1,使用jedis的java客户端来访问redis服务器,有点类似于通过jdbc访问mysql一样: 2,如果是spring集成时,可以使用spring data 来访问redis,spring da ...
- RxJava——扩展的观察者模式
在学习RxJava的时候,经常提到观察者与被观察者,这不就是JAVA的观察者模式的运用么?是的,但是跟传统意义的上观察者模式还不太一样,所以Rxjava实际上是一种扩展的观察者模式,所以有必要对这个扩 ...
- Android利用json进行网络解析
必须单开一个线程,android界面的主线程不会负责通信模块