学知识前总想说点鸡汤,想喝的朋友就看看,不想喝的就直接看干货吧,就当鸡汤是给我本身喝的。javascript
前段时间在网上看了一句话感受挺触动个人,我作个分享:php
若是你以为你的祖国很差,你就去建设它;html
若是你以为政府很差,你就去考公务员去作官;前端
若是你以为人民没素质,就从你开始作一个高素质的公民;java
若是你以为同胞愚昧无知,就从你开始学习并改变身边的人,python
她(他,它)有缺点,咱们一块儿修正,而不是一昧的谩骂,抱怨,逃离。c++
横眉冷对千夫指,俯首甘为孺子牛。程序员
“你所站立的地方,正是你的中国;web
你怎么样,中国便怎么样;数据库
你是什么,中国即是什么;
你若光明,中国便不黑暗”,
愿中国青年都摆脱冷气,只是向上走,没必要听自暴自弃者流的话。
能作事的作事,能发声的发声。
有一分热,发一分光,就像萤火通常,
也能够在黑暗里发一点光,没必要等候炬火。
此后如竟没有炬火,咱们即是惟一的光。
虽然抄了一遍,依然振奋不已,我虽是小小大学生,小小程序员,可我愿意传递充满正能量的光,从我作起!
话接上文,上文《走进编程的殿堂》中,我用自导自演的大白话讲了编程语言的演化过程,我想看完上篇,你们对编程语言有了必定的认识,那接下来,我来详细介绍一下有哪些高级语言以及他们的适用环境。
在了解诸多编程语言以前,我强烈建议朋友们先看一下我以前给大一学弟学妹们写过的一篇博客《在你迷茫时不如学好一门语言》,学习之道就在此篇博客之中。固然,看完以后还没领悟的朋友也不用急,此次我写的是基础教程,是专门针对未入门的新手用来入门学习的,我会一步一步引导你掌握学习编程语言的精髓的。
若是此时看此篇博客的你真的是一个完彻底全的新手,我在后面介绍的这些你能够换种思惟去了解,不至于让你越看越迷茫。以前的博客《走进编程的殿堂》http://www.javashuo.com/article/p-vkcpgmup-cc.html中我已经说过,编程语言它首先是语言,你能联想到咱们常说的汉语、英语、法语等编程语言。区别只在于面对的交流对象不一样,那如今说到高级语言,也有不少种,上边排行榜中所示的都是高级语言,你能够这样理解,就说咱们中国吧,咱们的通用语言是汉语,只要是中国人,都能明白。那汉语就比如是机器语言,可是因为地域的不一样,不一样的地域有不一样的方言,好比说普通话、青海方言、河南方言等等吧,有不少种不一样的方言,这就比如是那些高级语言,你须要作的,就是首先了解有哪些“方言”,这些方言适用于哪一种“环境”,明白了以后针对需求,去学习相应的“方言”便可,可是无论学哪一种“方言”,最终目的只有一个,那就是跟你要交流的对象进行交流。因此你要明白,没有最好的语言,只有在不一样的环境场景下最适合的语言,就比如是一个修车厂,修车的工具备不少,你要作的就是先要知道修什么部位用什么工具,而后若是你不会用,就看对应工具的使用说明书,这就是学习的过程,等你会用了,问题天然迎刃而解了,编程语言亦是同理,要知道学会驾驭工具,不要作工具的“奴隶”。好,说这么多,就是给下面介绍编程“工具”作铺垫的,我要开始介绍高级语言了:
C 语言是一种通用的高级语言,最初是由丹尼斯·里奇在贝尔实验室为开发 UNIX 操做系统而设计的。UNIX 操做系统,C编译器,和几乎全部的 UNIX 应用程序都是用 C 语言编写的。因为各类缘由,C 语言如今已经成为一种普遍使用的专业语言。
C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不一样。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少许的机器码以及不须要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速,工做量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言至关。C语言通常只比汇编语言代码生成的目标程序效率低10%~20%。所以,C语言能够编写系统软件。
特色:
易于学习,进行结构化编程
c语言所产生的代码运行速度与汇编语言编写的代码运行速度几乎同样
预编译处理使C语言更有弹性
优势:
代码量小
生成目标代码质量高,运行速度快
功能强大
跨平台,可移植性强
使用指针,灵活性强
容许直接访问物理地址,对硬件进行操做
缺点:
数据安全性有很大问题
语法限制不严格,映像程序安全性
指针太过灵活,初学难度有点大
C++编程语言,做为C语言的加强版本,是由丹麦计算机科学家本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)设计和开发的。它历经四年的开发时间,从1979年开始,直到1983年发布。
C++既能够进行C语言的过程化程序设计,又能够进行以抽象数据类型为特色的基于对象的程序设计,还能够进行以继承和多态为特色的面向对象的程序设计。
特色:
支持数据封装和数据隐藏
支持集成和重用
面向对象
支持多态性
C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。
优势:
类型检查比c语言更加严格
增长了面向对象机制
增长了泛型编程机制
增长了函数重载和运算符重载
异常处理
提供了标准库STL
缺点:
没有垃圾回收机制,可能引发内存泄漏
C++主要用于开发:
游戏
驱动程序
Client-Server应用程序
系统软件
应用软件
嵌入式固件
Java是由加拿大的一位计算机科学家詹姆斯·高斯林(James Gosling)设计和开发的,当时他正在为Sun微系统公司工做。
Java这种语言可让编码人员“编写一次,并在任何地方运行”,也就是咱们所熟知的“Write once, Run anywhere”(简称WORA)。这代表它编译的代码几乎能够在任何平台上运行,而无需从新编译。正是由于这一点,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 坑过。
特性:
纯面向对象
支持分布式
跨平台,移植性强
是一门编译性语言
支持多线程,高性能
优势:
面向对象
稳健、安全、可移植、高性能
跨平台
编译型静态语言
缺点:
编译速度慢
Java主要用于应用程序开发,例如:
桌面应用程序
网站应用程序
安卓应用程序
大数据操做
云计算
机器人科学和技术
Python编程语言发布于十几年前,此后它有了长足的发展。它是由荷兰程序员吉多·范·罗苏姆(Guido van Rossum)设计和开发的。
它被认为是一种高级语言,用于“粘合”其余语言以链接到大型现有软件组件。
另外,它是一种面向对象的编程语言(OOP)。众所周知,它为开发人员提供了大量有用的库。
Python 的优点:
Python 学习简单,被誉为 “最易学习的语言”,它的语法很是清晰易读,能够减小学习时间和维护成本。
Python 的不足:
Python 存在一些只在特定状况下才会出现(没法重现)的 bug
职业路线:
(1)用 Django 框架进行 Web 开发:和 Java 没什么两样。
(2)用 PIL 框架进行图形处理
(3)物联网:Raspberry Pi 等物联网平台都选择了 Python 做为开发语言
(4)Python 有一个无所不能的 Hack 库,若是认为 “打工时不可能打工的” 就去当一个自由的黑客吧
特性:
解释性语言
拥有丰富的库
跨平台
可移植、可扩展
支持GUI编程
可嵌入
优势:
简单,易学
免费,开源
可移植性强
属于解释性的一门动态语言
面向对象
拥有丰富的库
强制性缩进代码使得代码规范
缺点:
运行速度慢
国内市场小
中文资料匮乏
Python还有不少其它应用场景,好比在应用程序开发,多重范式编程,强大的标准库,数据库访问以许多其它场景。
若是没有JavaScript这个老牌的编程语言,网站行业将走向何方?
Javascript也是一种面向对象的编程语言,由美国技术专家布兰登·艾奇(Brendan Eich)建立。有趣的是,它借鉴了Java语言的一些思想。当时Java语言很是流行,因此它“利用”Java的名声来得到了人们的注意,并所以取了个JavaScript的名称。
“Java之于JavaScript就比如Car(汽车)之于Carpet(地毯 )”。
JavaScript不能用来建立独立的应用程序,它只能在浏览器上运行,其主要目的是使浏览器具备交互能力。它也能够用来更改和更新HTML和CSS。
JavaScript之因此如此流行的主要缘由之一是它的速度。它在浏览器中当即运行,不须要在客户端编译。
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一些功能牺牲
有不少很棒的JavaScript框架能够供人们使用,例如:
Angular
React
VueJs
Ember
Node.js
Aurelia
Backbone.js
C#编程语言是一种微软公司开发的程序设计语言,它是一种介于C++语言和C语言之间的混合体。
C#容许开发人员和编码人员构建在.NET框架上运行的很是安全的应用程序,如XML web服务,client-server应用程序,Windows客户端应用程序等等。
通常来讲,C#易于学习,但也很复杂。这合乎常理吗?C#有不少特性,可让学习它变得容易。
C#是一种高级语言,阅读代码相对来讲很容易。大部分复杂的任务已经被剥离,因此程序员没必要担忧它们。好比说,其中一个复杂的任务是内存管理。若是你使用C#,你就少了一件让你担忧的事,由于.NET的垃圾回收机制已经帮你处理了。
C#的优点:
C#的最大优点在于全面集成.Net 库,提供出色的功能与完美的库访问能力;VR 时代的到来让 Unity-3d 开发者有很好的发展前景。
C#的不足:
因为集成.Net 库形成跨平台能力太差;目前.Net 在国内就业环境不太好,收入较低。
职业路线:
(1)招聘网站上常见的 “招聘 C#开发” 和 “招聘.Net 开发” 指的都是狭义的 C#开发——基于.Net 框架的后台开发。
(2)Unity-3d 也用 C#做为开发语言,除了能开发 3D 游戏,在 VR 时代也会大放光芒。
PHP的全称是“PHP: Hypertext Preprocessor(超文本预处理器)”的缩写,它是由丹麦程序员拉斯马斯·勒德尔夫(Rasmus Lerdorf)建立的。
它是一种用于Web开发的开源多用途脚本语言。它能够从服务器端执行并嵌入到HTML代码中。
PHP语言一个很是普通的用途是在网页上从数据库中提取数据。
PHP 的优点:
PHP 学习简单,易于快速上手;历久弥新的 PHP 拥有庞大而活跃的官方社区,开发者面临的大部分难题都有现成的解决方案,不少十几年前的解决方案在当代也有指导意义。
PHP 的不足:
PHP 的运行速度比较慢;PHP 的错误处理机制比较糟糕,觉得 PHP 须要支持大量旧版本的功能。
职业路线:
(1)适合进行 Web 开发,配合 Node.js 效果更佳。
特性:
独特的语法:混合了c、java\perl以及php自创的新的语法
与其余编程语言相比,更快速的执行动态网页
php支持几乎全部流行的数据库以及操做系统
能够用c、c++进行程序扩展
优势:
php是一个免费开源语言
开发快,运行快,语法简单,方便学习
跨平台,效率高
具备不少成熟框架
有成熟社区支持php的开发
缺点:
php是个单进程的程序,不支持多线程
只支持作web开发,不方便作.exe问件、桌面应用程序、手机程序
不适合作爬虫、自动运行脚本
后期维护比较困难,后期提速空间局限性大
使用PHP脚本的主要地方有三个:
服务器端脚本:这是PHP语言最流行和最传统的领域。你须要三个东西来完成这项工做:PHP解析器(CGI或服务器模块,你本身选择),Web服务器和浏览器。你须要运行安装了PHP模块的Web服务器,而后你可使用浏览器访问PHP脚本的输出结果。
命令行脚本:你能够用PHP编写一个脚本并直接运行它,无需运行任何服务器或浏览器。你所须要的只是PHP解析器。这种用法很是适合使用cronjob或task scheduler调度的须要反复执行的脚本。
编写桌面应用程:PHP在建立具备图形用户界面的桌面应用程序方面并不广为人知。可是,若是你有适当的知识,而且但愿使用一些高级的PHP特性,那么你可使用PHP-GTK来编写这种类型的程序。
SQL 是一种专精于数据库的特殊目的语言。用于存取数据以及查询、更新和管理关系数据库系统。
SQL 的优点:
存储过程能够重复使用, 可减小数据库开发人员的工做量,开发速度快;SQL 可设定只有某此用户才具备对指定存储过程的使用权,安全性好。
SQL 的不足:
和 Java 语言的大多数设计模式同样,SQL 开发速度是靠牺牲运行速度换来的;不一样数据库系统之间的 SQL 不能彻底相互通用,可移植性差。
职业路线:
(1)掌握了 SQL 能够从事 DBA(Database Administrator,即数据库管理员),主要负责业务数据库从设计、测试到部署交付的全生命周期管理。
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的高效率运行须要占用大量的内存和硬盘空间
调试困难
Go语言
go语言被设计成一门应用于搭载web服务器,存储集群或巨型中央服务器的系统编程语言,在高性能分布式系统领域拥有着极其高效的开发效率
特色:
简洁,快速,安全
自动垃圾回收
函数多返回值
并发编程
反射
语言交互
跨平台
开源
编译型静态语言
优势:
性能优越,go比python快30倍,比java快将近一倍
编译时间很是快
go编写简单,易于学习
对 gPRC 和 protocol Buffers 具备一流支持
GOFMT,强制代码格式
天生支持并发编程
强大的标准库
接近c的运行效率,接近php的开发效率
缺点:
没有主要框架
错误处理机制太原始
垃圾回收器不完善
语法格式要求太过严格,禁止有未使用的变量和多余的import
对象没有构造函数和析构函数
技术比较年轻,有待后续发展
PERL编程语言一样位列2019年最受欢迎的7种编程语言列表!
PERL的第一次出现要追溯到1987年,它是由美国程序员拉里·沃尔(Larry Wall)设计和开发的。
PERL这个名字不是一个正式的缩写,它实际指的是Practical Extraction and Report Language,一种用于文字提取和分析报告的语言。由于名字太长,因此不多有人这样称呼它,一般人们以PERL代替。
通常来讲,PERL是一种很是稳定的跨平台编程语言。它适用于公共部门和私营部门的关键任务项目。
PERL有不少很棒的功能/特性供人们使用,例如:
支持第三方数据库(Oracle、Sybase、Postgres等)的数据库集成接口DBI
对HTML、XML和其余标记语言的良好支持
支持Unicode
Y2K兼容
支持面向过程编程和面向对象编程
经过SWIG提供外部C/C++库的接口
根据维基百科的说法,PERL是“由两种高级通用动态编程语言Perl 5和Perl 6组成的家族”。
*****************************************************************************************************
个人博客园地址:https://www.cnblogs.com/zyx110/