首页 > 科技 > 正文

我的全栈之路
2019-08-24 15:16:24   来源:东方头条   

1.1 信息技术发展趋势

目前信息技术主要经历了互联网、移动互联网以及以大数据、云计算、物联网、人工智能区块为代表的新兴技术三个阶段。互联网

互联网自从20世纪90年代逐渐兴起,主要是通过网络连接了世界各地的PC机,笔记本以及背后提供数据服务的大型服务器集群。

其中绝大多数PC机都运行着Windows,macOS操作系统,而服务器主要是以类Unix(CentOS,Ubuntu)占据主要市场。

依靠互联网成长起来的公司有Apple、Google、Amazon、Microsoft、Baidu、Alibaba、Tencent。移动互联网

移动互联网主要从2010开始爆发式增长,主要是通过网络连接了世界各地的移动设备(最典型的就是手机),它们绝大多数都运行着Android,iOS操作系统。

依靠移动互联网成长起来的公司有小米、美团、滴滴、蚂蚁金服。大数据、云计算

随着用户的爆发式增长,以海量数据为基础的大数据、云计算技术在Badu、Alibaba、Tencent等大型互联网公司有着广泛的商业应用场景。物联网

物联网会以手机作为中枢,通过物联网连接所有的智能设备,包括智能家居、汽车、电视等嵌入式设备,目前小米、华为等在智能家居、电视、汽车等领域广泛布局,2019年8月华为发布了鸿蒙系统。人工智能

人工智能(AI)作为当前最火爆的技术,国内的Baidu、Tencent、Alibaba等互联网公司逐渐根据自身的核心业务开始布局,Alibaba最早将人工智能技术布局在电商和物流领域,而Baidu开发出了对话式人工智能操作系统Dueros和自动驾驶平台Apollo,Tencent则是在游戏领域应用人工智能。区块链

区块链经历了数字货币、智能合约和超级账本三个阶段,区块链技术可以广泛使用在金融、供应链、物流、公共服务等领域,解决互联网的信任问题,目前蚂蚁金服、京东已经有大量的区块链应用落地。1.2 浅谈计算机系统架构

1.2.1 计算机系统架构概述

计算机系统由硬件系统和软件系统组成,由软硬件协作完成人们日常生活和工作中的各种任务,例如听歌、看电影、购物、写博客等等。

微信聊天:微信监听键盘输入的数据,并放到内存,然后传给网卡,通过网络传递给另外一个网卡,再从网卡传递到内存,显示在显示器上。

QQ音乐:QQ音乐将音乐数据加载到内存上,然后写到声卡上。

腾讯视频:应用程序将视频数据加载到内存,然后写到显卡上。

Office写文档:Office将内存中的数据写入到磁盘上。

Office读文档:Offcice将磁盘的数据加载到内存,然后显示在屏幕上。

1.2.2 计算机硬件系统

现在计算机是由运算器、控制器、存储器、输入设备和输出设备五大部分组成,它们各司其职,完成了数据的计算、存储、传输。CPU

CPU也就是中央处理器,由运算器和控制器所组成,其作用是从内存中获取指令并执行后将结果返回给内存或写入磁盘和控制其他设备协同工作。内存

内存是采用编址存储,其主要作用是作为程序的工作区,程序运行时会将指令和数据都加载到内存,内存中的数据断电后会丢失。硬盘

硬盘是用于存储海量数据,分为机械硬盘和固态硬盘两大类。IO设备

IO设备用于数据的输入和输出,其中常见的IO设备包含鼠标、键盘,常见的输出设备包括声卡、显卡。

网卡也是属于IO设备的一种,主要用于网路上的数据接收和发送。

在后期程序排查错误时除了要考虑程序本身的错误以外,还要考虑计算机硬件故障,例如磁盘写满,网络不通等问题

每个计算机组件的IO性能也各不相同,CPU、内存、磁盘都遵循容量越大、IO性能越差的特点。

在后期优化程序时需要考虑程序时间复杂度和空间复杂度的问题。

1.2.2 计算机软件系统

软件的出现实现了人和计算机更好的交互,它是由开发人员采用某种编程语言(C/C++/Java等等)编写的一系列指令以及不同业务场景产生的数据组成。

通常将软件分为系统软件和应用软件

系统软件:驱动、操作系统、编译器、数据库等都是属于系统软件,操作系统是负责管理硬件资源

,同时给应用软件提供运行平台,目前主流的操作系统有Windows,Linux,macOS,Android,iOS。

应用软件:微信、支付宝、淘宝、Office都是属于应用软件,它们都是运行在操作系统之上的。

运行在不同操作系统之上的软件交互方式也不一样,Linux上的软件通常是使用字符界面的交互方式,运行在Windows,macOS上的软件通常是以鼠标、键盘操作的交互方式,运行在Android,iOS上的软件通常是以手势触控、语音等交互方式。1.3 程序和指令

程序是为了完成某项任务(例如聊天、听音乐)而使用某种编程语言(例如C/C++)编写的一组指令序列。

而指令是计算机程序控制的最小单位,由操作码和操作数组成,操作码是计算机要执行什么操作,例如加减乘除操作,而操作数具体执行的对象,具体的数据以及数据的位置。

