以python、golang为例谈语言的一点感悟

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、指针与引用、枚举

-封装、继承、多态

2.5 注解与反射

2.6泛型

2.7 官方数据结构——协程、多线程、多进程

2.8官方数据结构—— 集合与映射

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值