前提:本文是结合大牛自己补充的技术路线,仅供参考。一、技术路线介绍 本节只介绍纯IT领域的技术路线,而对于更高级的技术(例如计算机视觉、机器学习、人工智能等等)不予考虑。 技术路线是一条通往该行业的道路,掌握了处于这条路上的所有技术,就具备了该行业的从业能力。因此,我们可以从各个公司的招聘职位中找到技术路线的分类。 目前,软件开发技术路线主要有:Web后端、Web前端、Android、iOS、Windows客户端、数据库、嵌入式等。本节我们将依次对这些技术路线作简要介绍,具体的学习内容会放到后面章节细讲。1、Web后端 这是当今互联网浪潮中软件开发的主力军。几乎所有互联网公司都要提供基于Web的服务(相对于基于客户端的服务),这些服务的核心就在于Web后端,或称为服务器端。 与Web前端相比,后端程序运行在服务器上,看不见摸不着,但却扮演着至关重要的角色。日常生活中我们用百度搜索、发新浪微博、看腾讯视频、在淘宝购物,这些功能都由后端程序来实现。 Web后端编程又可以根据编程语言的不同分为几大类:Java、PHP、Node.js。 Java是种古老的编程语言,在Web后端的应用也足够久,由于Java代码通常架构清晰、可扩展性强,因此适用于大型Web项目,比如淘宝网就是用Java开发的。 PHP是一种专门用于Web后端的脚本语言,简单易用,适用于小型Web项目。 Node.js是一项新兴技术,采用JavaScript语言开发后端,轻量高效,性能好。 除了这三种主流技术外,使用Ruby on Rails、Python、ASP.NET也可以做后端开发,但并不常用,本文就不予考虑了。2、Web前端 Web前端是个大一统的世界,就是我们常说的 HTML+CSS+JavaScript,最新的版本是HTML5+CSS3+JavaScript。所以前端程序员只要学好了这三门语言,就可以大有作为了。3、Android 在移动互联网时代,Android成为最广泛使用的移动端操作系统,自然需要大量的开发人员。与Java Web类似,Android开发同样使用Java语言。4、iOS iOS是苹果手机的操作系统,由于iPhone推出之后在全球市场备受追捧,iOS开发的需求量也很高,而且通常薪资水平高于Android。iOS过去使用Objective-C开发,近年来苹果公司发布了新的编程语言Swift,开始逐渐替代Objective-C,成为iOS系统的主流开发语言。5、Windows客户端 Windows操作系统几乎占领了个人电脑的绝大部分市场,而Windows客户端编程就是为你的个人电脑编写桌面应用程序,我们日常使用的Office、电脑版QQ、迅雷影音、Photoshop等等都属于这个范畴。 虽然我们每天都在用Windows客户端程序,但在云计算日益发达的今天,客户端已经不再是各个互联网公司首先考虑的平台。与Web相比,客户端显得太笨重,而且无法及时更新。只要是能够通过浏览器提供的服务,就不必考虑开发客户端软件,只有那些运算量、数据量非常大的软件,才需要开发客户端版本。因此Windows客户端开发的岗位需求并不大,主要集中在专业软件领域,比如Adobe公司开发的各种图像处理软件、软件编程IDE、大型企业内部的管理系统等等。 Windows客户端开发的常用技术有:WinForm,Qt。 WinForm是微软官方提供的Windows客户端软件开发框架,采用C#语言,属于.NET框架的一部分。使用Visual Studio开发WinForm程序非常方便、快捷。 Qt是一个跨平台的软件开发框架,一套程序可以同时运行在Windows、Linux、Android、iOS、Windows Phone等主流操作系统上,功能非常强大。对于想开发跨平台客户端的公司来说,使用Qt的确可以节约很多成本。Qt主要使用C++语言实现功能,同时可以选择使用QML语言描述界面。 除了这两种技术,还有MFC、WPF。MFC是微软早期的客户端框架,由于年代久远,开发效率低,现在用的不多了。WPF则是微软推出的比WinForm更优秀的客户端框架,但由于推广不利,至今没有得到广泛使用。因此本文不再考虑这两项技术。6、数据库 数据库开发作为单独的一条技术路线,似乎有些单薄。但鉴于各大互联网公司都有数据库工程师这一职位,所以也把它单独列出来比较好。 实话讲,数据库这一技术路线我不太熟悉,按照我的理解,应该就是针对公司使用某一款数据库系统,比如Oracle,Mysql, 做相关开发和性能优化。7、嵌入式 嵌入式开发更偏底层,似乎离IT越来越远了。但结合现在日益火热的物联网来看,嵌入式将迎来新的高潮。 如果有一些名词你不了解它的意思,请在评论区提问,或自行百度,或者先放着也行。毕竟作为一个编程初学者,这些技术路线恐怕也不太好理解。所以继续往下看吧,等知识积累到一定程度这些概念就自然明白了。本节只对这些技术路线做了大概的介绍,下一节让我们开始踏上学习的道路。

