学编程的起点——高级语言大锅烩

前言:

学知识前总想说点鸡汤,想喝的朋友就看看,不想喝的就直接看干货吧,就当鸡汤是给我自己喝的。

前段时间在网上看了一句话感觉挺触动我的,我做个分享:

如果你觉得你的祖国不好,你就去建设它;

如果你觉得政府不好,你就去考公务员去做官;

如果你觉得人民没素质,就从你开始做一个高素质的公民;

如果你觉得同胞愚昧无知,就从你开始学习并改变身边的人,

她(他,它)有缺点,我们一起修正,而不是一昧的谩骂,抱怨,逃离。

横眉冷对千夫指,俯首甘为孺子牛。

“你所站立的地方,正是你的中国;

你怎么样,中国便怎么样;

你是什么,中国便是什么;

你若光明,中国便不黑暗”,

愿中国青年都摆脱冷气,只是向上走,不必听自暴自弃者流的话。

能做事的做事,能发声的发声。

有一分热,发一分光,就像萤火一般,

也可以在黑暗里发一点光,不必等候炬火。

此后如竟没有炬火,我们便是唯一的光。

虽然抄了一遍,依然振奋不已,我虽是小小大学生,小小程序员,可我愿意传递充满正能量的光,从我做起!

高级语言大锅烩

话接上文,上文《走进编程的殿堂》中,我用自导自演的大白话讲了编程语言的演化过程,我想看完上篇,大家对编程语言有了一定的认识,那接下来,我来详细介绍一下有哪些高级语言以及他们的适用环境。

2019年9月编程语言排行榜TOP20:

2019年9月编程语言排行榜top10的柱状图

编程语言知多少

在了解诸多编程语言之前,我强烈建议朋友们先看一下我之前给大一学弟学妹们写过的一篇博客《在你迷茫时不如学好一门语言》,学习之道就在此篇博客之中。当然,看完之后还没领悟的朋友也不用急,这次我写的是基础教程,是专门针对未入门的新手用来入门学习的,我会一步一步引导你掌握学习编程语言的精髓的。

如果此时看此篇博客的你真的是一个完完全全的新手,我在后面介绍的这些你可以换种思维去了解,不至于让你越看越迷茫。之前的博客《走进编程的殿堂》https://www.cnblogs.com/zyx110/p/11463114.html中我已经说过,编程语言它首先是语言,你能联想到我们常说的汉语、英语、法语等编程语言。区别只在于面对的交流对象不同,那现在说到高级语言,也有很多种,上边排行榜中所示的都是高级语言,你可以这样理解,就说我们中国吧,我们的通用语言是汉语,只要是中国人,都能明白。那汉语就好比是机器语言,但是由于地域的不同,不同的地域有不同的方言,比如说普通话、青海方言、河南方言等等吧,有很多种不同的方言,这就好比是那些高级语言,你需要做的,就是首先了解有哪些“方言”,这些方言适用于哪种“环境”,明白了之后针对需求,去学习相应的“方言”即可,但是不管学哪种“方言”,最终目的只有一个,那就是跟你要交流的对象进行交流。所以你要明白,没有最好的语言,只有在不同的环境场景下最适合的语言,就好比是一个修车厂,修车的工具有很多,你要做的就是先要知道修什么部位用什么工具,然后如果你不会用,就看对应工具的使用说明书,这就是学习的过程,等你会用了,问题自然迎刃而解了,编程语言亦是同理,要知道学会驾驭工具,不要做工具的“奴隶”。好,说这么多,就是给下面介绍编程“工具”做铺垫的,我要开始介绍高级语言了:

高级语言

C语言

C 语言是一种通用的高级语言,最初是由丹尼斯·里奇在贝尔实验室为开发 UNIX 操作系统而设计的。UNIX 操作系统,C编译器,和几乎所有的 UNIX 应用程序都是用 C 语言编写的。由于各种原因,C 语言现在已经成为一种广泛使用的专业语言。

C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。

特点

易于学习,进行结构化编程

c语言所产生的代码运行速度与汇编语言编写的代码运行速度几乎一样

预编译处理使C语言更有弹性

优点:

代码量小

生成目标代码质量高,运行速度快

功能强大

跨平台,可移植性强

使用指针,灵活性强

允许直接访问物理地址,对硬件进行操作

缺点:

数据安全性有很大问题

语法限制不严格,映像程序安全性

指针太过灵活,初学难度有点大

C++

C++编程语言,作为C语言的增强版本,是由丹麦计算机科学家本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)设计和开发的。它历经四年的开发时间,从1979年开始,直到1983年发布。

C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。

特点:

支持数据封装和数据隐藏

支持集成和重用

面向对象

支持多态性

C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。

优点:

类型检查比c语言更加严格

增加了面向对象机制

增加了泛型编程机制

