缘由
毕业两年来接触了不同的语言,在入门之后和看了很多书之后也有了自己的思考,从第一门语言到工作中需要或是出于兴趣接触的其他语言,会加深对编码的理解和把握。
第一门语言
因为大学接触的第一门是C或C++,可能很多人的路线类似,计算机科班的课程使然。不过笔者觉得处于易学易上手可以使用Java这门静态的语言,如果为了写出简洁的代码的话,兼顾上手难度和语言灵活程度建议选Python。
这个过程中你可能第一次编写,编译或者直接执行脚本成功运行HelloWorld,后续就走上了持续进阶的道路,你会遇到:
- 基础的变量,常量;
- 数据类型,原生的或是包装类的;
- 分支,循环,条件三大结构;
- 一些语法switch或者一些语法糖foreach
- 数组,哈希Map(关联数组),集合(元组Tuple),链表等数据结构;
- 面向对象,那已经司空见惯了的封装继承多态;
- 权限控制;
- 抽象表述
abstract class
纯虚函数
特质(trait)
接口(interface)
面向协议
- IO流或文件操作Api,网络操作;
- 多线程
- 运行时类型识别–反射;
- 优雅的写法–注解;
- 动态语言的Duck Type;
- 堆栈 or 队列;
- 指针 or 引用;
- 一些语言自带强特性,闭包,函数式,MapRedux,尾递归,科里化等;
- …
学习过程
- 基本使用
- 项目运用
- 踩坑解决
- 加深理解
- Refactoring
- Effective Xxx
- Inside Language(such as JVM)
编程语言的套路(语言构造与Api)
- 变量与内存
- 数据类型–对变量类型的抽象
- 复合数据–数据结构
- 面向对象的世界
- 函数(方法)的地位
- 构造函数或析构函数
- 魔术方法(hook)
- 进程,线程和协程
- 同步 or 异步
- 访问权限控制
- 函数式
- 闭包和内部类
- 语言之下,编译器和解释器是如何执行你的代码的(编译原理)
- JVM系列语言
- Design Patterns
编程范式
面向对象
- 对象
- 函数
- 方法
- IOC
- AOP
- metaProgramming
小众语言
- via JVM
Scala , Groovy , Kotlin
- others
Ruby, Golang
快速迁移到其他语言(平台)
- 快速的举一反三和学习能力
- …
语言背后的思路
- OO
类,对象,方法继承与查找…
- 命令式 or 函数式
- Api和语法糖
一些技术栈
- 客户端
- 后端Web
- 中间件