8、大数据

大数据已经很流行了,自己也从事相关工作有段时间了,对java等的要求不是很高,但是要了解计算机常识,会简单的java开发。主要使用的框架是: 离线:Hadoop,Hive, Hbase, Kafka, Kettle, 实时:spark,storm, 主要开发语言:scala,会sql语句做数据etl,python做数据分析的时候用到。

二、编程语言 作为一个什么都不懂的小白,学习编程的第一步当然是掌握一门编程语言。本节就来介绍常见的编程语言的学习路线。首先,先明确一个观点,作为一个程序员,只会一种编程语言是远远不够的。最好精通1~2门语言,基本掌握其它所有常见的语言。1、C语言 信息类专业的大学生通常都会在一年级上C语言这门课,也很可能是大学期间唯一的一门编程语言课。所谓师傅领进门,修行在个人,通过学习C语言迈入编程世界的大门是再合适不过了。虽然也有人提倡学习Python作为第一门编程语言,可我觉得那未免太浮躁了。刚开始应该打好基础,而不是追求炫酷的效果。C语言是一门高级语言,又与计算机硬件息息相关,通过指针操作可以真切感受到数据的流动,这是Python无法做到的。因此,我的建议是,不管今后打算从事哪个技术路线,C语言都是必学的第一门语言。 然而遗憾的是,我由于是在课堂上学的C语言,所以这方面的优秀教材了解的也不多。无论是学校使用的各个版本的《C语言程序设计》,还是国外大牛写的《The C Programming Language》,都未免太过枯燥。据说有一本科普性质的《啊哈C》写的非常通俗易懂,麻烦读过的同学点评一下是否真的如此。其它好的教程也希望同学们帮我补充。2、C# 学完C语言很多人会产生疑问,不知道C语言能干什么。如果不及时消除这一顾虑,恐怕会让大部分人丧失学下去的信心。然而C语言的用途对于初学者来说很难体现出来,所以下一步我们转向C语言的增强版本——C#语言(读音:C sharp)。 C#语言是微软推出的面向对象编程语言。“面向对象”将是一个伴随程序员一生的词汇,因此从此刻开始,我们要随时尝试理解:什么是面向对象。 简单来说,面向对象是相对于面向过程而言的。C语言是一个典型的面向过程语言,因为C程序的执行流程可以很容易地画一张流程框图来表示,它强调程序员编写程序时是面向程序执行过程考虑的。而C#则是一个典型的面向对象语言,C#程序的执行流程通常很难用流程图表示,这是因为程序员编写C#程序时考虑的不是一个完整的从头到尾的执行流程,而是各个对象之间的调用关系。 虽然我已经尽力了,但上面这段话肯定无法让初学者真正理解面向过程和面向对象的关系。不过不要紧,编程思想从来不是纸上谈兵得来的,必须经过充分的实践才能领悟。 幸运的是我收集到了一套完整的C#视频教程,以及后续的WinForm视频教程。学完这两个,就会对面向对象编程有一定的理解。虽然今后并不一定从事Windows客户端的开发,但学习这两个内容可以帮助更好地理解后续更深层次的Java Web和Android。看视频的同时一定要照着在自己电脑上写一遍,这样才能印象深刻。推荐的视频教程:C#基础 密码:87w5WinForm 密码:y6o1。这套视频也许是我看过的最有趣的视频了,希望大家不要错过。

3、Java(建议精通) 如果学过C#再学Java,你会发现两者惊人的相似。Java从难度上来说和C#一样简单(甚至更简单),而用途却比C#广泛得多。这在很大程度上得益于Java的跨平台特性,也使Java成为了Web项目的主力军。推荐的视频教程: 【传智播客黑马训练营Java基础】地址1 官网地址2 百度网盘 密码:fvvw

4、C++(建议精通) 并非每个同学都需要学习C++,Java和C++精通其中一门即可。但C++与Java并不是效能重复的编程语言,相反,它们分别统治着各自的领域,就像Java统治Web领域一样,C++统治着性能敏感的基础设施、视频图像处理等领域。精通Java或C++都不容易(特别是C++,堪称最难编程语言),因此两者择一即可。 C++方面仍然没能找到优秀的视频教程,需要大家帮忙提些建议。倒是有比较优秀的书籍,比如《C++ Primer》,值得一看。推荐的视频教程: 空

