How to think like a computer scientist : Learning with Python v2nd edition很不错的一个教程,不仅仅从头讲解了Python,更重要的是帮助我把计算机编程知识进行了一次梳理。
学习笔记(一)针对的是第一章 The way of the program
作为一名计算机科学家,最重要的是解决问题的能力。(Problem solving)
编程语言可以分为高层语言(High-level language)和低层语言(Low-level language)。高层语言,比如c++,java,python,需要先转换成低层语言,比如汇编,因此会花费一些时间,这也是高层语言的缺陷。但是高层语言有很大优势
高层语言转换为地层语言的程序有两种:解释器(interpreter)和编译器(compiler)。解释器读取代码,一步步执行代码。编译器把源代码 (Source code)编译为对象码(Object code),然后再执行。\n 现代的编程语言普遍采用了这两种方式,先把源代码编译为字节码(Byte code),然后在虚拟机(Virtual machine)中解释执行。
Python也采用了这两种方式,但是由于程序员编程的方式,一般把python看做解释性语言。Python有两种解释方式:shell mode和script mode。
程序是顺序的计算指令。它包含了input, output, math, conditional execution, repetition,任何程序都是由这几个要素组成的。
程序的错误就是bug,解决bug就是debug。
程序的错误分为三种:语法错误(syntax error),运行时错误(runtime error),语意错误(semantic error)。
对于一些人,编程和debug是同时进行的,可以保证程序的可运行性。
自然语言(Natural language)就是世界上的语言,英语法语等
形式语言(Formal language)是人们为了某个目的设计的,比如数学和化学中语言
形式语言有两个要素:token和structure。分析语言的过程就是parsing。
相比于形式语言,自然语言不明确(ambiguity),重复(redundancy),literalness。