How to Learn a New Programming Language

This is a draft.

IDE

工欲善其事必先利其器,选一款上手的开发工具事半功倍。

  • VS Code (Recommended): Universal

  • Intellij: Java

  • Clion: C/C++

  • Xcode: Swift

  • Atom: Universal

  • Code Blocks: C/C++

  • Vim: Universal

  • PyCharm: Python

编程思想

不同的编程语言,有着不同的架构设计,不同的业务场景。在选择一款语言时,一定要结合自身需求,结合业务场景,进行抉择。

  • 静态语言: 编译时就能明确每一个变量的类型

    • C/C++
    • Java
    • Go
    • Scala
  • 动态语言: 与静态语言相对

    • Python
    • Ruby
    • Javascript
  • 执行类型

    • 编译型语言
    • 解释型语言
  • 编程范式

    • 面向过程

    • 面向对象

    • 函数式编程

      • Haskell
      • Scala

项目结构

  • 共享库

  • 可运行文件

  • 网站应用

  • 桌面应用

  • 移动应用

基础语法

  • 保留字

  • 数据类型

    • 指针
    • 结构体
    • 值类型
    • 引用类型
    • Enum
    • Genericity
      泛型类是引用类型,是堆对象,主要是引入了类型参数这个概念,一些强类型编程语言支持泛型,其主要目的是加强类型安全及减少类转换的次数.
  • 变量定义

    • 作用域
    • 全局
    • 局部
    • 静态
  • 常用数据结构

    • array
    • set
    • map
  • 表达式

  • 操作符

  • 函数

    • 定义
    • 闭包
    • 回调
  • 控制流

    • 条件语句
    • 循环语句
  • 注释

  • 输入输出

    • 文件
    • 控制台
  • 异常

  • 断言

  • 模块化
    拥有可维护的代码库意味着我们能以最小的代码修改获得最大的概念变化。换句话说,如果我们需要修改一个代码单元,其它代码单元的修改应该尽可能地少。

    • 命名空间
    • 模块调用

高级语法&特色语法

  • lambda

  • 面向对象

    • 继承
    • 接口
  • 注解

  • 元编程
    编写能改变语言语法特性或者运行时特性的程序

    • AOP
      解耦
    • IoC
      主流开发语言,为了达到项目间的低耦合,都会借助IoC框架来实现
    • 反射
  • 语法糖

  • 跨语言调用

编码风格

工具

  • 构建

    • 编译
    • 交叉编译
    • 依赖管理
    • 依赖管理
  • 运行

  • Debug

  • Lint
    现在的lint工具越来越强大了,以ESLint为例,不仅可以检查代码格式,常见错误,还可以给出许多最佳实践方面的建议。在编码时使用lint工具,可以让你更早地发现代码中可能存在的bug,同时也可以让你的代码看起来更加优雅。

  • checkstyle

  • 性能测试
    • 压力测试
    • 并发量测试

常用库

  • 文件解析

    • JSON
    • HTML
    • YAML
    • XML
  • 单元测试

  • 日志

  • 算法库

  • 数据结构

  • IO库

    • SOCKET
    • HTTP

并发

  • 同步

  • 异步

  • 进程

  • 线程

  • 纤程

  • 消息机制

  • RPC

框架

  • WEB框架
  • 桌面框架
  • 高并发框架
  • 缓存框架
  • 数据库框架
  • 消息队列框架
  • 微服务框架
  • 服务注册框架
  • 熔断框架
  • 路由框架
  • MVC框架
  • ORM框架

实战

  • 重写实现的项目

提升

  • Read Source Code

  • 阅读框架源码

    • 框架源码
    • 编译后源码
  • 运行时

    • 垃圾回收
    • 内存管理

References