学习书籍--许式伟、吕桂华等编著《Go语言编程》
目录
一、几种语言的理解
二、为什么要学习Go语言?(Go语言最核心的两个优势)
1、Go语言非常轻--Go语言真得非常轻,和C语言一样,编码简洁,运行效率高
2、Go语言对并发的大力支持--实现并发编程非常简单、安全、并发性能很高
3、对工程管理的支持
4、对编程哲学的重塑(暂时理解不上去)
一、几种语言的理解
1、编译型语言和解释型语言
计算机是不能直接理解高级语言的,所以我们只能把高级语言翻译成机器码来让它执行。
而翻译的方式有两种--编译和解释,两种方式的最本质区别在于翻译的时间不同。
-
编译型语言是指程序在被执行之前就被翻译成了机器码,一般需要经过编译和链接两个步骤,编译是把源代码编译成机器码,链接是把各模块的机器码和依赖库等串连起来生成可执行文件。
- 优点:整个翻译过程只做一次,运行时不会再翻译,以后要运行的话直接跑编译后的可执行文件就可以了,所以编译型语言的程序执行效率高,可以脱离语言环境运行。
- 缺点:当然如果修改了代码,我们也是需要重新编译的,编译生成机器码的时候是依赖于操作系统的,不同的操作系统会生成不同的机器码,所以移至性会差一些。
- 如:OC、Swift、C、C++等
-
解释型语言是指程序在运行之前不需要通过编译的方式来翻译成机器码,而是等到程序真正跑起来了才开始翻译,解释性语言往往需要一个专门的“解释器”来翻译。
- 优点:只要安装了解释器(虚拟机),在任何环境中都可以运行,所以不同平台的移至性更好一些;修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
- 缺点:因为每个语句都是在执行的时候才翻译,所以每执行一次程序代码就会重新翻译一次,所以解释型语言的执行效率会低一些。
- 如PHP、Python、JS等
-
混合型语言:
既然编译型语言和解释性语言各有各的好处和缺点,所以有人就把这两种类型语言的有点给整合了起来,如C#和Java,它们在编译的时候不会直接翻译成机器码,而是会生成一种中间码,然后再由解释器(运行库或者虚拟机)解释执行。
2、动态语言和静态语言
-
动态语言是指在运行期间才去做数据类型检查、甚至能改变代码结构(例如在代码运行期间新的方法可以被引入、可以改变已有方法的内部结构等)的语言。
- 如:OC、Swift、PHP、Python、JS等
-
静态语言是指数据类型和代码结构在编译器就确定下来的语言。
- 如:C、C++、C#、Java等
那么综上,“编译型语言和解释性语言”以及“动态语言和静态语言”之间没有必然的联系,他们关注的侧重点根本就不一样。
Go语言是静态的、编译型语言。
二、为什么要学习Go语言?(Go语言最核心的两个优势)
首先:由于Go语言初始定位为高并发的服务器端程序,所以尚未在GUI的支持上花费大量的精力,而当前版本的Go语言标准库中没有提供GUI相关的功能,也没有成熟的第三方界面库,因此不太适合开发GUI程序。有服务端的开发要求。
编程语言已经非常多,偏性能敏感的编译型语言有C、C++、Java、C#、OC和Swift等,偏快速业务开发的解释型语言有PHP、Python、JS等,那么我们为什么要学Go这样一门新语言呢?
1、Go语言非常轻--Go语言真得非常轻,和C语言一样,编码简洁,运行效率高
Go希望成为互联网时代的C语言。多数系统级语言(包括Java和C#)的根本编程哲学来源于C++,将C++的面向对象进一步发扬光大。但是Go语言的设计者却有不同的看法,他们认为C++真的没啥好学的,值得学习的是C语言。C语言经久不衰的根源是它足够简单。因此,Go语言也要足够简单!
2、Go语言对并发的大力支持--实现并发编程非常简单、安全、并发性能很高
多核化和集群化是互联网时代的典型特征。作为一个“互联网时代的C语言”,必须要让这门语言操作多核计算机与计算机集群如同操作单机一样容易。因此Go语言提供了对并发的大力支持。
Go语言区别于其它语言最核心的优势就是:Go对并发编程的大力支持。
- 一来Go是通过协程goroutine作为执行体实现并发的,而一个CPU一秒钟可以很轻松地调度上百万个协程而不会使系统资源枯竭,所以Go的并发性能是不容置疑的,Go目前的定位就是开发高并发的服务端程序。
- 二来Go只需要轻轻一写
go
关键字就可以发起一个goroutine,实现起来非常简单,同时Go采用的消息传递来实现执行体之间的通信,所以并发编程也更加安全。
3、对工程管理的支持
现在我们开发大多数是合作开发,每个开发者都有每个开发者的开发习惯,因此写出来的项目结构、代码等就是不统一的,这看起别人的代码来,习惯性地就觉得不习惯,这是程序员说或者不说,不习惯就在心里,不愿碰别人的代码这是一个非常大的问题。而Go语言很可能是第一个将代码风格强制统一的语言。从包的管理、代码风格规范、错误处理规范等很多方面都帮助我们多人写出来的代码可以比较的统一。
网友评论