所有指令的集合称为指令系统,常见的PC机指令系统有Intel X86指令集,常见的手机指令系统有ARM,因此手机上的程序不加修改是不能直接在PC机上运行,因为不同的指令集是不兼容的。1.4 编程语言发展史

任何事物都是从无到有,逐步发展壮大起来的,编程语言也是一样。

计算机程序设计语言经历了机器语言到汇编语言和高级程序设计语言三个阶段,其特点是使得程序员用编程语言开发、测试、部署应用程序越来越方便、高效。但是是以牺牲效率为代价,但是随着计算机硬件的发展,绝大多数应用场景的效率损失可以忽略不计。机器语言

计算机发展的最早期,程序员编写程序采用二进制的指令(010010101)来实现的,而每种CPU都有各自不同的指令系统(Ultra SPARC/Intel X86/ARM),因此在不同的机器上使用不同的机器语言实现。其特点是性能特别高效,而面向机器编程也就意味着不能移植,需要手动处理底层硬件的差异性,而且二进制的指令难以理解和维护。汇编语言

随着时代和计算机技术的发展,汇编语言和编译器的出现解决了机器语言需要记住非常多的二进制机器指令的难题,但是还是没有从根本上解决移植性的问题,只是将机器指令转换为易懂的英文单词,然后由编译器编译成机器指令,因为计算机终归揭底只能识别二进制的0001110100110机器指令,而且汇编语言是面向机器的,不同机器(SPARC/Intel X86/ARM)的汇编指令是不相同的。高级程序设计语言

高级程序设计语言的高级之处体现在开发人员在编写程序时无需关心计算机底层硬件差异而只需要专注于业务模块实现即可。甚至是可以实现 一次编译,到处运行,这里以Java为例子:通过实现不同平台的JVM,编译生成的字节码文件可以在任意的JVM上运行。

高级语言通常都需要编译器或者是解释器将源码编译或者解释后执行。

高级语言主要分为面向过程和面向对象两种,其中典型的面向过程编程语言就是C,面向对象的编程语言有Java,C++等等。1.5 计算机语言应用场景

如果想知道目前主流的编程语言有哪些,可以访问tiobe 首页获取编程语言排行榜。

2019年8月编程语言排行榜Top20

根据Tiobe排行榜得知,Java/C/Python分别排在前三名, 随后紧跟着C++,C#等等。

那么如果你作为初学者,面对如此之多的编程语言,到底应该先从哪门语言上车呢?如果你想深入的学习其他语言和架构相关的知识之前建议熟练掌握C语言。因为C++/Java/C#等编程语言都模仿了C语言。无论哪种语言,都是实现目标的工具,而不是目标本身。

而不出意外的话,我的全栈之路系列会覆盖上述的十种编程语言,实现全平台开发。1.6 C语言概览

1.6.1 C语言发展简史

Dennis Ritchie

C语言凭借其高效率、良好的移植性、功能强大的特性在操作系统、硬件驱动以及系统应用开发占据广阔的市场。起源

1972年,贝尔实验室的Dennis Ritchie和Ken Thompson在开发Unix操作系统时设计了C语言,该操作系统的90%以上的代码都是由C语言实现,后期的Linux,MacOS,Android,IOS都是基于Unix发展而来的。标准

1987年Dennis Ritchie和Brian Kernighan编写了The C Programming Language第一版是公认的C标准实现,而没有定义C库。

而后期ANSI/ISO先后于1990年、1999年和2011年发布了C90标准、C99标准和C11标准,该标准定义了C语言和C标准库。

1.6.2 C语言特性

C语言作为面向过程的高级程序设计语言,能够轻松的实现自顶向下的规划、结构化编程和模块化设计,这样使得程序结构更加简洁,可扩展性强以及更加容易维护。

而且C语言有着高效(执行速度快)、功能强大(嵌套汇编)以及可移植性(标准库可移植)、功能强大等优点,而且也存在着对系统平台库依赖严重,由于编程风格自由,经验不足也会容易导致出错,编写代码实现周期长,同样的代码在不同的操作系统(或者编译器)下可能会有不同的表现等缺点。

1.6.3 C语言应用场景

C语言偏向操作系统、硬件驱动、底层应用(数据库、编译器)、嵌入式应用开发、游戏引擎等应用场景。

硬件驱动的绝大部分实现是由C语言和汇编语言实现的。

主流操作系统(Unix,Linxu,MacOS,Windows,Android,iOS)的底层实现都是由C语言和部分汇编实现的。

C++,Java,Python,Swift的编译器或者解释器都是由C语言实现的。

Git,Nginx,Redis,MySQL都是使用C语言实现的,而且都是开放源代码的,可以在GitHub中获取到,可以通过阅读源码提升自己的设计和编码能力。

相关热词搜索:之路

上一篇:自动气象站设备常用的维修方法
下一篇:最后一页

泰安知名律师   电话:18053115917
手机:0531-80961678   微信:18053115917   QQ:709581498   邮箱:709581498@qq.com
网站地图 (XML地图 / 百度地图