跨语言学习大纲

前言

因为经常会要学习到新的语言,新的框架,不同的语言与不同的框架,均有一些不同的框架、或者语言特色,在对一门语言不熟悉的时候,如何快速上手这一门语言和相当的框架就非常重要了。

大纲

经过自己的整理,我觉得学习一门语言,可能通过下面的这个大纲来学习,会更快的上手。

20190215更新:经常自己的实践,上述大纲确实有益于快速掌握一门新语言,如果以后有新学习语言,本文也会继续更新。

分类 知识点
Basic 基础语法,如何运行
编程模式(同步、异步、结构、类等)
代码的组织
包管理器及包的引入
代码的编译
面向对象编程(OOP)
语言的常见应用领域
Builtin 常用的数据结构,如列表、字典(哈希表)等
字符串处理方法
时间方法
IO、网络方法
多进/线程
ThirdPackages 常用的第三方包
Testing 单元测试
数据伪造
集成测试、代码覆盖
Programming IDE
静态检测、自动格式化
Deployment 部署方式
日志

Python

由于我主要是用于web开发,因此下面罗列的会较偏于web框架较多一点。

分类 知识点 Python(2.x)
Basic 基础语法,如何运行 可以python进入shell直接交互,也可以简单的执行文件
编程模式(同步、异步、结构、类等) 可同步,可异步
代码的组织 第三方包默认安装在site-package目录下,项目组织没有固定模板,具体可以根据使用框架来定
包管理器及包的引入 通常使用pip
代码的编译 python不需要编译,但也有p2exepyinstaller将python打包成可执行文件
面向对象编程支持(OOP) metaclass, class
语言的常见应用领域 web开发,爬虫开发,运维开发,测试,大数据开发
Builtin 常用的数据结构,如列表、字典(哈希表)等 list, dict, tuple, set
字符串处理方法 string
时间方法 datetime, time
IO、网络方法 open, urllib,网络库也推荐使用第三方库requests
多进/线程 multiprocessing, threading
ThirdPackages 常用的第三方包 django, tornado
Testing 单元测试 pytest, unittest
数据伪造 mock
集成测试、代码覆盖 参考第三方库等
Programming IDE 推荐pycharm
静态检测、自动格式化 pyflake, pystyle, autopep8, flake8
Deployment 部署方式 web项目通常由web服务器(nginx或apache) + wsgi服务器启动,进程守护一般用supervisor
日志 一般用logging

Javascript && NodeJS

nodejs = commonJS + io.js,是在基于javascript的V8引擎上,增加了能够执行文件IO、网络IO功能。传统的Javascript相对于nodejs来说,少了io.js,但是能够处理dom。

分类 知识点 Javascript(ES6+)
Basic 基础语法,如何运行 可以浏览器内运行,也可以使用node启动shell
编程模式(同步、异步、结构、类等) 只能异步,异步库有不少,如promise, await
代码的组织 nodejs与js的组织略有区别
包管理器及包的引入 npm, yarn
代码的编译 js不需要编译
面向对象编程支持(OOP) ES6的语法才支持一些class, extends
语言的常见应用领域 js通常用于前端,nodejs也能作一些服务端应用
Builtin 常用的数据结构,如列表、字典(哈希表)等 Array, Object
字符串处理方法 自带的功能较少,一般会用一些第三方库,如dash
时间方法 自带的功能较少,一般会用一些第三方库,如moment
IO、网络方法 nodejs才支持io,网络有不少,如fetch, request
多进/线程 不支持
ThirdPackages 常用的第三方包 express, dash, sequelize
Testing 单元测试 mocha, chai
数据伪造 sinon
集成测试、代码覆盖 mocha
Programming IDE 推荐WebStorm
静态检测、自动格式化 jslint
Deployment 部署方式 一般使用nginx做个转发就行,一般使用pm2守护
日志 一般用log4js

除了上述的语言基本以外,JS本身分前后端,在各自的领域也相关较大,因此有些知识点下面单独列出。

前端开发框架

1. jquery,封装了dom操作; 现在流行的如react, angularjs, vue等

后端web开发框架

1. web框架: express, egg.js等
2. ORM: sequelize, bookshelf, moogoose等
3. 配置:config

Golang

分类 知识点 Golang(1.10.x)
Basic 基础语法,如何运行 golang是编译型语言,通常需要go build编译后再执行,单个文件也可以通过go run执行
编程模式(同步、异步、结构、类等) 支持异步,关键词defer, select
代码的组织 web项目推荐如此组织
包管理器及包的引入 golang的包管理最开始是必须放在$GOPATH/src下面。现在也能使用vendor目录的机制了,自带的go get可以安装,也有dep这样的包管理工具
代码的编译 go build
面向对象编程支持(OOP) golang对面向对象的支持并不多,使用interface, struct等能实现一些面向对象的特性,但是对于继承、多态等,支持并不太好。
语言的常见应用领域 常用于web领域,对于网络请求的处理及重cpu型的计算,也有一定的优势。
Builtin 常用的数据结构,如列表、字典(哈希表)等 Array, Map
字符串处理方法 String
时间方法 Date, Time
IO、网络方法 os
多进/线程 进程模块见os.Process, golang似乎没有对线程的支持,倒是可以使用协程代替
ThirdPackages 常用的第三方包 gin, gorm等,详细参考
Testing 单元测试 go test
数据伪造 gomock
集成测试、代码覆盖 go test已支持
Programming IDE 推荐Goland
静态检测、自动格式化 golang.org本身也提供了工具,golint, goreturns
Deployment 部署方式 编译后启动可执行文件即可
日志 Logger

Java (待完成)

java在组织web服务器的代码的时候,通常会按这样的职责划分清晰:

Controller —> 负责接收请求,解析请求数据,调用真正的接口,并返回。 DTO/Plain Class —> DTO是数据转换类(data transfer object),和基本的get/set IAction —> 负责定义接口类 ActionImpl —> 负责定义接口的实现

maven,算是java里的一个包管理器吧。 类似于npm,包括安装包依赖,打包等。

tomcat,运行war(类似于jar包,但包含一些静态资源)包的web服务器。部署方式是把war包放在对应的目录就行了。