发现编程范型二:基础语法
见解基于已熟悉的三种语言:C/C++,Python和Java。
语言信息
- 版本信息:语言版本变迁历史
- 源代码文件:文件后缀,中间文件形式,源文件常用格式--如文件头、入口函数定义等
- 编译与运行:开发工具(编译器、解释器、调试器及IDE等)、发布方式(原生文件还是打包程序)、调试工具
基础语法
注释
- 好的代码应该是自解释的,但有时也需要注释的帮助。
- 传统型注释方式:单行注释,多行注释
- 功能性注释:
- 作为对象的一部分,如Python中对象的__doc__属性
- Java中的注解
类型系统
- 类型的作用:
- 对象或数据对应空间大小,存储时占用的空间、读取时解析的空间
- 对象或数据自身的操作及适用于该类型的操作集合
- 标识符、变量、文字常量及常量
- 文字常量:源代码中直接书写的数值、字符串、布尔值等,常用语赋值语句的右侧
- 标识符,命名规则,是否大小写敏感,关键字集合
- 变量,命名规则,与内存区、对象的绑定关系
- 常量,定义方式,明明常用法--如全大写等
- 类型分类:
- 基本类型
- 主要包括数值类型(整型、浮点型及复数等)、字符及字符串类型、布尔类型等
- 字符串类型:存储方式、支持的操作符、编码问题
- 扩展类型
- 枚举类型
- 空类型:void/None/null
- 指针类型
- 类类型
- 内置容器
- 数组类型:数组定义、多维数组、数组索引及越界访问问题等
- 其他语言级支持容器,如Python的tuple/list/dict
- 基本类型
- 类型转换规则
- 自动类型转换
- 强制类型转换
操作符
- 操作符,是对计算机指令系统的抽象封装
- 基本操作符--一般语言都支持的操作符:
- 赋值操作
- 算术运算符
- 比较运算符
- 逻辑运算符
- 位操作运算符
- 特殊操作符:
- 判断:三元操作符(?😃,sizeof,类型判断(instance of)
- 操作符优先级
语句
- 源代码的组织形式,好的源代码是便于阅读的源代码
- 单行语句
- 单行语句,是否需要分号做结尾符
- 空语句块--如{}及关键字pass都可表示空语句
- 语句块
- 语句块定义方式:中括号表示{},及Python的缩进表示法
- 语句块,对变量及对象的生命周期及可见性的影响
流程控制
- 代码执行顺序,常用包括条件、循环及跳转
- 条件,if/else,switch
- 循环,while,do/while,for,foreach
- 跳转,return,break,continue,goto
函数及方法
- 函数是对功能的抽象,封装实现功能的细节
- 函数签名,由函数名及参数列表决定,不包括函数返回值
- 函数定义
- 函数参数:
- 传参方式:传值、传引用、传指针
- 默认值参数、不定长参数(可变参数)
- 不安参数顺序,采用参数赋值方式调用函数
- 函数返回值:
- 函数返回值数量
- 尾调用
- 函数参数:
- 特殊函数:
- 递归函数
- 嵌套函数
- 匿名函数,如lambda函数
- 函数特殊应用:
- 函数指针,函数对象
- 重载函数
异常处理
- 异常处理是错误处理的一种方式,其他方式比如C的返回值判断
- 异常作用:可以将正常流程代码与异常处理代码分开
- 异常系统:
- 抛出异常:throw或raise关键字抛出异常
- 捕获异常:try/catch捕获异常
- 系统定义异常、自定义异常
- 异常捕获顺序
- 捕获所有异常
- finally在异常中的应用
- 异常声明:函数中声明可能抛出的异常
代码组织方式
- 代码组织的目标:
- 避免名字冲突问题
- 组织源代码文件,便于项目管理
- 代码组织方式:
- 命名空间、包
- 源文件管理