计算机编程年度学习计划 – 2018

本文章对年度学习目标进行规划,当前为初步计划,细节需要根据工作时间和实际情况有所区别,
去年阅读了 TCP/IP 详解等16本经典书籍,以下为今年的研究计划。

1. 语言

今年计划学习一些新语言,特别是脚本和动态语言,然后深入了解一下 C++ STL 及其 Template。
初步计划如下:

Python

Python 的发展非常之快,其在运维、大数据及服务端编程方向使用量逐年增大,其优秀的语言也为大多数程序员热爱,因此需要学习一下 Python 语言。

本语言的学习过程有如下目标:

  1. 了解 Python 的基础及高级用法;
  2. 完成 Python 的分布式爬虫;
  3. 使用 Python 制作一个查字典工具;
  4. 学习 Python 的后端框架。

Javascript

Js 的发展十分迅猛,社区也及其活跃,Js 的使用场景不断扩大,因此需要学习 Js 的使用。

本语言的学习目标如下:

  1. 了解 Js 的基础知识及高级用法;
  2. 使用 Js 完成一个小型的网页游戏;
  3. 学习 NodeJs 框架。

C/C++

由于本身对于 C/C++ 比较熟悉,此部分需要更深入地探索。

本语言的学习目标如下:

  1. 深入了解 C++ 的 Template 及 STL 的实现;
  2. 学习 Boost 库;
  3. 深入学习 Nginx、ASIO 及 Boost.Asio 网络编程库

Lisp / Scheme

函数式编程闻名遐迩,必须要学。

本语言的目标如下:

  1. 阅读并学习《计算机构造与解释》的相关内容,学习 scheme 语言;
  2. 设计一个 DSL 或者 新语言,并使用 scheme 实现起解释器。

2. 计算及基础

由于出身非计算机专业出身,计算机基础架构方向比较薄弱,今年希望能够重点完善自己的编译原理、类型系统、垃圾回收、并行算法、分布式系统方向的内容

编译原理

包含程序的解析、语法树、代码生成、代码优化等方向,包含如下目标:

  1. 完成《编译原理》(龙书)的学习;
  2. 学习解析器前端技术,阅读《Parsing Techniques: A Practical Guide》;
  3. 阅读 《Engineering A Complier》,了解解析器的工程实现;
  4. 了解基于 llvm 前端如何设计编译器;
  5. 了解语言类型系统相关的知识。

垃圾回收

具有垃圾回收的语言其垃圾回收机制是怎么设计的,我对此略有兴趣,包含如下目标:

  1. 学习垃圾回收的算法;
  2. 对算法使用 C/C++ 进行实现。

分布式系统与并行算法

分布式系统是大势所趋,如何设计分布式系统架构很关键,需要了解此部分的内容。

此部分包含如下目标:

  1. 分布式系统的基本概念与基本设计方案;
  2. 了解分布式系统主流的架构;
  3. 了解并行算法的原理与实践。

本年度学习计划包含如下图书:

Python

  • Python 学习手册
  • Python Cookbook
  • Python 网络数据采集
  • Flask Web开发:基于Python的Web应用开发实战
  • HTTP 权威指南

Javascript

  • JavaScript 高级程序设计
  • 深入浅出 Node.js

C/C++

  • STL 源码剖析
  • C++ 标准库
  • C++ Templates
  • Boost程序库完全开发指南:深入C++"准"标准库
  • Boost程序库探秘——深度解析C++准标准库
  • Boost.Asio C++ Network Programming Cookbook

Lisp/Scheme

  • 计算机构造与解释
  • The Scheme Programming Language
  • 函数式编程思维

编译原理

  • 编译原理(龙书)
  • Parsing Techniques: A Practical Guide
  • Engineering A Complier
  • 编译器构造(Java语言版)
  • llvm Cookbook
  • Types and Programming Languages
  • The Optimal Implementation of Functional Programming Languages

垃圾回收

  • 垃圾回收算法手册:自动内存管理的艺术

分布式系统与并行算法

  • 分布式系统:概念与设计
  • 分布式系统原理与范型
  • 深入理解并行编程
  • 并行程序设计导论

打钩的为必读书籍

发表评论

电子邮件地址不会被公开。 必填项已用*标注