几种主流编程语言的优势与不足
几种主流编程语言的优势与不足
转载地址:http://blog.csdn.net/dongfeng9ge/article/details/74634563
在初级程序员阶段,每个人都不可避免遇到选择编程语言和职业方向的难题。我挑选了几个常见的编程语言,分析了优缺点和职业方向,以供想当程序员的人参考。
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/
等操作系统软件的开发和 。
(
2
)
ROM
的定制,以及
App
的
NDK
开发。
(
3
)用
Cocos2d-x
开发游戏也是
C++
程序员的好出路。
一句话概括:
最长寿的语言
Java
是最典型的面向对象语言。
Java
不仅吸收了
C++
语言的各种优点,还摒弃了
C++
里难以理解的多继承、指针等坑爹概念。今明两年毕业的大学生大多是
Java
的同龄人(
1995
年)。
Java
的优势:
Java
平台不断迎来新功能,比如移动互联网时代的
Android
, 时代的
,人工 时代的
TensorFlow
。
Java
的不足:国内
Java
及其衍生技术的就业环境被培训班破坏得太厉害,培训班
HR
曾问我:“
Android
不吃香了,你能推荐几个
讲师吗?”
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#
一句话概括:
自称不是
Java
的
Java
语言
C#
是微软看到
Java
太火了而发明的和
Java
语法差不多的语言。
C#
的优势:
C#
的最大优势在于全面集成
.Net
库,提供出色的功能与完美的库访问能力。
C#
的不足:由于集成
.Net
库造成跨平台能力太差。
C#
的优势:
时代的到来让
Unity-3d
开发者有很好的发展前景。
C#
的不足:目前
.Net
在国内就业环境不太好,收入较低。
职业路线:
(
1
)招聘网站上常见的“招聘
C#
开发”和“招聘
.Net
开发”指的都是狭义的
C#
开发——基于
.Net
框架的后台开发。
(
2
)
Unity-3d
也用
C#
作为开发语言,除了能开发
3D
游戏,在
VR
时代也会大放光芒。
一句话概括:
不是
Java
语言的语言。
是一种动态类型、弱类型、基于原型的直译式脚本语言,也是使用频率最高的给
HTML
网页增加动态功能的语言。外行最常闹的笑话是以为它是
Java
语言的分支。
JavaScript
的优势:作为脚本语言,
JavaScript
可立即运行而无需等待服务器响应,速度非常出色。
JavaScript
的不足:代码在用户电脑上运行,可能会被别有用心的坏人恶意利用。
JavaScript
的优势:
JavaScript
是动态类型语言,学习难度低。并且掌握了
JavaScript
语言就等于成为能同时开发网页(
)、后台(
)、移动端(
Native
、
Weex
)的全栈工程师。
JavaScript
的不足:
JavaScript
过于依赖浏览器,在不同的浏览器上有不同的表现。
职业路线:
(
1
)首选
的初心:网站和手机站的前端页面开发。
(
2
)用
或
Bmob
云端代码进行后台开发
(
3
)基于
Native
、
PhoneGap
、
Weex
、
HBuilder
、
AppCan
进行 ,只需写一遍代码,就有
Android
和
两个软件
(
4
) :包括 公众号、微信小游戏、微信小程序。不要把这个方向当成中国特色方向,国外的
Android
机也是需要
PWA
开发的。
(
5
)如果以上四样全能做到,那么你就是全栈工程师。
SQL
一句话概括:
离不开的语言
SQL
是一种专精于数据库的特殊目的语言。用于存取数据以及查询、更新和管理关系数据库系统。
SQL
的优势:存储过程可以重复使用
,
可减少数据库开发人员的工作量,开发速度快。
SQL
的不足:和
Java
语言的大多数设计模式一样,
SQL
开发速度是靠牺牲运行速度换来的。
SQL
的优势:
SQL
可设定只有某此用户才具有对指定存储过程的使用权,安全性好。
SQL
的不足:不同数据库系统之间的
SQL
不能完全相互通用,可移植性差。
职业路线:
(
1
)掌握了
SQL
可以从事
DBA
(
Database Administrator
,即数据库管理员),主要负责业务数据库从设计、 到部署交付的全生命周期管理。
一句话概括:
需要拿着游标卡尺学习的语言
是一款服务器端解释型开源非编译脚本语言。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是
C/C++
)很轻松地联结在一起。
Python
的优势:
Python
学习简单,被誉为“最易学习的语言”
Python
的不足:
Python
存在一些只在特定情况下才会出现(无法重现)的
bug
职业路线:
(
1
)用
Django
框架进行
Web
开发:和
Java
没什么两样。
(
2
)用
PIL
框架进行图形处理
(
3
)物联网:
Raspberry Pi
等物联网平台都选择了
Python
作为开发语言
(
4
)
Python
有一个无所不能的
Hack
库,如果认为“打工是不可能打工的”就去当一个自由的黑客吧
一句话概括:
世界上最好的语言
是一种通用开源脚本语言。语法吸收了
C
语言、
Java
和
Perl
的特点,利于学习,使用广泛,主要适用于
Web
开发领域。号称“世界上最好的语言”
PHP
的优势:
PHP
学习简单,易于快速上手。
PHP
的不足:
PHP
的运行速度比较慢。
PHP
的优势:历久弥新的
PHP
拥有庞大而活跃的官方社区,开发者面临的大部分难题都有现成的解决方案,很多十几年前的解决方案在当代也有指导意义。
PHP
的不足:
PHP
的错误处理机制比较糟糕,以为
PHP
需要支持大量旧版本的功能。
职业路线:
(
1
)适合进行
Web
开发,配合
Node.
效果更佳。
和
一句话概括:
被培训班害苦了的语言
和
都是
OS X
和
系统上的专用语言。
Objective-C
在三年前是国内收入最高的语言,从去年开始大量培训班输出了一大堆“三年经验”的速成“
iOS
工程师”成了脉脉匿名区的笑话。
Objective-C
的优势:苹果提供了丰富的工具和库以便开发者使用
Objective-C
开发软件。
Objective-C
的不足:
Objective-C
拥有自己独特的编程方法思路,与其他编程语言思路差别较大。
Swift
的优势:随着时间推移,
Swift
在
iOS
和
OS X
软件中占的代码比例会越来越多。
Swift
的不足:版本更迭太快,不同版本差别过大,近年发生过几次“从精通到重新入门”的情况。
Objective-C
和
Swift
的优势:因为仅需要在少数平台上运行,不容易遇到兼容性问题。
Objective-C
和
Swift
的不足:这俩语言的就业环境被培训班彻底毁了,现在才开始学这两种语言可能会有像
2007
年
6000
点时入市的散户的结局。
职业路线:
(
1
)这两种语言都是专为
iOS
和
OS X
服务的,入行前记得先准备一台苹果电脑和苹果开发者账号。近年培训班造成了低水平
Objective-C
和
Swift
程序员的泛滥。
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
还有别的编译器吗?