编程语言发展史以及使用场景
2017-12-17 16:08
525 查看
编程语言发展史以及应用场景
读完本章节,你将收获以下几点计算机编程语言的发展史
主流编程语言的应用场景
信息技术发展方向
编程语言的发展史
计算机程序设计语言经历了机器语言到汇编语言和高级程序设计语言的演进,其特点是让程序越来越容易开发、测试和部署,在了解编程语言发展史以及使用场景前需要了解程序到底是什么?程序是指为了完成一项特定的任务(例如听音乐,看电影,购物)而用某种编程语言(C,C++,Java)编写的指令序列,指令是计算机进行程序控制的最小单位,由操作码(例如+ -)和操作数(例如010101)组成,所有指令的集合称为计算机的指令系统,常见的指令集包括运行于PC、服务器上基于Intel处理器的X86指令集和运行于手机的ARM指令集。不同的指令集系统是不兼容的,这也就导致PC上的程序不加修改,不能到手机上运行,反之亦然。
机器语言
计算机发展的最早期,程序员编写程序采用二进制的指令(010010101)来实现的,而每种CPU都有各自不同的指令系统(SPARC/Intel X86/ARM),因此在不同的机器上使用不同的机器语言实现。其特点是性能特别高效,而面向机器编程也就意味着不能移植,需要手动处理底层硬件的差异性,而且二进制的指令难以理解和维护。
汇编语言
随着时代和计算机技术的发展,汇编语言和编译器的出现解决了机器语言需要记住非常多的二进制机器指令的难题,但是还是没有从根本上解决移植性的问题,只是将机器指令转换为易懂的英文单词,然后由编译器编译成机器指令,因为计算机终归揭底只能识别0001110100110机器指令,而且汇编语言是面向机器的,不同机器(SPARC/Intel X86/ARM)的汇编指令是不相同的。
而机器语言和汇编语言的使用场景只有在追求绝对性能的场合(例如控制导弹的发射等等)中使用。
如下所示案例演示C语言嵌套汇编语言的案例
#include <stdio.h> /* C语言嵌套汇编的应用案例 * @author tony ittimeline@163.com * @date 2017/10/17 16:40 * @website www.ittimeline.net */ void use_asm() { int a, b, c = 0; //初始化声明三个整数变量并赋值为0 a = 4; b = 6; printf("before a=%d\tb=%d\tc=%d\n", a, b, c); _asm { //将变量a的值赋值给eax寄存器 mov eax, a; //将变量b的值和寄存器eax相加 add eax, b; //将相加的结果赋值给c mov c, eax; } printf("after a=%d\tb=%d\tc=%d\n", a, b, c); } /*主程序的入口 * @author tony ittimeline@163.com * @date 2017/10/17 16:38 * @website www.ittimeline.net */ int main() { use_asm(); getchar(); }
高级程序设计语言
高级程序设计语言的高级之处体现在开发人员在编写程序时无需关心硬件差异只需要专注于业务模块实现即可。甚至是可以实现 一次编译,到处运行(**Java通过实现不同平台的JVM,编译生成的字节码文件可以在任意的JVM上运行)。高级语言通常都需要编译器或者是解释器将源码编译或者解释执行。高级语言主要分为面向过程和面向对象两种,其中典型的面向过程语言就是C,面向对象的编程语言有Java,C++等等。**
先看下目前(2018年1月)世界上主流语言的排行榜的前20位,数据来源于tiboe
目前C语言排行第二, 同时C/C++的市场份额是超过Java的。
主流编程语言的应用场景介绍
目前主流的语言主要有Java/C/C++/C#,Pyhton,PHP,JavaScript,Swift,Objective-C,Go语言,它们拥有各种不同的使用场景。编程语言主要是用来编写软件,而开发软件的类型主要分为系统软件和应用软件,系统软件主要有Windows,Linux(Ubuntu,CentOS,OpenSUSE),MacOS,Android,IOS,通常使用的系统软件开发语言为少量的汇编以及大量的C语言。
目前在典型的中小型互联网公司的应用软件的后台业务逻辑通常都是采用Java或者Python,C/C++/Go实现。前台展示通常包含PC,H5,Android,IOS和微信公众号、微信小程序。
信息技术发展方向
目前国内一线城市(北上广深)中的一线互联网企业主要有阿里巴巴、腾讯、百度、平安、滴滴、新美大等等,他们所涉及的领域包括电商、社交、游戏、人工智能、金融、出行、团购外卖等等。而这些领域在技术上的实现通常会涵盖移动端、前端和服务端
移动端主要以Android,IOS为主,而开发Android App必须熟练掌握Java/Kotlin技术栈,开发IOS必须掌握Objective-C/Swift技术栈。
前端主要以HTML5+CSS3+JavaScript/ECMAScrip为基础的bootstrap,jQuery,AngularJS,VueJS,ReactJS,NodeJS,Webpack等框架的技术栈。
服务端主要以Linux(CentOS\Ubuntu)为主,如果想做服务端底层开发,必须熟练掌握C/C++技术栈,如果想做服务端应用层开发必须掌握Java/Python/Go技术栈。
游戏主要是Cocos2d-x和Unity3d,主要开发语言是C++和C#。
前言的方向是人工智能(Python)以及区块链(Go),物联网
大数据以及云计算因为是以海量数据为基础的,只有在巨头(Google,Amazon,Facebook,Apple,Microsoft,Alibaba,Tencent,Baidu)公司才会有用武之地
相关文章推荐
- 编程语言发展史以及使用场景
- 开发你自己的Android 授权管理器 (AccountManager的使用以及应用场景)
- Redis的各种用途以及使用场景
- CountDownLatch、CyclicBarrier、Semaphore共同之处与区别以及各自使用场景
- Handler使用场景以及源码分析
- 抽象类和接口的区别以及使用场景
- 使用unity3d搭建简单的场景以及第一人称角色的控制
- 【Android】getwidth和getmeasuredwidth的区别以及两者的使用场景
- 关于 bind 你可能需要了解的知识点以及使用场景
- TransactionScope 类的使用以及使用场景简介
- 详解java动态代理机制以及使用场景(一)
- 抽象类和接口的区别以及使用场景
- Redis深入之道:原理解析、场景使用以及视频解读
- Swift - final关键字的介绍,以及使用场景
- Python 装饰器学习以及实际使用场景实践
- Block从简单到高级的使用,以及项目中经常使用的场景
- mongodb的介绍、原理以及使用场景
- iOS RunLoop 基本概念以及使用场景
- iOS容易造成循环引用的三种场景NSTimer以及对应的使用方法(一)
- 使用three.js加载3dmax资源,以及实现场景中的阴影效果