计算机学习入门、进阶、Android开发及其它

注:根据自己粗浅的经验,给师弟师妹写了一篇文章,贴到此处。

 一、计算机基础知识

一个典型的计算机专业本科学生掌握的主要有5方面,构成了计算机能力的基础。

  1. 一门静态语言

尤其以C++Java为主。C语言是C++的完整子集,所以可以直接学习C++C++4个层次如表1

1C++语言的4个层次

次语言

范围

C

内置数据类型,数组以及指针等。

pass-by-value更高效)

Object-oriented C++

类相关性质(pass-by-reference-to-const更高效)

Template C++

泛型编程(pass-by-reference-to-const更高效)

STL

template程序库,containersiteratorsalgorithmsfunction objects(函数对象)。

iterators function objects(函数对象)是在C指针基础上构建,所以(pass-by-value更高效)。

  Java是一门纯粹面向对象的语言,从历史沿革来讲,Java舍弃了C++中复杂的指针操作,实现了对象的自动释放,更利于学习。不过,C++Java更底层,所以一般认为执行效率比Java高。Java的方向主要是分布式系统、网站开发(即J2EE),Android开发,桌面系统(即j2SE),不过,直接用java开发大型桌面系统比较少见。

  1. 数据结构

    从简单的数组、堆、链表、队列、栈、哈希表,到稍有难度的二叉树、二叉搜索树、红黑树等树形结构,再到更复杂深度优先、广度优先、单源最短路径等图论知识。

   编程过程中,基本的数组、堆、链表、队列、栈、哈希表等在静态语言中都已经被实现,开发者不用自己实现,不过实际上需要自己写数据结构的机会仍然比较多。

  1. 算法

  不懂算法,不能称之为工程师。算法从最简单的快速排序、堆排序、归并排序等排序算法,到与数据结构相关的处理算法,再到更复杂的动态规划算法、贪心算法等。

  就目前来讲,互联网公司的算法工程师职位一般特指大数据、自然语言处理方向的算法工程师。

  1. 操作系统

  程序设计中的进程、线程、内存管理、运行时等核心内容都来源于操作系统,WindowsAndroidIOSLinux都是操作系统抽象的实现。

  1. 计算机网络

  计算机网络需要知道TCP/IP参考模型,其中最核心的内容是传输层,尤其是TCPUDP协议。

从以上5个方面的内容来看,最能衡量一个人编程能力的是数据结构和算法,最能衡量一个人对计算机理解的是操作系统,而熟练掌握一门静态语言是每个程序员的标配。下面是推荐书籍。

2,书籍推荐

内容

书籍

备注

C++

C++Primer.Plus》,作者Stephen 

Prata,适合入门和深入。

集成开发环境(IDE)可以采用“code:block”,适合学习语言本身;Visual Studio,适合做项目。

Java

Java 7入门经典》,作者Ivor Horton,适合入门和深入。

集成开发环境(IDE)选择Eclipse

数据结构和算法

《算法导论》,英文名《Introduction to Algorithms》,作者Thomas H.Cormen

虽然叫做导论,却非常丰富,包括了算法和数据结构两方面内容,是MIT计算机教材。翻译很滥,英文看起来很过瘾,建议中文和英文对比着看。

操作系统

 

《现代操作系统(第三版)》《Modern.Operating.Systems,3rd.Edition》,作者Andre S.TANENBAUM

重点是理解宏观概念,不必拘于细节。可以中英文版本对比阅读。

计算机网络

《计算机网络》,作者Andrew S.TANENBAUM

适合全面了解整个计算机网络

计算机网络

Java网络编程精解》,作者孙卫琴

2007年的一本书,比较旧。可以练习Socket编程。

二、    Android开发

   任何一个只懂Java语言的本身开发者都可以从事基础的Android开发,不过会遇到更多的问题。

Android开发的参考资料基本都翻译自Google提供的官方指南和培训。但对于初学,可以采用的入门教材是李刚的《疯狂Android讲义》,要注意的是其中的开发环境仍然是Eclipse,而新的Google官方集成开发环境Android Studio已经更新到了2.0版本,非常友好。

    最好的开发学习资料就是Google官方指南。其中Tools是讲解Android Studio的安装使用的,Training是培训课程,API Guide是相关API的讲解。

三、    技术发展

   计算机行业知识更新速度很快,尤其是互联网行业竞争激烈,需要不断保持学习状态。随着年龄的增长,可能会力不从心。一旦出现这种情况,可能需要转型成产品经理、项目负责人、技术负责人等几个方向,

  很多如果一直从事技术工作,我总结从业者技术进阶有几个阶段。

  • 码畜

  只会一些简单的业务代码,以量取胜,人员基本来自于各大培训机构,人员构成大多是高中、中专等辍学者,另外一批是羡慕互联网高薪,轻率转行却没有打下基础的人员。

  • 码农

    具备基本的计算机基础知识,对相关领域比较熟悉,但是仍然停留在API调用阶段,不熟悉设计模式、软件架构等抽象内容,英文单词是“developer”,也可以成为“API小王子

  • 程序员

    英文单词是“Programmer”,已经跨过了API调用阶段,熟悉多线程,会独立写核心库,对设计模式和软件架构比较了解,可以独立完成软件设计和编码。

  • 架构师

      熟悉某方向软件开发的方方面面,可以领导团队进行技术选型、项目开发等工作。

  • 技术总监

     自己体会。


  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值