增加了函数重载和运算符重载

异常处理

提供了标准库STL

缺点:

没有垃圾回收机制,可能引起内存泄漏

C++主要用于开发:

游戏

驱动程序

Client-Server应用程序

系统软件

应用软件

嵌入式固件

JAVA

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 坑过。

特性

  1. 纯面向对象

  2. 支持分布式

  3. 跨平台,移植性强

  4. 是一门编译性语言

  5. 支持多线程,高性能

优点

  1. 面向对象

  2. 稳健、安全、可移植、高性能

  3. 跨平台

  4. 编译型静态语言

缺点:

  1. 编译速度慢

Java主要用于应用程序开发,例如:

  • 桌面应用程序

  • 网站应用程序

  • 安卓应用程序

  • 大数据操作

  • 云计算

  • 机器人科学和技术

Python

Python编程语言发布于十几年前,此后它有了长足的发展。它是由荷兰程序员吉多·范·罗苏姆(Guido van Rossum)设计和开发的。

它被认为是一种高级语言,用于“粘合”其他语言以连接到大型现有软件组件。

另外,它是一种面向对象的编程语言(OOP)。众所周知,它为开发人员提供了大量有用的库。

Python 的优势

Python 学习简单,被誉为 “最易学习的语言”,它的语法非常清晰易读,可以减少学习时间和维护成本。

Python 的不足

Python 存在一些只在特定情况下才会出现(无法重现)的 bug

职业路线:

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

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

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

(4)Python 有一个无所不能的 Hack 库,如果认为 “打工时不可能打工的” 就去当一个自由的黑客吧

特性

  1. 解释性语言

  2. 拥有丰富的库

  3. 跨平台

  4. 可移植、可扩展

  5. 支持GUI编程

  6. 可嵌入

优点

  1. 简单,易学

  2. 免费,开源

  3. 可移植性强

  4. 属于解释性的一门动态语言

  5. 面向对象

  6. 拥有丰富的库

  7. 强制性缩进代码使得代码规范

缺点

  1. 运行速度慢

  2. 国内市场小

  3. 中文资料匮乏

Python还有很多其它应用场景,比如在应用程序开发,多重范式编程,强大的标准库,数据库访问以许多其它场景。

JavaScript

如果没有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)如果以上四样全能做到,那么你就是全栈工程师。

优点

  1. 减少网络数据传输

  2. javascript可以方便的操纵HTML对象

  3. 支持分布式运算

缺点

  1. 各浏览器对javascript支持程度不同

  2. “web安全性”对javascript一些功能牺牲

有很多很棒的JavaScript框架可以供人们使用,例如:

  • Angular

  • React

  • VueJs

  • Ember

  • Node.js

  • Aurelia

  • Backbone.js

C#

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的全称是“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 可设定只有某此用户才具有对指定存储过程的使用权,安全性好。

SQL 的不足:

和 Java 语言的大多数设计模式一样,SQL 开发速度是靠牺牲运行速度换来的;不同数据库系统之间的 SQL 不能完全相互通用,可移植性差。

职业路线:

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

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的高效率运行需要占用大量的内存和硬盘空间

调试困难

Go语言

go语言被设计成一门应用于搭载web服务器,存储集群或巨型中央服务器的系统编程语言,在高性能分布式系统领域拥有着极其高效的开发效率

特点:

简洁,快速,安全

自动垃圾回收

函数多返回值

并发编程

反射

语言交互

跨平台

开源

编译型静态语言

优点:

  1. 性能优越,go比python快30倍,比java快将近一倍

  1. 编译时间非常快

  1. go编写简单,易于学习

  1. 对 gPRC 和 protocol Buffers 具有一流支持

  1. GOFMT,强制代码格式

  1. 天生支持并发编程

  1. 强大的标准库

  1. 接近c的运行效率,接近php的开发效率

缺点:

没有主要框架

错误处理机制太原始

垃圾回收器不完善

语法格式要求太过严格,禁止有未使用的变量和多余的import

对象没有构造函数和析构函数

技术比较年轻,有待后续发展

PERL

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/

