跨语言学习大纲
前言
因为经常会要学习到新的语言,新的框架,不同的语言与不同的框架,均有一些不同的框架、或者语言特色,在对一门语言不熟悉的时候,如何快速上手这一门语言和相当的框架就非常重要了。
大纲
经过自己的整理,我觉得学习一门语言,可能通过下面的这个大纲来学习,会更快的上手。
20190215更新:经常自己的实践,上述大纲确实有益于快速掌握一门新语言,如果以后有新学习语言,本文也会继续更新。
分类 | 知识点 |
---|---|
Basic | 基础语法,如何运行 |
编程模式(同步、异步、结构、类等) | |
代码的组织 | |
包管理器及包的引入 | |
代码的编译 | |
面向对象编程(OOP) | |
语言的常见应用领域 | |
Builtin | 常用的数据结构,如列表、字典(哈希表)等 |
字符串处理方法 | |
时间方法 | |
IO、网络方法 | |
多进/线程 | |
ThirdPackages | 常用的第三方包 |
Testing | 单元测试 |
数据伪造 | |
集成测试、代码覆盖 | |
Programming | IDE |
静态检测、自动格式化 | |
Deployment | 部署方式 |
日志 |
Python
由于我主要是用于web开发,因此下面罗列的会较偏于web框架较多一点。
分类 | 知识点 | Python(2.x) |
---|---|---|
Basic | 基础语法,如何运行 | 可以python进入shell直接交互,也可以简单的执行文件 |
编程模式(同步、异步、结构、类等) | 可同步,可异步 | |
代码的组织 | 第三方包默认安装在site-package 目录下,项目组织没有固定模板,具体可以根据使用框架来定 |
|
包管理器及包的引入 | 通常使用pip |
|
代码的编译 | python不需要编译,但也有p2exe 及pyinstaller 将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包放在对应的目录就行了。