5、JavaScript(建议精通) JavaScript是前端开发的利器,对于前端工程师来说,精通JavaScript是必须的。近年来JavaScript甚至蔓延到了后端编程,以Node.js为代表的后端JavaScript框架使它成为全能的编程语言,大有一统江湖之势。 这是与Java和C++一样建议精通的语言,当然只是对前端工程师有这个要求,后端工程师倒不必花太多精力在这上面。

5、Python(可选,用到还是精通好了)

Python是近年来日益火爆的一门编程语言。随着Python库的层出不穷,Python在科学计算、Web、大数据与机器学习等领域都展现了惊人的实力。与Java类似,Python也是一门优秀的面向对象编程语言,而且更简洁。但这不是重点,与前面所有语言不同的是,Python是一门动态类型语言。

前面提到的四种语言C、C#、Java、C++都是静态类型语言,它们需要一个称作“编译器”的东西,把源代码编译成机器码,才能在计算机上运行。而这一特点导致了所有变量都必须事先规定类型,比如我们习以为常的写法

技术路线是技术架构吗 技术路线分类_技术路线是技术架构吗

就事先规定了变量i是int类型。因此它们被称为静态类型语言,即类型是静态的,不能改变。

以Python为代表的动态类型语言则打破了这个限制,我们完全可以直接这样写

技术路线是技术架构吗 技术路线分类_编程语言_02

既不用规定变量类型,又可以随时给它赋不同类型的值,这就是动态类型语言的特点。这样做方便了许多,但代价是Python代码需要运行在Python解释器上,而不是直接运行在CPU上,因此执行效率会低很多,也就是通常说的动态语言比静态语言“慢”。

有了前几种语言的基础,学Python是很简单的事情,因此不必推荐教程了,只要去网上随便搜一篇介绍Python语法的博客看看就搞定了。

推荐的视频教程: http://www.runoob.com/python3/python3-tutorial.html

6、PHP(可选) 程序员中流传着这样一个说法——“PHP是世界上最好的编程语言”。从提出这句话的那一刻起,就免不了一场编程语言界的腥风血雨。以至于PHP似乎成了其它编程语言的敌人,备受人们攻击。然而在这样艰苦的环境中存活下来,而且能占据很大一部分Web市场,只能说PHP有其强大的优势。PHP开发Web项目非常快,而且轻量,是一种脚本语言,嵌入到HTML里面就可以运行。因此小公司使用PHP很容易搭建起自己的Web业务。然而Web项目规模大到一定程度时,PHP就有些难以胜任了,需要Java这样重量级的Web框架才可以支撑。因此,根据应用场景选择合适的技术才是最重要的。 PHP教程尚待发掘…

三、计算机基础 现在才学计算机基础,是不是有点晚? 当然不是,现在刚刚好。有了上面的编程基础,我们才能深入学习计算机体系结构、操作系统、计算机网络、算法等知识,这些知识不像编程那样能看到实际的效果,但却是提升水平的关键。1、计算机体系结构 计算机体系结构告诉我们计算机由哪些硬件组成,它们各自完成什么工作,如何结合成一个有机的整体。它们是物理上真实存在的东西,相当于计算机的骨架,支撑着位于其上的软件系统。 对于程序员来说,这部分知识倒不必过于深入,推荐一本必读书:推荐的教材: 《深入理解计算机系统》 Randal E.Bryant,David R. O’Hallaron 此书是英文版,阅读有压力的话推荐其他类似书籍。

2、操作系统 操作系统是运行在计算机上的最重要的系统软件,从一开机它就开始运行,直到关机才最后一个结束。操作系统对运行于其上的应用软件是至关重要的,从而也导致了Windows和Linux两大派系的世纪之争。学习操作系统,才能更高效地开发应用程序,这一点应该不难理解。推荐的教材: 操作系统方面的课程尚待补充。

3、计算机网络 互联网是这个时代最伟大的发明,学好计算机网络才能胜任今后的各项工作,因为这些工作无一不与互联网相关。这套教程内容很多,讲解非常详细。耐心看完整套教程,你就能看透计算机网络的本质。

推荐一套计算机网络视频教程: 《六个月成为网络专家》 美河制作

4、算法 算法无疑是程序员的基本功,这本书介绍的算法很全面,把它认真读完并最好亲手实践每一个算法,一定会大有收获。

推荐的教材: 《算法导论》