我将带大家走进互联网开发世界。今天给大家介绍一下互联网开发的语言。
什么是互联网开发语言
说到语言,大家可能首先想到的是汉语,英语,是可以让大家明白对方意思的一种交流方式。但是互联网开发语言呢,又是一种怎样的存在。既然是语言,就也是一种交流方式,但是这个语言,是为了让电脑来理解的。
人类的语言里,可以分为汉语,英语,日语,法语等等。在计算机的世界里,同样也有很多的种类。对计算机知识有一定了解的伙伴们,这个时候脑海里可能会浮现出Java,C,C++等多门编程语言的名称。而且也知道,如果想要学习编程,进入到开发领域里,就首先要学会一门甚至是几门开发语言。
开发语言其实有很多,现阶段,仍然比较常用的开发语言可能会有上百种,而且每时每刻都会有新的开发语言应运而生。
下图是最新一期(2020年04月份)的编程语言排行耪Top10榜单。
从榜单中我们可以看到很多熟悉的名字,比如Java,C。如果我们想要学习互联网开发,就必须得学习这些语言。但是到底学习哪一种,且听我对这些语言进行一些说明之后再做决定。
从计算机诞生开始,就离不开编程语言。经过时代的进步发展,编程语言也从最开始的机器语言,汇编语言进化到了现在的多种多样的高级语言。
下图就简单的说明了,这三种语言之间的关系。
图中最左部分是用C语言进行编写的代码,中间部分是将C语言编译成了汇编语言,最右侧的部分则是机器语言。从这张示例图中,我们可以明白,机器语言名不虚传,确实是给计算器看的。而我们能看懂并且学习的,可能也就只能选C这类语言了。
所有在今天的内容里,我们的主要介绍的重点,还是会放置到这些可读性好,易于学习的高级语言阵营里了。
互联网开发语言的分类
即使把范围缩小到了互联网开发语言中,我们发现还是有几十种常用的开发语言。这些语言,每一种都有着广大的用户群体,都有着广阔的适用场景。如果让我来选,我还是不知道应该选择哪一门来作为自己未来的求职方向。
互联网开发,按照功能划分,现在可以简单的划分为前端开发,后端开发,移动端开发。
前端开发,主要是面向浏览器页面,更多的专注于页面的交互效果。是直接面向用户的。
后端开发,主要面向数据以及底层的一些数据功能逻辑,对用户而言并不可见,所以称之为后端。
移动端开发,这是主要面向手机,pad等移动设备而出现的一种开发场景。如果严格说来,移动端开发也可划分到前端开发的范畴里,这是也是一种直接面向用户的页面级的开发。
既然已经知道了互联网开发的分类,接下来,我们就需要知道这些不同分类中都有哪些代表语言。以及这些语言的特点。
前端开发语言
一个基本的网站包含很多个网页,一个网页由html, css和javascript组成。
html是主体,装载各种dom元素;css用来装饰dom元素;javascript控制dom元素。
用一扇门比喻三者间的关系是:html是门的门板,css是门上的油漆或花纹,javascript是门的开关;
但凡想要学习前端开发,这三门语言的知识是必须学会的。对于那些主做后端开发的程序员,除了那些大后端只和数据打交道的不关心页面逻辑的,这三门语言也是得多少了解和熟悉的。由此课件,这三门语言在互联网开发中到底有多么重要。不过大家不要担忧,正是因为在这种基础性决定了这三门语言本身不会太难,在整个开发领域里,这三门语言可以说是最易入门的技能了。
html介绍
html是用来描述网页的一种语言,它不是一种编程语言,而是一种标记语言(标记标签),总的来说,html使用标记标签来描述网页,本文就用标签来代替标记标签进行说明。
标签是指<html></html>,<div></div>。
标签是有语义的:标题用<h1>,表格展示用<table>,链接用<a>,无序排列用<ul>等等。
标签里可带有各类属性,最基本的就是class和id。class属性的作用是引用css样式;id的作用是配合javascript使用,具有唯一性。下面举几个例子说明
l 图片标签<img>的主要属性有src,alt。src是引用图片的网络地址(必要);alt是对这张图片的描述,如果图片加载不成功,则会显示alt的文字。
l 超链接<a>的主要属性有href,target。href是指链接要跳转的网址(必要);target是告诉浏览器点击这个链接后要以哪种形式找开窗口,target=”_blank”是指打开一个新窗口。
css介绍
css的官方名字叫层叠样式表,它的出现是为了解决内容和表现分离的问题,一般存放在.css文件里。
使用css。
可在html的头元素<head>里书写,或者书写在CSS文件并在html里引用该文件。
css优先权。
多个css样式可集中在单个html标签里,出现这种情况时,一般按优先权划分
- 浏览器默认设置 (最低)
- 外部样式表
- 内部样式表(写在html的<head>标签内部)
- 内联样式(写在html的标签里,即style属性)(最高)
css的语法。
css由两个主要部分组成,选择器,一条或多条声明。
选择器是指css样式的名字“.seletor”,名字前面要带上一点“.”。声明是由属性和值组成,给个例子“margin: 0 auto”,冒号前面是属性,后面是值,该例子是定义元素居中显示。
javascript介绍
javascript是脚本语言,它是连接前台(html)和后台服务器的桥梁,它是操纵html的能手,本文用js代替javascript进行说明。
平时听到原生js,js库,js框架,js插件等等,下面简单说明一下。
l 原生js,是指最基础的js,没有封装过,但因为各浏览器对js的支持不同,就导致用基础的js编程需要为不同的浏览器写兼容代码。
l Js库,js框架,是指集成一系列dom操作,API封装,界面UI封装的的库类,常见的有jQuery,extjs等等,这方面的定义比较难区分,暂不误导大家
l Js插件,就是集成了帮助程序员轻松完成功能的程序。Js插件用得比较多,网页制作上随处可见。如图片轮换功能,导航制作,上传图片等等。
前端编程的难点
前端开发主要面向的是页面上的呈现效果,从以上介绍中可以发现,这么语言并不困难。而且近几年来,前端的就业形势特别喜人,各大公司都开始加强了前端人才的招聘力度。但是学习前端,其实也还是有些难点要事先交代一下的。
1. 要有同大众一样的审美能力和标准
这一点很容易理解,前端是整个开发体系里,最直接面向用户的。一定要有良好的审美能力,这样才能做出来一个能够吸引用户并有可能把用户留下来继续浏览的页面。
前端开发人员一定要具备跟大多数人一样的审美标准,要做到你认为好看的页面,80%以上的人都认为好看才行。如果你的审美是大家所不能理解的,那么,你可能就要考虑不要贸然选择前端开发了。
2. 多平台兼容,很可能会把你逼疯
在我的开发经验中,前端开发工作的一个大的挑战来自于多平台的兼容性问题。
前端开发完成的页面,最后其实是需要依托于浏览器展示出来的。现在为我们所熟知的浏览器平台其实有很多,有Chrome(谷歌浏览器),FireFox(火狐浏览器),IE,QQ浏览器,360浏览器等。这些浏览器因为内核不同,对同样的前端代码可能会做出不同的理解,所以呈现出来的效果也不一样。这就给我们的前端开发带来了很大的难度,因为我们无法预知用户会使用什么工具,我们的开发一定会要求适配所有的浏览器平台,不能只针对特定的浏览器。
面对多种多样的浏览器版本,已经够大家受的了。而在进入到移动互联网时代之后,手机上的浏览器也相应的给开发带来了更多的挑战,不同尺寸,不同型号的手机,也给前端的开发增加了不少的乐趣。
3. 前端技术日新月异,要时刻保持技术敏感,不停学习
这一点,可能是所有的开发语言中都会存在的难点。
以前的前端其实真的很容易,只要学会最基础的语法,能够切图将页面做出来就是一个出色的前端开发者。但是到了现在,全都不一样了。
到了移动互联网时代之后,很多事情都发生了改变。html变成了html5,css变成了css3,javascript就更夸张了,好端端的前端语言非要学后端语言,也开始讲究框架,讲究设计模式。从原生的javascript到后来的JQuery,再到现在的ReactJs,Vue,Angular。在移动互联网兴起之后,前端开发的清单里又出现了公众号开发和小程序开发。技术的发展总是很快的,我们如果想要学好技术,成为一个合格的程序员,就一定要做好快速学习的准备。
后端开发语言
后端开发语言的代表就很多了,而且每一种语言都有着各自适合的应用场景,也有着无数用户者。我们经常能够看到关于那种编程语言更好的争辩,其实这真的没办法说明哪一种语言就比其他语言更好,只能在特定的情景下,判定哪一种语言更适合。
接下来,我就逐个讲解一下这几门常用的编程语言的特点。
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++程序员的好出路。
Java
这是最长寿的语言。
Java是最典型的面向对象语言。Java不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等坑爹概念。Java积极推动了面向对象的编程理念,极大的改善了编写代码的易读性,可维护性。让大型编程,多人维护,变得越来越容易。
Java平台不断迎来新功能,比如移动互联网时代的Android,大数据时代的Hadoop,人工智能时代的TensorFlow。因为Java不断进取,能够不断的跟时代趋势保持同步,Java成为了世界上使用范围最广的语言——Java环境安装时那句“3 Billion Devices Run Java”谁没见过?桌面应用,网络编程,游戏编程,移动端编程,基本上只要有代码的地方,我们都能见到Java的身影。
Java同样也是一门面向底层的语言,它适用于大型项目的开发,本身推从的面向对象,多线程,包管理等特性,让Java成为了一门性能强大且安全性极高的开发语言。也正是这些特点,决定了Java开发项目往往开发成本高昂,每次开发都要进行大量的预先设计,过于重视标准化,也让Java开发项目的开发周期被无形拉长。
职业路线:
(1)招聘网站上常见的“招聘Java开发”指的就是狭义的Java开发——基于JavaEE的后台开发,以前一度流行过SSH框架和SSM框架,现在入门建议学习SpringMVC框架。
(2)在移动互联网时代,Java可用于Android App开发。但Java之于Android的地位可能被Kotlin取代。
(3)在大数据时代,Java可用于Hadoop的开发,前景非常广阔,但可能有泛滥的趋势。
(4)在人工智能时代,Java可用于TensorFlow深度学习的开发。
C#
自称不是Java的Java语言
C#是微软看到Java太火了而发明的和Java语法差不多的语言。
C#的优势:C#的最大优势在于全面集成.Net库,提供出色的功能与完美的库访问能力。VR时代的到来让Unity-3d开发者有很好的发展前景。
C#的不足:只能在windows环境下运行,跨平台能力太差。目前.Net在国内就业环境不太好,收入较低。
职业路线:
(1)招聘网站上常见的“招聘C#开发”和“招聘.net开发”指的都是狭义的C#开发——基于.Net框架的后台开发。
(2)Unity-3d也用C#作为开发语言,除了能开发3D游戏,在VR时代也会大放光芒。
Python
需要拿着游标卡尺学习的语言
python是一款服务器端解释型开源非编译脚本语言。学习简单,被誉为“最易学习的语言”。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。因为Python中预置了大量的数据相关的模块,在做数据分析,爬虫处理等场景里被大量应用。
职业路线:
(1)用Django框架进行web开发:和Java没什么两样。
(2)用PIL框架进行图形处理
(3)物联网:Raspberry Pi等物联网平台都选择了Python作为开发语言
(4)Python有一个无所不能的Hack库,如果认为“打工时不可能打工的”就去当一个自由的黑客吧
PHP
我们经常能够听到一句话,PHP是世界上最好的语言。它是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。号称“世界上最好的语言”。
PHP学习简单,易于快速上手。历久弥新的PHP拥有庞大而活跃的官方社区,开发者面临的大部分难题都有现成的解决方案,很多十几年前的解决方案在当代也有指导意义。相比较Java,C这些编译型语言,PHP开发速度快,而且不需要编译,可以快速完成项目开发并即刻运行的特点,成为了大量创业团队初始项目的首选。但是随着用户量上升,性能问题也会逐渐体现,通常在项目达到一定规模之后,企业都会将选用其他语言来作为PHP的替代方案。
随着近几年,前端技术的突起,NodeJs开始被广大开发者所接受,加上新型开发语言Golang的出现,PHP不可避免的出现了下滑。但是PHP7的出现,下降的势头有所缓解,加上前些年市场上出现了大量的用PHP开发的项目,这些项目仍然需要大量的PHP程序员来维护,所以PHP这们语言还是具有着很大的市场前景。
NodeJS
NodeJs其实是一种面向后端的前端语言。它的本质就是Javascript,但是却拥有了一颗后端开发的决心。
NodeJS也是一门脚本语言,同PHP一样,也是为了Web而生的。因为它的语言同Javascript一摸一样,所以为前端开发工程师转向后端,提供了可能,带动了“全栈工程师”的概念迅速兴起。再加上设计之初,它引入了异步调用的方式,极大的改善了性能。在近些年来,上升势头极为明显。如果你对前端开发感兴趣,也想尝试后端开发,NodeJs将会是你的首选。
Golang
Go语言是近几年才最新兴起的一门web编程语言。因为是最新出现的,而且还能被广大用户所接受。一定是在一定程度上代表了当前时代的最佳。Go语言基本上集成了以上所有语言的有点。相比较C或Java,它简单易学,成本极低,拥有良好的语言设计,预置了大量的适用于Web开发的功能,简化了开发成本。相比较PHP,Python,NodeJs,它又具备编译型语言的特点,代码直接编译成机器码,运行速度快,性能突出。
但是Golang也有它的缺陷,毕竟是一门新出现的语言,它的最大的问题在于平台还不成熟。虽然全世界都很看好它,但还是有很多方面需要完善。比如相关论坛,开源项目的数量。而且还没有成熟的被大家所接受的官方框架,版本的稳定性也有待进一步加强。
目前go语言主要的应用场景是集中在运维开发方面。大家所熟知的docker,k8s就是使用go来开发的。但是还没有其他的知名的大型项目完全使用golang,但是这们语言未来可期,如果要想以后投身于web开发的学员门,这么语言一定不能错过。
Objective-C和Swift
这两门语言都是基于IOS系统的移动端专用语言。Objective-C在几年前是国内收入最高的语言。
苹果公司提供了丰富的工具和库以便开发者使用Objective-C开发软件。
但是Objective-C拥有自己独特的编程方法思路,与其他编程语言思路差别较大。而且OC的用户也在逐年流失。
正式因为OC与其他主流语言的差异性比较大,苹果公司后期推出了swift。随着时间推移,Swift在iOS和OS X软件中占的代码比例会越来越多。
但是Swift也有不足。它的版本更迭太快,不同版本差别过大,近年发生过几次“从精通到重新入门”的情况。这就给用户带来了极大的不变。而且企业出于稳定性考虑,在做出开发决定的时候,也会对选用Swift采用保守考虑。
结论
目前主流的一些开发语言,在这里都已经有所介绍了。大家如果有意向进入到互联网开发领域,看了这篇文章应该也有会一个概括性的认识了。
希望这篇文章能够对大家的选择有所帮助,如果大家尚有疑问,欢迎联系我同我交流。
有疑问加站长微信联系(非本文作者)