软件开发专家学习路线(开源纯软件)

    要想成为软件开发专家,需要具备过人的知识广度和深度,对老技术基础必须相当扎实,以下是整理的一些老技术要点路线图,仅供参考。

大类

小类

备注

软件基本理论

编译/链接原理

国内的弱点,也是关键点

操作系统基本原理

GNU汇编基础(AT&T)

UNIX

GNU/Linux

Unix及GNU背景

Unix和GNU是开源领域最为重要的先驱,对当今软件界的影响至关重要,是核心灵魂所在

熟练至少一种发行版,ubuntu/centos/redhat

GNU基本工具

gcc

gdb

autotools

Vi/vim

Linux内核及应用开发环境

Uboot

开发语言相关

C/C++

Java对非相关人员,不作强制要求,但是也需要有所了解

Python

Java

Shell

Sed/awk

正则表达式

代码构建管理

Make

 

Cmake

 

Svn

 

Git

 

代码编辑调试

Vim

Vim最为重要,其它看自己需要

Source insight

Eclipse

Notepad

体系结构相关

X86

X86最为重要,其次ARM

ARM

MIPS

网络编程

TCP/IP协议

网络编程涉及面很广,TCP/IP是最为重要的

DNS

Socket

路由技术

应用开发技术

Web相关

Html

非web开发不作要求,但是不能不了解

Css

JavaScript

Django/flask等框架

非web开发无要求

数据库

Mysql

至少熟悉一种数据库

PostgreSQL

Sqlite

MongoDB

协议相关

Tcp

最为重要的基本协议,必须要掌握

Udp

http

Rtp/rtcp/rtsp

看需要

音视频

Ffmpeg

和业务相关,不强制要求

gstreamer

libmad

Linux应用开发

标准C库

Linux开发者强制要求的技能,对相关技术必须熟练掌握

文件操作

进程控制

线程控制

信号

IO复用技术

IPC

Socket网络编程

多用户和安全

数据结构

数据表现

堆栈

 

队列

排序

哈希表

二叉树/红黑树

集合

字典/key-value

Json

Xml

嵌入式相关

理解什么是soc

对嵌入式开发来说,需要熟练掌握

开发板及开发平台搭建

交叉编译原理

发行版构建

Yocto

Openwrt

软件工程

面向对象理论

写的代码清不清爽,关键在于这里

抽象逻辑能力

对事物的本质看法

软件工程模型:UML等

文档相关

doxygen

掌握文档工具是一项很重要的能力

Docbook

Google/baidu

数学能力

初等数学

非算法开发人员,初等数学完全够用,不要为了学数学,路子走偏了

算法相关人员

高等数学

线性代数

微积分

其它数学分支

Matlab

人类语言

英语

英语的重要性,自己体会吧

母语

下面列出针对以上知识点的书籍清单,仅供参考

知识点

书籍名称

编译/链接

《链接器和加载器》

《程序员的自我修养》

《编译原理》

操作系统基本原理

《操作系统设计与实现》

GNU汇编基础

《Professional Assembly Language》

Unix及GNU背景

搜索网络资料和GNU官网:www.gnu.org

Linux发行版

推荐ubuntu,可以vmware安装,平时多使用,书籍没有推荐

Gcc

《GCC:The Complete Reference》和官方文档

Gdb

官方文档

Autotools

《A Practitioner’s Guide To GNU Autoconf, Automake, and Libtool》和官方资料

Linux内核

《linux内核设计与实现》

《深入理解linux内核》

《linux内核完全注释(0.11版本)》

《linux设备驱动程序》

C

《C语言的科学与艺术》

《C和指针》

《编程珠玑》

C++

《C++ primer plus》

《深度探索C++对象模型》

《STL源码剖析》

Python

《python学习手册》

《python核心编程》

Java

《java核心技术》

《java编程思想》

Shell

《shell脚本学习指南》

《Learning The Bash Shell》

Sed/awk

《sed&awk》

《awk程序设计语言》

正则表达式

《精通正则表达式》

Make

官方手册

Cmake

《Mastering Cmake》

《CMake实践》

SVN/GIT

官方资料或者搜索网络资料,很多很多

Vim

官方资料或者搜索网络资料,很多很多

X86体系结构

《Intel Architecture Software Developer’s Manual》卷一~三

ARM

《ARM Architecture Reference Manual》

《ARM体系结构与编程》

MIPS

《MIPS体系结构透视》

《See MIPS Run Linux》

TCP/IP

《TCP/IP详解》卷一~三

网络编程

《UNIX网络编程》

路由技术

《TCP/IP路由技术》

Html

《HTML权威指南》

CSS

《CSS权威指南》

JavaScript

《JavaScript权威指南》

Django

官方资料和《django book 2.0》,在卖书籍也很多,可以选购

Mysql

《SQL学习指南》

MongoDB

《mongoDB权威指南》

http

《http权威指南》

RTP/RTCP

《RTP:Audio and Video for the Internet》

FFMPEG

官方资料

《FFMPEG从入门到精通》

Gstreamer

官方资料

Linux应用开发

《UNIX环境高级编程》

数据结构

《算法导论》和网络资料

Soc相关

参考各个soc芯片的datasheet

Yocto

主要参考官方资料

《嵌入式linux系统开发:基于yocto project》

Openwrt

主要参考官方资料和网络资料

面向对象理论

《面向对象分析与设计》

文档相关

参考网络资料和官方资料

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值