python计算与编程实践-python灰帽子:黑客与逆向工程师的python编程之道
以下内容来自《Python 3.x应用实践入门》一书。 本书已加入VIP会员权益。 只要你是VIP会员,就可以免费阅读上万本电子书。 点此购买会员
编程语言是人类用来与计算机进行交流的语言,即用来指示计算机进行计算或运算的一组指令。 就像汉语、英语、日语等语言一样,无论哪种语言都有词汇和语法。 编程语言是一行一行的程序语句(statements)和语句中的程序代码(code)的组合。 它可以将人类的思维逻辑和交流语言转换成计算机可以理解的语言,而“编程”就是通过编程语言的编程和执行,实现人类使用计算机的工作需要。 写程序可以让原来的工作更有效率,比如一些每天必须重复做的工作,可以找出其中的规律,写一个程序自动执行。
1.2.1 编程语言简介
每一代编程语言都有自己的特点,无论是什么语言,都有其特殊的语法、特点、优势和相关的应用领域。 从发展过程来看,我们可以将编程语言大致分为“低级语言”和“高级语言”两大类,而低级语言又可以分为“机器语言”和“汇编语言”语言”。
1.机器语言
机器语言(Machine Language)是最早的编程语言。 它由数字1和0组成,也是计算机可以直接读取和执行的基本语言。 也就是说,任何程序在执行之前都必须实际转换为机器语言。 例如,“10111001”可能代表“设置变量 A”,“00000010”代表“值 2”。 当我们指示计算机将变量 A 设置为值 2 时,机器语言可能是:
10111001 (设置变量A)
00000010 (把数值2设置给变量A)
计算机可以直接执行机器语言,因此执行速度快,处理数据时效率高。 然而,对于人类来说,机器语言由于可读性低,并不容易学习。 另外,针对不同的计算机厂商,由于计算机硬件设计的不同,往往会开发出不同的机器语言。 这样一来,机器语言不仅使用不方便,而且可读性低python计算与编程实践,不易维护,而且不同机器的系统平台编码方式不同。
2.汇编语言
汇编语言(Assembly Language)指令比机器语言指令直观得多,但它的指令与机器语言指令仍然是一一对应的,所以它被归类为低级语言(Low-Level Language)就像机器语言一样。 语言)。 与机器语言相比,汇编语言更便于人类记忆和使用。 由于汇编语言与硬件的密切关系,不同的CPU(中央处理器,或中央处理单元)或微处理器的指令集不同,语法也不同。 另外一定要熟悉硬件,每个系统的汇编语言都不一样。 以PC为例,使用的是80x86的汇编语言。 用汇编语言编写的程序不能被计算机直接识别,必须通过汇编器或汇编器(Assembler)将指令转换成计算机可以识别的机器语言。 例如,MOV指令表示设置变量的值,ADD指令表示加法运算,SUB指令表示减法运算:
MOV A , 2 (把变量A的值设置为2)
ADD A , 2 (将变量A加上2后,将结果再存回变量A中,如A=A+2)
SUB A , 2 (将变量A减掉2后,将结果再存回变量A中,如A=A-2)
3. 高级语言
由于低级语言不易阅读,为了更方便快捷地使用编程语言,产生了更接近人类自然语言的编程语言。 这种语言被称为高级语言(High-Level Language)。 高级编程语言比低级编程语言更容易阅读和理解。 例如Python、Fortran、COBOL、Java、Basic、C、C++都是高级语言的成员。 用高级语言编写的程序,必须通过编译器(Compiler,或称为编译器)“翻译”成计算机能够理解的机器语言程序,即可执行文件,其中包含经过编译的高级语言language 就是将程序代码转换成计算机可以识别的机器语言,只有这种代码才能被计算机执行(实际上是计算机中的CPU执行)。 对于解释型高级语言,解释器(Interpreter,或interpreter)需要先“解释”成机器语言,才能被计算机的CPU执行,但不会生成最终包含机器语言的可执行文件,即与编译语言不同。 与汇编语言相比,高级语言虽然执行速度较慢,但语言本身易学易用,因此广泛应用于商业、科学、教学、军事等相关领域的软件开发。
技能
编译型语言和解释型语言的区别
编译型语言会先用编译器检查整个程序,没有语法错误后,再链接相关资源生成可执行文件(executable file)。 一次编译生成的可执行文件在执行过程中不需要再次编译,执行效率高。 例如C、C++、PASCAL、Fortran、COBOL等都是编译型语言。
解释型语言在执行程序代码时使用解释器来解释程序代码的源代码。 在“解释”了一行程序代码并执行后,它又继续“解释”下一行程序代码。 在解释过程中,如果出现语法错误,解释过程将立即停止。 例如HTML、JavaScript、Python等都是解释型语言。
4. 非过程性语言
“非过程语言”(Non-Procedural Language)又称第四代语言(Fourth Generation Language,4GL),其特点是它的指令和程序实际执行的具体步骤。 程序员只需要表达他打算做什么,而不用担心计算机是如何执行的,也不需要了解计算机的具体执行步骤。 目前这种语言通常用于各类数据库系统,如医院门诊系统、学生成绩查询系统等,如数据库的结构化查询语言(SQL)就是第四代语言。 例如清除数据的程序就很简单,代码如下:
DELETE FROM employees
WHERE employee_id = 'C800312' AND dept_id = 'R01';
5.人工智能语言
人工智能语言被称为第五代语言,或自然语言(Natural Language)python计算与编程实践,是编程语言发展的最终目标。 当然,按照现在的计算机技术是无法实现的,因为自然语言使用者的口音、使用环境、语言本身的特点(比如多义性)都会导致计算机在解释时产生不同的结果。 因此,自然语言必须由人工智能(AI)技术的发展来保证。
1.2.2 算法与编程
算法是学习编程的核心知识。 在日常生活中,每个人每天都会用到一些算法。 算法是人类使用计算机解决问题的技能之一。 事实上,算法不仅仅应用于计算机领域,在数学、物理等领域也有着广泛的应用。 日常生活中有很多任务可以用算法来描述,比如员工工作报告、宠物喂养过程、厨师的美食食谱、学生课程表等。在互联网搜索引擎流行的今天,我们使用的搜索引擎每天都必须不断更新他们的算法,以不断提高搜索的速度和准确性。 图 1-5 显示了百度搜索引擎的基本用户界面。
从编程语言实现的角度来看,无论我们使用哪种编程语言,程序能否高效完成任务,算法都是问题的核心。 同样的问题,每个人的解决方法可能不一样,程序的执行效率也会不一样。 一个优秀的算法可以用最精简的程序代码实现优秀的程序执行效率。
在韦氏词典中,算法被定义为:“在有限的步骤内解决数学问题的过程。” 如果用在计算机领域,我们也可以把算法定义为:“为了解决某个问题或完成某项任务,需要进行有限次数的重复指令和计算步骤”。 了解了算法的定义后,我们来解释一下算法必须满足的五个条件,如表1-1所示。
在理解了算法的定义和条件之后,接下来要思考的是:用什么方法来表达算法最合适? 其实算法的主要目的是让人了解所执行的工作的过程和步骤,只要能清楚地反映出算法的五个条件即可。 算法常用的描述方法或工具如下。
·文字描述:用中文、英文、数字等描述算法的步骤。
伪语言:接近于高级程序设计语言的写法,也是一种不能直接放入计算机执行的语言。 一般需要特定的预处理器,也可以手工编写,转换成真正的计算机语言。 经常使用SPARKS、PASCAL-LIKE等语言。
· 流程图(Flow Diagram):是用一些图形符号来描述算法执行过程的工具。 比如让用户输入一个数字,然后判断这个数字是奇数还是偶数。 描述该算法的流程图如图 1-6 所示。
·编程语言:目前也可以用可读性高的高级语言直接描述算法,如Visual C#、Java、Python、Visual Basic、C、C++等语言。 在本书中,算法将使用 Python 语言进行描述。
技能
算法和过程有什么区别? 它与流程图有什么关系?
算法和进程是有区别的,因为进程不一定要满足有限性的要求,比如一些运行在操作系统或计算机上的进程。 除非它崩溃,否则它会一直处于等待循环(waiting loop),这违反了算法五原则之一的“限制”。
另外,只要是算法,都可以用流程图来描述,但是反过来,一个过程的流程图可以包含死循环,所以过程不能用算法来描述。
为了方便编写程序,通过流程图来描述算法是目前最常见的方式。 我们来看看流程图的用法。
·编程语言:目前也可以用可读性高的高级语言直接描述算法,如Visual C#、Java、Python、Visual Basic、C、C++等语言。 在本书中,算法将使用 Python 语言进行描述。
技能
算法和过程有什么区别? 它与流程图有什么关系?
算法和进程是有区别的,因为进程不一定要满足有限性的要求,比如一些运行在操作系统或计算机上的进程。 除非它崩溃,否则它会一直处于等待循环(waiting loop),这违反了算法五原则之一的“限制”。
另外,只要是算法,都可以用流程图来描述,但是反过来,一个过程的流程图可以包含死循环,所以过程不能用算法来描述。
为了方便编写程序,通过流程图来描述算法是目前最常见的方式。 我们来看看流程图的用法。
以下是阅读电子书的方法:
打开CSDN APP(在软件商城搜索“CSDN”即可找到)—>登录CSDN账号—>学习—>电子书