两个字说清楚编程语言实质-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介绍
一 引子 基于上一章所学,有了计算机硬件,再在硬件之上安装好操作系统,我们就有了一个应用程序的运行平台,我们接下来的任务就是学习如何使用某款编程语言来开发应用程序. 本章的主题是先了解一下编程语言,然 ...
随机推荐
- SQL Server循环插入
一个SQL循环插入的代码,运行正常: BEGIN DECLARE @idx AS INT; DECLARE @NodeName nvarchar(255); DECLARE @OtherName nv ...
- HTML form表单中action的正确写法
我的Java Web Application的context是myweb,即http://localhost:8080/myweb/index.jsp是欢迎页. 现在我的一个Controller的映射 ...
- 怎样获取响应头: Response Header
1. 使用 xhr.getResponseHeader()可以获取指定响应头字段值. function getHeaderTime() { console.log(this.getResponseHe ...
- Python 字符串——巧取值和列表——巧取值 对比
Python 字符串——巧取值和列表——巧取值 对比 1.字符串取值实例: samp_string = "Whatever you are, be a good one." for ...
- Spring ——获取IOC容器时,构造方法、set方法、类方法执行顺序
1,首先,我们在ApplicationContext.xml中会写下下面类的标示: <bean id="helloword" class="com.xt.frist ...
- Angular 变更检测
angular 的钩子函数有 content 和 view , Docheck 子控件中有属性变化的时候,父组件的 Docheck content view 这3个会依次执行,即使这个属性不在 ...
- .net Core 图片验证码 基于SkiaSharp实现
public class ImageCaptcha { /// <summary> /// 干扰线的颜色集合 /// </summary> private List<SK ...
- 微信公众号支付备忘及填坑之路-java
一.背景 最近公司给第三方开发了一个公众号,其中最重要的功能是支付,由于是第一次开发,遇到的坑特别的多,截止我写博客时,支付已经完成,在这里我把遇到的坑记录一下(不涉及退款).不得不吐槽一下,腾讯这么 ...
- 【github】github的使用
一.上传本地代码 1.在github上新建一个repository(命名为英文) 2.打开cmd,进入上传代码所在目录 3.输入如下命令 第一步:git init --建仓第二步:git add * ...
- python中的网络通信,socket、select、selectors、socketserver
楔子 网络通信用于获取一个算法在本地运行所需的数据,还可以共享信息实现分布式处理,另外可以用来管理云服务. python的标准库提供了一些模块来创建网络服务以及访问现有服务ipaddress模块提供了 ...