【玖哥乱弹】编程语言间的斗争

在初级程序员阶段,每一个人都不可避免遇到选择编程语言和职业方向的难题。我挑选了几个常见的编程语言,分析了优缺点和职业方向,以供想当程序员的人参考。

C/C++
前端

一句话归纳:大多数中国程序员的第一个语言程序员

C语言是面向过程语言在当代的鲁殿灵光,经常使用于编写操做系统。C++C语言的一个超集,既有指针又有对象使它成为最复杂的语言。数据库

 

C/C++的优点:几乎全部现代编程语言都脱胎于C/C++,所以了解了C/C++,就了解了关于编程语言的一切,很是有利于快速掌握其余各种编程语言。编程

C/C++的不足:听说C/C++发明的时候为了提升入行门槛和行业收入水平刻意制造了学习难度。小程序

 

C/C++的优点:C/C++能够被嵌入任何现代处理器中,几乎全部操做系统都支持C/C++,跨平台性很是好。微信小程序

C/C++的不足:尽管C语言体型小巧,可最常使用的C++规模可观且拥有大量极为复杂的功能交互方式,容易形成资源浪费。设计模式

 

职业路线:浏览器

(1)首推Unix/Linux等操做系统软件的开发和嵌入式开发。安全

2Android ROM的定制,以及Android AppNDK开发。服务器

3)用Cocos2d-x开发游戏也是C++程序员的好出路。

 

Java

一句话归纳:最长寿的语言

Java是最典型的面向对象语言。Java不只吸取了C++语言的各类优势,还摒弃了C++里难以理解的多继承、指针等坑爹概念。今明两年毕业的大学生大可能是Java的同龄人(1995年)。

 

Java的优点:Java平台不断迎来新功能,好比移动互联网时代的Android,大数据时代的Hadoop,人工智能时代的TensorFlow

Java的不足:国内Java及其衍生技术的就业环境被培训班破坏得太厉害,培训班HR曾问我:“Android不吃香了,你能推荐几个Hadoop讲师吗?”

 

Java的优点: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取代,而且近年培训班形成了低水平Android程序员的泛滥。

3)在大数据时代,Java可用于Hadoop的开发,前景很是广阔,但可能有泛滥的趋势。

4)在人工智能时代,Java可用于TensorFlow深度学习的开发。

 

C#

一句话归纳:自称不是JavaJava语言

C#是微软看到Java太火了而发明的和Java语法差很少的语言。

 

C#的优点:C#的最大优点在于全面集成.Net库,提供出色的功能与完美的库访问能力。

C#的不足:因为集成.Net库形成跨平台能力太差。

 

C#的优点:VR时代的到来让Unity-3d开发者有很好的发展前景。

C#的不足:目前.Net在国内就业环境不太好,收入较低。

 

职业路线:

1)招聘网站上常见的“招聘C#开发”和“招聘.Net开发”指的都是狭义的C#开发——基于.Net框架的后台开发。

2Unity-3d也用C#做为开发语言,除了能开发3D游戏,在VR时代也会大放光芒。

 

JavaScript

一句话归纳:不是Java语言的语言。

JavaScript是一种动态类型、弱类型、基于原型的直译式脚本语言,也是使用频率最高的给HTML网页增长动态功能的语言。外行最常闹的笑话是觉得它是Java语言的分支。

 

JavaScript的优点:做为脚本语言,JavaScript可当即运行而无需等待服务器响应,速度很是出色。

JavaScript的不足:代码在用户电脑上运行,可能会被别有用心的坏人恶意利用。

 

JavaScript的优点:JavaScript是动态类型语言,学习难度低。而且掌握了JavaScript语言就等于成为能同时开发网页(HTML5)、后台(Node.js)、移动端(React NativeWeex)的全栈工程师。

JavaScript的不足:JavaScript过于依赖浏览器,在不一样的浏览器上有不一样的表现。

 

职业路线:

1)首选HTML5的初心:网站和手机站的前端页面开发。

2)用Node.jsBmob云端代码进行后台开发

3)基于React NativePhoneGapWeexHBuilderAppCan进行移动开发,只需写一遍代码,就有AndroidiOS两个软件

4)微信开发:包括微信公众号、微信小游戏、微信小程序。不要把这个方向当成中国特点方向,国外的Android机也是须要PWA开发的。

