文章目录
1. 总结下自身学过的语言
- 移动端 objective-c
- 前端 html、css、es6
- 后端 c#、Java、golang
- 计算 python
一共学习了8门语言,还有语言周边的网络框架、存储框架、uI框架.语言之间存在一些共同点
1.1 语言的共同点
1.2 语言最大的共同点——编译原理
编译原理也叫语言底层的设计与实现
- 词法分析
- 语法分析
- 语义分析
- 中间代码生成
- 目标优化
- 目标代码生成
16年左右研究的编译器,-OS编译器 分为前端 clang+后端 lvvm - 语言分为动态语言、静态语言,静态语言类型在编译器确定,动态语言在runtime时期确定;
- 强类型语言和弱类型语言;
- 解释性语言和编译语言,编译+解释字 的节码王国
1.3 语法方面的共同点
- 变量与常量 声明和赋值
- 运算符、表达式和语句
- 函数 函数的输入现代化 函数是复杂对象和简单对象的分水岭
复杂对象
- 接口与class
- 枚举
现代语言让语言能力变得更复杂的手段
- 注解与反射
- 泛型
语言软件工程——包管理工具
集成第三方包,软件工程。
包的自动化和手动,导入自动配置功能
- gomodule、
- pip(package install for python)
- npm
- cocopods
- maven
1.4 语言工具方面的共同点
- IDE 编辑、编译、连接,源代码管理git,jinkens 运维自动化
- devops理念
1.5 官方包——满足工程的最基本的需要
- 并发模型: CAS 乐观锁、 CSP消息顺序处理模型、SM共享内存模型给出的数据结构,语言一般都会提供这三种模型的数据结构,供开发者使用
- io密集型用多线程或者协程(用户级线程),减少cpu浪费时间,切换有成本。cpu密集型应用利用cpu多核,或者分布式应用
- golang提倡使用csp模型,channel通信
- 数据结构:基本引用变量和集合引用变量
1.6以官方包为基础,第三方包(民间包)
- 数据传输格式 json、protobuf、xml
- 网络 client、mvc、rpc、tcpsocket。gin、springmvc之类
- 存储 mysql mybatis/sqlx 、 redission
分布式上升复杂性
- 服务治理 可观测性
- 网关路由、负载均衡、注册与发现
- 流量控制
- 分布式事务 acid VS base、cap
- 分布式锁
一个软件工程项目,底层原理包括: - 编译原理——对应语言的语法
- 操作系统原理——对应语言的数据结构或者叫API,或者叫官方包、民间包给出的数据类型,供操控计算机底层硬件
- 软件工程原理——软件质量属性、架构(巨石应用分包或者叫分库,分布式分进程)和设计模式,没门语言都提供了管理第三方生态的依赖工具
2.golang VS python快速入门
语法方面基本是相互抄作业,细节方面有小许差异
整个语言就是一个数据类型史,各个类型可以相互转换
编译时和运行时,用父子包含关系,表示的类型不一样,叫多态,多种形态
2.1 注释、常量与变量
golang 静态语言
python动态语言
2.2 运算符、表达式和语句
2.3 函数—— 简单类型和复杂类型分水岭
操作系统中断、软件异常、不同语言函数的处理。
'''动态语言,类型推断,无返回值'''
def sum(a=1,... b){
}
2.4 复杂类型 interface 和class、指针与引用、枚举
-封装、继承、多态