Java匹马行天下之学编程的起点——高级语言大锅烩的更多相关文章

  1. Java匹马行天下之学编程的起点——走进编程的殿堂

    学编程的起点——走进编程的殿堂 前言: 知其然,知其所以然,努力固然重要,但是思维的提升会让你事半功倍,我会用我花费时间换来的“思维”带更多的朋友入门,让你们明明白白学编程,学编程,不迷茫. 转变思维 ...

  2. Java匹马行天下之学编程的起点——编程常识知多少

    学编程的起点——编程常识知多少 前言: 刚去大学那会,我就知道我被录取的学院是软件学院,还知道一点就是软件学院主要是学电脑的,但具体要学什么其实一无所知.待的时间久了,慢慢的,像“编程”.“软件”.“ ...

  3. Java匹马行天下之新手学习目录

    Java匹马行天下之新手学习目录 学习路线 [Java匹马行天下——Java学习路线] [Java匹马行天下——开篇学习计划] 基础篇 [Java匹马行天下之学编程的起点——编程常识知多少] [Jav ...

  4. Java匹马行天下之教你用学汉语式方法学编程语言

    Java匹马行天下之教你用学汉语式方法学编程语言 前言: 前段时间接连更新了带小白从入门到了解的几篇博客: <Java匹马行天下之编程常识知多少> <Java匹马行天下之走进编程的殿 ...

  5. Java匹马行天下之J2EE框架开发——Spring—>Spring框架知多少

    ————也许我注定成不了一个伟大的人,但是至少我可以做一个很棒的自己.我想我现在应该做的不是瞻前顾后,而是活在当下,正确认知自己,做好自己现在的工作,努力提升自己的能力,踏踏实实地做一个程序员 一.思 ...

  6. Java匹马行天下之C国程序员的秃头原因

    Java帝国的崛起 前言: 分享技术之前先请允许我分享一下黄永玉老先生说过的话:“明确的爱,直接的厌恶,真诚的喜欢.站在太阳下的坦荡,大声无愧地称赞自己.” <编程常识知多少> <走 ...

  7. Java匹马行天下之 Java国出了个Java——举国欢庆

    Java帝国的崛起 前言: 看庭前花开花落,宠辱不惊, 望天上云卷云舒,去留无意. 闹心的事儿,选择释怀: 纠缠的人儿,试着放下, 生活其实很美. 心若向阳,就无惧悲伤. 愿你明朗坦荡纵情豁达,有得有 ...

  8. Java匹马行天下——开篇

    个人感言: 匹马行天下是我高中时候看过一部叫<九鼎记>的小说中的其中一个大章节标题,在整个这一章中,讲的是是主人公滕青山历经艰险,又心如磐石,一心修行,最后巅峰归来的故事.现在回想,依旧心 ...

  9. Java匹马行天下之JavaWeb核心技术——JSP

    JSP动态网页技术 一.JavaWeb简介 一.什么是JavaWeb? JavaWeb是用Java技术来解决相关web互联网领域的技术总称. 需要在特定的web服务器上运行,分为web服务器和web客 ...

随机推荐

  1. 使用Castle DynamicProxy (AOP)

    在本文中,我将引导您了解.NET环境中的面向方面编程(AOP)概念,以及如何使用Castle DynamicProxy创建和附加方面.在我们开始之前,让我快速介绍AOP和  IoC.如果您已经熟悉这些 ...

  2. 【STM32H7教程】第32章 STM32H7的TIM定时器基础知识和HAL库API

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第32章       STM32H7的TIM定时器基础知识和H ...

  3. Swoole编译安装步骤

    Swoole扩展是按照php标准扩展构建的.使用phpize来生成php编译配置,./configure来做编译配置检测,make进行编译,make install进行安装. 请下载releases版 ...

  4. appium元素定位之AndroidUiAutomator

    UIAutomator 元素定位是 Android 系统原生支持的定位方式,虽然与 xpath 类似,但比它更好用,并且支持元素全部的属性定位,定位原理是通过 android 自带的android u ...

  5. nlohmann 最优秀的C++序列化工具库 详细入门教程

    本文首发于个人博客https://kezunlin.me/post/f3c3eb8/,欢迎阅读最新内容! tutorial to use nlohmann json for serializing d ...

  6. jQuery 源码解析(二十二) DOM操作模块 复制元素 详解

    本节说一下DOM操作模块里的复制元素子模块,该模块可以复制一个DOM节点,并且可选择的设置是否复制其数据缓存对象(包含事件信息)和是否深度复制(子孙节点等),API如下: $.clone(elem, ...

  7. C++笔记——快读快写

    直接开始吧 额m~,这里就没什么好说的了,无非就是用getchar加快cin或printf的读入速度. 代码: inline int read() { int X=0; bool flag = 1; ...

  8. Java描述设计模式(09):装饰模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 1.场景描述 孙悟空有七十二般变化,他的每一种变化都给他带来一种附加的本领.他变成鱼儿时,就可以到水里游泳:他变成鸟儿时,就可以 ...

  9. Redis在Window下的安装部署

    一.下载 由于redis官方不支持windows,所以需要在github上下载window的版本:下载地址.redis约定版次版本号(即第一个小数点后的数字)为偶数的版本是稳定版本(如2.8,3.0) ...

  10. WebShell代码分析溯源(三)

    WebShell代码分析溯源(三) 一.一句话变形马样本 <?php $g = array('','s');$gg = a.$g[1].ser.chr('116');@$gg($_POST[ge ...