5)若是以上四样全能作到,那么你就是全栈工程师。

 

SQL

一句话归纳:数据库离不开的语言

SQL是一种专精于数据库的特殊目的语言。用于存取数据以及查询、更新和管理关系数据库系统。

 

SQL的优点:存储过程能够重复使用,可减小数据库开发人员的工做量,开发速度快。

SQL的不足:和Java语言的大多数设计模式同样,SQL开发速度是靠牺牲运行速度换来的。

 

SQL的优点:SQL可设定只有某此用户才具备对指定存储过程的使用权,安全性好。

SQL的不足:不一样数据库系统之间的SQL不能彻底相互通用,可移植性差。

 

职业路线:

1)掌握了SQL能够从事DBADatabase Administrator,即数据库管理员),主要负责业务数据库从设计、测试到部署交付的全生命周期管理。

 

Python

一句话归纳:须要拿着游标卡尺学习的语言

Python是一款服务器端解释型开源非编译脚本语言。它常被昵称为胶水语言,可以把用其余语言制做的各类模块(尤为是C/C++)很轻松地联结在一块儿。

 

Python的优点:Python学习简单,被誉为“最易学习的语言”

Python的不足:Python存在一些只在特定状况下才会出现(没法重现)的bug

 

职业路线:

1)用Django框架进行Web开发:和Java没什么两样。

2)用PIL框架进行图形处理

3)物联网:Raspberry Pi等物联网平台都选择了Python做为开发语言

4Python有一个无所不能的Hack库,若是认为“打工时不可能打工的”就去当一个自由的***吧

 

PHP

一句话归纳:世界上最好的语言

PHP是一种通用开源脚本语言。语法吸取了C语言、JavaPerl的特色,利于学习,使用普遍,主要适用于Web开发领域。号称“世界上最好的语言”

 

PHP的优点:PHP学习简单,易于快速上手。

PHP的不足:PHP的运行速度比较慢。

 

PHP的优点:历久弥新的PHP拥有庞大而活跃的官方社区,开发者面临的大部分难题都有现成的解决方案,不少十几年前的解决方案在当代也有指导意义。

PHP的不足:PHP的错误处理机制比较糟糕,觉得PHP须要支持大量旧版本的功能。

 

职业路线:

1)适合进行Web开发,配合Node.js效果更佳。

 

Objective-CSwift

一句话归纳:被培训班害苦了的语言

Objective-CSwift都是OS XiOS系统上的专用语言。Objective-C在三年前是国内收入最高的语言,从去年开始大量培训班输出了一大堆“三年经验”的速成“iOS工程师”成了脉脉匿名区的笑话。

 

Objective-C的优点:苹果提供了丰富的工具和库以便开发者使用Objective-C开发软件。

Objective-C的不足:Objective-C拥有本身独特的编程方法思路,与其余编程语言思路差异较大。

 

Swift的优点:随着时间推移,SwiftiOSOS X软件中占的代码比例会愈来愈多。

Swift的不足:版本更迭太快,不一样版本差异过大,近年发生过几回“从精通到从新入门”的状况。

 

Objective-CSwift的优点:由于仅须要在少数平台上运行,不容易遇到兼容性问题。

Objective-CSwift的不足:这俩语言的就业环境被培训班完全毁了,如今才开始学这两种语言可能会有像20076000点时入市的散户的结局。

 

职业路线:

1)这两种语言都是专为iOSOS X服务的,入行前记得先准备一台苹果电脑和苹果开发者帐号。近年培训班形成了低水平Objective-CSwift程序员的泛滥。

 

Kotlin

一句话归纳:运行在JVM但不是Java的语言

Kotlin 是最新问世的一个基于JVM的编程语言,专用于开发Android

 

Kotlin的优点:和Java的互操做性极佳。其余JVM语言都实现了本身语言的标准库。而Kotlin则使用Java的标准库,只是对其进行了扩充。更轻巧,Apk更小。

Kotlin的不足:同时可能也继承了Java比较坑爹的东西。

 

Kotlin的优点:由于弱化了数据类型,学习成本较Java低。

Kotlin的不足:能且仅能在Android Studio 3.0上运行,这点有点像易语言。

 

职业路线:

1)只能用来开发Android。即便你想干点别的,除了Android Studio 3.0 还有别的编译器吗?

相关文章
相关标签/搜索