主流编程语言的介绍及特点
1.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++ 程序员的好出路。
C
C 语言是一种通用的高级语言,最初是由丹尼斯·里奇在贝尔实验室为开发 UNIX 操作系统而设计的。UNIX 操作系统,C编译器,和几乎所有的 UNIX 应用程序都是用 C 语言编写的。由于各种原因,C 语言现在已经成为一种广泛使用的专业语言。
C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。
特点:
易于学习,进行结构化编程
c语言所产生的代码运行速度与汇编语言编写的代码运行速度几乎一样
预编译处理使C语言更有弹性
优点:
代码量小
生成目标代码质量高,运行速度快
功能强大
跨平台,可移植性强
使用指针,灵活性强
允许直接访问物理地址,对硬件进行操作
缺点:
数据安全性有很大问题
语法限制不严格,映像程序安全性
指针太过灵活,初学难度有点大
c++
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。
特点:
支持数据封装和数据隐藏
支持集成和重用
面向对象
支持多态性
C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。
优点:
类型检查比c语言更加严格
增加了面向对象机制
增加了泛型编程机制
增加了函数重载和运算符重载
异常处理
提供了标准库STL
缺点:
没有垃圾回收机制,可能引起内存泄漏
2.Java
一句话概括:最长寿的语言
Java 是最典型的面向对象语言。Java 不仅吸收了 C++ 语言的各种优点,还摒弃了 C++ 里难以理解的多继承、指针等坑爹概念。今明两年毕业的大学生大多是 Java 的同龄人(1995 年)。
Java 的优势:
Java 平台不断迎来新功能,比如移动互联网时代的 Android,大数据时代的 Hadoop,人工智能时代的 TensorFlow;Java 是世界上使用范围最广的语言——Java 环境安装时那句 “3 Billion Devices Run Java” 谁没见过?
Java 的不足:
国内 Java 及其衍生技术的就业环境被培训班破坏得太厉害,培训班 HR 曾问我:“Android 不吃香了,你能推荐几个Hadoop 讲师吗?”Java 占用大量内存,并且启动时间较长——搞 Android 的都被 Windows 系统中的 Android AVD 坑过。
特性:
-
纯面向对象
-
支持分布式
-
跨平台,移植性强
-
是一门编译性语言
-
支持多线程,高性能
优点:
-
面向对象
-
稳健、安全、可移植、高性能
-
跨平台
-
编译型静态语言
缺点:
-
编译速度慢
3.Python
一句话概括:需要拿着游标卡尺学习的语言
Python 是一款服务器端解释型开源非编译脚本语言。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
Python 的优势:
Python 学习简单,被誉为 “最易学习的语言”
Python 的不足:
Python 存在一些只在特定情况下才会出现(无法重现)的 bug
职业路线:
(1)用 Django 框架进行 Web 开发:和 Java 没什么两样。
(2)用 PIL 框架进行图形处理
(3)物联网:Raspberry Pi 等物联网平台都选择了 Python 作为开发语言
(4)Python 有一个无所不能的 Hack 库,如果认为 “打工时不可能打工的” 就去当一个自由的黑客吧
特性:
-
解释性语言
-
拥有丰富的库
-
跨平台
-
可移植、可扩展
-
支持GUI编程
-
可嵌入
优点:
-
简单,易学
-
免费,开源
-
可移植性强
-
属于解释性的一门动态语言
-
面向对象
-
拥有丰富的库
-
强制性缩进代码使得代码规范
缺点:
-
运行速度慢
-
国内市场小
-
中文资料匮乏
4.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)如果以上四样全能做到,那么你就是全栈工程师。
优点:
-
减少网络数据传输
-
javascript可以方便的操纵HTML对象
-
支持分布式运算
缺点:
-
各浏览器对javascript支持程度不同
-
“web安全性”对javascript一些功能牺牲
5.SQL
一句话概括:数据库离不开的语言
SQL 是一种专精于数据库的特殊目的语言。用于存取数据以及查询、更新和管理关系数据库系统。
SQL 的优势:
存储过程可以重复使用, 可减少数据库开发人员的工作量,开发速度快;SQL 可设定只有某此用户才具有对指定存储过程的使用权,安全性好。
SQL 的不足:
和 Java 语言的大多数设计模式一样,SQL 开发速度是靠牺牲运行速度换来的;不同数据库系统之间的 SQL 不能完全相互通用,可移植性差。
职业路线:
(1)掌握了 SQL 可以从事 DBA(Database Administrator,即数据库管理员),主要负责业务数据库从设计、测试到部署交付的全生命周期管理。
6.PHP
PHP 是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,利于学习,使用广泛,主要适用于 Web 开发领域。号称 “世界上最好的语言”
PHP 的优势:
PHP 学习简单,易于快速上手;历久弥新的 PHP 拥有庞大而活跃的官方社区,开发者面临的大部分难题都有现成的解决方案,很多十几年前的解决方案在当代也有指导意义。
PHP 的不足:
PHP 的运行速度比较慢;PHP 的错误处理机制比较糟糕,以为 PHP 需要支持大量旧版本的功能。
职业路线:
(1)适合进行 Web 开发,配合 Node.js 效果更佳。
特性:
独特的语法:混合了c、javaperl以及php自创的新的语法
与其他编程语言相比,更快速的执行动态网页
php支持几乎所有流行的数据库以及操作系统
可以用c、c++进行程序扩展
优点:
php是一个免费开源语言
开发快,运行快,语法简单,方便学习
跨平台,效率高
具有很多成熟框架
有成熟社区支持php的开发
缺点:
php是个单进程的程序,不支持多线程
只支持做web开发,不方便做.exe问件、桌面应用程序、手机程序
不适合做爬虫、自动运行脚本
后期维护比较困难,后期提速空间局限性大
7.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 时代也会大放光芒。
8.JSP
JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。
特点:
JSP可以直接在HTML网页中动态嵌入元素
JSP 基于Java Servlet API,因此,JSP拥有各种强大的企业级Java API,包括JDBC,JNDI,EJB,JAXP等等。
JSP页面可以与处理业务逻辑的 Servlet 一起使用,这种模式被Java servlet 模板引擎所支持。
优点:
一次编写,到处运行。除了系统之外,代码不用做任何更改。
跨平台,支持多种网页格式,jsp标签可扩展性
强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。
具有非常多的免费优秀的开发工具,并且可以顺利的运行于多平台
支持服务器端组件
缺点:
增加产品的复杂性
java的高效率运行需要占用大量的内存和硬盘空间
调试困难
9. go
go语言被设计成一门应用于搭载web服务器,存储集群或巨型中央服务器的系统编程语言,在高性能分布式系统领域拥有着极其高效的开发效率
特点:
简洁,快速,安全
自动垃圾回收
函数多返回值
并发编程
反射
语言交互
跨平台
开源
编译型静态语言
优点:
1.性能优越,go比python快30倍,比java快将近一倍
2. 编译时间非常快
3. go编写简单,易于学习
4. 对 gPRC 和 protocol Buffers 具有一流支持
5. GOFMT,强制代码格式
6. 天生支持并发编程
7. 强大的标准库
8. 接近c的运行效率,接近php的开发效率
缺点:
没有主要框架
错误处理机制太原始
垃圾回收器不完善
语法格式要求太过严格,禁止有未使用的变量和多余的import
对象没有构造函数和析构函数
技术比较年轻,有待后续发展