C/C++一句话概括:大多数中国程序员的第一个语言
C语言是面向过程语言在当代的鲁殿灵光,常用于编写操作系统。C++是C语言的一个超集,既有指针又有对象使它成为最复杂的语言。
C/C++的优势:几乎所有现代编程语言都脱胎于C/C++,因此了解了C/C++,就了解了关于编程语言的一切,非常有利于快速掌握其他各类编程语言。C/C++可以被嵌入任何现代处理器中,几乎所有操作系统都支持C/C++,跨平台性非常好。
C/C++的不足:据说C/C++发明的时候为了提高入行门槛和行业收入水平刻意制造了学习难度。尽管C语言体型小巧,可最常使用的C++规模可观且拥有大量极为复杂的功能交互方式,容易造成资源浪费。
职业路线:
(1)首推Unix/Linux等操作系统软件的开发和嵌入式开发。
(2)Android ROM的定制,以及android App的NDK开发。
(3)用Cocos2d-x开发游戏也是C++程序员的好出路。
Java一句话概括:最长寿的语言
Java是最典型的面向对象语言。Java不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等坑爹概念。今明两年毕业的大学生大多是Java的同龄人(1995年)。
Java的优势:Java平台不断迎来新功能,比如移动互联网时代的Android,大数据时代的Hadoop,人工智能时代的TensorFlow。Java是世界上使用范围最广的语言——Java环境安装时那句“3 Billion Devices Run Java”谁没见过?
Java的不足:Java占用大量内存,并且启动时间较长——搞Android的都被Windows系统中的Android AVD坑过。
职业路线:
(1)招聘网站上常见的“招聘java开发”指的就是狭义的Java开发——基于JavaEE的后台开发,以前一度流行过SSH框架和SSM框架,现在入门建议学习SpringMVC框架。
(2)在移动互联网时代,Java可用于Android App开发。但Java之于Android的地位可能被Kotlin取代。
(3)在大数据时代,Java可用于Hadoop的开发,前景非常广阔,但可能有泛滥的趋势。
(4)在人工智能时代,Java可用于TensorFlow深度学习的开发。
C#一句话概括:自称不是Java的java语言
C#是微软看到Java太火了而发明的和Java语法差不多的语言。
C#的优势:C#的最大优势在于全面集成.Net库,提供出色的功能与完美的库访问能力。VR时代的到来让Unity-3d开发者有很好的发展前景。
C#的不足:由于集成.Net库造成跨平台能力太差。目前.Net在国内就业环境不太好,收入较低。
职业路线:
(1)招聘网站上常见的“招聘C#开发”和“招聘.net开发”指的都是狭义的C#开发——基于.Net框架的后台开发。
(2)Unity-3d也用C#作为开发语言,除了能开发3D游戏,在VR时代也会大放光芒。
JavaScript一句话概括:不是Java语言的语言。
javascript是一种动态类型、弱类型、基于原型的直译式脚本语言,也是使用频率最高的给HTML网页增加动态功能的语言。外行最常闹的笑话是以为它是Java语言的分支。
JavaScript的优势:作为脚本语言,JavaScript可立即运行而无需等待服务器响应,速度非常出色。JavaScript是动态类型语言,学习难度低。并且掌握了JavaScript语言就等于成为能同时开发网页(HTML5)、后台(Node.js)、移动端(React Native、Weex)的全栈工程师。
JavaScript的不足:代码在用户电脑上运行,可能会被别有用心的坏人恶意利用。JavaScript过于依赖浏览器,在不同的浏览器上有不同的表现。
职业路线:
(1)首选html5的初心:网站和手机站的前端页面开发。
(2)用node.js或Bmob云端代码进行后台开发
(3)基于react Native、PhoneGap、Weex、HBuilder、AppCan进行移动开发,只需写一遍代码,就有Android和iOS两个软件
(4)微信开发:包括微信公众号、微信小游戏、微信小程序。不要把这个方向当成中国特色方向,国外的Android机也是需要PWA开发的。
(5)如果以上四样全能做到,那么你就是全栈工程师。